|
|
|
@ -2427,94 +2427,6 @@ |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef STANDALONE_ |
|
|
|
|
|
|
|
|
|
/**************************************************************************
|
|
|
|
|
* |
|
|
|
|
* The following functions should only compile in stand-alone mode, |
|
|
|
|
* i.e., when building this component without the rest of FreeType. |
|
|
|
|
* |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
/**************************************************************************
|
|
|
|
|
* |
|
|
|
|
* @Function: |
|
|
|
|
* FT_Outline_Get_CBox |
|
|
|
|
* |
|
|
|
|
* @Description: |
|
|
|
|
* Return an outline's `control box'. The control box encloses all |
|
|
|
|
* the outline's points, including Bézier control points. Though it |
|
|
|
|
* coincides with the exact bounding box for most glyphs, it can be |
|
|
|
|
* slightly larger in some situations (like when rotating an outline |
|
|
|
|
* that contains Bézier outside arcs). |
|
|
|
|
* |
|
|
|
|
* Computing the control box is very fast, while getting the bounding |
|
|
|
|
* box can take much more time as it needs to walk over all segments |
|
|
|
|
* and arcs in the outline. To get the latter, you can use the |
|
|
|
|
* `ftbbox' component, which is dedicated to this single task. |
|
|
|
|
* |
|
|
|
|
* @Input: |
|
|
|
|
* outline :: |
|
|
|
|
* A pointer to the source outline descriptor. |
|
|
|
|
* |
|
|
|
|
* @Output: |
|
|
|
|
* acbox :: |
|
|
|
|
* The outline's control box. |
|
|
|
|
* |
|
|
|
|
* @Note: |
|
|
|
|
* See @FT_Glyph_Get_CBox for a discussion of tricky fonts. |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
static void |
|
|
|
|
FT_Outline_Get_CBox( const FT_Outline* outline, |
|
|
|
|
FT_BBox *acbox ) |
|
|
|
|
{ |
|
|
|
|
if ( outline && acbox ) |
|
|
|
|
{ |
|
|
|
|
Long xMin, yMin, xMax, yMax; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if ( outline->n_points == 0 ) |
|
|
|
|
{ |
|
|
|
|
xMin = 0; |
|
|
|
|
yMin = 0; |
|
|
|
|
xMax = 0; |
|
|
|
|
yMax = 0; |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
|
FT_Vector* vec = outline->points; |
|
|
|
|
FT_Vector* limit = vec + outline->n_points; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
xMin = xMax = vec->x; |
|
|
|
|
yMin = yMax = vec->y; |
|
|
|
|
vec++; |
|
|
|
|
|
|
|
|
|
for ( ; vec < limit; vec++ ) |
|
|
|
|
{ |
|
|
|
|
Long x, y; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
x = vec->x; |
|
|
|
|
if ( x < xMin ) xMin = x; |
|
|
|
|
if ( x > xMax ) xMax = x; |
|
|
|
|
|
|
|
|
|
y = vec->y; |
|
|
|
|
if ( y < yMin ) yMin = y; |
|
|
|
|
if ( y > yMax ) yMax = y; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
acbox->xMin = xMin; |
|
|
|
|
acbox->xMax = xMax; |
|
|
|
|
acbox->yMin = yMin; |
|
|
|
|
acbox->yMax = yMax; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#endif /* STANDALONE_ */ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**************************************************************************
|
|
|
|
|
* |
|
|
|
|
* @Function: |
|
|
|
|