| 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 |