Index: sky/sdk/lib/rendering/box.dart |
diff --git a/sky/sdk/lib/rendering/box.dart b/sky/sdk/lib/rendering/box.dart |
index 7f9c914ddbe0bf3257b443777a52a698d6ad4478..10fad5cc313ec45000aaf9b8b930f210b99c15da 100644 |
--- a/sky/sdk/lib/rendering/box.dart |
+++ b/sky/sdk/lib/rendering/box.dart |
@@ -1249,8 +1249,10 @@ class RenderViewport extends RenderBox with RenderObjectWithChildMixin<RenderBox |
class RenderImage extends RenderBox { |
- RenderImage(sky.Image image, Size requestedSize) |
- : _image = image, _requestedSize = requestedSize; |
+ RenderImage(sky.Image image, Size requestedSize, { sky.ColorFilter colorFilter }) |
+ : _image = image, |
+ _requestedSize = requestedSize, |
+ _colorFilter = colorFilter; |
sky.Image _image; |
sky.Image get image => _image; |
@@ -1274,6 +1276,26 @@ class RenderImage extends RenderBox { |
markNeedsLayout(); |
} |
+ sky.ColorFilter _colorFilter; |
+ sky.ColorFilter get colorFilter => _colorFilter; |
+ void set colorFilter (sky.ColorFilter value) { |
+ if (value == _colorFilter) |
+ return; |
+ _colorFilter = value; |
+ _cachedPaint = null; |
+ markNeedsPaint(); |
+ } |
+ |
+ Paint _cachedPaint; |
+ Paint get _paint { |
+ if (_cachedPaint == null) { |
+ _cachedPaint = new Paint(); |
+ if (colorFilter != null) |
+ _cachedPaint.setColorFilter(colorFilter); |
+ } |
+ return _cachedPaint; |
+ } |
+ |
Size _sizeForConstraints(BoxConstraints innerConstraints) { |
// If there's no image, we can't size ourselves automatically |
if (_image == null) { |
@@ -1350,7 +1372,7 @@ class RenderImage extends RenderBox { |
canvas.scale(widthScale, heightScale); |
offset = Offset.zero; |
} |
- canvas.drawImage(_image, offset.toPoint(), new Paint()); |
+ canvas.drawImage(_image, offset.toPoint(), _paint); |
if (needsScale) |
canvas.restore(); |
} |