void TestRRegion::TestSet() { TUint index; RRegion xrgn(rect[0]); CheckRectRegion(xrgn,rect[0]); xrgn.Close(); // RRegion rgn[5]; TRegion* prgn[5]={&rgn[0],&rgn[1],&rgn[2],&rgn[3],&rgn[4]}; DoTestSet(&prgn[0],(sizeof(rgn)/sizeof(rgn[0]))); for(index=0;index<(sizeof(rgn)/sizeof(rgn[0]));index++) { RRegion rgn1; rgn1.Copy(rgn[index]); CheckRectRegion(rgn1,rect[index]); RRegion rgn2(rgn[index]); CheckRectRegion(rgn2,rect[index]); rgn[index].Close(); rgn1.Close(); } // TRegionFix<5> rgnf[5]; TRegion* prgnf[5]={&rgnf[0],&rgnf[1],&rgnf[2],&rgnf[3],&rgnf[4]}; DoTestSet(&prgnf[0],(sizeof(rgnf)/sizeof(rgnf[0]))); for(index=0;index<(sizeof(rgn)/sizeof(rgn[0]));index++) { TRegionFix<5> rgn1; rgn1.Copy(rgnf[index]); CheckRectRegion(rgn1,rect[index]); TRegionFix<5> rgn2(rgnf[index]); CheckRectRegion(rgn2,rect[index]); } }
void ExpandCelCanvas::copyValidDestToSourceCanvas(const gfx::Region& rgn) { gfx::Region rgn2(rgn); rgn2.offset(-m_bounds.getOrigin()); rgn2.createIntersection(rgn2, m_validSrcRegion); rgn2.createIntersection(rgn2, m_validDstRegion); for (const auto& rc : rgn2) m_srcImage->copy(m_dstImage, rc.x, rc.y, rc.x, rc.y, rc.w, rc.h); }
void ExpandCelCanvas::copyValidDestToSourceCanvas(const gfx::Region& rgn) { gfx::Region rgn2(rgn); rgn2.offset(-m_bounds.origin()); rgn2.createIntersection(rgn2, m_validSrcRegion); rgn2.createIntersection(rgn2, m_validDstRegion); for (const auto& rc : rgn2) m_srcImage->copy(m_dstImage.get(), gfx::Clip(rc.x, rc.y, rc.x, rc.y, rc.w, rc.h)); // We cannot compare src vs dst in this case (e.g. on tools like // spray and jumble that updated the source image form the modified // destination). m_canCompareSrcVsDst = false; }