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

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

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

Powered by Google App Engine
This is Rietveld 408576698