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 typedef struct _PATH 24 { 25 BASEOBJECT BaseObject; 26 27 RECTFX rcfxBoundBox; 28 POINTFX ptfxSubPathStart; 29 30 // Things to convert from: 31 DWORD state; 32 POINT *pPoints; 33 BYTE *pFlags; 34 int numEntriesUsed; 35 int numEntriesAllocated; 36 BOOL newStroke; 37 } PATH, *PPATH; 38 39 typedef struct _EPATHOBJ 40 { 41 PATHOBJ po; 42 PPATH pPath; 43 } EPATHOBJ, *PEPATHOBJ; 44 45 #define PATH_AllocPath() ((PPATH) GDIOBJ_AllocObj(GDIObjType_PATH_TYPE)) 46 #define PATH_AllocPathWithHandle() ((PPATH) GDIOBJ_AllocObjWithHandle (GDI_OBJECT_TYPE_PATH, sizeof(PATH))) 47 #define PATH_FreePath(pPath) GDIOBJ_FreeObj((POBJ)pPath, GDIObjType_PATH_TYPE) 48 #define PATH_FreeExtPathByHandle(hPath) GDIOBJ_FreeObjByHandle((HGDIOBJ) hPath, GDI_OBJECT_TYPE_PATH) 49 #define PATH_LockPath(hPath) ((PPATH)GDIOBJ_ShareLockObj((HGDIOBJ)hPath, GDI_OBJECT_TYPE_PATH)) 50 #define PATH_UnlockPath(pPath) GDIOBJ_vDereferenceObject((POBJ)pPath) 51 52 53 #define PATH_IsPathOpen(dclevel) ( ((dclevel).hPath) && ((dclevel).flPath & DCPATH_ACTIVE) ) 54 55 BOOL FASTCALL PATH_Arc (PDC dc, INT x1, INT y1, INT x2, INT y2, INT xStart, INT yStart, INT xEnd, INT yEnd, INT lines); 56 BOOL FASTCALL PATH_Ellipse (PDC dc, INT x1, INT y1, INT x2, INT y2); 57 VOID FASTCALL PATH_EmptyPath (PPATH pPath); 58 BOOL FASTCALL PATH_LineTo (PDC dc, INT x, INT y); 59 BOOL FASTCALL PATH_MoveTo (PDC dc); 60 BOOL FASTCALL PATH_PolyBezier (PDC dc, const POINT *pts, DWORD cbPoints); 61 BOOL FASTCALL PATH_PolyBezierTo (PDC dc, const POINT *pts, DWORD cbPoints); 62 BOOL FASTCALL PATH_PolyDraw(PDC dc, const POINT *pts, const BYTE *types, DWORD cbPoints); 63 BOOL FASTCALL PATH_Polygon (PDC dc, const POINT *pts, DWORD cbPoints); 64 BOOL FASTCALL PATH_Polyline (PDC dc, const POINT *pts, DWORD cbPoints); 65 BOOL FASTCALL PATH_PolylineTo (PDC dc, const POINT *pts, DWORD cbPoints); 66 BOOL FASTCALL PATH_PolyPolygon ( PDC dc, const POINT* pts, const INT* counts, UINT polygons); 67 BOOL FASTCALL PATH_PolyPolyline( PDC dc, const POINT* pts, const DWORD* counts, DWORD polylines); 68 BOOL FASTCALL PATH_Rectangle (PDC dc, INT x1, INT y1, INT x2, INT y2); 69 BOOL FASTCALL PATH_RoundRect(DC *dc, INT x1, INT y1, INT x2, INT y2, INT ell_width, INT ell_height); 70 BOOL FASTCALL PATH_PathToRegion (PPATH pPath, INT nPolyFillMode, HRGN *pHrgn); 71 BOOL FASTCALL PATH_ExtTextOut(PDC dc,INT x,INT y,UINT flags,const RECTL *lprc,LPCWSTR str,UINT count,const INT *dx); 72 73 BOOL FASTCALL PATH_AddEntry (PPATH pPath, const POINT *pPoint, BYTE flags); 74 BOOL FASTCALL PATH_AddFlatBezier (PPATH pPath, POINT *pt, BOOL closed); 75 BOOL FASTCALL PATH_DoArcPart (PPATH pPath, FLOAT_POINT corners[], double angleStart, double angleEnd, BYTE startEntryType); 76 BOOL FASTCALL PATH_FillPath( PDC dc, PPATH pPath ); 77 BOOL FASTCALL PATH_FlattenPath (PPATH pPath); 78 VOID FASTCALL PATH_NormalizePoint (FLOAT_POINT corners[], const FLOAT_POINT *pPoint, double *pX, double *pY); 79 80 BOOL FASTCALL PATH_ReserveEntries (PPATH pPath, INT numEntries); 81 VOID FASTCALL PATH_ScaleNormalizedPoint (FLOAT_POINT corners[], double x, double y, POINT *pPoint); 82 BOOL FASTCALL PATH_StrokePath(DC *dc, PPATH pPath); 83 BOOL PATH_CheckCorners(DC *dc, POINT corners[], INT x1, INT y1, INT x2, INT y2); 84 85 VOID FASTCALL IntGdiCloseFigure(PPATH pPath); 86 BOOL FASTCALL PATH_Delete(HPATH hPath); 87 88 VOID FASTCALL IntGetCurrentPositionEx(PDC dc, LPPOINT pt); 89