summaryrefslogtreecommitdiff
path: root/ff2ppm.c
diff options
context:
space:
mode:
Diffstat (limited to 'ff2ppm.c')
-rw-r--r--ff2ppm.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/ff2ppm.c b/ff2ppm.c
index 4383dc4..b34d870 100644
--- a/ff2ppm.c
+++ b/ff2ppm.c
@@ -66,9 +66,11 @@ main(int argc, char *argv[])
for (j = 0, k = 0; j < rowlen; j += 4, k += 3) {
a = ntohs(row[j + 3]);
for (l = 0; l < 3; l++) {
+ /* alpha blending and 8-bit-reduction */
rowout[k + l] = (a * ntohs(row[j + l]) +
- (65535 - a) * mask[l]) /
- (257 * 65535);
+ (UINT16_MAX - a) * mask[l]) /
+ (UINT16_MAX *
+ (UINT16_MAX / UINT8_MAX));
}
}
if (fwrite(rowout, sizeof(uint8_t), rowoutlen, stdout) != rowoutlen) {