提交 7e7ed88f 编写于 作者: E Eric Seidel

Add hello_fn2.dart and make Text("Hello fn2") actually render something.

R=ianh@google.com

Review URL: https://codereview.chromium.org/1160843005
上级 9a73fe98
// 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 'package:sky/framework/fn2.dart';
class HelloWorldApp extends App {
UINode build() {
return new Text('Hello, fn2!');
}
}
void main() {
new HelloWorldApp();
}
\ No newline at end of file
......@@ -543,10 +543,11 @@ class Container extends OneChildListRenderNodeWrapper {
);
}
class Paragraph extends OneChildListRenderNodeWrapper {
class Paragraph extends RenderNodeWrapper {
RenderCSSParagraph root;
RenderCSSParagraph createNode() => new RenderCSSParagraph(this);
RenderParagraph root;
RenderParagraph createNode() => new RenderParagraph(text);
String text;
static final Paragraph _emptyContainer = new Paragraph();
......@@ -554,11 +555,15 @@ class Paragraph extends OneChildListRenderNodeWrapper {
Paragraph({
Object key,
List<UINode> children
this.text
}) : super(
key: key,
children: children
key: key
);
void syncRenderNode(UINode old) {
super.syncRenderNode(old);
root.text = text;
}
}
class FlexContainer extends OneChildListRenderNodeWrapper {
......@@ -646,29 +651,6 @@ abstract class OneChildRenderNodeWrapper extends RenderNodeWrapper {
}
}
class TextFragment extends RenderNodeWrapper {
RenderCSSInline root;
RenderCSSInline createNode() => new RenderCSSInline(this, this.data);
static final TextFragment _emptyText = new TextFragment('');
RenderNodeWrapper get emptyNode => _emptyText;
final String data;
TextFragment(this.data, {
Object key
}) : super(
key: key
);
void syncRenderNode(UINode old) {
super.syncRenderNode(old);
root.data = data;
}
}
class Image extends RenderNodeWrapper {
RenderCSSImage root;
......@@ -936,7 +918,7 @@ class Text extends Component {
Text(this.data) : super(key: '*text*');
final String data;
bool get interchangeable => true;
UINode build() => new Paragraph(children: [new TextFragment(data)]);
UINode build() => new Paragraph(text: data);
}
......
......@@ -968,14 +968,20 @@ class RenderFlex extends RenderDecoratedBox with ContainerRenderNodeMixin<Render
}
}
class RenderInline extends RenderNode {
String data;
RenderInline(this.data);
}
class RenderParagraph extends RenderDecoratedBox {
final String text;
LayoutRoot _layoutRoot = new LayoutRoot();
Document _document;
String text;
sky.LayoutRoot _layoutRoot = new sky.LayoutRoot();
sky.Document _document;
RenderParagraph(String this.text) :
super(new BoxDecoration(backgroundColor: 0xFFFFFFFF)) {
_document = new Document();
_document = new sky.Document();
_layoutRoot.rootElement = _document.createElement('p');
_layoutRoot.rootElement.appendChild(_document.createText(this.text));
}
......@@ -983,9 +989,12 @@ class RenderParagraph extends RenderDecoratedBox {
void performLayout() {
_layoutRoot.maxWidth = constraints.maxWidth;
_layoutRoot.minWidth = constraints.minWidth;
_layoutRoot.minHeight = constraints.minHeight;
_layoutRoot.maxHeight = constraints.maxHeight;
_layoutRoot.layout();
width = _layoutRoot.rootElement.width;
height = _layoutRoot.rootElement.height;
// TODO(eseidel): LayoutRoot will not expand to fill height. :(
height = _constraints.constrainHeight(_layoutRoot.rootElement.height);
}
void hitTestChildren(HitTestResult result, { double x, double y }) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册