* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS kernel
* PURPOSE: GDI Internal Objects
- * FILE: subsystem/win32/win32k/eng/objects.h
+ * FILE: win32ss/gdi/eng/engobjects.h
* PROGRAMER: Jason Filby
* REVISION HISTORY:
* 21/8/1999: Created
---------------------------------------------------------------------------*/
-/* EXtended CLip and Window Region Object */
+typedef struct _RWNDOBJ {
+ PVOID pvConsumer;
+ RECTL rclClient;
+ SURFOBJ *psoOwner;
+} RWNDOBJ;
+
+/* EXtended CLip and Window Region Objects */
+#ifdef __cplusplus
+typedef struct _XCLIPOBJ : _CLIPOBJ, _RWNDOBJ
+{
+#else
typedef struct _XCLIPOBJ
{
- WNDOBJ;
- PVOID pClipRgn; /* prgnRao_ or (prgnVis_ if (prgnRao_ == z)) */
+ CLIPOBJ;
+ RWNDOBJ;
+#endif
+ struct _REGION *pClipRgn; /* prgnRao_ or (prgnVis_ if (prgnRao_ == z)) */
+ //
RECTL rclClipRgn;
- PVOID pscanClipRgn; /* Ptr to regions rect buffer based on iDirection. */
+ //PVOID pscanClipRgn; /* Ptr to regions rect buffer based on iDirection. */
+ RECTL* Rects;
DWORD cScan;
DWORD reserved;
- ULONG ulBSize;
+ ULONG EnumPos;
LONG lscnSize;
- ULONG ulObjSize;
+ ULONG EnumMax;
ULONG iDirection;
- ULONG ulClipType;
+ ULONG iType;
DWORD reserved1;
LONG lUpDown;
DWORD reserved2;
- BOOL bShouldDoAll;
- DWORD nComplexity; /* count/mode based on # of rect in regions scan. */
+ BOOL bAll;
+ //
+ DWORD RectCount; /* count/mode based on # of rect in regions scan. */
PVOID pDDA; /* Pointer to a large drawing structure. */
} XCLIPOBJ, *PXCLIPOBJ;
+
/*
- EngCreateClip allocates XCLIPOBJ and RGNOBJ, pco->co.pClipRgn = &pco->ro.
+ EngCreateClip allocates XCLIPOBJ and REGION, pco->co.pClipRgn = &pco->ro.
{
XCLIPOBJ co;
- RGNOBJ ro;
+ REGION ro;
}
*/
-typedef struct _CLIPGDI {
- union
- {
- CLIPOBJ ClipObj;
- WNDOBJ WndObj;
- };
- /* WNDOBJ part */
+
+extern XCLIPOBJ gxcoTrivial;
+
+#ifdef __cplusplus
+typedef struct _EWNDOBJ : _XCLIPOBJ
+{
+#else
+typedef struct _EWNDOBJ
+{
+ XCLIPOBJ;
+#endif
+ /* Extended WNDOBJ part */
HWND Hwnd;
WNDOBJCHANGEPROC ChangeProc;
FLONG Flags;
int PixelFormat;
- /* CLIPOBJ part */
- ULONG EnumPos;
- ULONG EnumOrder;
- ULONG EnumMax;
- ULONG RectCount;
- RECTL* Rects;
-} CLIPGDI, *PCLIPGDI;
-C_ASSERT(FIELD_OFFSET(CLIPGDI, ClipObj) == FIELD_OFFSET(CLIPGDI, WndObj.coClient));
-
-// HACK, until we use the original structure
-#define XCLIPOBJ CLIPGDI
+} EWNDOBJ, *PEWNDOBJ;
-extern XCLIPOBJ gxcoTrivial;
/*ei What is this for? */
typedef struct _DRVFUNCTIONSGDI {
ULONG Dummy;
} FLOATGDI;
+typedef struct _SHARED_MEM {
+ PVOID Buffer;
+ ULONG BufferSize;
+ BOOL IsMapping;
+ LONG RefCount;
+} SHARED_MEM, *PSHARED_MEM;
+
+typedef struct _SHARED_FACE_CACHE {
+ UINT OutlineRequiredSize;
+ UNICODE_STRING FontFamily;
+ UNICODE_STRING FullName;
+} SHARED_FACE_CACHE, *PSHARED_FACE_CACHE;
+
+typedef struct _SHARED_FACE {
+ FT_Face Face;
+ LONG RefCount;
+ PSHARED_MEM Memory;
+ SHARED_FACE_CACHE EnglishUS;
+ SHARED_FACE_CACHE UserLanguage;
+} SHARED_FACE, *PSHARED_FACE;
+
typedef struct _FONTGDI {
- FONTOBJ FontObj;
- ULONG iUnique;
- FLONG flType;
- union{
- DHPDEV dhpdev;
- FT_Face face;
- };
-
- LONG lMaxNegA;
- LONG lMaxNegC;
- LONG lMinWidthD;
-
- LPWSTR Filename;
- BYTE Underline;
- BYTE StrikeOut;
+ FONTOBJ FontObj;
+ ULONG iUnique;
+ FLONG flType;
+
+ DHPDEV dhpdev;
+ PSHARED_FACE SharedFace;
+
+ LONG lMaxNegA;
+ LONG lMaxNegC;
+ LONG lMinWidthD;
+
+ LPWSTR Filename;
+ BYTE RequestUnderline;
+ BYTE RequestStrikeOut;
+ BYTE RequestItalic;
+ LONG RequestWeight;
+ BYTE OriginalItalic;
+ LONG OriginalWeight;
+ BYTE CharSet;
+
+ /* Precomputed font metrics (supplements FreeType metrics) */
+ LONG tmHeight;
+ LONG tmAscent;
+ LONG tmDescent;
+ LONG tmInternalLeading;
+ LONG EmHeight;
} FONTGDI, *PFONTGDI;
typedef struct _PATHGDI {