From 92fd88b73fd50e59878531fde0806c30d853013d Mon Sep 17 00:00:00 2001 From: Eric Seidel Date: Mon, 8 Jun 2015 15:22:18 -0700 Subject: [PATCH] Fix RenderParagraph to respect text color. I don't think this is the final API we're going to use. I suspect we'll add a TextStyle struct to hold color and size, etc. which back-ends into CSS like this does today. Currently no one uses this color even though it exists. This is one step towards fixing: https://github.com/domokit/mojo/issues/213 R=ianh@google.com Review URL: https://codereview.chromium.org/1162573007 --- engine/core/painting/Color.dart | 5 +++++ sdk/lib/framework/rendering/paragraph.dart | 4 +++- tests/framework/color_accessors-expected.txt | 6 ++++++ tests/framework/color_accessors.dart | 19 +++++++++++++++++++ 4 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 tests/framework/color_accessors-expected.txt create mode 100644 tests/framework/color_accessors.dart diff --git a/engine/core/painting/Color.dart b/engine/core/painting/Color.dart index 0ea9fa980..be59871bb 100644 --- a/engine/core/painting/Color.dart +++ b/engine/core/painting/Color.dart @@ -15,6 +15,11 @@ class Color { ((g & 0xff) << 8) | ((b & 0xff) << 0)); + int get alpha => (0xff000000 & _value) >> 24; + int get red => (0x00ff0000 & _value) >> 16; + int get green => (0x0000ff00 & _value) >> 8; + int get blue => (0x000000ff & _value) >> 0; + bool operator ==(other) => other is Color && _value == other._value; int get hashCode => _value.hashCode; diff --git a/sdk/lib/framework/rendering/paragraph.dart b/sdk/lib/framework/rendering/paragraph.dart index 58ad8915d..551045fe6 100644 --- a/sdk/lib/framework/rendering/paragraph.dart +++ b/sdk/lib/framework/rendering/paragraph.dart @@ -76,7 +76,9 @@ class RenderParagraph extends RenderBox { } void paint(RenderObjectDisplayList canvas) { - // _layoutRoot.rootElement.style['color'] = 'rgba(' + ...color... + ')'; + if (_color != null) + _layoutRoot.rootElement.style['color'] = + 'rgba(${_color.red}, ${_color.green}, ${_color.blue}, ${_color.alpha / 255.0 })'; _layoutRoot.paint(canvas); } diff --git a/tests/framework/color_accessors-expected.txt b/tests/framework/color_accessors-expected.txt new file mode 100644 index 000000000..86e7c4aff --- /dev/null +++ b/tests/framework/color_accessors-expected.txt @@ -0,0 +1,6 @@ +CONSOLE: unittest-suite-wait-for-done +CONSOLE: PASS: color accessors should work +CONSOLE: +CONSOLE: All 1 tests passed. +CONSOLE: unittest-suite-success +DONE diff --git a/tests/framework/color_accessors.dart b/tests/framework/color_accessors.dart new file mode 100644 index 000000000..93b03c670 --- /dev/null +++ b/tests/framework/color_accessors.dart @@ -0,0 +1,19 @@ +// 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'; +import '../resources/third_party/unittest/unittest.dart'; +import '../resources/unit.dart'; + +void main() { + initUnit(); + + test("color accessors should work", () { + Color foo = new Color(0x12345678); + expect(foo.alpha, equals(0x12)); + expect(foo.red, equals(0x34)); + expect(foo.green, equals(0x56)); + expect(foo.blue, equals(0x78)); + }); +} -- GitLab