update for HEAD-2003091401
[reactos.git] / include / win32k / dc.h
index 0a4e34c..1a8c8b0 100644 (file)
@@ -7,56 +7,9 @@
 #include <win32k/gdiobj.h>
 #include <win32k/path.h>
 
-typedef struct
-{
-  HANDLE Handle;
-  DHPDEV PDev;
-  DEVMODEW DMW;
-  HSURF FillPatterns[HS_DDI_MAX];
-  GDIINFO GDIInfo;
-  DEVINFO DevInfo;
-  DRIVER_FUNCTIONS DriverFunctions;
-} GDIDEVICE;
-
-/*  (RJJ) Taken from WINE  */
-typedef struct _DEVICECAPS
-{
-  WORD   version;       /*   0: driver version */
-  WORD   technology;    /*   2: device technology */
-  WORD   horzSize;      /*   4: width of display in mm */
-  WORD   vertSize;      /*   6: height of display in mm */
-  WORD   horzRes;       /*   8: width of display in pixels */
-  WORD   vertRes;       /*  10: width of display in pixels */
-  WORD   bitsPixel;     /*  12: bits per pixel */
-  WORD   planes;        /*  14: color planes */
-  WORD   numBrushes;    /*  16: device-specific brushes */
-  WORD   numPens;       /*  18: device-specific pens */
-  WORD   numMarkers;    /*  20: device-specific markers */
-  WORD   numFonts;      /*  22: device-specific fonts */
-  WORD   numColors;     /*  24: size of color table */
-  WORD   pdeviceSize;   /*  26: size of PDEVICE structure */
-  WORD   curveCaps;     /*  28: curve capabilities */
-  WORD   lineCaps;      /*  30: line capabilities */
-  WORD   polygonalCaps; /*  32: polygon capabilities */
-  WORD   textCaps;      /*  34: text capabilities */
-  WORD   clipCaps;      /*  36: clipping capabilities */
-  WORD   rasterCaps;    /*  38: raster capabilities */
-  WORD   aspectX;       /*  40: relative width of device pixel */
-  WORD   aspectY;       /*  42: relative height of device pixel */
-  WORD   aspectXY;      /*  44: relative diagonal width of device pixel */
-  WORD   pad1[21];      /*  46-86: reserved */
-  WORD   logPixelsX;    /*  88: pixels / logical X inch */
-  WORD   logPixelsY;    /*  90: pixels / logical Y inch */
-  WORD   pad2[6];       /*  92-102: reserved */
-  WORD   sizePalette;   /* 104: entries in system palette */
-  WORD   numReserved;   /* 106: reserved entries */
-  WORD   colorRes;      /* 108: color resolution */
-} DEVICECAPS, *PDEVICECAPS;
-
 typedef struct _WIN_DC_INFO
 {
   int  flags;
-  const PDEVICECAPS  devCaps;
   HRGN  hClipRgn;     /* Clip region (may be 0) */
   HRGN  hVisRgn;      /* Visible region (must never be 0) */
   HRGN  hGCClipRgn;   /* GC clip region (ClipRgn AND VisRgn) */
@@ -66,12 +19,12 @@ typedef struct _WIN_DC_INFO
   HBITMAP  hBitmap;
   HBITMAP  hFirstBitmap; /* Bitmap selected at creation of the DC */
 
-// #if 0
+/* #if 0 */
     HANDLE      hDevice;
     HPALETTE    hPalette;
 
     GdiPath       path;
-// #endif
+/* #endif */
 
   WORD  ROPmode;
   WORD  polyFillMode;
@@ -128,8 +81,8 @@ typedef struct _DC
   DHPDEV  PDev;
   DEVMODEW  DMW;
   HSURF  FillPatternSurfaces[HS_DDI_MAX];
-  GDIINFO  GDIInfo;
-  DEVINFO  DevInfo;
+  PGDIINFO  GDIInfo;
+  PDEVINFO  DevInfo;
   HSURF  Surface;
 
   DRIVER_FUNCTIONS  DriverFunctions;
@@ -145,50 +98,59 @@ typedef struct _DC
   INT  vportExtX;        /* Viewport extent */
   INT  vportExtY;
 
+  CLIPOBJ *CombinedClip;
+
   INT  saveLevel;
 
   WIN_DC_INFO  w;
 } DC, *PDC;
 
