+++ /dev/null
-\r
-#ifndef __WIN32K_DC_H\r
-#define __WIN32K_DC_H\r
-\r
-#include "driver.h"\r
-\r
-typedef enum tagGdiPathState\r
-{\r
- PATH_Null,\r
- PATH_Open,\r
- PATH_Closed\r
-} GdiPathState;\r
-\r
-typedef struct tagGdiPath\r
-{\r
- GdiPathState state;\r
- POINT *pPoints;\r
- BYTE *pFlags;\r
- int numEntriesUsed, numEntriesAllocated;\r
- BOOL newStroke;\r
-} GdiPath;\r
-\r
-typedef struct _WIN_DC_INFO\r
-{\r
- int flags;\r
- HRGN hClipRgn; /* Clip region (may be 0) */\r
- HRGN hVisRgn; /* Visible region (must never be 0) */\r
- HRGN hGCClipRgn; /* GC clip region (ClipRgn AND VisRgn) */\r
- HPEN hPen;\r
- HBRUSH hBrush;\r
- HFONT hFont;\r
- HBITMAP hBitmap;\r
- HBITMAP hFirstBitmap; /* Bitmap selected at creation of the DC */\r
-\r
-/* #if 0 */\r
- HANDLE hDevice;\r
- HPALETTE hPalette;\r
-\r
- GdiPath path;\r
-/* #endif */\r
-\r
- WORD ROPmode;\r
- WORD polyFillMode;\r
- WORD stretchBltMode;\r
- WORD relAbsMode;\r
- WORD backgroundMode;\r
- COLORREF backgroundColor;\r
- COLORREF textColor;\r
-\r
- short brushOrgX;\r
- short brushOrgY;\r
-\r
- WORD textAlign; /* Text alignment from SetTextAlign() */\r
- short charExtra; /* Spacing from SetTextCharacterExtra() */\r
- short breakTotalExtra; /* Total extra space for justification */\r
- short breakCount; /* Break char. count */\r
- short breakExtra; /* breakTotalExtra / breakCount */\r
- short breakRem; /* breakTotalExtra % breakCount */\r
-\r
- RECT totalExtent;\r
- BYTE bitsPerPixel;\r
-\r
- INT MapMode;\r
- INT GraphicsMode; /* Graphics mode */\r
- INT DCOrgX; /* DC origin */\r
- INT DCOrgY;\r
-\r
-#if 0\r
- FARPROC lpfnPrint; /* AbortProc for Printing */\r
-#endif\r
-\r
- INT CursPosX; /* Current position */\r
- INT CursPosY;\r
- INT ArcDirection;\r
-\r
- XFORM xformWorld2Wnd; /* World-to-window transformation */\r
- XFORM xformWorld2Vport; /* World-to-viewport transformation */\r
- XFORM xformVport2World; /* Inverse of the above transformation */\r
- BOOL vport2WorldValid; /* Is xformVport2World valid? */\r
-} WIN_DC_INFO;\r
-\r
- /* DC flags */\r
-#define DC_MEMORY 0x0001 /* It is a memory DC */\r
-#define DC_SAVED 0x0002 /* It is a saved DC */\r
-#define DC_DIRTY 0x0004 /* hVisRgn has to be updated */\r
-#define DC_THUNKHOOK 0x0008 /* DC hook is in the 16-bit code */\r
-\r
-#define GDI_DC_TYPE (1)\r
-\r
-typedef struct _DC\r
-{\r
- HDC hSelf;\r
- HDC hNext;\r
- DHPDEV PDev;\r
- HSURF FillPatternSurfaces[HS_DDI_MAX];\r
- PGDIINFO GDIInfo;\r
- PDEVINFO DevInfo;\r
- HDEV GDIDevice;\r
-\r
- DRIVER_FUNCTIONS DriverFunctions;\r
- UNICODE_STRING DriverName;\r
- HANDLE DeviceDriver;\r
-\r
- INT wndOrgX; /* Window origin */\r
- INT wndOrgY;\r
- INT wndExtX; /* Window extent */\r
- INT wndExtY;\r
- INT vportOrgX; /* Viewport origin */\r
- INT vportOrgY;\r
- INT vportExtX; /* Viewport extent */\r
- INT vportExtY;\r
-\r
- CLIPOBJ *CombinedClip;\r
-\r
- XLATEOBJ *XlateBrush;\r
- XLATEOBJ *XlatePen;\r
-\r
- INT saveLevel;\r
- BOOL IsIC;\r
-\r
- HPALETTE PalIndexed;\r
-\r
- WIN_DC_INFO w;\r
-} DC, *PDC;\r
-\r
-typedef struct _GDIPOINTER /* should stay private to ENG */\r
-{\r
- /* private GDI pointer handling information, required for software emulation */\r
- BOOL Enabled;\r
- POINTL Pos;\r
- SIZEL Size;\r
- POINTL HotSpot;\r
- XLATEOBJ *XlateObject;\r
- HSURF ColorSurface;\r
- HSURF MaskSurface;\r
- HSURF SaveSurface;\r
- int ShowPointer; /* counter negtive do not show the mouse postive show the mouse */\r
- \r
- /* public pointer information */\r
- RECTL Exclude; /* required publicly for SPS_ACCEPT_EXCLUDE */\r
- PGD_MOVEPOINTER MovePointer;\r
- ULONG Status;\r
-} GDIPOINTER, *PGDIPOINTER;\r
-\r
-typedef struct\r
-{\r
- HANDLE Handle;\r
- DHPDEV PDev;\r
- DEVMODEW DMW;\r
- HSURF FillPatterns[HS_DDI_MAX];\r
- GDIINFO GDIInfo;\r
- DEVINFO DevInfo;\r
- DRIVER_FUNCTIONS DriverFunctions;\r
- PFILE_OBJECT VideoFileObject;\r
- BOOLEAN PreparedDriver;\r
- ULONG DisplayNumber;\r
-\r
- GDIPOINTER Pointer;\r
-\r
- /* Stuff to keep track of software cursors; win32k gdi part */\r
- UINT SafetyRemoveLevel; /* at what level was the cursor removed?\r
- 0 for not removed */\r
- UINT SafetyRemoveCount;\r
-} GDIDEVICE;\r
-\r
-/* Internal functions */\r
-\r
-#define DC_LockDc(hDC) \\r
- ((PDC) GDIOBJ_LockObj ((HGDIOBJ) hDC, GDI_OBJECT_TYPE_DC))\r
-#define DC_UnlockDc(pDC) \\r
- GDIOBJ_UnlockObjByPtr (pDC)\r
-\r
-HDC FASTCALL RetrieveDisplayHDC(VOID);\r
-HDC FASTCALL DC_AllocDC(PUNICODE_STRING Driver);\r
-VOID FASTCALL DC_InitDC(HDC DCToInit);\r
-HDC FASTCALL DC_FindOpenDC(PUNICODE_STRING Driver);\r
-VOID FASTCALL DC_FreeDC(HDC DCToFree);\r
-BOOL INTERNAL_CALL DC_Cleanup(PVOID ObjectBody);\r
-HDC FASTCALL DC_GetNextDC (PDC pDC);\r
-VOID FASTCALL DC_SetNextDC (PDC pDC, HDC hNextDC);\r
-VOID FASTCALL DC_SetOwnership(HDC DC, PEPROCESS Owner);\r
-\r
-VOID FASTCALL DC_UpdateXforms(PDC dc);\r
-BOOL FASTCALL DC_InvertXform(const XFORM *xformSrc, XFORM *xformDest);\r
-\r
-#endif\r