#ifndef _WIN32K_PATH_H
#define _WIN32K_PATH_H
+typedef struct _PATH
+{
+ BASEOBJECT BaseObject;
+
+ RECTFX rcfxBoundBox;
+ POINTFX ptfxSubPathStart;
+
+ // Things to convert from:
+ DWORD state;
+ POINT *pPoints;
+ BYTE *pFlags;
+ int numEntriesUsed;
+ int numEntriesAllocated;
+ BOOL newStroke;
+} PATH, *PPATH;
+
+typedef struct _EPATHOBJ
+{
+ PATHOBJ po;
+ PPATH pPath;
+} EPATHOBJ, *PEPATHOBJ;
+
+#define PATH_AllocPath() ((PPATH) GDIOBJ_AllocObj(GDIObjType_PATH_TYPE))
+#define PATH_AllocPathWithHandle() ((PPATH) GDIOBJ_AllocObjWithHandle (GDI_OBJECT_TYPE_PATH))
+#define PATH_FreePath(pPath) GDIOBJ_FreeObj((POBJ)pPath, GDIObjType_PATH_TYPE)
+#define PATH_FreePathByHandle(hPath) GDIOBJ_FreeObjbyHandle((HGDIOBJ)hPath, GDI_OBJECT_TYPE_PATH)
+#define PATH_LockPath(hPath) ((PROSRGNDATA)GDIOBJ_LockObj((HGDIOBJ)hPath, GDI_OBJECT_TYPE_PATH))
+#define PATH_UnlockPath(pPath) GDIOBJ_UnlockObjByPtr((POBJ)pPath)
+
+
#define PATH_IsPathOpen(path) ((path).state==PATH_Open)
BOOL FASTCALL PATH_Arc (PDC dc, INT x1, INT y1, INT x2, INT y2, INT xStart, INT yStart, INT xEnd, INT yEnd, INT lines);
{1, sizeof(ROSRGNDATA), TAG_REGION, REGION_Cleanup}, /* 04 RGN */
{1, sizeof(BITMAPOBJ), TAG_SURFACE, BITMAP_Cleanup}, /* 05 SURFACE */
{1, sizeof(CLIENTOBJ), TAG_CLIENTOBJ, GDI_CleanupDummy}, /* 06 CLIENTOBJ: METADC,... */
- {0, 0, TAG_PATH, NULL}, /* 07 PATH, unused */
+ {1, sizeof(PATH), TAG_PATH, GDI_CleanupDummy}, /* 07 PATH */
{1, sizeof(PALGDI), TAG_PALETTE, PALETTE_Cleanup}, /* 08 PAL */
{1, sizeof(COLORSPACE), TAG_ICMLCS, GDI_CleanupDummy}, /* 09 ICMLCS, */
{1, sizeof(TEXTOBJ), TAG_LFONT, GDI_CleanupDummy}, /* 0a LFONT */