28#include FT_INTERNAL_DEBUG_H
33#include FT_INTERNAL_CALC_H
34#include FT_INTERNAL_OBJECTS_H
45#define FT_UPDATE_BBOX( p, bbox ) \
47 if ( p->x < bbox.xMin ) \
49 if ( p->x > bbox.xMax ) \
51 if ( p->y < bbox.yMin ) \
53 if ( p->y > bbox.yMax ) \
57#define CHECK_X( p, bbox ) \
58 ( p->x < bbox.xMin || p->x > bbox.xMax )
60#define CHECK_Y( p, bbox ) \
61 ( p->y < bbox.yMin || p->y > bbox.yMax )
294 while ( q2 > 0 || q3 > 0 )
297 if ( q1 + q2 > q3 + q4 )
304 q4 = ( q4 + q3 ) / 8;
315 q1 = ( q1 + q2 ) / 8;
321 if ( q1 == q2 && q1 >= q3 )
326 if ( q3 == q4 && q2 <= q4 )
355 if ( p2 > *
max || p3 > *
max )
359 if ( p2 < *
min || p3 < *
min )
444 FT_BBox cbox = { 0x7FFFFFFFL, 0x7FFFFFFFL,
445 -0x7FFFFFFFL, -0x7FFFFFFFL };
447 -0x7FFFFFFFL, -0x7FFFFFFFL };
453 return FT_THROW( Invalid_Argument );
493#ifdef FT_CONFIG_OPTION_PIC
497 Init_Class_bbox_interface( &bbox_interface );
void user(int argc, const char *argv[])
FT_MulDiv(FT_Long a, FT_Long b, FT_Long c)
static FT_Pos cubic_peak(FT_Pos q1, FT_Pos q2, FT_Pos q3, FT_Pos q4)
static void BBox_Cubic_Check(FT_Pos p1, FT_Pos p2, FT_Pos p3, FT_Pos p4, FT_Pos *min, FT_Pos *max)
static int BBox_Cubic_To(FT_Vector *control1, FT_Vector *control2, FT_Vector *to, TBBox_Rec *user)
#define FT_UPDATE_BBOX(p, bbox)
static int BBox_Move_To(FT_Vector *to, TBBox_Rec *user)
static int BBox_Line_To(FT_Vector *to, TBBox_Rec *user)
static int BBox_Conic_To(FT_Vector *control, FT_Vector *to, TBBox_Rec *user)
struct TBBox_Rec_ TBBox_Rec
static void BBox_Conic_Check(FT_Pos y1, FT_Pos y2, FT_Pos y3, FT_Pos *min, FT_Pos *max)
FT_BEGIN_HEADER FT_Outline_Get_BBox(FT_Outline *outline, FT_BBox *abbox)
#define FT_Outline_CubicTo_Func
#define FT_Outline_LineTo_Func
#define FT_CURVE_TAG(flag)
#define FT_Outline_ConicTo_Func
#define FT_Outline_MoveTo_Func
FT_BEGIN_HEADER typedef signed long FT_Pos
#define FT_DEFINE_OUTLINE_FUNCS( class_, move_to_, line_to_, conic_to_, cubic_to_, shift_, delta_)
FT_BEGIN_HEADER FT_Outline_Decompose(FT_Outline *outline, const FT_Outline_Funcs *func_interface, void *user)
_In_ CLIPOBJ _In_ BRUSHOBJ _In_ LONG _In_ LONG y1
_In_ CLIPOBJ _In_ BRUSHOBJ _In_ LONG _In_ LONG _In_ LONG _In_ LONG y2