1 //========================================================================
5 //========================================================================
12 #ifdef USE_GCC_PRAGMAS
16 #include "SplashTypes.h"
20 //------------------------------------------------------------------------
22 //------------------------------------------------------------------------
24 struct SplashXPathSeg
{
25 SplashCoord x0
, y0
; // first endpoint
26 SplashCoord x1
, y1
; // second endpoint
27 SplashCoord dxdy
; // slope: delta-x / delta-y
28 SplashCoord dydx
; // slope: delta-y / delta-x
32 #define splashXPathFirst 0x01 // first segment of a subpath
33 #define splashXPathLast 0x02 // last segment of a subpath
34 #define splashXPathEnd0 0x04 // first endpoint is end of an open subpath
35 #define splashXPathEnd1 0x08 // second endpoint is end of an open subpath
36 #define splashXPathHoriz 0x10 // segment is vertical (y0 == y1)
38 #define splashXPathVert 0x20 // segment is horizontal (x0 == x1)
40 #define splashXPathFlip 0x40 // y0 > y1
42 //------------------------------------------------------------------------
44 //------------------------------------------------------------------------
49 // Expands (converts to segments) and flattens (converts curves to
50 // lines) <path>. If <closeSubpaths> is true, closes all open
52 SplashXPath(SplashPath
*path
, SplashCoord flatness
,
55 // Copy an expanded path.
56 SplashXPath
*copy() { return new SplashXPath(this); }
60 // Sort by upper coordinate (lower y), in y-major order.
66 SplashXPath(SplashXPath
*xPath
);
68 void addCurve(SplashCoord x0
, SplashCoord y0
,
69 SplashCoord x1
, SplashCoord y1
,
70 SplashCoord x2
, SplashCoord y2
,
71 SplashCoord x3
, SplashCoord y3
,
73 GBool first
, GBool last
, GBool end0
, GBool end1
);
74 void addArc(SplashCoord x0
, SplashCoord y0
,
75 SplashCoord x1
, SplashCoord y1
,
76 SplashCoord xc
, SplashCoord yc
,
77 SplashCoord r
, int quad
,
79 GBool first
, GBool last
, GBool end0
, GBool end1
);
80 void addSegment(SplashCoord x0
, SplashCoord y0
,
81 SplashCoord x1
, SplashCoord y1
,
82 GBool first
, GBool last
, GBool end0
, GBool end1
);
85 int length
, size
; // length and size of segs array
87 friend class SplashXPathScanner
;
88 friend class SplashClip
;