Skip to content
Permalink
Browse files

style: Fix ToResolvedValue implementation for caret-color, and serial…

…ize some color properties with Servo.

Differential Revision: https://phabricator.services.mozilla.com/D26785
  • Loading branch information...
emilio committed Apr 10, 2019
1 parent 5fd4e17 commit 0f57b7b83307862ce91351262638db9ee59c5aa8
@@ -99,7 +99,6 @@ impl<RGBA> From<RGBA> for Color<RGBA> {
ToAnimatedZero,
ToComputedValue,
ToCss,
ToResolvedValue,
ToShmem,
)]
#[repr(C, u8)]
@@ -0,0 +1,45 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */

//! Resolved color values.

use super::{Context, ToResolvedValue};

use crate::values::computed;
use crate::values::generics::color as generics;

impl ToResolvedValue for computed::Color {
// A resolved color value is an rgba color, with currentcolor resolved.
type ResolvedValue = cssparser::RGBA;

#[inline]
fn to_resolved_value(self, context: &Context) -> Self::ResolvedValue {
context.style.resolve_color(self)
}

#[inline]
fn from_resolved_value(resolved: Self::ResolvedValue) -> Self {
generics::Color::Numeric(resolved)
}
}

impl ToResolvedValue for computed::ColorOrAuto {
// A resolved caret-color value is an rgba color, with auto resolving to
// currentcolor.
type ResolvedValue = cssparser::RGBA;

#[inline]
fn to_resolved_value(self, context: &Context) -> Self::ResolvedValue {
let color = match self {
generics::ColorOrAuto::Color(color) => color,
generics::ColorOrAuto::Auto => generics::Color::CurrentColor,
};
color.to_resolved_value(context)
}

#[inline]
fn from_resolved_value(resolved: Self::ResolvedValue) -> Self {
generics::ColorOrAuto::Color(computed::Color::from_resolved_value(resolved))
}
}
@@ -8,6 +8,9 @@
use cssparser;
use smallvec::SmallVec;
use crate::properties::ComputedValues;

mod color;

use crate::values::computed;

/// Information needed to resolve a given value.
@@ -187,22 +190,3 @@ where
Vec::from_resolved_value(Vec::from(resolved)).into_boxed_slice()
}
}


/// A resolved color value is an rgba color, with currentcolor resolved.
pub type Color = cssparser::RGBA;

impl ToResolvedValue for computed::Color {
type ResolvedValue = Color;

#[inline]
fn to_resolved_value(self, context: &Context) -> Self::ResolvedValue {
context.style.resolve_color(self)
}

#[inline]
fn from_resolved_value(resolved: Self::ResolvedValue) -> Self {
use crate::values::generics::color::Color as GenericColor;
GenericColor::Numeric(resolved)
}
}

0 comments on commit 0f57b7b

Please sign in to comment.
You can’t perform that action at this time.