mirror of
https://github.com/servo/servo.git
synced 2025-08-14 18:05:36 +01:00
Auto merge of #17036 - servo:derive-all-the-things, r=emilio
Use values::generics::rect::Rect some more <!-- Reviewable:start --> This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/17036) <!-- Reviewable:end -->
This commit is contained in:
commit
7275f65981
18 changed files with 253 additions and 410 deletions
|
@ -2932,29 +2932,37 @@ fn static_assert() {
|
|||
use gecko_bindings::structs::nsStyleImageLayers_Size_Dimension;
|
||||
use gecko_bindings::structs::nsStyleImageLayers_Size_DimensionType;
|
||||
use gecko_bindings::structs::{nsStyleCoord_CalcValue, nsStyleImageLayers_Size};
|
||||
use properties::longhands::background_size::single_value::computed_value::T;
|
||||
use values::generics::background::BackgroundSize;
|
||||
|
||||
let mut width = nsStyleCoord_CalcValue::new();
|
||||
let mut height = nsStyleCoord_CalcValue::new();
|
||||
|
||||
let (w_type, h_type) = match servo {
|
||||
T::Explicit(size) => {
|
||||
BackgroundSize::Explicit { width: explicit_width, height: explicit_height } => {
|
||||
let mut w_type = nsStyleImageLayers_Size_DimensionType::eAuto;
|
||||
let mut h_type = nsStyleImageLayers_Size_DimensionType::eAuto;
|
||||
if let Some(w) = size.width.to_calc_value() {
|
||||
if let Some(w) = explicit_width.to_calc_value() {
|
||||
width = w;
|
||||
w_type = nsStyleImageLayers_Size_DimensionType::eLengthPercentage;
|
||||
}
|
||||
if let Some(h) = size.height.to_calc_value() {
|
||||
if let Some(h) = explicit_height.to_calc_value() {
|
||||
height = h;
|
||||
h_type = nsStyleImageLayers_Size_DimensionType::eLengthPercentage;
|
||||
}
|
||||
(w_type, h_type)
|
||||
}
|
||||
T::Cover => (nsStyleImageLayers_Size_DimensionType::eCover,
|
||||
nsStyleImageLayers_Size_DimensionType::eCover),
|
||||
T::Contain => (nsStyleImageLayers_Size_DimensionType::eContain,
|
||||
nsStyleImageLayers_Size_DimensionType::eContain),
|
||||
BackgroundSize::Cover => {
|
||||
(
|
||||
nsStyleImageLayers_Size_DimensionType::eCover,
|
||||
nsStyleImageLayers_Size_DimensionType::eCover,
|
||||
)
|
||||
},
|
||||
BackgroundSize::Contain => {
|
||||
(
|
||||
nsStyleImageLayers_Size_DimensionType::eContain,
|
||||
nsStyleImageLayers_Size_DimensionType::eContain,
|
||||
)
|
||||
},
|
||||
};
|
||||
|
||||
nsStyleImageLayers_Size {
|
||||
|
@ -2968,8 +2976,8 @@ fn static_assert() {
|
|||
pub fn clone_${shorthand}_size(&self) -> longhands::background_size::computed_value::T {
|
||||
use gecko_bindings::structs::nsStyleCoord_CalcValue as CalcValue;
|
||||
use gecko_bindings::structs::nsStyleImageLayers_Size_DimensionType as DimensionType;
|
||||
use properties::longhands::background_size::single_value::computed_value::{ExplicitSize, T};
|
||||
use values::computed::LengthOrPercentageOrAuto;
|
||||
use values::generics::background::BackgroundSize;
|
||||
|
||||
fn to_servo(value: CalcValue, ty: u8) -> LengthOrPercentageOrAuto {
|
||||
if ty == DimensionType::eAuto as u8 {
|
||||
|
@ -2984,17 +2992,16 @@ fn static_assert() {
|
|||
self.gecko.${image_layers_field}.mLayers.iter().map(|ref layer| {
|
||||
if DimensionType::eCover as u8 == layer.mSize.mWidthType {
|
||||
debug_assert!(layer.mSize.mHeightType == DimensionType::eCover as u8);
|
||||
return T::Cover
|
||||
return BackgroundSize::Cover
|
||||
}
|
||||
if DimensionType::eContain as u8 == layer.mSize.mWidthType {
|
||||
debug_assert!(layer.mSize.mHeightType == DimensionType::eContain as u8);
|
||||
return T::Contain
|
||||
return BackgroundSize::Contain
|
||||
}
|
||||
|
||||
T::Explicit(ExplicitSize {
|
||||
BackgroundSize::Explicit {
|
||||
width: to_servo(layer.mSize.mWidth._base, layer.mSize.mWidthType),
|
||||
height: to_servo(layer.mSize.mHeight._base, layer.mSize.mHeightType),
|
||||
})
|
||||
}
|
||||
}).collect()
|
||||
)
|
||||
}
|
||||
|
@ -3888,7 +3895,7 @@ fn static_assert() {
|
|||
}
|
||||
}
|
||||
match servo_shape {
|
||||
BasicShape::Inset(rect) => {
|
||||
BasicShape::Inset(inset) => {
|
||||
let mut shape = init_shape(${ident}, StyleBasicShapeType::Inset);
|
||||
unsafe { shape.mCoordinates.set_len(4) };
|
||||
|
||||
|
@ -3900,15 +3907,15 @@ fn static_assert() {
|
|||
// the garbage data without
|
||||
// attempting to clean up.
|
||||
shape.mCoordinates[0].leaky_set_null();
|
||||
rect.top.to_gecko_style_coord(&mut shape.mCoordinates[0]);
|
||||
inset.rect.top.to_gecko_style_coord(&mut shape.mCoordinates[0]);
|
||||
shape.mCoordinates[1].leaky_set_null();
|
||||
rect.right.to_gecko_style_coord(&mut shape.mCoordinates[1]);
|
||||
inset.rect.right.to_gecko_style_coord(&mut shape.mCoordinates[1]);
|
||||
shape.mCoordinates[2].leaky_set_null();
|
||||
rect.bottom.to_gecko_style_coord(&mut shape.mCoordinates[2]);
|
||||
inset.rect.bottom.to_gecko_style_coord(&mut shape.mCoordinates[2]);
|
||||
shape.mCoordinates[3].leaky_set_null();
|
||||
rect.left.to_gecko_style_coord(&mut shape.mCoordinates[3]);
|
||||
inset.rect.left.to_gecko_style_coord(&mut shape.mCoordinates[3]);
|
||||
|
||||
set_corners_from_radius(rect.round, &mut shape.mRadius);
|
||||
set_corners_from_radius(inset.round, &mut shape.mRadius);
|
||||
}
|
||||
BasicShape::Circle(circ) => {
|
||||
let mut shape = init_shape(${ident}, StyleBasicShapeType::Circle);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue