[WIN32SS] Add 5 members to FONTGDI structure
[reactos.git] / win32ss / gdi / eng / engobjects.h
index 12840a8..c79832a 100644 (file)
@@ -20,7 +20,7 @@
  * 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 {
-  CLIPOBJ ClipObj;
-  ULONG EnumPos;
-  ULONG EnumOrder;
-  ULONG EnumMax;
-  ENUMRECTS EnumRects;
-} CLIPGDI, *PCLIPGDI;
-
-// HACK, until we use the original structure
-#define XCLIPOBJ CLIPGDI
 
 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;
+} EWNDOBJ, *PEWNDOBJ;
+
+
 /*ei What is this for? */
 typedef struct _DRVFUNCTIONSGDI {
   HDEV  hdev;
@@ -90,37 +112,60 @@ typedef struct _FLOATGDI {
   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 {
   PATHOBJ PathObj;
 } PATHGDI;
 
-typedef struct _WNDGDI {
-  WNDOBJ            WndObj;
-  HWND              Hwnd;
-  CLIPOBJ           *ClientClipObj;
-  WNDOBJCHANGEPROC  ChangeProc;
-  FLONG             Flags;
-  int               PixelFormat;
-} WNDGDI, *PWNDGDI;
-
 typedef struct _XFORMGDI {
   ULONG Dummy;
   /* XFORMOBJ has no public members */