@@ -156,7 +156,44 @@ void testMain() {
156156
157157 builder.addPicture (ui.Offset .zero, redCircle2);
158158
159- await matchSceneGolden ('canvaskit_transparent_colorfilter.png' , builder.build (), region: region);
159+ await matchSceneGolden (
160+ 'canvaskit_transparent_colorfilter.png' , builder.build (),
161+ region: region);
162+ });
163+
164+ test ('ColorFilter with dst blend mode' , () async {
165+ final LayerSceneBuilder builder = LayerSceneBuilder ();
166+ builder.pushOffset (0 , 0 );
167+ final CkPictureRecorder recorder = CkPictureRecorder ();
168+ final CkCanvas canvas = recorder.beginRecording (region);
169+
170+ canvas.drawCircle (
171+ const ui.Offset (75 , 125 ),
172+ 50 ,
173+ CkPaint ()..color = const ui.Color .fromARGB (255 , 255 , 0 , 0 ),
174+ );
175+ final CkPicture redCircle1 = recorder.endRecording ();
176+ builder.addPicture (ui.Offset .zero, redCircle1);
177+
178+ // Push dst color filter
179+ builder.pushColorFilter (
180+ const ui.ColorFilter .mode (ui.Color (0xffff0000 ), ui.BlendMode .dst));
181+
182+ // Draw another red circle and apply it to the scene.
183+ // This one should also be red with the color filter doing nothing
184+ final CkPictureRecorder recorder2 = CkPictureRecorder ();
185+ final CkCanvas canvas2 = recorder2.beginRecording (region);
186+ canvas2.drawCircle (
187+ const ui.Offset (425 , 125 ),
188+ 50 ,
189+ CkPaint ()..color = const ui.Color .fromARGB (255 , 255 , 0 , 0 ),
190+ );
191+ final CkPicture redCircle2 = recorder2.endRecording ();
192+
193+ builder.addPicture (ui.Offset .zero, redCircle2);
194+
195+ await matchSceneGolden ('canvaskit_dst_colorfilter.png' , builder.build (),
196+ region: region);
160197 });
161198 // TODO(hterkelsen): https://github.com/flutter/flutter/issues/71520
162199 }, skip: isSafari || isFirefox);
0 commit comments