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

Side by Side Diff: sky/sdk/lib/example/rendering/touch_demo.dart

Issue 1214833004: Split Size into Size and Offset. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 5 years, 5 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'; 5 import 'dart:sky' as sky;
6 import 'dart:sky';
7 6
8 import 'package:sky/rendering/box.dart'; 7 import 'package:sky/rendering/box.dart';
9 import 'package:sky/rendering/object.dart'; 8 import 'package:sky/rendering/object.dart';
10 import 'package:sky/rendering/paragraph.dart'; 9 import 'package:sky/rendering/paragraph.dart';
11 import 'package:sky/rendering/sky_binding.dart'; 10 import 'package:sky/rendering/sky_binding.dart';
12 import 'package:sky/rendering/stack.dart'; 11 import 'package:sky/rendering/stack.dart';
13 import 'package:sky/theme/colors.dart'; 12 import 'package:sky/theme/colors.dart';
14 13
15 // Material design colors. :p 14 // Material design colors. :p
16 List<Color> colors = [ 15 List<Color> colors = [
17 Teal[500], 16 Teal[500],
18 Amber[500], 17 Amber[500],
19 Purple[500], 18 Purple[500],
20 LightBlue[500], 19 LightBlue[500],
21 DeepPurple[500], 20 DeepPurple[500],
22 Lime[500], 21 Lime[500],
23 ]; 22 ];
24 23
25 class Dot { 24 class Dot {
26 final Paint _paint; 25 final Paint _paint;
27 double x = 0.0; 26 Point position = Point.origin;
28 double y = 0.0;
29 double radius = 0.0; 27 double radius = 0.0;
30 28
31 Dot({ Color color }) : _paint = new Paint()..color = color; 29 Dot({ Color color }) : _paint = new Paint()..color = color;
32 30
33 void update(PointerEvent event) { 31 void update(sky.PointerEvent event) {
34 x = event.x; 32 position = new Point(event.x, event.y);
35 y = event.y;
36 radius = 5 + (95 * event.pressure); 33 radius = 5 + (95 * event.pressure);
37 } 34 }
38 35
39 void paint(RenderCanvas canvas) { 36 void paint(RenderCanvas canvas) {
40 canvas.drawCircle(x, y, radius, _paint); 37 canvas.drawCircle(position, radius, _paint);
41 } 38 }
42 } 39 }
43 40
44 class RenderTouchDemo extends RenderBox { 41 class RenderTouchDemo extends RenderBox {
45 Map<int, Dot> dots = new Map(); 42 Map<int, Dot> dots = new Map();
46 43
47 RenderTouchDemo(); 44 RenderTouchDemo();
48 45
49 void handleEvent(Event event, BoxHitTestEntry entry) { 46 void handleEvent(sky.Event event, BoxHitTestEntry entry) {
50 switch (event.type) { 47 if (event is sky.PointerEvent) {
51 case 'pointerdown': 48 switch (event.type) {
52 Color color = colors[event.pointer.remainder(colors.length)]; 49 case 'pointerdown':
53 dots[event.pointer] = new Dot(color: color)..update(event); 50 Color color = colors[event.pointer.remainder(colors.length)];
54 break; 51 dots[event.pointer] = new Dot(color: color)..update(event);
55 case 'pointerup': 52 break;
56 dots.remove(event.pointer); 53 case 'pointerup':
57 break; 54 dots.remove(event.pointer);
58 case 'pointercancel': 55 break;
59 dots = new Map(); 56 case 'pointercancel':
60 break; 57 dots = new Map();
61 case 'pointermove': 58 break;
62 dots[event.pointer].update(event); 59 case 'pointermove':
63 break; 60 dots[event.pointer].update(event);
61 break;
62 }
64 } 63 }
65 markNeedsPaint(); 64 markNeedsPaint();
66 } 65 }
67 66
68 void performLayout() { 67 void performLayout() {
69 size = constraints.constrain(Size.infinite); 68 size = constraints.biggest;
70 } 69 }
71 70
72 void paint(RenderCanvas canvas) { 71 void paint(RenderCanvas canvas) {
73 Paint white = new Paint()..color = const Color(0xFFFFFFFF); 72 Paint white = new Paint()..color = const Color(0xFFFFFFFF);
74 canvas.drawRect(new Rect.fromSize(size), white); 73 canvas.drawRect(new Rect.fromSize(size), white);
75 for (Dot dot in dots.values) 74 for (Dot dot in dots.values)
76 dot.paint(canvas); 75 dot.paint(canvas);
77 } 76 }
78 } 77 }
79 78
80 void main() { 79 void main() {
81 var paragraph = new RenderParagraph(new InlineText("Touch me!")); 80 var paragraph = new RenderParagraph(new InlineText("Touch me!"));
82 var stack = new RenderStack(children: [ 81 var stack = new RenderStack(children: [
83 new RenderTouchDemo(), 82 new RenderTouchDemo(),
84 paragraph, 83 paragraph,
85 ]); 84 ]);
86 // Prevent the RenderParagraph from filling the whole screen so 85 // Prevent the RenderParagraph from filling the whole screen so
87 // that it doesn't eat events. 86 // that it doesn't eat events.
88 paragraph.parentData..top = 40.0 87 paragraph.parentData..top = 40.0
89 ..left = 20.0; 88 ..left = 20.0;
90 new SkyBinding(root: stack); 89 new SkyBinding(root: stack);
91 } 90 }
OLDNEW
« no previous file with comments | « sky/sdk/lib/example/raw/spinning_square.dart ('k') | sky/sdk/lib/example/stocks2/lib/stock_arrow.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698