Map 8-bit ffmpeg α to 2-bit notcurses α #276

pull/282/head
nick black 5 years ago committed by Nick Black
parent f857edd09d
commit b8f25ff89b

@ -300,6 +300,15 @@ ncvisual* ncvisual_open_plane(notcurses* nc, const char* filename,
return ncv; return ncv;
} }
// alpha comes to us 0--255, but we have only 3 alpha values to map them to
static inline bool
ffmpeg_trans_p(unsigned char alpha){
if(alpha < 128){
return true;
}
return false;
}
int ncvisual_render(const ncvisual* ncv, int begy, int begx, int leny, int lenx){ int ncvisual_render(const ncvisual* ncv, int begy, int begx, int leny, int lenx){
//fprintf(stderr, "render %dx%d+%dx%d\n", begy, begx, leny, lenx); //fprintf(stderr, "render %dx%d+%dx%d\n", begy, begx, leny, lenx);
if(begy < 0 || begx < 0 || lenx < 0 || leny < 0){ if(begy < 0 || begx < 0 || lenx < 0 || leny < 0){
@ -349,11 +358,11 @@ int ncvisual_render(const ncvisual* ncv, int begy, int begx, int leny, int lenx)
// effective in that case anyway // effective in that case anyway
c->channels = 0; c->channels = 0;
c->attrword = 0; c->attrword = 0;
if(!rgbbase_up[3] || !rgbbase_down[3]){ if(ffmpeg_trans_p(rgbbase_up[3]) || ffmpeg_trans_p(rgbbase_down[3])){
cell_set_bg_alpha(c, CELL_ALPHA_TRANSPARENT); cell_set_bg_alpha(c, CELL_ALPHA_TRANSPARENT);
if(!rgbbase_up[3] && !rgbbase_down[3]){ if(ffmpeg_trans_p(rgbbase_up[3]) && ffmpeg_trans_p(rgbbase_down[3])){
cell_set_fg_alpha(c, CELL_ALPHA_TRANSPARENT); cell_set_fg_alpha(c, CELL_ALPHA_TRANSPARENT);
}else if(!rgbbase_up[3]){ // down has the color }else if(ffmpeg_trans_p(rgbbase_up[3])){ // down has the color
if(cell_load(ncv->ncp, c, "\u2584") <= 0){ // lower half block if(cell_load(ncv->ncp, c, "\u2584") <= 0){ // lower half block
return -1; return -1;
} }

Loading…
Cancel
Save