Chromium Code Reviews| Index: sky/sdk/lib/rendering/box.dart |
| diff --git a/sky/sdk/lib/rendering/box.dart b/sky/sdk/lib/rendering/box.dart |
| index ccfea1208efcb4c24d34698252bb45aa19945119..6f67225220edc25c8de32c9bdd938c870efce0f1 100644 |
| --- a/sky/sdk/lib/rendering/box.dart |
| +++ b/sky/sdk/lib/rendering/box.dart |
| @@ -482,7 +482,43 @@ class RenderOpacity extends RenderProxyBox { |
| Paint paint = new Paint() |
| ..color = new Color.fromARGB(a, 0, 0, 0) |
| - ..setTransferMode(sky.TransferMode.srcOverMode); |
| + ..setTransferMode(sky.TransferMode.srcOver); |
| + canvas.saveLayer(null, paint); |
| + child.paint(canvas); |
| + canvas.restore(); |
| + } |
| + } |
| +} |
| + |
| +class RenderColorFilter extends RenderProxyBox { |
| + RenderColorFilter({ RenderBox child, Color color, sky.TransferMode transferMode }) |
| + : this._color = color, _transferMode = transferMode, super(child) { |
|
Hixie
2015/06/17 23:59:12
you don't need the this.
|
| + } |
| + |
| + Color _color; |
| + Color get color => _color; |
| + void set color (Color value) { |
| + assert(value != null); |
| + if (_color == value) |
| + return; |
| + _color = value; |
| + markNeedsPaint(); |
| + } |
| + |
| + sky.TransferMode _transferMode; |
| + sky.TransferMode get transferMode => _transferMode; |
| + void set transferMode (sky.TransferMode value) { |
| + assert(value != null); |
| + if (_transferMode == value) |
| + return; |
| + _transferMode = value; |
| + markNeedsPaint(); |
| + } |
| + |
| + void paint(RenderObjectDisplayList canvas) { |
| + if (child != null) { |
| + Paint paint = new Paint() |
| + ..setColorFilter(new sky.ColorFilter.mode(_color, _transferMode)); |
| canvas.saveLayer(null, paint); |
| child.paint(canvas); |
| canvas.restore(); |