style/values/resolved/
color.rs1use super::{Context, ToResolvedValue};
8
9use crate::values::computed::color as computed;
10use crate::values::generics::color as generics;
11
12impl ToResolvedValue for computed::Color {
13 type ResolvedValue = Self;
15
16 #[inline]
17 fn to_resolved_value(self, context: &Context) -> Self::ResolvedValue {
18 if context.for_property == crate::properties::ShorthandId::TextDecoration.into()
19 && matches!(self, Self::CurrentColor)
20 {
21 return self;
22 }
23 generics::Color::Absolute(context.style.resolve_color(&self))
24 }
25
26 #[inline]
27 fn from_resolved_value(resolved: Self::ResolvedValue) -> Self {
28 resolved
29 }
30}
31
32impl ToResolvedValue for computed::CaretColor {
33 type ResolvedValue = computed::Color;
36
37 #[inline]
38 fn to_resolved_value(self, context: &Context) -> Self::ResolvedValue {
39 let color = match self.0 {
40 generics::ColorOrAuto::Color(color) => color,
41 generics::ColorOrAuto::Auto => generics::Color::currentcolor(),
42 };
43 color.to_resolved_value(context)
44 }
45
46 #[inline]
47 fn from_resolved_value(resolved: Self::ResolvedValue) -> Self {
48 generics::CaretColor(generics::ColorOrAuto::Color(
49 computed::Color::from_resolved_value(resolved),
50 ))
51 }
52}