// 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 'box.dart'; import '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 }