Chromium Code Reviews| OLD | NEW |
|---|---|
| 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:math'; |
| 6 import 'dart:sky'; | 6 import 'dart:sky'; |
| 7 import 'package:sky/framework/app.dart'; | 7 import 'package:sky/framework/app.dart'; |
| 8 import 'package:sky/framework/rendering/box.dart'; | 8 import 'package:sky/framework/rendering/box.dart'; |
|
Hixie
2015/06/11 22:14:09
convention is now to sort this alphabetically, wit
| |
| 9 import 'package:sky/framework/rendering/object.dart'; | 9 import 'package:sky/framework/rendering/object.dart'; |
| 10 import 'package:sky/framework/rendering/stack.dart'; | |
| 11 import 'package:sky/framework/rendering/paragraph.dart'; | |
| 12 import 'package:sky/framework/theme2/colors.dart'; | |
| 10 | 13 |
| 11 // Material design colors. :p | 14 // Material design colors. :p |
| 12 List<int> colors = [ | 15 List<Color> colors = [ |
| 13 0xFF009688, | 16 Teal[500], |
| 14 0xFFFFC107, | 17 Amber[500], |
| 15 0xFF9C27B0, | 18 Purple[500], |
| 16 0xFF03A9F4, | 19 LightBlue[500], |
| 17 0xFF673AB7, | 20 DeepPurple[500], |
| 18 0xFFCDDC39, | 21 Lime[500], |
| 19 ]; | 22 ]; |
| 20 | 23 |
| 21 class Dot { | 24 class Dot { |
| 22 final Paint _paint; | 25 final Paint _paint; |
| 23 double x = 0.0; | 26 double x = 0.0; |
| 24 double y = 0.0; | 27 double y = 0.0; |
| 25 double radius = 0.0; | 28 double radius = 0.0; |
| 26 | 29 |
| 27 Dot({int color}) : _paint = new Paint()..color = color; | 30 Dot({Color color}) : _paint = new Paint()..color = color; |
|
Hixie
2015/06/11 22:14:09
spaces around the arguments list.
| |
| 28 | 31 |
| 29 void update(PointerEvent event) { | 32 void update(PointerEvent event) { |
| 30 x = event.x; | 33 x = event.x; |
| 31 y = event.y; | 34 y = event.y; |
| 32 radius = 5 + (95 * event.pressure); | 35 radius = 5 + (95 * event.pressure); |
| 33 } | 36 } |
| 34 | 37 |
| 35 void paint(RenderObjectDisplayList canvas) { | 38 void paint(RenderObjectDisplayList canvas) { |
| 36 canvas.drawCircle(x, y, radius, _paint); | 39 canvas.drawCircle(x, y, radius, _paint); |
| 37 } | 40 } |
| 38 } | 41 } |
| 39 | 42 |
| 40 class RenderTouchDemo extends RenderBox { | 43 class RenderTouchDemo extends RenderBox { |
| 41 Map<int, Dot> dots = new Map(); | 44 Map<int, Dot> dots = new Map(); |
| 42 | 45 |
| 43 RenderTouchDemo(); | 46 RenderTouchDemo(); |
| 44 | 47 |
| 45 void handleEvent(Event event, BoxHitTestEntry entry) { | 48 void handleEvent(Event event, BoxHitTestEntry entry) { |
| 46 switch (event.type) { | 49 switch (event.type) { |
| 47 case 'pointerdown': | 50 case 'pointerdown': |
| 48 int color = colors[event.pointer.remainder(colors.length)]; | 51 Color color = colors[event.pointer.remainder(colors.length)]; |
| 49 dots[event.pointer] = new Dot(color: color)..update(event); | 52 dots[event.pointer] = new Dot(color: color)..update(event); |
| 50 break; | 53 break; |
| 51 case 'pointerup': | 54 case 'pointerup': |
| 52 dots.remove(event.pointer); | 55 dots.remove(event.pointer); |
| 53 break; | 56 break; |
| 54 case 'pointercancel': | 57 case 'pointercancel': |
| 55 dots = new Map(); | 58 dots = new Map(); |
| 56 break; | 59 break; |
| 57 case 'pointermove': | 60 case 'pointermove': |
| 58 dots[event.pointer].update(event); | 61 dots[event.pointer].update(event); |
| 59 break; | 62 break; |
| 60 } | 63 } |
| 61 markNeedsPaint(); | 64 markNeedsPaint(); |
| 62 } | 65 } |
| 63 | 66 |
| 64 void performLayout() { | 67 void performLayout() { |
| 65 size = constraints.constrain(Size.infinite); | 68 size = constraints.constrain(Size.infinite); |
| 66 } | 69 } |
| 67 | 70 |
| 68 void paint(RenderObjectDisplayList canvas) { | 71 void paint(RenderObjectDisplayList canvas) { |
| 69 dots.forEach((_, Dot dot) { | 72 Paint white = new Paint()..color = const Color(0xFFFFFFFF); |
| 73 canvas.drawRect(new Rect.fromSize(size), white); | |
| 74 for (Dot dot in dots.values) | |
| 70 dot.paint(canvas); | 75 dot.paint(canvas); |
| 71 }); | |
| 72 } | 76 } |
| 73 } | 77 } |
| 74 | 78 |
| 75 AppView app; | 79 AppView app; |
| 76 | 80 |
| 77 void main() { | 81 void main() { |
| 78 app = new AppView(new RenderTouchDemo()); | 82 var para = new RenderParagraph(text: "Touch me!"); |
| 83 var stack = new RenderStack(children: [ | |
| 84 new RenderTouchDemo(), | |
| 85 para, | |
| 86 ]); | |
| 87 // Make the paragraph not fill the whole screen so it doesn't eat events. | |
| 88 para.parentData..top = 40.0 | |
| 89 ..left = 20.0; | |
| 90 app = new AppView(stack); | |
| 79 } | 91 } |
| OLD | NEW |