diff options
author | Pierre Joye <pajoye@php.net> | 2003-07-10 00:09:23 +0000 |
---|---|---|
committer | Pierre Joye <pajoye@php.net> | 2003-07-10 00:09:23 +0000 |
commit | bf7f45601d4e3b7f1e5e6d3b4267b048256673ea (patch) | |
tree | c12567288157a9d21bc146a8e6b4937d8d1857a6 /ext/gd/libgd | |
parent | f0789592072f0e343195201c89ba13fee8291fe7 (diff) | |
download | php-git-bf7f45601d4e3b7f1e5e6d3b4267b048256673ea.tar.gz |
- wrong patch applied for #23792, fixed
Diffstat (limited to 'ext/gd/libgd')
-rw-r--r-- | ext/gd/libgd/gd.c | 50 |
1 files changed, 31 insertions, 19 deletions
diff --git a/ext/gd/libgd/gd.c b/ext/gd/libgd/gd.c index a2d13ec441..37ca736e0d 100644 --- a/ext/gd/libgd/gd.c +++ b/ext/gd/libgd/gd.c @@ -2541,7 +2541,7 @@ void gdImageSkewY (gdImagePtr dst, gdImagePtr src, int uCol, int iOffset, double gdImagePtr gdImageRotate90 (gdImagePtr src) { int uY, uX; - int c; + int c,r,g,b,a; gdImagePtr dst; typedef int (*FuncPtr)(gdImagePtr, int, int); FuncPtr f; @@ -2551,6 +2551,7 @@ gdImagePtr gdImageRotate90 (gdImagePtr src) } else { f = gdImageGetPixel; } + dst = gdImageCreateTrueColor(src->sy, src->sx); if (dst != NULL) { gdImagePaletteCopy (dst, src); @@ -2558,6 +2559,13 @@ gdImagePtr gdImageRotate90 (gdImagePtr src) for (uY = 0; uY<src->sy; uY++) { for (uX = 0; uX<src->sx; uX++) { c = f (src, uX, uY); + if (!src->trueColor) { + r = gdImageRed(src,c); + g = gdImageGreen(src,c); + b = gdImageBlue(src,c); + a = gdImageAlpha(src,c); + c = gdTrueColorAlpha(r, g, b, a); + } gdImageSetPixel(dst, uY, (dst->sy - uX - 1), c); } } @@ -2570,18 +2578,17 @@ gdImagePtr gdImageRotate90 (gdImagePtr src) gdImagePtr gdImageRotate180 (gdImagePtr src) { int uY, uX; - int c; + int c,r,g,b,a; gdImagePtr dst; typedef int (*FuncPtr)(gdImagePtr, int, int); FuncPtr f; if (src->trueColor) { - dst = gdImageCreateTrueColor ( src->sx,src->sy); f = gdImageGetTrueColorPixel; } else { - dst = gdImageCreate (src->sx, src->sy); f = gdImageGetPixel; } + dst = gdImageCreateTrueColor(src->sx, src->sy); if (dst != NULL) { gdImagePaletteCopy (dst, src); @@ -2589,6 +2596,13 @@ gdImagePtr gdImageRotate180 (gdImagePtr src) for (uY = 0; uY<src->sy; uY++) { for (uX = 0; uX<src->sx; uX++) { c = f (src, uX, uY); + if (!src->trueColor) { + r = gdImageRed(src,c); + g = gdImageGreen(src,c); + b = gdImageBlue(src,c); + a = gdImageAlpha(src,c); + c = gdTrueColorAlpha(r, g, b, a); + } gdImageSetPixel(dst, (dst->sx - uX - 1), (dst->sy - uY - 1), c); } } @@ -2601,18 +2615,17 @@ gdImagePtr gdImageRotate180 (gdImagePtr src) gdImagePtr gdImageRotate270 ( gdImagePtr src ) { int uY, uX; - int c; + int c,r,g,b,a; gdImagePtr dst; typedef int (*FuncPtr)(gdImagePtr, int, int); FuncPtr f; if (src->trueColor) { - dst = gdImageCreateTrueColor (src->sy, src->sx); f = gdImageGetTrueColorPixel; } else { - dst = gdImageCreate (src->sy, src->sx); f = gdImageGetPixel; } + dst = gdImageCreateTrueColor (src->sy, src->sx); if (dst != NULL) { gdImagePaletteCopy (dst, src); @@ -2620,6 +2633,13 @@ gdImagePtr gdImageRotate270 ( gdImagePtr src ) for (uY = 0; uY<src->sy; uY++) { for (uX = 0; uX<src->sx; uX++) { c = f (src, uX, uY); + if (!src->trueColor) { + r = gdImageRed(src,c); + g = gdImageGreen(src,c); + b = gdImageBlue(src,c); + a = gdImageAlpha(src,c); + c = gdTrueColorAlpha(r, g, b, a); + } gdImageSetPixel(dst, (dst->sx - uY - 1), uX, c); } } @@ -2648,13 +2668,12 @@ gdImagePtr gdImageRotate45 (gdImagePtr src, double dAngle, int clrBack) /* 1st shear */ if (src->trueColor) { - dst1 = gdImageCreateTrueColor (newx, newy); f = gdImageGetTrueColorPixel; } else { - dst1 = gdImageCreate (newx, newy); f = gdImageGetPixel; } + dst1 = gdImageCreateTrueColor(newx, newy); /******* Perform 1st shear (horizontal) ******/ if (dst1 == NULL) { return NULL; @@ -2761,15 +2780,9 @@ gdImagePtr gdImageRotate (gdImagePtr src, double dAngle, int clrBack) return NULL; } - if (!gdImageTrueColor(src) && clrBack>=gdImageColorsTotal(src)) { - return NULL; - } - - clrBackR = gdImageRed(src, clrBack); - clrBackG = gdImageGreen(src, clrBack); - clrBackB = gdImageBlue(src, clrBack); - clrBackA = gdImageAlpha(src, clrBack); - clrBack = gdIlmageColorAllocateAlpha(pMidImg, clrBackR, clrBackG, clrBackB, clrBackA); + if (!gdImageTrueColor(src) && clrBack>=gdImageColorsTotal(src)) { + return NULL; + } while (dAngle >= 360.0) { dAngle -= 360.0; @@ -2806,7 +2819,6 @@ gdImagePtr gdImageRotate (gdImagePtr src, double dAngle, int clrBack) return NULL; } - rotatedImg = gdImageRotate45 (pMidImg, dAngle, clrBack); gdImageDestroy(pMidImg); |