@@ -2177,6 +2177,17 @@ gdImagePtr gdImageRotateBicubicFixed(gdImagePtr src, const float degrees, const
21772177
21782178gdImagePtr gdImageRotateInterpolated (const gdImagePtr src , const float angle , int bgcolor )
21792179{
2180+ const int angle_rounded = (int )floor (angle * 100 );
2181+
2182+ /* no interpolation needed here */
2183+ switch (angle_rounded ) {
2184+ case 9000 :
2185+ return gdImageRotate90 (src , 0 );
2186+ case 18000 :
2187+ return gdImageRotate180 (src , 0 );
2188+ case 27000 :
2189+ return gdImageRotate270 (src , 0 );
2190+ }
21802191
21812192 if (src == NULL || src -> interpolation_id < 1 || src -> interpolation_id > GD_METHOD_COUNT ) {
21822193 return NULL ;
@@ -2191,47 +2202,12 @@ gdImagePtr gdImageRotateInterpolated(const gdImagePtr src, const float angle, in
21912202 return gdImageRotateBilinear (src , angle , bgcolor );
21922203 break ;
21932204
2194- case GD_BICUBIC :
2195- return gdImageRotateBicubicFixed (src , angle , bgcolor );
2196- break ;
2197-
21982205 case GD_BICUBIC_FIXED :
2199- return gdImageRotateNearestNeighbour (src , angle , bgcolor );
2200- break ;
2201-
2202- case GD_WEIGHTED4 :
2203- return gdImageRotateNearestNeighbour (src , angle , bgcolor );
2204- break ;
2205-
2206- case GD_BSPLINE :
2207- return gdImageRotateNearestNeighbour (src , angle , bgcolor );
2208- break ;
2209-
2210- case GD_BOX :
2211- return gdImageRotateNearestNeighbour (src , angle , bgcolor );
2212- break ;
2213-
2214- case GD_HERMITE :
2215- return gdImageRotateNearestNeighbour (src , angle , bgcolor );
2206+ return gdImageRotateBicubicFixed (src , angle , bgcolor );
22162207 break ;
22172208
2218- case GD_HAMMING :
2219- break ;
2220- case GD_SINC :
2221- break ;
2222- case GD_BLACKMAN :
2223- break ;
2224-
2225- case GD_GAUSSIAN :
2226- break ;
2227- case GD_QUADRATIC :
2228- break ;
2229- case GD_MITCHELL :
2230- break ;
2231- case GD_CATMULLROM :
2232- break ;
2233- case GD_POWER :
2234- break ;
2209+ default :
2210+ return gdImageRotateGeneric (src , angle , bgcolor );
22352211 }
22362212 return NULL ;
22372213}
0 commit comments