18 DPRINT(
"DC_vCopyState(%p, %p)\n", pdcSrc->BaseObject.hHmgr, pdcDst->BaseObject.hHmgr);
21 *pdcDst->pdcattr = *pdcSrc->pdcattr;
30 pdcDst->dclevel.pColorSpace = pdcSrc->dclevel.pColorSpace;
31 pdcDst->dclevel.laPath = pdcSrc->dclevel.laPath;
32 pdcDst->dclevel.ca = pdcSrc->dclevel.ca;
33 pdcDst->dclevel.mxWorldToDevice = pdcSrc->dclevel.mxWorldToDevice;
34 pdcDst->dclevel.mxDeviceToWorld = pdcSrc->dclevel.mxDeviceToWorld;
35 pdcDst->dclevel.mxWorldToPage = pdcSrc->dclevel.mxWorldToPage;
36 pdcDst->dclevel.efM11PtoD = pdcSrc->dclevel.efM11PtoD;
37 pdcDst->dclevel.efM22PtoD = pdcSrc->dclevel.efM22PtoD;
38 pdcDst->dclevel.sizl = pdcSrc->dclevel.sizl;
39 pdcDst->dclevel.hpal = pdcSrc->dclevel.hpal;
49 pdcDst->dclevel.plfnt = pdcSrc->dclevel.plfnt;
55 if (pdcDst->dclevel.prgnMeta)
58 pdcDst->dclevel.prgnMeta =
NULL;
61 if (pdcSrc->dclevel.prgnMeta)
93 if (
dc->dclevel.hPath)
95 DPRINT(
"Clean DC Remove Path\n");
98 DPRINT1(
"Failed to remove Path\n");
100 dc->dclevel.hPath = 0;
101 dc->dclevel.flPath = 0;
146 DPRINT(
"DC_vRestoreDC(%p, %ld)\n", pdc->BaseObject.hHmgr, iSaveLevel);
149 while (pdc->dclevel.lSaveDepth > iSaveLevel)
151 hdcSave = pdc->dclevel.hdcSave;
152 DPRINT(
"RestoreDC = %p\n", hdcSave);
158 DPRINT1(
"Could not get ownership of saved DC (%p) for hdc %p!\n",
159 hdcSave, pdc->BaseObject.hHmgr);
169 DPRINT1(
"Could not lock the saved DC (%p) for dc %p!\n",
170 hdcSave, pdc->BaseObject.hHmgr);
176 pdc->dclevel.hdcSave = pdcSave->dclevel.hdcSave;
179 pdc->dclevel.lSaveDepth--;
182 if (pdc->dclevel.lSaveDepth == iSaveLevel)
191 if (pdcSave->dclevel.hPath)
198 pdcSave->dclevel.lSaveDepth = 1;
206 DPRINT(
"Leave DC_vRestoreDC()\n");
219 DPRINT(
"NtGdiRestoreDC(%p, %d)\n",
hdc, iSaveLevel);
229 ASSERT(pdc->dclevel.lSaveDepth > 0);
233 iSaveLevel = pdc->dclevel.lSaveDepth + iSaveLevel;
236 if (iSaveLevel <= 0 || iSaveLevel >= pdc->dclevel.lSaveDepth)
238 DPRINT(
"Illegal save level, requested: %ld, current: %ld\n",
239 iSaveLevel, pdc->dclevel.lSaveDepth);
250 DPRINT(
"Leave NtGdiRestoreDC\n");
270 DPRINT(
"Could not lock DC\n");
279 DPRINT(
"Could not allocate a new DC\n");
283 hdcSave = pdcSave->BaseObject.hHmgr;
306 if (pdc->dclevel.hPath)
313 pdcSave->dclevel.hdcSave = pdc->dclevel.hdcSave;
314 pdc->dclevel.hdcSave = hdcSave;
317 lSaveDepth = pdc->dclevel.lSaveDepth++;
323 DPRINT(
"Leave NtGdiSaveDC: %ld, hdcSave = %p\n", lSaveDepth, hdcSave);
INT FASTCALL IntGdiExtSelectClipRgn(PDC dc, PREGION prgn, int fnMode)
FORCEINLINE VOID DC_vSelectSurface(PDC pdc, PSURFACE psurfNew)
VOID FASTCALL DC_vUpdateLineBrush(PDC pdc)
FORCEINLINE VOID DC_vSelectPalette(PDC pdc, PPALETTE ppal)
FORCEINLINE VOID DC_UnlockDc(PDC pdc)
VOID FASTCALL DC_vUpdateTextBrush(PDC pdc)
VOID FASTCALL DC_vUpdateBackgroundBrush(PDC pdc)
PDC NTAPI DC_AllocDcWithHandle(GDILOOBJTYPE eDcObjType)
VOID FASTCALL DC_vUpdateFillBrush(PDC pdc)
FORCEINLINE VOID DC_vSelectLineBrush(PDC pdc, PBRUSH pbrLine)
VOID NTAPI DC_vInitDc(PDC pdc, DCTYPE dctype, PPDEVOBJ ppdev)
FORCEINLINE PDC DC_LockDc(HDC hdc)
FORCEINLINE VOID DC_vSelectFillBrush(PDC pdc, PBRUSH pbrFill)
INT APIENTRY NtGdiSaveDC(HDC hDC)
__kernel_entry BOOL APIENTRY NtGdiResetDC(_In_ HDC hdc, _In_ LPDEVMODEW pdm, _Out_ PBOOL pbBanding, _In_opt_ DRIVER_INFO_2W *pDriverInfo2, _At_((PUMDHPDEV *) ppUMdhpdev, _Out_) PVOID ppUMdhpdev)
BOOL APIENTRY NtGdiRestoreDC(HDC hdc, INT iSaveLevel)
VOID FASTCALL DC_vCopyState(PDC pdcSrc, PDC pdcDst, BOOL To)
BOOL FASTCALL IntGdiCleanDC(HDC hDC)
VOID NTAPI DC_vRestoreDC(IN PDC pdc, INT iSaveLevel)
#define ERROR_INVALID_PARAMETER
#define ERROR_INVALID_HANDLE
@ GDILoObjType_LO_DC_TYPE
#define GDI_OBJ_HMGR_POWNED
#define DC_ICM_NOT_CALIBRATED
#define GDI_OBJ_HMGR_PUBLIC
FORCEINLINE VOID PDEVOBJ_vReference(_In_ PPDEVOBJ ppdev)
BOOL NTAPI GreSetObjectOwner(HGDIOBJ hobj, ULONG ulOwner)
BOOL NTAPI GreDeleteObject(HGDIOBJ hobj)
VOID NTAPI GDIOBJ_vSetObjectOwner(POBJ pobj, ULONG ulNewOwner)
VOID NTAPI GDIOBJ_vReferenceObjectByPointer(POBJ pobj)
BOOL PATH_RestorePath(DC *dst, DC *src)
BOOL FASTCALL PATH_Delete(HPATH hPath)
BOOL PATH_SavePath(DC *dst, DC *src)
VOID FASTCALL REGION_Delete(PREGION pRgn)
PREGION FASTCALL IntSysCreateRectpRgn(INT LeftRect, INT TopRect, INT RightRect, INT BottomRect)
INT FASTCALL IntGdiCombineRgn(PREGION prgnDest, PREGION prgnSrc1, PREGION prgnSrc2, INT iCombineMode)
#define LFONT_ShareUnlockFont(plfnt)
ENGAPI VOID APIENTRY EngSetLastError(_In_ ULONG iError)