Matt Perry 8c097b0892 Update BoxDecoration and RenderParagraph to use sky.Color instead of int.
Also add operator==, hashCode, toString, and some basic Color constants to
Color.

R=abarth@chromium.org, ianh@google.com

Review URL: https://codereview.chromium.org/1162023004
2015-06-03 16:57:04 -04:00

65 lines
1.8 KiB
Dart

// 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,
sky.Color 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();
}
sky.Color _color = const sky.Color(0xFF000000);
sky.Color get color => _color;
void set color (sky.Color 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
}