summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFRIGN <dev@frign.de>2016-01-31 11:05:00 +0100
committerMarkus Teich <markus.teich@stusta.mhn.de>2016-02-05 15:35:59 +0100
commit68ac6486b106751f79e2ff2f4d53e56843521ce5 (patch)
tree0a4afcaa185228dba649ac3a81e2bc116747d172
parentb0ad67036e35bc148ebda08184881375e716ec0b (diff)
Fix alpha blending
- "/ 257", because 255 * 257 = UINT16_MAX - "/ 255", because that's the maximum possible RGB value
-rw-r--r--sent.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/sent.c b/sent.c
index cdc637f..a397942 100644
--- a/sent.c
+++ b/sent.c
@@ -258,15 +258,15 @@ int ffread(Image *img)
nbytes += count;
}
for (x = 0; x < rowlen / 2; x += 4) {
- fg_r = ntohs(row[x + 0]) / 256;
- fg_g = ntohs(row[x + 1]) / 256;
- fg_b = ntohs(row[x + 2]) / 256;
- opac = ntohs(row[x + 3]) / 256;
+ fg_r = ntohs(row[x + 0]) / 257;
+ fg_g = ntohs(row[x + 1]) / 257;
+ fg_b = ntohs(row[x + 2]) / 257;
+ opac = ntohs(row[x + 3]) / 257;
/* blend opaque part of image data with window background color to
* emulate transparency */
- img->buf[off++] = (fg_r * opac + bg_r * (255 - opac)) / 256;
- img->buf[off++] = (fg_g * opac + bg_g * (255 - opac)) / 256;
- img->buf[off++] = (fg_b * opac + bg_b * (255 - opac)) / 256;
+ img->buf[off++] = (fg_r * opac + bg_r * (255 - opac)) / 255;
+ img->buf[off++] = (fg_g * opac + bg_g * (255 - opac)) / 255;
+ img->buf[off++] = (fg_b * opac + bg_b * (255 - opac)) / 255;
}
}