@@ -2177,6 +2177,17 @@ gdImagePtr gdImageRotateBicubicFixed(gdImagePtr src, const float degrees, const
2177
2177
2178
2178
gdImagePtr gdImageRotateInterpolated (const gdImagePtr src , const float angle , int bgcolor )
2179
2179
{
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
+ }
2180
2191
2181
2192
if (src == NULL || src -> interpolation_id < 1 || src -> interpolation_id > GD_METHOD_COUNT ) {
2182
2193
return NULL ;
@@ -2191,47 +2202,12 @@ gdImagePtr gdImageRotateInterpolated(const gdImagePtr src, const float angle, in
2191
2202
return gdImageRotateBilinear (src , angle , bgcolor );
2192
2203
break ;
2193
2204
2194
- case GD_BICUBIC :
2195
- return gdImageRotateBicubicFixed (src , angle , bgcolor );
2196
- break ;
2197
-
2198
2205
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 );
2216
2207
break ;
2217
2208
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 );
2235
2211
}
2236
2212
return NULL ;
2237
2213
}
0 commit comments