mirror of
https://github.com/servo/servo.git
synced 2025-08-03 12:40:06 +01:00
style: Fix ToResolvedValue implementation for caret-color, and serialize some color properties with Servo.
Differential Revision: https://phabricator.services.mozilla.com/D26785
This commit is contained in:
parent
5fd4e17020
commit
0f57b7b833
3 changed files with 48 additions and 20 deletions
|
@ -99,7 +99,6 @@ impl<RGBA> From<RGBA> for Color<RGBA> {
|
|||
ToAnimatedZero,
|
||||
ToComputedValue,
|
||||
ToCss,
|
||||
ToResolvedValue,
|
||||
ToShmem,
|
||||
)]
|
||||
#[repr(C, u8)]
|
||||
|
|
45
components/style/values/resolved/color.rs
Normal file
45
components/style/values/resolved/color.rs
Normal file
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue