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

Side by Side Diff: sky/examples/raw/touch_demo.dart

Issue 1173233002: Separate out the raw (directly manipulating sky.view) examples from the rendering (using RenderObje… (Closed) Base URL: https://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
« no previous file with comments | « sky/examples/raw/shadowed_box.dart ('k') | sky/examples/raw/transform.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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: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 }
OLDNEW
« no previous file with comments | « sky/examples/raw/shadowed_box.dart ('k') | sky/examples/raw/transform.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698