mirror of
https://github.com/servo/servo.git
synced 2025-08-05 13:40:08 +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,
|
ToAnimatedZero,
|
||||||
ToComputedValue,
|
ToComputedValue,
|
||||||
ToCss,
|
ToCss,
|
||||||
ToResolvedValue,
|
|
||||||
ToShmem,
|
ToShmem,
|
||||||
)]
|
)]
|
||||||
#[repr(C, u8)]
|
#[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 cssparser;
|
||||||
use smallvec::SmallVec;
|
use smallvec::SmallVec;
|
||||||
use crate::properties::ComputedValues;
|
use crate::properties::ComputedValues;
|
||||||
|
|
||||||
|
mod color;
|
||||||
|
|
||||||
use crate::values::computed;
|
use crate::values::computed;
|
||||||
|
|
||||||
/// Information needed to resolve a given value.
|
/// Information needed to resolve a given value.
|
||||||
|
@ -187,22 +190,3 @@ where
|
||||||
Vec::from_resolved_value(Vec::from(resolved)).into_boxed_slice()
|
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