OLD | NEW |
| (Empty) |
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 | |
3 // found in the LICENSE file. | |
4 | |
5 import 'dart:math'; | |
6 import 'dart:sky'; | |
7 import 'package:sky/framework/app.dart'; | |
8 import 'package:sky/framework/rendering/box.dart'; | |
9 import 'package:sky/framework/rendering/object.dart'; | |
10 | |
11 // Material design colors. :p | |
12 List<int> colors = [ | |
13 0xFF009688, | |
14 0xFFFFC107, | |
15 0xFF9C27B0, | |
16 0xFF03A9F4, | |
17 0xFF673AB7, | |
18 0xFFCDDC39, | |
19 ]; | |
20 | |
21 class Dot { | |
22 final Paint _paint; | |
23 double x = 0.0; | |
24 double y = 0.0; | |
25 double radius = 0.0; | |
26 | |
27 Dot({int color}) : _paint = new Paint()..color = color; | |
28 | |
29 void update(PointerEvent event) { | |
30 x = event.x; | |
31 y = event.y; | |
32 radius = 5 + (95 * event.pressure); | |
33 } | |
34 | |
35 void paint(RenderObjectDisplayList canvas) { | |
36 canvas.drawCircle(x, y, radius, _paint); | |
37 } | |
38 } | |
39 | |
40 class RenderTouchDemo extends RenderBox { | |
41 Map<int, Dot> dots = new Map(); | |
42 | |
43 RenderTouchDemo(); | |
44 | |
45 void handleEvent(Event event, BoxHitTestEntry entry) { | |
46 switch (event.type) { | |
47 case 'pointerdown': | |
48 int color = colors[event.pointer.remainder(colors.length)]; | |
49 dots[event.pointer] = new Dot(color: color)..update(event); | |
50 break; | |
51 case 'pointerup': | |
52 dots.remove(event.pointer); | |
53 break; | |
54 case 'pointercancel': | |
55 dots = new Map(); | |
56 break; | |
57 case 'pointermove': | |
58 dots[event.pointer].update(event); | |
59 break; | |
60 } | |
61 markNeedsPaint(); | |
62 } | |
63 | |
64 void performLayout() { | |
65 size = constraints.constrain(Size.infinite); | |
66 } | |
67 | |
68 void paint(RenderObjectDisplayList canvas) { | |
69 dots.forEach((_, Dot dot) { | |
70 dot.paint(canvas); | |
71 }); | |
72 } | |
73 } | |
74 | |
75 AppView app; | |
76 | |
77 void main() { | |
78 app = new AppView(new RenderTouchDemo()); | |
79 } | |
OLD | NEW |