@@ -247,15 +247,22 @@ class TransformLayer extends ContainerLayer {
247247 }
248248}
249249
250- class PaintLayer extends ContainerLayer {
251- PaintLayer ({ Offset offset: Offset .zero, this .bounds, this .paintSettings }) : super (offset: offset);
250+ class OpacityLayer extends ContainerLayer {
251+ OpacityLayer ({ Offset offset: Offset .zero, this .bounds, this .alpha }) : super (offset: offset);
252252
253253 // bounds is _not_ affected by given offset
254254 Rect bounds;
255- Paint paintSettings; // TODO(ianh): rename this to 'paint' once paint() is gone
255+ int alpha;
256+
257+ static Paint paintForAlpha (int alpha) {
258+ return new Paint ()
259+ ..color = new Color .fromARGB (alpha, 0 , 0 , 0 )
260+ ..setTransferMode (sky.TransferMode .srcOver)
261+ ..isAntiAlias = false ;
262+ }
256263
257264 void paint (sky.Canvas canvas) {
258- canvas.saveLayer (bounds, paintSettings );
265+ canvas.saveLayer (bounds, paintForAlpha (alpha) );
259266 canvas.translate (offset.dx, offset.dy);
260267 paintChildren (canvas);
261268 canvas.restore ();
@@ -265,20 +272,24 @@ class PaintLayer extends ContainerLayer {
265272class ColorFilterLayer extends ContainerLayer {
266273 ColorFilterLayer ({
267274 Offset offset: Offset .zero,
268- this .size ,
275+ this .bounds ,
269276 this .color,
270277 this .transferMode
271278 }) : super (offset: offset);
272279
273- Size size;
280+ // bounds is _not_ affected by given offset
281+ Rect bounds;
274282 Color color;
275283 sky.TransferMode transferMode;
276284
285+ static paintForColorFilter (Color color, sky.TransferMode transferMode) {
286+ new Paint ()
287+ ..setColorFilter (new sky.ColorFilter .mode (color, transferMode))
288+ ..isAntiAlias = false ;
289+ }
290+
277291 void paint (sky.Canvas canvas) {
278- Paint paint = new Paint ()
279- ..color = color
280- ..setTransferMode (transferMode);
281- canvas.saveLayer (offset & size, paint);
292+ canvas.saveLayer (bounds, paintForColorFilter (color, transferMode));
282293 canvas.translate (offset.dx, offset.dy);
283294 paintChildren (canvas);
284295 canvas.restore ();
0 commit comments