mirror of
https://github.com/php/php-src.git
synced 2026-03-28 02:02:32 +01:00
- #43073, TrueType bounding box is wrong for angle<>0
This commit is contained in:
1
NEWS
1
NEWS
@@ -22,6 +22,7 @@ PHP NEWS
|
||||
bit numbers). (Matt)
|
||||
- Fixed bug #45799 (imagepng() crashes on empty image). (Martin McNickle,
|
||||
Takeshi Abe)
|
||||
- Fixed bug #43073, (TrueType bounding box is wrong for angle<>0) (Martin McNickle)
|
||||
|
||||
26 Feb 2009, PHP 5.2.9
|
||||
- Changed __call() to be invoked on private/protected method access, similar to
|
||||
|
||||
@@ -1108,15 +1108,23 @@ gdImageStringFTEx (gdImage * im, int *brect, int fg, char *fontlist, double ptsi
|
||||
double d1 = sin (angle + 0.78539816339744830962);
|
||||
double d2 = sin (angle - 0.78539816339744830962);
|
||||
|
||||
/* make the center of rotation at (0, 0) */
|
||||
FT_BBox normbox;
|
||||
|
||||
normbox.xMin = 0;
|
||||
normbox.yMin = 0;
|
||||
normbox.xMax = bbox.xMax - bbox.xMin;
|
||||
normbox.yMax = bbox.yMax - bbox.yMin;
|
||||
|
||||
/* rotate bounding rectangle */
|
||||
brect[0] = (int) (bbox.xMin * cos_a - bbox.yMin * sin_a);
|
||||
brect[1] = (int) (bbox.xMin * sin_a + bbox.yMin * cos_a);
|
||||
brect[2] = (int) (bbox.xMax * cos_a - bbox.yMin * sin_a);
|
||||
brect[3] = (int) (bbox.xMax * sin_a + bbox.yMin * cos_a);
|
||||
brect[4] = (int) (bbox.xMax * cos_a - bbox.yMax * sin_a);
|
||||
brect[5] = (int) (bbox.xMax * sin_a + bbox.yMax * cos_a);
|
||||
brect[6] = (int) (bbox.xMin * cos_a - bbox.yMax * sin_a);
|
||||
brect[7] = (int) (bbox.xMin * sin_a + bbox.yMax * cos_a);
|
||||
brect[0] = (int) (normbox.xMin * cos_a - normbox.yMin * sin_a);
|
||||
brect[1] = (int) (normbox.xMin * sin_a + normbox.yMin * cos_a);
|
||||
brect[2] = (int) (normbox.xMax * cos_a - normbox.yMin * sin_a);
|
||||
brect[3] = (int) (normbox.xMax * sin_a + normbox.yMin * cos_a);
|
||||
brect[4] = (int) (normbox.xMax * cos_a - normbox.yMax * sin_a);
|
||||
brect[5] = (int) (normbox.xMax * sin_a + normbox.yMax * cos_a);
|
||||
brect[6] = (int) (normbox.xMin * cos_a - normbox.yMax * sin_a);
|
||||
brect[7] = (int) (normbox.xMin * sin_a + normbox.yMax * cos_a);
|
||||
|
||||
/* scale, round and offset brect */
|
||||
brect[0] = x + gdroundupdown(brect[0], d2 > 0);
|
||||
|
||||
Reference in New Issue
Block a user