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

Unified Diff: sky/examples/raw/interactive_flex.dart

Issue 1160013004: Implement RenderImage and Image for Sky (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: rebase again Created 5 years, 7 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « sky/examples/lib/solid_color_box.dart ('k') | sky/examples/raw/render_paragraph.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: sky/examples/raw/interactive_flex.dart
diff --git a/sky/examples/raw/interactive_flex.dart b/sky/examples/raw/interactive_flex.dart
new file mode 100644
index 0000000000000000000000000000000000000000..df84f1585fe88e36c59946657ecfddd3ba1ee79d
--- /dev/null
+++ b/sky/examples/raw/interactive_flex.dart
@@ -0,0 +1,95 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+import 'dart:sky';
+import 'dart:math' as math;
+import 'package:sky/framework/net/image_cache.dart' as image_cache;
+import 'package:sky/framework/app.dart';
+import 'package:sky/framework/rendering/box.dart';
+import 'package:sky/framework/rendering/block.dart';
+import 'package:sky/framework/rendering/flex.dart';
+import 'package:sky/framework/rendering/node.dart';
+import 'package:sky/framework/rendering/paragraph.dart';
+import '../lib/solid_color_box.dart';
+
+class Touch {
+ final double x;
+ final double y;
+ const Touch(this.x, this.y);
+}
+
+class RenderImageGrow extends RenderImage {
+ final Size _startingSize;
+
+ RenderImageGrow(String src, Size size) : _startingSize = size, super(src, size);
+
+ double _growth = 0.0;
+ double get growth => _growth;
+ void set growth(double value) {
+ _growth = value;
+ double newWidth = _startingSize.width == null ? null : _startingSize.width + growth;
+ double newHeight = _startingSize.height == null ? null : _startingSize.height + growth;
+ requestedSize = new Size(newWidth, newHeight);
+ }
+}
+
+AppView app;
+RenderImageGrow image;
+
+Map<int, Touch> touches = new Map();
+void handleEvent(event) {
+ if (event is PointerEvent) {
+ if (event.type == 'pointermove')
+ image.growth = math.max(0.0, image.growth + event.x - touches[event.pointer].x);
+ touches[event.pointer] = new Touch(event.x, event.y);
+ }
+}
+
+void main() {
+ void addFlexChildSolidColor(RenderFlex parent, Color backgroundColor, { int flex: 0 }) {
+ RenderSolidColorBox child = new RenderSolidColorBox(backgroundColor);
+ parent.add(child);
+ child.parentData.flex = flex;
+ }
+
+ var row = new RenderFlex(direction: FlexDirection.Horizontal);
+
+ // Left cell
+ addFlexChildSolidColor(row, const Color(0xFF00D2B8), flex: 1);
+
+ // Resizeable image
+ image = new RenderImageGrow("https://www.dartlang.org/logos/dart-logo.png",
+ new Size(100.0, null));
+ var padding = new RenderPadding(padding: const EdgeDims.all(10.0), child: image);
+ row.add(padding);
+
+ RenderFlex column = new RenderFlex(direction: FlexDirection.Vertical);
+
+ // Top cell
+ addFlexChildSolidColor(column, const Color(0xFF55DDCA), flex: 1);
+
+ // The internet is a beautiful place. https://baconipsum.com/
+ String meatyString = """Bacon ipsum dolor amet ham fatback tri-tip, prosciutto
+porchetta bacon kevin meatball meatloaf pig beef ribs chicken. Brisket ribeye
+andouille leberkas capicola meatloaf. Chicken pig ball tip pork picanha bresaola
+alcatra. Pork pork belly alcatra, flank chuck drumstick biltong doner jowl.
+Pancetta meatball tongue tenderloin rump tail jowl boudin.""";
+ RenderParagraph paragraph = new RenderParagraph(text: meatyString, color: const Color(0xFF009900));
+ padding = new RenderPadding(padding: const EdgeDims.all(10.0), child: paragraph);
+ column.add(padding);
+
+ // Bottom cell
+ addFlexChildSolidColor(column, const Color(0xFF0081C6), flex: 2);
+
+ row.add(column);
+ column.parentData.flex = 8;
+
+ RenderDecoratedBox root = new RenderDecoratedBox(
+ decoration: new BoxDecoration(backgroundColor: const Color(0xFFFFFFFF)),
+ child: row
+ );
+
+ app = new AppView(root);
+ view.setEventCallback(handleEvent);
+}
« no previous file with comments | « sky/examples/lib/solid_color_box.dart ('k') | sky/examples/raw/render_paragraph.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698