Implement ToComputedValue for Box<T>

This commit is contained in:
Anthony Ramine 2017-09-11 17:20:41 +02:00
parent 4e64ccde60
commit 7c31202dda
4 changed files with 27 additions and 3 deletions

View file

@ -341,7 +341,11 @@
} }
context.builder.put_${data.current_style_struct.name_lower}(s); context.builder.put_${data.current_style_struct.name_lower}(s);
% else: % else:
% if property.boxed:
let computed = (**specified_value).to_computed_value(context);
% else:
let computed = specified_value.to_computed_value(context); let computed = specified_value.to_computed_value(context);
% endif
% if property.ident == "font_size": % if property.ident == "font_size":
longhands::font_size::cascade_specified_font_size( longhands::font_size::cascade_specified_font_size(
context, context,

View file

@ -544,7 +544,11 @@ impl AnimationValue {
longhands::system_font::resolve_system_font(sf, context); longhands::system_font::resolve_system_font(sf, context);
} }
% endif % endif
% if prop.boxed:
let computed = (**val).to_computed_value(context);
% else:
let computed = val.to_computed_value(context); let computed = val.to_computed_value(context);
% endif
Some(AnimationValue::${prop.camel_case}( Some(AnimationValue::${prop.camel_case}(
% if prop.is_animatable_with_computed_value: % if prop.is_animatable_with_computed_value:
computed computed

View file

@ -408,7 +408,7 @@ impl ToComputedValue for specified::LengthOrPercentage {
LengthOrPercentage::Percentage(value) LengthOrPercentage::Percentage(value)
} }
specified::LengthOrPercentage::Calc(ref calc) => { specified::LengthOrPercentage::Calc(ref calc) => {
LengthOrPercentage::Calc(calc.to_computed_value(context)) LengthOrPercentage::Calc((**calc).to_computed_value(context))
} }
} }
} }
@ -502,7 +502,7 @@ impl ToComputedValue for specified::LengthOrPercentageOrAuto {
LengthOrPercentageOrAuto::Auto LengthOrPercentageOrAuto::Auto
} }
specified::LengthOrPercentageOrAuto::Calc(ref calc) => { specified::LengthOrPercentageOrAuto::Calc(ref calc) => {
LengthOrPercentageOrAuto::Calc(calc.to_computed_value(context)) LengthOrPercentageOrAuto::Calc((**calc).to_computed_value(context))
} }
} }
} }
@ -591,7 +591,7 @@ impl ToComputedValue for specified::LengthOrPercentageOrNone {
LengthOrPercentageOrNone::Percentage(value) LengthOrPercentageOrNone::Percentage(value)
} }
specified::LengthOrPercentageOrNone::Calc(ref calc) => { specified::LengthOrPercentageOrNone::Calc(ref calc) => {
LengthOrPercentageOrNone::Calc(calc.to_computed_value(context)) LengthOrPercentageOrNone::Calc((**calc).to_computed_value(context))
} }
specified::LengthOrPercentageOrNone::None => { specified::LengthOrPercentageOrNone::None => {
LengthOrPercentageOrNone::None LengthOrPercentageOrNone::None

View file

@ -296,6 +296,22 @@ impl<T> ToComputedValue for Vec<T>
} }
} }
impl<T> ToComputedValue for Box<T>
where T: ToComputedValue
{
type ComputedValue = Box<<T as ToComputedValue>::ComputedValue>;
#[inline]
fn to_computed_value(&self, context: &Context) -> Self::ComputedValue {
Box::new(T::to_computed_value(self, context))
}
#[inline]
fn from_computed_value(computed: &Self::ComputedValue) -> Self {
Box::new(T::from_computed_value(computed))
}
}
impl<T> ToComputedValue for Box<[T]> impl<T> ToComputedValue for Box<[T]>
where T: ToComputedValue where T: ToComputedValue
{ {