Home | Info | Community | Development | myReactOS | Contact Us
Definition at line 15 of file cliprgn.c.
Referenced by DceResetActiveDCEs(), GdiExtSelectClipRgn(), GdiSelectVisRgn(), NtGdiExcludeClipRect(), NtGdiIntersectClipRect(), and NtGdiOffsetClipRgn().
{ PROSRGNDATA CombinedRegion; //HRGN hRgnVis; PREGION prgnClip, prgnGCClip; /* Would prefer this, but the rest of the code sucks... */ //ASSERT(Dc->rosdc.hGCClipRgn); //ASSERT(Dc->rosdc.hClipRgn); ASSERT(Dc->prgnVis); //hRgnVis = Dc->prgnVis->BaseObject.hHmgr; if (Dc->rosdc.hGCClipRgn == NULL) Dc->rosdc.hGCClipRgn = IntSysCreateRectRgn(0, 0, 0, 0); prgnGCClip = REGION_LockRgn(Dc->rosdc.hGCClipRgn); ASSERT(prgnGCClip); if (Dc->rosdc.hClipRgn == NULL) IntGdiCombineRgn(prgnGCClip, Dc->prgnVis, NULL, RGN_COPY); else { prgnClip = REGION_LockRgn(Dc->rosdc.hClipRgn); // FIXME: Locking order, ugh! IntGdiCombineRgn(prgnGCClip, Dc->prgnVis, prgnClip, RGN_AND); REGION_UnlockRgn(prgnClip); } REGION_UnlockRgn(prgnGCClip); NtGdiOffsetRgn(Dc->rosdc.hGCClipRgn, Dc->ptlDCOrig.x, Dc->ptlDCOrig.y); if((CombinedRegion = RGNOBJAPI_Lock(Dc->rosdc.hGCClipRgn, NULL))) { CLIPOBJ *CombinedClip; CombinedClip = IntEngCreateClipRegion(CombinedRegion->rdh.nCount, CombinedRegion->Buffer, &CombinedRegion->rdh.rcBound); RGNOBJAPI_Unlock(CombinedRegion); if ( !CombinedClip ) { DPRINT1("IntEngCreateClipRegion() failed\n"); return ERROR; } if(Dc->rosdc.CombinedClip != NULL) IntEngDeleteClipRegion(Dc->rosdc.CombinedClip); Dc->rosdc.CombinedClip = CombinedClip ; } return NtGdiOffsetRgn(Dc->rosdc.hGCClipRgn, -Dc->ptlDCOrig.x, -Dc->ptlDCOrig.y); }