-/*  Internal functions  */
+typedef struct
+{
+  HANDLE Handle;
+  DHPDEV PDev;
+  DEVMODEW DMW;
+  HSURF FillPatterns[HS_DDI_MAX];
+  GDIINFO GDIInfo;
+  DEVINFO DevInfo;
+  DRIVER_FUNCTIONS DriverFunctions;
+  HANDLE DisplayDevice;
+} GDIDEVICE;
 
-/*
-#define  DC_PtrToHandle(pDC)  \
-  ((HDC) GDIOBJ_PtrToHandle ((PGDIOBJ) pDC, GO_DC_MAGIC))
-*/
+/*  Internal functions  */
 
-#define  DC_HandleToPtr(hDC)  \
-  ((PDC) GDIOBJ_LockObj ((HGDIOBJ) hDC, GO_DC_MAGIC))
-#define  DC_ReleasePtr(hDC)  \
-  GDIOBJ_UnlockObj ((HGDIOBJ) hDC, GO_DC_MAGIC)
+#define  DC_LockDc(hDC)  \
+  ((PDC) GDIOBJ_LockObj ((HGDIOBJ) hDC, GDI_OBJECT_TYPE_DC))
+#define  DC_UnlockDc(hDC)  \
+  GDIOBJ_UnlockObj ((HGDIOBJ) hDC, GDI_OBJECT_TYPE_DC)
 
-HDC RetrieveDisplayHDC(VOID);
-HDC  DC_AllocDC(LPCWSTR  Driver);
-void  DC_InitDC(HDC  DCToInit);
-HDC  DC_FindOpenDC(LPCWSTR  Driver);
-void  DC_FreeDC(HDC  DCToFree);
-HDC  DC_GetNextDC (PDC pDC);
-void  DC_SetNextDC (PDC pDC, HDC hNextDC);
-BOOL DC_InternalDeleteDC( PDC DCToDelete );
+HDC  FASTCALL RetrieveDisplayHDC(VOID);
+HDC  FASTCALL DC_AllocDC(LPCWSTR  Driver);
+VOID FASTCALL DC_InitDC(HDC  DCToInit);
+HDC  FASTCALL DC_FindOpenDC(LPCWSTR  Driver);
+VOID FASTCALL DC_FreeDC(HDC  DCToFree);
+HDC  FASTCALL DC_GetNextDC (PDC pDC);
+VOID FASTCALL DC_SetNextDC (PDC pDC, HDC hNextDC);
+BOOL FASTCALL DC_InternalDeleteDC( PDC DCToDelete );
 
-void DC_UpdateXforms(PDC  dc);
-BOOL DC_InvertXform(const XFORM *xformSrc, XFORM *xformDest);
+VOID FASTCALL DC_UpdateXforms(PDC  dc);
+BOOL FASTCALL DC_InvertXform(const XFORM *xformSrc, XFORM *xformDest);
 
 /*  User entry points */
 
