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

Side by Side Diff: sky/sdk/lib/widgets/ink_well.dart

Issue 1190123003: Decouple Canvas from DisplayList and map Picture and PictureRecorder more directly to their Skia co… (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Rebased version of previous patch 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 import 'dart:math' as math; 5 import 'dart:math' as math;
6 import 'dart:sky' as sky; 6 import 'dart:sky' as sky;
7 7
8 import '../animation/animated_value.dart'; 8 import '../animation/animated_value.dart';
9 import '../animation/curves.dart'; 9 import '../animation/curves.dart';
10 import '../rendering/box.dart'; 10 import '../rendering/box.dart';
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
45 return; 45 return;
46 _radius.animateTo(_targetRadius, duration, curve: easeOut); 46 _radius.animateTo(_targetRadius, duration, curve: easeOut);
47 } 47 }
48 48
49 void _handleRadiusChange() { 49 void _handleRadiusChange() {
50 if (_radius.value == _targetRadius) 50 if (_radius.value == _targetRadius)
51 well._splashes.remove(this); 51 well._splashes.remove(this);
52 well.markNeedsPaint(); 52 well.markNeedsPaint();
53 } 53 }
54 54
55 void paint(RenderObjectDisplayList canvas) { 55 void paint(RenderCanvas canvas) {
56 int opacity = (_kSplashInitialOpacity * (1.0 - (_radius.value / _targetRadiu s))).floor(); 56 int opacity = (_kSplashInitialOpacity * (1.0 - (_radius.value / _targetRadiu s))).floor();
57 sky.Paint paint = new sky.Paint()..color = new sky.Color(opacity << 24); 57 sky.Paint paint = new sky.Paint()..color = new sky.Color(opacity << 24);
58 canvas.drawCircle(position.x, position.y, _radius.value, paint); 58 canvas.drawCircle(position.x, position.y, _radius.value, paint);
59 } 59 }
60 } 60 }
61 61
62 class RenderInkWell extends RenderProxyBox { 62 class RenderInkWell extends RenderProxyBox {
63 RenderInkWell({ RenderBox child }) : super(child); 63 RenderInkWell({ RenderBox child }) : super(child);
64 64
65 final List<InkSplash> _splashes = new List<InkSplash>(); 65 final List<InkSplash> _splashes = new List<InkSplash>();
(...skipping 15 matching lines...) Expand all
81 _splashes.add(new InkSplash(pointer, position, this)); 81 _splashes.add(new InkSplash(pointer, position, this));
82 markNeedsPaint(); 82 markNeedsPaint();
83 } 83 }
84 84
85 void _confirmSplash(int pointer) { 85 void _confirmSplash(int pointer) {
86 _splashes.where((splash) => splash.pointer == pointer) 86 _splashes.where((splash) => splash.pointer == pointer)
87 .forEach((splash) { splash.confirm(); }); 87 .forEach((splash) { splash.confirm(); });
88 markNeedsPaint(); 88 markNeedsPaint();
89 } 89 }
90 90
91 void paint(RenderObjectDisplayList canvas) { 91 void paint(RenderCanvas canvas) {
92 if (!_splashes.isEmpty) { 92 if (!_splashes.isEmpty) {
93 canvas.save(); 93 canvas.save();
94 canvas.clipRect(new Rect.fromSize(size)); 94 canvas.clipRect(new Rect.fromSize(size));
95 for (InkSplash splash in _splashes) 95 for (InkSplash splash in _splashes)
96 splash.paint(canvas); 96 splash.paint(canvas);
97 canvas.restore(); 97 canvas.restore();
98 } 98 }
99 super.paint(canvas); 99 super.paint(canvas);
100 } 100 }
101 } 101 }
102 102
103 class InkWell extends OneChildRenderObjectWrapper { 103 class InkWell extends OneChildRenderObjectWrapper {
104 InkWell({ String key, Widget child }) 104 InkWell({ String key, Widget child })
105 : super(key: key, child: child); 105 : super(key: key, child: child);
106 106
107 RenderInkWell get root => super.root; 107 RenderInkWell get root => super.root;
108 RenderInkWell createNode() => new RenderInkWell(); 108 RenderInkWell createNode() => new RenderInkWell();
109 } 109 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698