1 #pragma once 2 3 /* DCPATH flPath */ 4 enum _DCPATHFLAGS 5 { 6 DCPATH_ACTIVE = 0x0001, 7 DCPATH_SAVE = 0x0002, 8 DCPATH_CLOCKWISE = 0x0004, 9 10 /* ReactOS only */ 11 DCPATH_SAVESTATE = 0x80000000 12 }; 13 14 typedef HGDIOBJ HPATH, *PHPATH; 15 16 typedef enum tagGdiPathState 17 { 18 PATH_Null, 19 PATH_Open, 20 PATH_Closed 21 } GdiPathState; 22 23 // Path type flags 24 #define PATHTYPE_KEEPME 1 25 #define PATHTYPE_STACK 2 26 27 /* extended PATHDATA */ 28 typedef struct _EXTPATHDATA 29 { 30 PATHDATA pd; 31 struct _EXTPATHDATA *ppdNext; 32 } EXTPATHDATA, *PEXTPATHDATA; 33 34 typedef struct _PATH 35 { 36 BASEOBJECT BaseObject; 37 //PVOID ppachain; 38 RECTFX rcfxBoundBox; 39 POINTFX ptfxSubPathStart; 40 FLONG flType; 41 PEXTPATHDATA ppdFirst; 42 PEXTPATHDATA ppdLast; 43 FLONG flags; // PATHDATA flags. 44 PEXTPATHDATA ppdCurrent; 45 // PATHOBJ; 46 FLONG fl; // Saved flags. 47 ULONG cCurves; // Saved number of lines and Bezier. 48 49 struct _EPATHOBJ *epo; 50 51 // Wine/ReactOS Things to convert from: 52 FLONG state; 53 POINT *pPoints; 54 BYTE *pFlags; 55 int numEntriesUsed; 56 int numEntriesAllocated; 57 BOOL newStroke; 58 POINT pos; 59 } PATH, *PPATH; 60 61 typedef struct _EPATHOBJ 62 { 63 PATHOBJ po; 64 PPATH pPath; 65 CLIPOBJ *pco; 66 } EPATHOBJ, *PEPATHOBJ; 67 68 #define PATH_AllocPath() ((PPATH) GDIOBJ_AllocObj(GDIObjType_PATH_TYPE)) 69 #define PATH_AllocPathWithHandle() ((PPATH) GDIOBJ_AllocObjWithHandle (GDI_OBJECT_TYPE_PATH, sizeof(PATH))) 70 #define PATH_LockPath(hPath) ((PPATH)GDIOBJ_ShareLockObj((HGDIOBJ)hPath, GDI_OBJECT_TYPE_PATH)) 71 #define PATH_UnlockPath(pPath) GDIOBJ_vDereferenceObject((POBJ)pPath) 72 #define PATH_IsPathOpen(dclevel) ( ((dclevel).hPath) && ((dclevel).flPath & DCPATH_ACTIVE) ) 73 74 BOOL FASTCALL PATH_Arc (PDC dc, INT x1, INT y1, INT x2, INT y2, INT xStart, INT yStart, INT xEnd, INT yEnd, INT direction, INT lines); 75 BOOL PATH_Ellipse (PDC dc, INT x1, INT y1, INT x2, INT y2); 76 PPATH FASTCALL PATH_CreatePath(int count); 77 VOID FASTCALL PATH_EmptyPath (PPATH pPath); 78 BOOL FASTCALL PATH_LineTo (PDC dc, INT x, INT y); 79 BOOL FASTCALL PATH_MoveTo(PDC dc, PPATH pPath); 80 BOOL FASTCALL PATH_PolyBezier (PDC dc, const POINT *pts, DWORD cbPoints); 81 BOOL FASTCALL PATH_PolyBezierTo (PDC dc, const POINT *pts, DWORD cbPoints); 82 BOOL FASTCALL PATH_PolyDraw(PDC dc, const POINT *pts, const BYTE *types, DWORD cbPoints); 83 BOOL FASTCALL PATH_PolylineTo (PDC dc, const POINT *pts, DWORD cbPoints); 84 BOOL FASTCALL PATH_PolyPolygon ( PDC dc, const POINT* pts, const INT* counts, UINT polygons); 85 BOOL FASTCALL PATH_PolyPolyline( PDC dc, const POINT* pts, const DWORD* counts, DWORD polylines); 86 BOOL FASTCALL PATH_Rectangle (PDC dc, INT x1, INT y1, INT x2, INT y2); 87 BOOL PATH_RoundRect(DC *dc, INT x1, INT y1, INT x2, INT y2, INT ell_width, INT ell_height); 88 BOOL FASTCALL PATH_PathToRegion (PPATH pPath, INT nPolyFillMode, PREGION Rgn); 89 BOOL FASTCALL PATH_ExtTextOut(PDC dc,INT x,INT y,UINT flags,const RECTL *lprc,LPCWSTR str,UINT count,const INT *dx); 90 91 BOOL FASTCALL PATH_AddEntry (PPATH pPath, const POINT *pPoint, BYTE flags); 92 BOOL FASTCALL PATH_AddFlatBezier (PPATH pPath, POINT *pt, BOOL closed); 93 BOOL FASTCALL PATH_FillPath( PDC dc, PPATH pPath ); 94 BOOL FASTCALL PATH_FillPathEx(PDC dc, PPATH pPath, PBRUSH pbrFill); 95 PPATH FASTCALL PATH_FlattenPath (PPATH pPath); 96 PPATH FASTCALL PATH_WidenPathEx(DC *dc, PPATH pPath); 97 98 BOOL FASTCALL PATH_ReserveEntries (PPATH pPath, INT numEntries); 99 BOOL FASTCALL PATH_StrokePath(DC *dc, PPATH pPath); 100 101 VOID FASTCALL IntGdiCloseFigure(PPATH pPath); 102 BOOL FASTCALL PATH_Delete(HPATH hPath); 103 104 VOID FASTCALL IntGetCurrentPositionEx(PDC dc, LPPOINT pt); 105 106 BOOL PATH_RestorePath( DC *, DC *); 107 BOOL PATH_SavePath( DC *, DC *); 108 BOOL IntGdiFillRgn(PDC pdc, PREGION prgn, PBRUSH pbrFill); 109 PPATH FASTCALL 110 IntGdiWidenPath(PPATH pPath, UINT penWidth, UINT penStyle, FLOAT eMiterLimit); 111