44#define FT_UPDATE_BBOX( p, bbox ) \
46 if ( p->x < bbox.xMin ) \
48 if ( p->x > bbox.xMax ) \
50 if ( p->y < bbox.yMin ) \
52 if ( p->y > bbox.yMax ) \
56#define CHECK_X( p, bbox ) \
57 ( p->x < bbox.xMin || p->x > bbox.xMax )
59#define CHECK_Y( p, bbox ) \
60 ( p->y < bbox.yMin || p->y > bbox.yMax )
311 while ( q2 > 0 || q3 > 0 )
314 if ( q1 + q2 > q3 + q4 )
321 q4 = ( q4 + q3 ) >> 3;
332 q1 = ( q1 + q2 ) >> 3;
338 if ( q1 == q2 && q1 >= q3 )
343 if ( q3 == q4 && q2 <= q4 )
372 if ( p2 > *
max || p3 > *
max )
376 if ( p2 < *
min || p3 < *
min )
465 FT_BBox cbox = { 0x7FFFFFFFL, 0x7FFFFFFFL,
466 -0x7FFFFFFFL, -0x7FFFFFFFL };
468 -0x7FFFFFFFL, -0x7FFFFFFFL };
474 return FT_THROW( Invalid_Argument );
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)
static float int float int float int float y3
_In_ CLIPOBJ _In_ BRUSHOBJ _In_ LONG _In_ LONG y1
_In_ CLIPOBJ _In_ BRUSHOBJ _In_ LONG _In_ LONG _In_ LONG _In_ LONG y2