Index: sky/sdk/lib/framework/rendering/render_paragraph.dart |
diff --git a/sky/sdk/lib/framework/rendering/render_paragraph.dart b/sky/sdk/lib/framework/rendering/render_paragraph.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..6580f84c7ee9637643600844ee75f6aa838448ac |
--- /dev/null |
+++ b/sky/sdk/lib/framework/rendering/render_paragraph.dart |
@@ -0,0 +1,64 @@ |
+// 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' as sky; |
+import 'render_box.dart'; |
+import 'render_node.dart'; |
+ |
+class RenderInline extends RenderNode { |
+ String data; |
+ |
+ RenderInline(this.data); |
+} |
+ |
+class RenderParagraph extends RenderBox { |
+ |
+ RenderParagraph({ |
+ String text, |
+ int color |
+ }) : _color = color { |
+ _layoutRoot.rootElement = _document.createElement('p'); |
+ this.text = text; |
+ } |
+ |
+ final sky.Document _document = new sky.Document(); |
+ final sky.LayoutRoot _layoutRoot = new sky.LayoutRoot(); |
+ |
+ String get text => (_layoutRoot.rootElement.firstChild as sky.Text).data; |
+ void set text (String value) { |
+ _layoutRoot.rootElement.setChild(_document.createText(value)); |
+ markNeedsLayout(); |
+ } |
+ |
+ int _color = 0xFF000000; |
+ int get color => _color; |
+ void set color (int value) { |
+ if (_color != value) { |
+ _color = value; |
+ markNeedsPaint(); |
+ } |
+ } |
+ |
+ sky.Size getIntrinsicDimensions(BoxConstraints constraints) { |
+ assert(false); |
+ return null; |
+ // we don't currently support this for RenderParagraph |
+ } |
+ |
+ void performLayout() { |
+ _layoutRoot.maxWidth = constraints.maxWidth; |
+ _layoutRoot.minWidth = constraints.minWidth; |
+ _layoutRoot.minHeight = constraints.minHeight; |
+ _layoutRoot.maxHeight = constraints.maxHeight; |
+ _layoutRoot.layout(); |
+ size = constraints.constrain(new sky.Size(_layoutRoot.rootElement.width, _layoutRoot.rootElement.height)); |
+ } |
+ |
+ void paint(RenderNodeDisplayList canvas) { |
+ // _layoutRoot.rootElement.style['color'] = 'rgba(' + ...color... + ')'; |
+ _layoutRoot.paint(canvas); |
+ } |
+ |
+ // we should probably expose a way to do precise (inter-glpyh) hit testing |
+} |