@@ -57,6 +57,51 @@ TEST(DisplayListRegion, NonOverlappingRectangles2) {
57
57
EXPECT_EQ (rects, expected);
58
58
}
59
59
60
+ TEST (DisplayListRegion, NonOverlappingRectangles3) {
61
+ DlRegion region;
62
+ region.addRect (SkIRect::MakeXYWH (0 , 0 , 10 , 10 ));
63
+ region.addRect (SkIRect::MakeXYWH (-11 , -11 , 10 , 10 ));
64
+ region.addRect (SkIRect::MakeXYWH (11 , 11 , 10 , 10 ));
65
+ region.addRect (SkIRect::MakeXYWH (-11 , 0 , 10 , 10 ));
66
+ region.addRect (SkIRect::MakeXYWH (0 , 11 , 10 , 10 ));
67
+ region.addRect (SkIRect::MakeXYWH (0 , -11 , 10 , 10 ));
68
+ region.addRect (SkIRect::MakeXYWH (11 , 0 , 10 , 10 ));
69
+ region.addRect (SkIRect::MakeXYWH (11 , -11 , 10 , 10 ));
70
+ region.addRect (SkIRect::MakeXYWH (-11 , 11 , 10 , 10 ));
71
+ auto rects = region.getRects ();
72
+ std::vector<SkIRect> expected{
73
+ SkIRect::MakeXYWH (-11 , -11 , 10 , 10 ), //
74
+ SkIRect::MakeXYWH (0 , -11 , 10 , 10 ), //
75
+ SkIRect::MakeXYWH (11 , -11 , 10 , 10 ), //
76
+ SkIRect::MakeXYWH (-11 , 0 , 10 , 10 ), //
77
+ SkIRect::MakeXYWH (0 , 0 , 10 , 10 ), //
78
+ SkIRect::MakeXYWH (11 , 0 , 10 , 10 ), //
79
+ SkIRect::MakeXYWH (-11 , 11 , 10 , 10 ), //
80
+ SkIRect::MakeXYWH (0 , 11 , 10 , 10 ), //
81
+ SkIRect::MakeXYWH (11 , 11 , 10 , 10 ),
82
+ };
83
+ EXPECT_EQ (rects, expected);
84
+ }
85
+
86
+ TEST (DisplayListRegion, MergeTouchingRectangles) {
87
+ DlRegion region;
88
+ region.addRect (SkIRect::MakeXYWH (0 , 0 , 10 , 10 ));
89
+ region.addRect (SkIRect::MakeXYWH (-10 , -10 , 10 , 10 ));
90
+ region.addRect (SkIRect::MakeXYWH (10 , 10 , 10 , 10 ));
91
+ region.addRect (SkIRect::MakeXYWH (-10 , 0 , 10 , 10 ));
92
+ region.addRect (SkIRect::MakeXYWH (0 , 10 , 10 , 10 ));
93
+ region.addRect (SkIRect::MakeXYWH (0 , -10 , 10 , 10 ));
94
+ region.addRect (SkIRect::MakeXYWH (10 , 0 , 10 , 10 ));
95
+ region.addRect (SkIRect::MakeXYWH (10 , -10 , 10 , 10 ));
96
+ region.addRect (SkIRect::MakeXYWH (-10 , 10 , 10 , 10 ));
97
+
98
+ auto rects = region.getRects ();
99
+ std::vector<SkIRect> expected{
100
+ SkIRect::MakeXYWH (-10 , -10 , 30 , 30 ),
101
+ };
102
+ EXPECT_EQ (rects, expected);
103
+ }
104
+
60
105
TEST (DisplayListRegion, OverlappingRectangles) {
61
106
DlRegion region;
62
107
for (int i = 0 ; i < 10 ; ++i) {
0 commit comments