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/node.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 |