sixel: mask can always be 0xf0 #1391

pull/1407/head
nick black 4 years ago committed by Nick Black
parent 3821185ba3
commit e78fb867ea

@ -141,15 +141,10 @@ initialize_stable(sixeltable* stab){
// progressively mask more out until they all fit. // progressively mask more out until they all fit.
static int static int
extract_color_table(const uint32_t* data, int linesize, int begy, int begx, extract_color_table(const uint32_t* data, int linesize, int begy, int begx,
int leny, int lenx, sixeltable* stab, unsigned char* mask){ int leny, int lenx, sixeltable* stab){
*mask = 0xf0; initialize_stable(stab);
while(mask){ if(extract_ctable_inner(data, linesize, begy, begx, leny, lenx, stab, 0xf0) == 0){
initialize_stable(stab); return 0;
if(extract_ctable_inner(data, linesize, begy, begx, leny, lenx, stab, *mask) == 0){
return 0;
}
*mask <<= 1;
*mask &= 0xff;
} }
return -1; return -1;
} }
@ -297,8 +292,7 @@ int sixel_blit(ncplane* nc, int placey, int placex, int linesize,
free(ctab); free(ctab);
return -1; return -1;
} }
unsigned char mask; if(extract_color_table(data, linesize, begy, begx, leny, lenx, &stable)){
if(extract_color_table(data, linesize, begy, begx, leny, lenx, &stable, &mask)){
free(ctab); free(ctab);
free(stable.data); free(stable.data);
free(stable.deets); free(stable.deets);

Loading…
Cancel
Save