|
|
@ -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);
|
|
|
|