Index: third_party/freetype/src/base/ftbbox.c |
diff --git a/third_party/freetype/src/base/ftbbox.c b/third_party/freetype/src/base/ftbbox.c |
index c775d5c8cf0f7133db97fd35ebda16373b41fb1d..10df98de6ad27c3785a69c68a743dad322b2a684 100644 |
--- a/third_party/freetype/src/base/ftbbox.c |
+++ b/third_party/freetype/src/base/ftbbox.c |
@@ -4,7 +4,7 @@ |
/* */ |
/* FreeType bbox computation (body). */ |
/* */ |
-/* Copyright 1996-2002, 2004, 2006, 2010, 2013, 2014 by */ |
+/* Copyright 1996-2015 by */ |
/* David Turner, Robert Wilhelm, and Werner Lemberg. */ |
/* */ |
/* This file is part of the FreeType project, and may only be used */ |
@@ -42,22 +42,22 @@ |
} TBBox_Rec; |
-#define FT_UPDATE_BBOX(p, bbox) \ |
- FT_BEGIN_STMNT \ |
- if ( p->x < bbox.xMin ) \ |
- bbox.xMin = p->x; \ |
- if ( p->x > bbox.xMax ) \ |
- bbox.xMax = p->x; \ |
- if ( p->y < bbox.yMin ) \ |
- bbox.yMin = p->y; \ |
- if ( p->y > bbox.yMax ) \ |
- bbox.yMax = p->y; \ |
+#define FT_UPDATE_BBOX( p, bbox ) \ |
+ FT_BEGIN_STMNT \ |
+ if ( p->x < bbox.xMin ) \ |
+ bbox.xMin = p->x; \ |
+ if ( p->x > bbox.xMax ) \ |
+ bbox.xMax = p->x; \ |
+ if ( p->y < bbox.yMin ) \ |
+ bbox.yMin = p->y; \ |
+ if ( p->y > bbox.yMax ) \ |
+ bbox.yMax = p->y; \ |
FT_END_STMNT |
-#define CHECK_X( p, bbox ) \ |
+#define CHECK_X( p, bbox ) \ |
( p->x < bbox.xMin || p->x > bbox.xMax ) |
-#define CHECK_Y( p, bbox ) \ |
+#define CHECK_Y( p, bbox ) \ |
( p->y < bbox.yMin || p->y > bbox.yMax ) |
@@ -255,6 +255,7 @@ |
FT_Pos peak = 0; |
FT_Int shift; |
+ |
/* This function finds a peak of a cubic segment if it is above 0 */ |
/* using iterative bisection of the segment, or returns 0. */ |
/* The fixed-point arithmetic of bisection is inherently stable */ |
@@ -264,8 +265,10 @@ |
/* It is called with either q2 or q3 positive, which is necessary */ |
/* for the peak to exist and avoids undefined FT_MSB. */ |
- shift = 27 - |
- FT_MSB( FT_ABS( q1 ) | FT_ABS( q2 ) | FT_ABS( q3 ) | FT_ABS( q4 ) ); |
+ shift = 27 - FT_MSB( (FT_UInt32)( FT_ABS( q1 ) | |
+ FT_ABS( q2 ) | |
+ FT_ABS( q3 ) | |
+ FT_ABS( q4 ) ) ); |
if ( shift > 0 ) |
{ |
@@ -419,7 +422,8 @@ |
return 0; |
} |
-FT_DEFINE_OUTLINE_FUNCS(bbox_interface, |
+ |
+ FT_DEFINE_OUTLINE_FUNCS(bbox_interface, |
(FT_Outline_MoveTo_Func) BBox_Move_To, |
(FT_Outline_LineTo_Func) BBox_Line_To, |
(FT_Outline_ConicTo_Func)BBox_Conic_To, |
@@ -427,14 +431,17 @@ FT_DEFINE_OUTLINE_FUNCS(bbox_interface, |
0, 0 |
) |
+ |
/* documentation is in ftbbox.h */ |
FT_EXPORT_DEF( FT_Error ) |
FT_Outline_Get_BBox( FT_Outline* outline, |
FT_BBox *abbox ) |
{ |
- FT_BBox cbox = { 0x7FFFFFFF, 0x7FFFFFFF, -0x7FFFFFFF, -0x7FFFFFFF }; |
- FT_BBox bbox = { 0x7FFFFFFF, 0x7FFFFFFF, -0x7FFFFFFF, -0x7FFFFFFF }; |
+ FT_BBox cbox = { 0x7FFFFFFFL, 0x7FFFFFFFL, |
+ -0x7FFFFFFFL, -0x7FFFFFFFL }; |
+ FT_BBox bbox = { 0x7FFFFFFFL, 0x7FFFFFFFL, |
+ -0x7FFFFFFFL, -0x7FFFFFFFL }; |
FT_Vector* vec; |
FT_UShort n; |