From 3f26c36458cd6a9569e26c13371b2d6c6d6ab89d Mon Sep 17 00:00:00 2001 From: nick black Date: Fri, 25 Dec 2020 18:45:09 -0500 Subject: [PATCH] direct: honor transparency in image blitting #1252 --- src/lib/direct.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/lib/direct.cpp b/src/lib/direct.cpp index 9c5e2c6ae..6e648424b 100644 --- a/src/lib/direct.cpp +++ b/src/lib/direct.cpp @@ -387,8 +387,16 @@ ncdirect_dump_plane(ncdirect* n, const ncplane* np, int xoff){ if(egc == nullptr){ return -1; } - ncdirect_fg_rgb(n, channels_fg_rgb(channels)); - ncdirect_bg_rgb(n, channels_bg_rgb(channels)); + if(channels_fg_alpha(channels) == CELL_ALPHA_TRANSPARENT){ + ncdirect_fg_default(n); + }else{ + ncdirect_fg_rgb(n, channels_fg_rgb(channels)); + } + if(channels_bg_alpha(channels) == CELL_ALPHA_TRANSPARENT){ + ncdirect_bg_default(n); + }else{ + ncdirect_bg_rgb(n, channels_bg_rgb(channels)); + } //fprintf(stderr, "%03d/%03d [%s] (%03dx%03d)\n", y, x, egc, dimy, dimx); if(fprintf(n->ttyfp, "%s", strlen(egc) == 0 ? " " : egc) < 0){ free(egc);