47 pdc->pdcattr->VisRectRegion.iComplexity =
REGION_GetRgnBox(pdc->prgnVis, &pdc->pdcattr->VisRectRegion.Rect);
71 DPRINT1(
"SVR: Setting NULL Region\n");
98 PREGION prgnNClip, prgnOrigClip =
dc->dclevel.prgnClip;
103 if (fnMode !=
RGN_COPY && (fnMode !=
RGN_AND || !prgn || prgnOrigClip))
116 dc->dclevel.prgnClip = prgnNClip;
133 rcl.
right =
dc->dclevel.sizl.cx;
142 rcl.
left +=
dc->ppdev->ptlOrigion.x;
143 rcl.
top +=
dc->ppdev->ptlOrigion.y;
144 rcl.
right +=
dc->ppdev->ptlOrigion.x;
145 rcl.
bottom +=
dc->ppdev->ptlOrigion.y;
150 rcl.
left +=
dc->ptlDCOrig.x;
151 rcl.
top +=
dc->ptlDCOrig.y;
163 dc->dclevel.prgnClip = prgnNClip;
184 dc->dclevel.prgnClip =
NULL;
203 dc->dclevel.prgnClip = prgnNClip;
261 Ret = IntSelectClipRgn(
dc, prgn, fnMode);
294 if ((Ret = IntSelectClipRgn(
dc, prgn, fnMode)))
296 DPRINT(
"IntGdiExtSelectClipRgn A %d\n",Ret);
302 DPRINT(
"IntGdiExtSelectClipRgn B %d\n",Ret);
319 if ( fnMode < RGN_AND || fnMode >
RGN_COPY )
340 #if 0 // Testing GDI Batch. 416 iComplexity = GdiGetClipBox(
hdc, &
rect);
418 if (iComplexity !=
ERROR)
462 rect.bottom = yBottom;
469 iComplexity = IntSelectClipRgn( pdc, prgn,
RGN_DIFF );
498 DPRINT(
"NtGdiIntersectClipRect(%p, %d,%d-%d,%d)\n",
499 hdc, xLeft, yTop, xRight, yBottom);
513 rect.bottom = yBottom;
520 iComplexity = IntSelectClipRgn( pdc, prgn,
RGN_AND );
555 if (pdc->dclevel.prgnClip !=
NULL)
568 apt[1].
y - apt[0].
y))
607 prgn =
dc->prgnRao ?
dc->prgnRao :
dc->prgnVis;
662 prgn =
dc->prgnRao ?
dc->prgnRao :
dc->prgnVis;
679 if ( pDC->dclevel.prgnMeta )
681 if ( pDC->dclevel.prgnClip )
690 pDC->dclevel.prgnMeta = prgn;
693 pDC->dclevel.prgnClip =
NULL;
707 if ( pDC->dclevel.prgnClip )
710 pDC->dclevel.prgnMeta = pDC->dclevel.prgnClip;
711 pDC->dclevel.prgnClip =
NULL;
746 #if 0 // (w2k3) This works with limitations. (w7u) ReactOS relies on Rao. 747 if ( !pDC->dclevel.prgnClip &&
748 !pDC->dclevel.prgnMeta &&
758 &pDC->prgnVis->rdh.rcBound,
762 pDC->prgnVis->rdh.nCount,
763 pDC->prgnVis->Buffer,
786 if (pDC->dclevel.prgnMeta || pDC->dclevel.prgnClip)
789 if (!pDC->dclevel.prgnMeta)
792 pDC->dclevel.prgnClip);
794 else if (!pDC->dclevel.prgnClip)
797 pDC->dclevel.prgnMeta);
802 pDC->dclevel.prgnClip,
803 pDC->dclevel.prgnMeta);
823 &pDC->prgnRao->rdh.rcBound,
835 pDC->prgnRao->rdh.nCount,
836 pDC->prgnRao->Buffer,
#define ERROR_INVALID_PARAMETER
#define GDI_HANDLE_GET_INDEX(h)
BOOL FASTCALL REGION_bIntersectRegion(PREGION, PREGION, PREGION)
FORCEINLINE PDC DC_LockDc(HDC hdc)
VOID FASTCALL GdiSelectVisRgn(HDC hdc, PREGION prgn)
FORCEINLINE VOID RECTL_vSetEmptyRect(_Out_ RECTL *prcl)
#define ERROR_INVALID_HANDLE
VOID FASTCALL UpdateVisRgn(PDC pdc)
VOID FASTCALL IntGdiReleaseVisRgn(PDC pDC)
BOOL FASTCALL REGION_bOffsetRgn(_Inout_ PREGION prgn, _In_ INT cx, _In_ INT cy)
INT APIENTRY NtGdiOffsetClipRgn(_In_ HDC hdc, _In_ INT xOffset, _In_ INT yOffset)
INT APIENTRY NtGdiIntersectClipRect(_In_ HDC hdc, _In_ INT xLeft, _In_ INT yTop, _In_ INT xRight, _In_ INT yBottom)
PREGION FASTCALL REGION_LockRgn(_In_ HRGN hrgn)
VOID NTAPI ProbeForWrite(IN PVOID Address, IN SIZE_T Length, IN ULONG Alignment)
int FASTCALL IntGdiExtSelectClipRect(PDC, PRECTL, int)
INT FASTCALL IntGdiExtSelectClipRgn(PDC dc, PREGION prgn, int fnMode)
VOID FASTCALL IntGdiReleaseRaoRgn(PDC pDC)
PREGION FASTCALL IntSysCreateRectpRgn(INT LeftRect, INT TopRect, INT RightRect, INT BottomRect)
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO
BOOL FASTCALL REGION_RectInRegion(PREGION Rgn, const RECTL *rect)
INT FASTCALL IntGdiCombineRgn(PREGION prgnDest, PREGION prgnSrc1, PREGION prgnSrc2, INT iCombineMode)
#define IntSysCreateRectpRgnIndirect(prc)
_In_ DD_SURFACE_LOCAL * pSurface
#define NT_SUCCESS(StatCode)
_In_ WDFCOLLECTION _In_ ULONG Index
#define EXCEPTION_EXECUTE_HANDLER
BOOL FASTCALL REGION_bCopy(PREGION, PREGION)
int APIENTRY NtGdiSetMetaRgn(HDC hDC)
VOID FASTCALL CLIPPING_UpdateGCRegion(PDC pDC)
BOOL APIENTRY NtGdiPtVisible(HDC hDC, int X, int Y)
VOID NTAPI ProbeForRead(IN CONST VOID *Address, IN SIZE_T Length, IN ULONG Alignment)
INT APIENTRY NtGdiExcludeClipRect(_In_ HDC hdc, _In_ INT xLeft, _In_ INT yTop, _In_ INT xRight, _In_ INT yBottom)
VOID FASTCALL SetLastNtError(NTSTATUS Status)
BOOL FASTCALL IntSetDefaultRegion(PDC)
static BOOLEAN IntDPtoLP(DC *pdc, PPOINTL ppt, UINT count)
BOOL APIENTRY NtGdiRectVisible(HDC hDC, LPRECT UnsafeRect)
FORCEINLINE VOID DC_UnlockDc(PDC pdc)
#define GDI_ENTRY_VALIDATE_VIS
_In_ ULONG _In_ CLIPOBJ _In_ RECTL * prcl
VOID FASTCALL REGION_UnlockRgn(_In_ PREGION prgn)
VOID FASTCALL IntEngUpdateClipRegion(XCLIPOBJ *Clip, ULONG count, const RECTL *pRect, const RECTL *rcBounds)
int APIENTRY NtGdiExtSelectClipRgn(HDC hDC, HRGN hrgn, int fnMode)
#define RtlCopyMemory(Destination, Source, Length)
#define _SEH2_EXCEPT(...)
INT FASTCALL REGION_Complexity(PREGION prgn)
#define _SEH2_GetExceptionCode()
INT FASTCALL REGION_GetRgnBox(PREGION Rgn, PRECTL pRect)
VOID FASTCALL REGION_Delete(PREGION pRgn)
int FASTCALL IntGdiSetMetaRgn(PDC pDC)
VOID FASTCALL RECTL_vMakeWellOrdered(_Inout_ RECTL *prcl)
ENGAPI VOID APIENTRY EngSetLastError(_In_ ULONG iError)
base of all file and directory entries
static BOOLEAN IntLPtoDP(DC *pdc, PPOINTL ppt, UINT count)
BOOL FASTCALL REGION_PtInRegion(PREGION prgn, INT X, INT Y)