void TestRRegion::TestTidy() { RRegion rgn; TInt loop; TRect const rlist[8]={ // 8 Rectangles that form a square with the centre rectangle missing TRect(10,10,20,20), TRect(20,10,30,20), TRect(30,10,40,20), TRect(10,20,20,30), TRect(30,20,40,30), TRect(10,30,20,40), TRect(20,30,30,40), TRect(30,30,40,40)}; TRect const rect1(rlist[0].iTl.iX,rlist[0].iTl.iY,rlist[2].iBr.iX,rlist[2].iBr.iY); TRect const rect2(rlist[0].iTl.iX,rlist[0].iTl.iY,rlist[7].iBr.iX,rlist[7].iBr.iY); // Add 3 adjoining rectangles and tidy them for(loop=0;loop<3;loop++) rgn.AddRect(rlist[loop]); test(rgn.Count()==3); rgn.Tidy(); test(rgn.Count()==1); test(rgn[0]==rect1); // Same again but add the adjoining rectangles in reverse order rgn.Clear(); for(loop=2;loop>=0;loop--) rgn.AddRect(rlist[loop]); test(rgn.Count()==3); rgn.Tidy(); test(rgn.Count()==1); test(rgn[0]==rect1); // Now add 8 rectangles that should tidy down to 4 rgn.Clear(); for(loop=0;loop<8;loop++) rgn.AddRect(rlist[loop]); test(rgn.Count()==8); rgn.Tidy(); test(rgn.Count()==4); test(rgn.BoundingRect()==rect2); // ...and in reverse rgn.Clear(); for(loop=7;loop>=0;loop--) rgn.AddRect(rlist[loop]); test(rgn.Count()==8); rgn.Tidy(); test(rgn.Count()==4); test(rgn.BoundingRect()==rect2); rgn.Close(); }
void TestRRegion::TestAddRect() { RRegion rgn; TInt index,i; if (!rect[0].IsEmpty()) { for(index=0;index<4;index++) { for(i=0;i<=index;i++) rgn.AddRect(rect[index]); test(rgn.Count()==(index+1)); } test(rgn.BoundingRect()==bounds); if (!xrect.IsEmpty()) { rgn.AddRect(xrect); TInt count = rgn.Count(); test( (count > 4) && (count <= 9) ); } } rgn.AddRect(bounds); test(rgn.Count()==1); rgn.Close(); }
void TestRRegion::TestSubRect() { TRect rect1(-rect[0].iBr.iX,-rect[0].iBr.iY,rect[0].iBr.iX,rect[0].iBr.iY); RRegion rgn; RRegion subRgn; RRegion rgn2; TInt index; if (!rect[0].IsEmpty()) { rgn.AddRect(rect1); for(index=0;index<4;index++) rgn.SubRect(rect[index],&subRgn); if (rect[0].iTl.iX==0) // Special case region, all rects join in the middle { test(rgn.Count()==0); test(subRgn.Count()==4); } else { test(rgn.Count()==3); test(subRgn.Count()==4); test(rgn.BoundingRect()==subRgn.BoundingRect()); rgn.SubRect(xrect); test(rgn.Count()==4); rgn2.Copy(rgn); subRgn.Clear(); rgn.SubRect(rgn.BoundingRect(),&subRgn); test(rgn.Count()==0); rgn2.SubRegion(subRgn,&rgn); test(rgn2.Count()==0); subRgn.SubRegion(rgn); test(subRgn.Count()==0); } } rgn.Close(); rgn2.Close(); subRgn.Close(); }