it* My version of sent Err codevoid.de 70 i Err codevoid.de 70 hgit clone git://git.codevoid.de/sent-sdk.git URL:git://git.codevoid.de/sent-sdk.git codevoid.de 70 1Log /git/sent-sdk/log.gph codevoid.de 70 1Files /git/sent-sdk/files.gph codevoid.de 70 1Refs /git/sent-sdk/refs.gph codevoid.de 70 1README /git/sent-sdk/file/README.md.gph codevoid.de 70 1LICENSE /git/sent-sdk/file/LICENSE.gph codevoid.de 70 i--- Err codevoid.de 70 1commit 0798e82d2326fc330168733997006020cc59e215 /git/sent-sdk/commit/0798e82d2326fc330168733997006020cc59e215.gph codevoid.de 70 1parent b516f468faa3a80c31932cbcb1ea8ccd1468ffc1 /git/sent-sdk/commit/b516f468faa3a80c31932cbcb1ea8ccd1468ffc1.gph codevoid.de 70 hAuthor: Markus Teich URL:mailto:markus.teich@stusta.mhn.de codevoid.de 70 iDate: Tue, 8 Dec 2015 21:46:18 +0100 Err codevoid.de 70 i Err codevoid.de 70 isupport transparent images Err codevoid.de 70 i Err codevoid.de 70 iDiffstat: Err codevoid.de 70 i M sent.c | 19 ++++++++++++++++--- Err codevoid.de 70 i Err codevoid.de 70 i1 file changed, 16 insertions(+), 3 deletions(-) Err codevoid.de 70 i--- Err codevoid.de 70 1diff --git a/sent.c b/sent.c /git/sent-sdk/file/sent.c.gph codevoid.de 70 it@@ -215,6 +215,8 @@ int ffread(Image *img) Err codevoid.de 70 i { Err codevoid.de 70 i uint32_t y, x; Err codevoid.de 70 i uint16_t *row; Err codevoid.de 70 i+ uint8_t opac; Err codevoid.de 70 i+ uint8_t fg_r, fg_g, fg_b, bg_r, bg_g, bg_b; Err codevoid.de 70 i size_t rowlen, off, nbytes; Err codevoid.de 70 i ssize_t r; Err codevoid.de 70 i Err codevoid.de 70 it@@ -239,6 +241,11 @@ int ffread(Image *img) Err codevoid.de 70 i return 0; Err codevoid.de 70 i } Err codevoid.de 70 i Err codevoid.de 70 i+ /* extract window background color channels for transparency */ Err codevoid.de 70 i+ bg_r = (sc->bg.pix >> 16) % 256; Err codevoid.de 70 i+ bg_g = (sc->bg.pix >> 8) % 256; Err codevoid.de 70 i+ bg_b = (sc->bg.pix >> 0) % 256; Err codevoid.de 70 i+ Err codevoid.de 70 i for (off = 0, y = 0; y < img->bufheight; y++) { Err codevoid.de 70 i nbytes = 0; Err codevoid.de 70 i while (nbytes < rowlen) { Err codevoid.de 70 it@@ -248,9 +255,15 @@ int ffread(Image *img) Err codevoid.de 70 i nbytes += r; Err codevoid.de 70 i } Err codevoid.de 70 i for (x = 0; x < rowlen / 2; x += 4) { Err codevoid.de 70 i- img->buf[off++] = ntohs(row[x + 0]) / 257; Err codevoid.de 70 i- img->buf[off++] = ntohs(row[x + 1]) / 257; Err codevoid.de 70 i- img->buf[off++] = ntohs(row[x + 2]) / 257; Err codevoid.de 70 i+ fg_r = ntohs(row[x + 0]) / 256; Err codevoid.de 70 i+ fg_g = ntohs(row[x + 1]) / 256; Err codevoid.de 70 i+ fg_b = ntohs(row[x + 2]) / 256; Err codevoid.de 70 i+ opac = ntohs(row[x + 3]) / 256; Err codevoid.de 70 i+ /* blend opaque part of image data with window background color to Err codevoid.de 70 i+ * emulate transparency */ Err codevoid.de 70 i+ img->buf[off++] = (fg_r * opac + bg_r * (255 - opac)) / 256; Err codevoid.de 70 i+ img->buf[off++] = (fg_g * opac + bg_g * (255 - opac)) / 256; Err codevoid.de 70 i+ img->buf[off++] = (fg_b * opac + bg_b * (255 - opac)) / 256; Err codevoid.de 70 i } Err codevoid.de 70 i } Err codevoid.de 70 i Err codevoid.de 70 .