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:sky'; | |
6 import 'dart:math' as math; | |
7 import 'package:sky/framework/net/image_cache.dart' as image_cache; | |
8 import 'package:sky/framework/app.dart'; | |
9 import 'package:sky/framework/rendering/box.dart'; | |
10 import 'package:sky/framework/rendering/block.dart'; | |
11 import 'package:sky/framework/rendering/flex.dart'; | |
12 import 'package:sky/framework/rendering/object.dart'; | |
13 import 'package:sky/framework/rendering/paragraph.dart'; | |
14 import '../lib/solid_color_box.dart'; | |
15 | |
16 class Touch { | |
17 final double x; | |
18 final double y; | |
19 const Touch(this.x, this.y); | |
20 } | |
21 | |
22 class RenderImageGrow extends RenderImage { | |
23 final Size _startingSize; | |
24 | |
25 RenderImageGrow(String src, Size size) : _startingSize = size, super(src, size
); | |
26 | |
27 double _growth = 0.0; | |
28 double get growth => _growth; | |
29 void set growth(double value) { | |
30 _growth = value; | |
31 double newWidth = _startingSize.width == null ? null : _startingSize.width +
growth; | |
32 double newHeight = _startingSize.height == null ? null : _startingSize.heigh
t + growth; | |
33 requestedSize = new Size(newWidth, newHeight); | |
34 } | |
35 } | |
36 | |
37 AppView app; | |
38 RenderImageGrow image; | |
39 | |
40 Map<int, Touch> touches = new Map(); | |
41 void handleEvent(event) { | |
42 if (event is PointerEvent) { | |
43 if (event.type == 'pointermove') | |
44 image.growth = math.max(0.0, image.growth + event.x - touches[event.poin
ter].x); | |
45 touches[event.pointer] = new Touch(event.x, event.y); | |
46 } | |
47 } | |
48 | |
49 void main() { | |
50 void addFlexChildSolidColor(RenderFlex parent, Color backgroundColor, { int fl
ex: 0 }) { | |
51 RenderSolidColorBox child = new RenderSolidColorBox(backgroundColor); | |
52 parent.add(child); | |
53 child.parentData.flex = flex; | |
54 } | |
55 | |
56 var row = new RenderFlex(direction: FlexDirection.horizontal); | |
57 | |
58 // Left cell | |
59 addFlexChildSolidColor(row, const Color(0xFF00D2B8), flex: 1); | |
60 | |
61 // Resizeable image | |
62 image = new RenderImageGrow("https://www.dartlang.org/logos/dart-logo.png", | |
63 new Size(100.0, null)); | |
64 var padding = new RenderPadding(padding: const EdgeDims.all(10.0), child: imag
e); | |
65 row.add(padding); | |
66 | |
67 RenderFlex column = new RenderFlex(direction: FlexDirection.vertical); | |
68 | |
69 // Top cell | |
70 addFlexChildSolidColor(column, const Color(0xFF55DDCA), flex: 1); | |
71 | |
72 // The internet is a beautiful place. https://baconipsum.com/ | |
73 String meatyString = """Bacon ipsum dolor amet ham fatback tri-tip, prosciutto | |
74 porchetta bacon kevin meatball meatloaf pig beef ribs chicken. Brisket ribeye | |
75 andouille leberkas capicola meatloaf. Chicken pig ball tip pork picanha bresaola | |
76 alcatra. Pork pork belly alcatra, flank chuck drumstick biltong doner jowl. | |
77 Pancetta meatball tongue tenderloin rump tail jowl boudin."""; | |
78 RenderParagraph paragraph = new RenderParagraph(text: meatyString, color: cons
t Color(0xFF009900)); | |
79 padding = new RenderPadding(padding: const EdgeDims.all(10.0), child: paragrap
h); | |
80 column.add(padding); | |
81 | |
82 // Bottom cell | |
83 addFlexChildSolidColor(column, const Color(0xFF0081C6), flex: 2); | |
84 | |
85 row.add(column); | |
86 column.parentData.flex = 8; | |
87 | |
88 RenderDecoratedBox root = new RenderDecoratedBox( | |
89 decoration: new BoxDecoration(backgroundColor: const Color(0xFFFFFFFF)), | |
90 child: row | |
91 ); | |
92 | |
93 app = new AppView(root); | |
94 view.setEventCallback(handleEvent); | |
95 } | |
OLD | NEW |