@@ -153,5 +153,59 @@ TEST_F(AiksTest, CanPerformSkew) {
153
153
ASSERT_TRUE (OpenPlaygroundHere (canvas.EndRecordingAsPicture ()));
154
154
}
155
155
156
+ TEST_F (AiksTest, CanPerformSaveLayerWithBounds) {
157
+ Canvas canvas;
158
+
159
+ Paint red;
160
+ red.color = Color::Red ();
161
+
162
+ Paint green;
163
+ green.color = Color::Green ();
164
+
165
+ Paint blue;
166
+ blue.color = Color::Blue ();
167
+
168
+ Paint save;
169
+ save.color = Color::Black ();
170
+
171
+ canvas.SaveLayer (save, Rect{0 , 0 , 50 , 50 });
172
+
173
+ canvas.DrawRect ({0 , 0 , 100 , 100 }, red);
174
+ canvas.DrawRect ({10 , 10 , 100 , 100 }, green);
175
+ canvas.DrawRect ({20 , 20 , 100 , 100 }, blue);
176
+
177
+ canvas.Restore ();
178
+
179
+ ASSERT_TRUE (OpenPlaygroundHere (canvas.EndRecordingAsPicture ()));
180
+ }
181
+
182
+ TEST_F (
183
+ AiksTest,
184
+ DISABLED_CanPerformSaveLayerWithBoundsAndLargerIntermediateIsNotAllocated) {
185
+ Canvas canvas;
186
+
187
+ Paint red;
188
+ red.color = Color::Red ();
189
+
190
+ Paint green;
191
+ green.color = Color::Green ();
192
+
193
+ Paint blue;
194
+ blue.color = Color::Blue ();
195
+
196
+ Paint save;
197
+ save.color = Color::Black ().WithAlpha (0.5 );
198
+
199
+ canvas.SaveLayer (save, Rect{0 , 0 , 100000 , 100000 });
200
+
201
+ canvas.DrawRect ({0 , 0 , 100 , 100 }, red);
202
+ canvas.DrawRect ({10 , 10 , 100 , 100 }, green);
203
+ canvas.DrawRect ({20 , 20 , 100 , 100 }, blue);
204
+
205
+ canvas.Restore ();
206
+
207
+ ASSERT_TRUE (OpenPlaygroundHere (canvas.EndRecordingAsPicture ()));
208
+ }
209
+
156
210
} // namespace testing
157
211
} // namespace impeller
0 commit comments