Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(699)

Unified Diff: sky/sdk/lib/rendering/box.dart

Issue 1188003006: Implement ColorFilter in widgets/basic.dart (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « sky/sdk/lib/painting/shadows.dart ('k') | sky/sdk/lib/widgets/basic.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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();
« no previous file with comments | « sky/sdk/lib/painting/shadows.dart ('k') | sky/sdk/lib/widgets/basic.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698