Commit:    be3e2bb295d58297ce7e8a3ee05cbf2112eb0138
Author:    Pierre Joye <pierre....@gmail.com>         Sun, 24 Mar 2013 16:52:20 
+0100
Parents:   585f71f497804614a4c3d5da86f2797c32ca3def
Branches:  PHP-5.5 master

Link:       
http://git.php.net/?p=php-src.git;a=commitdiff;h=be3e2bb295d58297ce7e8a3ee05cbf2112eb0138

Log:
fix generic rotation and 90 degrees & multiples rotation, take #2

Bugs:
https://bugs.php.net/2

Changed paths:
  M  ext/gd/libgd/gd_interpolation.c


Diff:
diff --git a/ext/gd/libgd/gd_interpolation.c b/ext/gd/libgd/gd_interpolation.c
index ab3e988..15b5415 100644
--- a/ext/gd/libgd/gd_interpolation.c
+++ b/ext/gd/libgd/gd_interpolation.c
@@ -2177,6 +2177,17 @@ gdImagePtr gdImageRotateBicubicFixed(gdImagePtr src, 
const float degrees, const
 
 gdImagePtr gdImageRotateInterpolated(const gdImagePtr src, const float angle, 
int bgcolor)
 {
+       const int angle_rounded = (int)floor(angle * 100);
+
+       /* no interpolation needed here */
+       switch (angle_rounded) {
+               case 9000:
+                       return gdImageRotate90(src, 0);
+               case 18000:
+                       return gdImageRotate180(src, 0);
+               case 27000:
+                       return gdImageRotate270(src, 0);
+       }
 
        if (src == NULL || src->interpolation_id < 1 || src->interpolation_id > 
GD_METHOD_COUNT) {
                return NULL;
@@ -2191,47 +2202,12 @@ gdImagePtr gdImageRotateInterpolated(const gdImagePtr 
src, const float angle, in
                        return gdImageRotateBilinear(src, angle, bgcolor);
                        break;
 
-               case GD_BICUBIC:
-                       return gdImageRotateBicubicFixed(src, angle, bgcolor);
-                       break;
-
                case GD_BICUBIC_FIXED:
-                       return gdImageRotateNearestNeighbour(src, angle, 
bgcolor);
-                       break;
-
-               case GD_WEIGHTED4:
-                       return gdImageRotateNearestNeighbour(src, angle, 
bgcolor);
-                       break;
-
-               case GD_BSPLINE:
-                       return gdImageRotateNearestNeighbour(src, angle, 
bgcolor);
-                       break;
-
-               case GD_BOX:
-                       return gdImageRotateNearestNeighbour(src, angle, 
bgcolor);
-                       break;
-
-               case GD_HERMITE:
-                       return gdImageRotateNearestNeighbour(src, angle, 
bgcolor);
+                       return gdImageRotateBicubicFixed(src, angle, bgcolor);
                        break;
 
-               case GD_HAMMING:
-               break;
-               case GD_SINC:
-               break;
-               case GD_BLACKMAN:
-               break;
-
-               case GD_GAUSSIAN:
-               break;
-               case GD_QUADRATIC:
-               break;
-               case GD_MITCHELL:
-               break;
-               case GD_CATMULLROM:
-               break;
-               case GD_POWER:
-               break;
+               default:
+                       return gdImageRotateGeneric(src, angle, bgcolor);
        }
        return NULL;
 }


--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to