mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
65 lines
1.7 KiB
Dart
65 lines
1.7 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,
|
|
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
|
|
}
|