-BOOL STDCALL  W32kCancelDC(HDC  hDC);
-HDC STDCALL  W32kCreateCompatableDC(HDC  hDC);
-HDC STDCALL  W32kCreateDC(LPCWSTR  Driver,
+BOOL STDCALL  NtGdiCancelDC(HDC  hDC);
+HDC STDCALL  NtGdiCreateCompatableDC(HDC  hDC);
+HDC STDCALL  NtGdiCreateDC(LPCWSTR  Driver,
                           LPCWSTR  Device,
                           LPCWSTR  Output,
                           CONST PDEVMODEW  InitData);
-HDC STDCALL W32kCreateIC(LPCWSTR  Driver,
+HDC STDCALL NtGdiCreateIC(LPCWSTR  Driver,
                          LPCWSTR  Device,
                          LPCWSTR  Output,
                          CONST PDEVMODEW  DevMode);
-BOOL STDCALL  W32kDeleteDC(HDC  hDC);
-BOOL STDCALL  W32kDeleteObject(HGDIOBJ hObject);
-INT STDCALL  W32kDrawEscape(HDC  hDC,
+BOOL STDCALL  NtGdiDeleteDC(HDC  hDC);
+BOOL STDCALL  NtGdiDeleteObject(HGDIOBJ hObject);
+INT STDCALL  NtGdiDrawEscape(HDC  hDC,
                             INT  nEscape,
                             INT  cbInput,
                             LPCSTR  lpszInData);
@@ -196,46 +158,45 @@ INT STDCALL  W32kDrawEscape(HDC  hDC,
 /* FIXME: this typedef should go somewhere else...  */
 typedef VOID (*GOBJENUMPROC)(PVOID, LPARAM);
 
-INT STDCALL  W32kEnumObjects(HDC  hDC,
+INT STDCALL  NtGdiEnumObjects(HDC  hDC,
                              INT  ObjectType,
                              GOBJENUMPROC  ObjectFunc,
                              LPARAM  lParam);
 
-COLORREF STDCALL  W32kGetBkColor(HDC  hDC);
-INT STDCALL  W32kGetBkMode(HDC  hDC);
-BOOL STDCALL  W32kGetBrushOrgEx(HDC  hDC, LPPOINT brushOrg);
-HRGN STDCALL  W32kGetClipRgn(HDC  hDC);
-HGDIOBJ STDCALL  W32kGetCurrentObject(HDC  hDC, UINT  ObjectType);
-BOOL STDCALL  W32kGetCurrentPositionEx(HDC  hDC, LPPOINT currentPosition);
-BOOL STDCALL  W32kGetDCOrgEx(HDC  hDC, LPPOINT  Point);
-HDC STDCALL  W32kGetDCState16(HDC  hDC);
-INT STDCALL  W32kGetDeviceCaps(HDC  hDC, INT  Index);
-INT STDCALL  W32kGetMapMode(HDC  hDC);
-INT STDCALL  W32kGetObject(HGDIOBJ  hGDIObj,
+COLORREF STDCALL  NtGdiGetBkColor(HDC  hDC);
+INT STDCALL  NtGdiGetBkMode(HDC  hDC);
+BOOL STDCALL  NtGdiGetBrushOrgEx(HDC  hDC, LPPOINT brushOrg);
+HRGN STDCALL  NtGdiGetClipRgn(HDC  hDC);
+HGDIOBJ STDCALL  NtGdiGetCurrentObject(HDC  hDC, UINT  ObjectType);
+VOID FASTCALL IntGetCurrentPositionEx (PDC  dc,  LPPOINT currentPosition);
+BOOL STDCALL  NtGdiGetCurrentPositionEx(HDC  hDC, LPPOINT currentPosition);
+BOOL STDCALL  NtGdiGetDCOrgEx(HDC  hDC, LPPOINT  Point);
+INT STDCALL  NtGdiGetDeviceCaps(HDC  hDC, INT  Index);
+INT STDCALL  NtGdiGetMapMode(HDC  hDC);
+INT STDCALL  NtGdiGetObject(HGDIOBJ  hGDIObj,
                            INT  BufSize,
                            LPVOID  Object);
-DWORD STDCALL  W32kGetObjectType(HGDIOBJ  hGDIObj);
-INT STDCALL  W32kGetPolyFillMode(HDC  hDC);
-INT STDCALL  W32kGetRelAbs(HDC  hDC);
-INT STDCALL  W32kGetROP2(HDC  hDC);
-HGDIOBJ STDCALL  W32kGetStockObject(INT  Object);
-INT STDCALL  W32kGetStretchBltMode(HDC  hDC);
-COLORREF STDCALL  W32kGetTextColor(HDC  hDC);
-UINT STDCALL  W32kGetTextAlign(HDC  hDC);
-BOOL STDCALL  W32kGetViewportExtEx(HDC  hDC, LPSIZE viewportExt);
-BOOL STDCALL  W32kGetViewportOrgEx(HDC  hDC, LPPOINT viewportOrg);
-BOOL STDCALL  W32kGetWindowExtEx(HDC  hDC, LPSIZE windowExt);
-BOOL STDCALL  W32kGetWindowOrgEx(HDC  hDC, LPPOINT windowOrg);
-HDC STDCALL  W32kResetDC(HDC  hDC, CONST DEVMODEW  *InitData);
-BOOL STDCALL  W32kRestoreDC(HDC  hDC, INT  SavedDC);
-INT STDCALL  W32kSaveDC(HDC  hDC);
-HGDIOBJ STDCALL  W32kSelectObject(HDC  hDC, HGDIOBJ  hGDIObj);
-INT STDCALL  W32kSetBkMode(HDC  hDC, INT  backgroundMode);
-INT STDCALL  W32kSetPolyFillMode(HDC  hDC, INT polyFillMode);
-INT STDCALL  W32kSetRelAbs(HDC  hDC, INT  relAbsMode);
-INT STDCALL  W32kSetROP2(HDC  hDC, INT  ROPmode);
-INT STDCALL  W32kSetStretchBltMode(HDC  hDC, INT  stretchBltMode);
-COLORREF STDCALL  W32kSetTextColor(HDC hDC, COLORREF color);
+DWORD STDCALL  NtGdiGetObjectType(HGDIOBJ  hGDIObj);
+INT STDCALL  NtGdiGetPolyFillMode(HDC  hDC);
+INT STDCALL  NtGdiGetRelAbs(HDC  hDC);
+INT STDCALL  NtGdiGetROP2(HDC  hDC);
+HGDIOBJ STDCALL  NtGdiGetStockObject(INT  Object);
+INT STDCALL  NtGdiGetStretchBltMode(HDC  hDC);
+COLORREF STDCALL  NtGdiGetTextColor(HDC  hDC);
+UINT STDCALL  NtGdiGetTextAlign(HDC  hDC);
+BOOL STDCALL  NtGdiGetViewportExtEx(HDC  hDC, LPSIZE viewportExt);
+BOOL STDCALL  NtGdiGetViewportOrgEx(HDC  hDC, LPPOINT viewportOrg);
+BOOL STDCALL  NtGdiGetWindowExtEx(HDC  hDC, LPSIZE windowExt);
+BOOL STDCALL  NtGdiGetWindowOrgEx(HDC  hDC, LPPOINT windowOrg);
+HDC STDCALL  NtGdiResetDC(HDC  hDC, CONST DEVMODEW  *InitData);
+BOOL STDCALL  NtGdiRestoreDC(HDC  hDC, INT  SavedDC);
+INT STDCALL  NtGdiSaveDC(HDC  hDC);
+HGDIOBJ STDCALL  NtGdiSelectObject(HDC  hDC, HGDIOBJ  hGDIObj);
+INT STDCALL  NtGdiSetBkMode(HDC  hDC, INT  backgroundMode);
+INT STDCALL  NtGdiSetPolyFillMode(HDC  hDC, INT polyFillMode);
+INT STDCALL  NtGdiSetRelAbs(HDC  hDC, INT  relAbsMode);
+INT STDCALL  NtGdiSetROP2(HDC  hDC, INT  ROPmode);
+INT STDCALL  NtGdiSetStretchBltMode(HDC  hDC, INT  stretchBltMode);
+COLORREF STDCALL  NtGdiSetTextColor(HDC hDC, COLORREF color);
 
 #endif
-