summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristoph M. Becker <cmbecker69@gmx.de>2016-09-15 13:18:54 +0200
committerChristoph M. Becker <cmbecker69@gmx.de>2016-09-15 13:24:43 +0200
commitba2b50d097569381f98b306c932e240cd50cbb3d (patch)
tree7c7421feab9d2427444867379f4ef6324332ed6d
parent04b166a6c56315e84a9d40c751f29b81f84a10c1 (diff)
downloadphp-git-ba2b50d097569381f98b306c932e240cd50cbb3d.tar.gz
Port optimization from external libgd
The functionality is identical, but we save two function calls for partially transparent pixels.
-rw-r--r--ext/gd/libgd/gdft.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/ext/gd/libgd/gdft.c b/ext/gd/libgd/gdft.c
index 6de314e971..f91fcf738c 100644
--- a/ext/gd/libgd/gdft.c
+++ b/ext/gd/libgd/gdft.c
@@ -626,6 +626,7 @@ static char * gdft_draw_bitmap (gdCache_head_t *tc_cache, gdImage * im, int fg,
{
unsigned char *pixel = NULL;
int *tpixel = NULL;
+ int opixel;
int x, y, row, col, pc, pcr;
tweencolor_t *tc_elem;
@@ -683,7 +684,13 @@ static char * gdft_draw_bitmap (gdCache_head_t *tc_cache, gdImage * im, int fg,
}
} else {
if (im->alphaBlendingFlag) {
- *tpixel = gdAlphaBlend(*tpixel, (level << 24) + (fg & 0xFFFFFF));
+ opixel = *tpixel;
+ if (gdTrueColorGetAlpha(opixel) != gdAlphaTransparent) {
+ *tpixel = gdAlphaBlend (opixel,
+ (level << 24) + (fg & 0xFFFFFF));
+ } else {
+ *tpixel = (level << 24) + (fg & 0xFFFFFF);
+ }
} else {
*tpixel = (level << 24) + (fg & 0xFFFFFF);
}