diff options
author | Geoff Levand <geoff@infradead.org> | 2011-11-25 17:35:28 -0800 |
---|---|---|
committer | Geoff Levand <geoff@infradead.org> | 2011-12-11 15:06:22 -0800 |
commit | ca81e39bce028e74c27caeb006a5c47dd9337b4f (patch) | |
tree | 970fab280adffcbc08ef956435eb74809c98ae0d | |
parent | ea951fb17d38c06d5db4920ef5f2d6e014667c2c (diff) | |
download | libtwin-ca81e39bce028e74c27caeb006a5c47dd9337b4f.tar.gz |
Remove unneeded call to png_set_swap_alpha
Alpha byte swapping is done in twin_premultiply_alpha(), so
the PNG processing overhead can be reduced by removing the
png_set_swap_alpha() call in twin_png_to_pixmap() and adjusting
twin_premultiply_alpha().
Signed-off-by: Geoff Levand <geoff@infradead.org>
-rw-r--r-- | libtwin/twin_draw.c | 16 | ||||
-rw-r--r-- | libtwin/twin_png.c | 2 |
2 files changed, 8 insertions, 10 deletions
diff --git a/libtwin/twin_draw.c b/libtwin/twin_draw.c index 39af904..3460d28 100644 --- a/libtwin/twin_draw.c +++ b/libtwin/twin_draw.c @@ -644,7 +644,7 @@ void twin_composite (twin_pixmap_t *dst, static twin_argb32_t _twin_apply_alpha(twin_argb32_t v) { uint16_t t1, t2, t3; - twin_a8_t alpha = twin_get_8(v, (__BYTE_ORDER == __BIG_ENDIAN) ? 24 : 0); + twin_a8_t alpha = twin_get_8(v, (__BYTE_ORDER == __BIG_ENDIAN) ? 0 : 24); /* clear RGB data if alpha is zero */ @@ -655,14 +655,14 @@ static twin_argb32_t _twin_apply_alpha(twin_argb32_t v) if (__BYTE_ORDER == __BIG_ENDIAN) return alpha << 24 | - twin_int_mult(twin_get_8(v, 16), alpha, t1) << 16 | - twin_int_mult(twin_get_8(v, 8), alpha, t2) << 8 | - twin_int_mult(twin_get_8(v, 0), alpha, t3) << 0; + twin_int_mult(twin_get_8(v, 24), alpha, t1) << 16 | + twin_int_mult(twin_get_8(v, 16), alpha, t2) << 8 | + twin_int_mult(twin_get_8(v, 8), alpha, t3) << 0; - return alpha << 24 | - twin_int_mult(twin_get_8(v, 8), alpha, t1) << 16 | - twin_int_mult(twin_get_8(v, 16), alpha, t2) << 8 | - twin_int_mult(twin_get_8(v, 24), alpha, t3) << 0; + return alpha << 24 | + twin_int_mult(twin_get_8(v, 0), alpha, t1) << 16 | + twin_int_mult(twin_get_8(v, 8), alpha, t2) << 8 | + twin_int_mult(twin_get_8(v, 16), alpha, t3) << 0; } void twin_premultiply_alpha(twin_pixmap_t *px) diff --git a/libtwin/twin_png.c b/libtwin/twin_png.c index c3b09a6..f0bd6ee 100644 --- a/libtwin/twin_png.c +++ b/libtwin/twin_png.c @@ -137,8 +137,6 @@ twin_pixmap_t *twin_png_to_pixmap(const char *filepath, twin_format_t fmt) case TWIN_ARGB32: if (ctype == PNG_COLOR_TYPE_RGB) png_set_filler(png, 0xff, PNG_FILLER_BEFORE); - if (ctype == PNG_COLOR_TYPE_RGB_ALPHA) - png_set_swap_alpha(png); if (ctype == PNG_COLOR_TYPE_GRAY || ctype == PNG_COLOR_TYPE_GRAY_ALPHA) png_set_gray_to_rgb(png); |