@@ -408,13 +408,28 @@ void main() {
408
408
409
409
expect (data.dispose, returnsNormally);
410
410
});
411
+
412
+ test ('Color filter applies clip' , () async {
413
+ final RenderPictureVectorGraphic render = RenderPictureVectorGraphic (
414
+ pictureInfo,
415
+ const ui.ColorFilter .mode (Colors .green, ui.BlendMode .difference),
416
+ null ,
417
+ );
418
+ render.layout (BoxConstraints .tight (const Size (50 , 50 )));
419
+ final FakePaintingContext context = FakePaintingContext ();
420
+ render.paint (context, Offset .zero);
421
+
422
+ expect (context.canvas.lastClipRect,
423
+ equals (const ui.Rect .fromLTRB (0 , 0 , 50 , 50 )));
424
+ });
411
425
}
412
426
413
427
class FakeCanvas extends Fake implements Canvas {
414
428
ui.Image ? lastImage;
415
429
Rect ? lastSrc;
416
430
Rect ? lastDst;
417
431
Paint ? lastPaint;
432
+ Rect ? lastClipRect;
418
433
419
434
@override
420
435
void drawImageRect (ui.Image image, Rect src, Rect dst, Paint paint) {
@@ -423,6 +438,26 @@ class FakeCanvas extends Fake implements Canvas {
423
438
lastDst = dst;
424
439
lastPaint = paint;
425
440
}
441
+
442
+ @override
443
+ void drawPicture (ui.Picture picture) {}
444
+
445
+ @override
446
+ int getSaveCount () {
447
+ return 0 ;
448
+ }
449
+
450
+ @override
451
+ void restoreToCount (int count) {}
452
+
453
+ @override
454
+ void saveLayer (Rect ? bounds, Paint paint) {}
455
+
456
+ @override
457
+ void clipRect (ui.Rect rect,
458
+ {ui.ClipOp clipOp = ui.ClipOp .intersect, bool doAntiAlias = true }) {
459
+ lastClipRect = rect;
460
+ }
426
461
}
427
462
428
463
class FakeHistoryCanvas extends Fake implements Canvas {
0 commit comments