void TestRRegion::TestOffset() { RRegion rgn; const TRect* rlist; TRect r; TUint index; for(index=0;index<(sizeof(rect)/sizeof(rect[0]));index++) { rgn.Clear(); rgn.AddRect(rect[index]); r=rect[index]; r.Move(1,1); rgn.Offset(1,1); if (rect[index].IsEmpty()) test(rgn.Count()==0); else { test(rgn.Count()==1); rlist=rgn.RectangleList(); test(rlist[0]==r); } } 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 getDsaRegion(RWsSession &session, const RWindowBase &window) { RDirectScreenAccess dsa(session); TInt err = dsa.Construct(); CDummyAO ao; RRegion* region; err = dsa.Request(region, ao.Status(), window); ao.SetActive(); dsa.Close(); ao.Cancel(); if (region) { qDebug() << "Phonon::MMF::getDsaRegion count" << region->Count(); for (int i=0; i<region->Count(); ++i) { const TRect& rect = region->RectangleList()[i]; qDebug() << "Phonon::MMF::getDsaRegion rect" << rect.iTl.iX << rect.iTl.iY << rect.iBr.iX << rect.iBr.iY; } region->Close(); } }
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::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(); }