7 typedef enum tagGdiPathState
14 typedef struct tagGdiPath
19 int numEntriesUsed
, numEntriesAllocated
;
23 typedef struct _WIN_DC_INFO
26 HRGN hClipRgn
; /* Clip region (may be 0) */
27 HRGN hVisRgn
; /* Visible region (must never be 0) */
28 HRGN hGCClipRgn
; /* GC clip region (ClipRgn AND VisRgn) */
33 HBITMAP hFirstBitmap
; /* Bitmap selected at creation of the DC */
47 COLORREF backgroundColor
;
53 WORD textAlign
; /* Text alignment from SetTextAlign() */
54 short charExtra
; /* Spacing from SetTextCharacterExtra() */
55 short breakTotalExtra
; /* Total extra space for justification */
56 short breakCount
; /* Break char. count */
57 short breakExtra
; /* breakTotalExtra / breakCount */
58 short breakRem
; /* breakTotalExtra % breakCount */
64 INT GraphicsMode
; /* Graphics mode */
65 INT DCOrgX
; /* DC origin */
69 FARPROC lpfnPrint
; /* AbortProc for Printing */
72 INT CursPosX
; /* Current position */
76 XFORM xformWorld2Wnd
; /* World-to-window transformation */
77 XFORM xformWorld2Vport
; /* World-to-viewport transformation */
78 XFORM xformVport2World
; /* Inverse of the above transformation */
79 BOOL vport2WorldValid
; /* Is xformVport2World valid? */
83 #define DC_MEMORY 0x0001 /* It is a memory DC */
84 #define DC_SAVED 0x0002 /* It is a saved DC */
85 #define DC_DIRTY 0x0004 /* hVisRgn has to be updated */
86 #define DC_THUNKHOOK 0x0008 /* DC hook is in the 16-bit code */
88 #define GDI_DC_TYPE (1)
95 HSURF FillPatternSurfaces
[HS_DDI_MAX
];
100 DRIVER_FUNCTIONS DriverFunctions
;
101 UNICODE_STRING DriverName
;
104 INT wndOrgX
; /* Window origin */
106 INT wndExtX
; /* Window extent */
108 INT vportOrgX
; /* Viewport origin */
110 INT vportExtX
; /* Viewport extent */
113 CLIPOBJ
*CombinedClip
;
115 XLATEOBJ
*XlateBrush
;
126 typedef struct _GDIPOINTER
/* should stay private to ENG */
128 /* private GDI pointer handling information, required for software emulation */
133 XLATEOBJ
*XlateObject
;
138 /* public pointer information */
139 RECTL Exclude
; /* required publicly for SPS_ACCEPT_EXCLUDE */
140 PGD_MOVEPOINTER MovePointer
;
142 } GDIPOINTER
, *PGDIPOINTER
;
149 HSURF FillPatterns
[HS_DDI_MAX
];
152 DRIVER_FUNCTIONS DriverFunctions
;
153 PFILE_OBJECT VideoFileObject
;
154 BOOLEAN PreparedDriver
;
159 /* Stuff to keep track of software cursors; win32k gdi part */
160 UINT SafetyRemoveLevel
; /* at what level was the cursor removed?
162 UINT SafetyRemoveCount
;
165 /* Internal functions */
167 #define DC_LockDc(hDC) \
168 ((PDC) GDIOBJ_LockObj ((HGDIOBJ) hDC, GDI_OBJECT_TYPE_DC))
169 #define DC_UnlockDc(pDC) \
170 GDIOBJ_UnlockObjByPtr (pDC)
172 HDC FASTCALL
RetrieveDisplayHDC(VOID
);
173 HDC FASTCALL
DC_AllocDC(PUNICODE_STRING Driver
);
174 VOID FASTCALL
DC_InitDC(HDC DCToInit
);
175 HDC FASTCALL
DC_FindOpenDC(PUNICODE_STRING Driver
);
176 VOID FASTCALL
DC_FreeDC(HDC DCToFree
);
177 BOOL INTERNAL_CALL
DC_Cleanup(PVOID ObjectBody
);
178 HDC FASTCALL
DC_GetNextDC (PDC pDC
);
179 VOID FASTCALL
DC_SetNextDC (PDC pDC
, HDC hNextDC
);
180 VOID FASTCALL
DC_SetOwnership(HDC DC
, PEPROCESS Owner
);
182 VOID FASTCALL
DC_UpdateXforms(PDC dc
);
183 BOOL FASTCALL
DC_InvertXform(const XFORM
*xformSrc
, XFORM
*xformDest
);