mirror of
https://github.com/php/php-src.git
synced 2026-04-09 00:53:30 +02:00
fix generic rotation and 90 degrees & multiples rotation, take #2
This commit is contained in:
@@ -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:
|
||||
case GD_BICUBIC_FIXED:
|
||||
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);
|
||||
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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user