mirror of
https://github.com/servo/servo.git
synced 2025-10-01 09:09:15 +01:00
Make computed types hold Percentage instead of bare CSSFloat
This commit is contained in:
parent
4b633c8637
commit
608e7f71a2
22 changed files with 140 additions and 110 deletions
|
@ -322,7 +322,7 @@ impl CandidateBSizeIterator {
|
|||
|
||||
let block_size = match (fragment.style.content_block_size(), block_container_block_size) {
|
||||
(LengthOrPercentageOrAuto::Percentage(percent), Some(block_container_block_size)) => {
|
||||
MaybeAuto::Specified(block_container_block_size.scale_by(percent))
|
||||
MaybeAuto::Specified(block_container_block_size.scale_by(percent.0))
|
||||
}
|
||||
(LengthOrPercentageOrAuto::Calc(calc), _) => {
|
||||
MaybeAuto::from_option(calc.to_used_value(block_container_block_size))
|
||||
|
@ -333,7 +333,7 @@ impl CandidateBSizeIterator {
|
|||
};
|
||||
let max_block_size = match (fragment.style.max_block_size(), block_container_block_size) {
|
||||
(LengthOrPercentageOrNone::Percentage(percent), Some(block_container_block_size)) => {
|
||||
Some(block_container_block_size.scale_by(percent))
|
||||
Some(block_container_block_size.scale_by(percent.0))
|
||||
}
|
||||
(LengthOrPercentageOrNone::Calc(calc), _) => {
|
||||
calc.to_used_value(block_container_block_size)
|
||||
|
@ -344,7 +344,7 @@ impl CandidateBSizeIterator {
|
|||
};
|
||||
let min_block_size = match (fragment.style.min_block_size(), block_container_block_size) {
|
||||
(LengthOrPercentage::Percentage(percent), Some(block_container_block_size)) => {
|
||||
block_container_block_size.scale_by(percent)
|
||||
block_container_block_size.scale_by(percent.0)
|
||||
}
|
||||
(LengthOrPercentage::Calc(calc), _) => {
|
||||
calc.to_used_value(block_container_block_size).unwrap_or(Au(0))
|
||||
|
@ -1178,7 +1178,7 @@ impl BlockFlow {
|
|||
}
|
||||
(LengthOrPercentageOrAuto::Length(length), _) => Some(length),
|
||||
(LengthOrPercentageOrAuto::Percentage(percent), Some(container_size)) => {
|
||||
Some(container_size.scale_by(percent))
|
||||
Some(container_size.scale_by(percent.0))
|
||||
}
|
||||
(LengthOrPercentageOrAuto::Percentage(_), None) |
|
||||
(LengthOrPercentageOrAuto::Auto, None) => {
|
||||
|
|
|
@ -65,6 +65,7 @@ use style::values::generics::image::{Circle, Ellipse, EndingShape as GenericEndi
|
|||
use style::values::generics::image::{GradientItem as GenericGradientItem, GradientKind};
|
||||
use style::values::generics::image::{Image, ShapeExtent};
|
||||
use style::values::generics::image::PaintWorklet;
|
||||
use style::values::specified::length::Percentage;
|
||||
use style::values::specified::position::{X, Y};
|
||||
use style_traits::CSSPixel;
|
||||
use style_traits::cursor::Cursor;
|
||||
|
@ -653,14 +654,14 @@ fn convert_gradient_stops(gradient_items: &[GradientItem],
|
|||
{
|
||||
let first = stop_items.first_mut().unwrap();
|
||||
if first.position.is_none() {
|
||||
first.position = Some(LengthOrPercentage::Percentage(0.0));
|
||||
first.position = Some(LengthOrPercentage::Percentage(Percentage(0.0)));
|
||||
}
|
||||
}
|
||||
// If the last color stop does not have a position, set its position to 100%.
|
||||
{
|
||||
let last = stop_items.last_mut().unwrap();
|
||||
if last.position.is_none() {
|
||||
last.position = Some(LengthOrPercentage::Percentage(1.0));
|
||||
last.position = Some(LengthOrPercentage::Percentage(Percentage(1.0)));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2871,7 +2872,7 @@ struct StopRun {
|
|||
fn position_to_offset(position: LengthOrPercentage, total_length: Au) -> f32 {
|
||||
match position {
|
||||
LengthOrPercentage::Length(Au(length)) => length as f32 / total_length.0 as f32,
|
||||
LengthOrPercentage::Percentage(percentage) => percentage as f32,
|
||||
LengthOrPercentage::Percentage(percentage) => percentage.0 as f32,
|
||||
LengthOrPercentage::Calc(calc) => {
|
||||
calc.to_used_value(Some(total_length)).unwrap().0 as f32 / total_length.0 as f32
|
||||
},
|
||||
|
|
|
@ -46,7 +46,7 @@ impl AxisSize {
|
|||
LengthOrPercentageOrAuto::Length(length) => AxisSize::Definite(length),
|
||||
LengthOrPercentageOrAuto::Percentage(percent) => {
|
||||
match content_size {
|
||||
Some(size) => AxisSize::Definite(size.scale_by(percent)),
|
||||
Some(size) => AxisSize::Definite(size.scale_by(percent.0)),
|
||||
None => AxisSize::Infinite
|
||||
}
|
||||
}
|
||||
|
@ -74,7 +74,7 @@ fn from_flex_basis(flex_basis: LengthOrPercentageOrAutoOrContent,
|
|||
(LengthOrPercentageOrAutoOrContent::Length(length), _) =>
|
||||
MaybeAuto::Specified(length),
|
||||
(LengthOrPercentageOrAutoOrContent::Percentage(percent), Some(size)) =>
|
||||
MaybeAuto::Specified(size.scale_by(percent)),
|
||||
MaybeAuto::Specified(size.scale_by(percent.0)),
|
||||
(LengthOrPercentageOrAutoOrContent::Percentage(_), None) =>
|
||||
MaybeAuto::Auto,
|
||||
(LengthOrPercentageOrAutoOrContent::Calc(calc), _) =>
|
||||
|
|
|
@ -505,7 +505,7 @@ impl SpeculatedFloatPlacement {
|
|||
// might flow around this float.
|
||||
if let LengthOrPercentageOrAuto::Percentage(percentage) =
|
||||
flow.as_block().fragment.style.content_inline_size() {
|
||||
if percentage > 0.0 {
|
||||
if percentage.0 > 0.0 {
|
||||
float_inline_size = Au::from_px(1)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2234,7 +2234,7 @@ impl Fragment {
|
|||
}
|
||||
vertical_align::T::LengthOrPercentage(LengthOrPercentage::Percentage(
|
||||
percentage)) => {
|
||||
offset -= minimum_line_metrics.space_needed().scale_by(percentage)
|
||||
offset -= minimum_line_metrics.space_needed().scale_by(percentage.0)
|
||||
}
|
||||
vertical_align::T::LengthOrPercentage(LengthOrPercentage::Calc(formula)) => {
|
||||
offset -= formula.to_used_value(Some(minimum_line_metrics.space_needed())).unwrap()
|
||||
|
|
|
@ -144,7 +144,7 @@ impl MarginCollapseInfo {
|
|||
LengthOrPercentageOrAuto::Auto => true,
|
||||
LengthOrPercentageOrAuto::Length(Au(v)) => v == 0,
|
||||
LengthOrPercentageOrAuto::Percentage(v) => {
|
||||
v == 0. || containing_block_size.is_none()
|
||||
v.0 == 0. || containing_block_size.is_none()
|
||||
}
|
||||
LengthOrPercentageOrAuto::Calc(_) => false,
|
||||
};
|
||||
|
@ -154,7 +154,7 @@ impl MarginCollapseInfo {
|
|||
LengthOrPercentage::Length(Au(0)) => {
|
||||
FinalMarginState::MarginsCollapseThrough
|
||||
},
|
||||
LengthOrPercentage::Percentage(v) if v == 0. => {
|
||||
LengthOrPercentage::Percentage(v) if v.0 == 0. => {
|
||||
FinalMarginState::MarginsCollapseThrough
|
||||
},
|
||||
_ => {
|
||||
|
@ -408,7 +408,7 @@ impl MaybeAuto {
|
|||
match length {
|
||||
LengthOrPercentageOrAuto::Auto => MaybeAuto::Auto,
|
||||
LengthOrPercentageOrAuto::Percentage(percent) => {
|
||||
MaybeAuto::Specified(containing_length.scale_by(percent))
|
||||
MaybeAuto::Specified(containing_length.scale_by(percent.0))
|
||||
}
|
||||
LengthOrPercentageOrAuto::Calc(calc) => {
|
||||
MaybeAuto::from_option(calc.to_used_value(Some(containing_length)))
|
||||
|
|
|
@ -253,7 +253,7 @@ impl Flow for TableFlow {
|
|||
LengthOrPercentageOrAuto::Auto |
|
||||
LengthOrPercentageOrAuto::Calc(_) |
|
||||
LengthOrPercentageOrAuto::Length(_) => 0.0,
|
||||
LengthOrPercentageOrAuto::Percentage(percentage) => percentage,
|
||||
LengthOrPercentageOrAuto::Percentage(percentage) => percentage.0,
|
||||
},
|
||||
preferred: Au(0),
|
||||
constrained: false,
|
||||
|
|
|
@ -310,7 +310,7 @@ impl Flow for TableRowFlow {
|
|||
LengthOrPercentageOrAuto::Auto |
|
||||
LengthOrPercentageOrAuto::Calc(_) |
|
||||
LengthOrPercentageOrAuto::Length(_) => 0.0,
|
||||
LengthOrPercentageOrAuto::Percentage(percentage) => percentage,
|
||||
LengthOrPercentageOrAuto::Percentage(percentage) => percentage.0,
|
||||
},
|
||||
preferred: child_base.intrinsic_inline_sizes.preferred_inline_size,
|
||||
constrained: match child_specified_inline_size {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue