mirror of
https://github.com/servo/servo.git
synced 2025-08-05 13:40:08 +01:00
style: Clean-up viewport unit resolution a bit
I should've caught this when reviewing the new viewport units but alas :-) Differential Revision: https://phabricator.services.mozilla.com/D143856
This commit is contained in:
parent
14fb147b6c
commit
af52dbe028
1 changed files with 10 additions and 31 deletions
|
@ -290,6 +290,7 @@ pub enum ViewportVariant {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// https://drafts.csswg.org/css-values/#viewport-relative-units
|
/// https://drafts.csswg.org/css-values/#viewport-relative-units
|
||||||
|
#[derive(PartialEq)]
|
||||||
enum ViewportUnit {
|
enum ViewportUnit {
|
||||||
/// *vw units.
|
/// *vw units.
|
||||||
Vw,
|
Vw,
|
||||||
|
@ -570,43 +571,21 @@ impl ViewportPercentageLength {
|
||||||
/// Computes the given viewport-relative length for the given viewport size.
|
/// Computes the given viewport-relative length for the given viewport size.
|
||||||
pub fn to_computed_value(&self, context: &Context) -> CSSPixelLength {
|
pub fn to_computed_value(&self, context: &Context) -> CSSPixelLength {
|
||||||
let (variant, unit, factor) = self.unpack();
|
let (variant, unit, factor) = self.unpack();
|
||||||
|
let size = context.viewport_size_for_viewport_unit_resolution(variant);
|
||||||
let length = match unit {
|
let length = match unit {
|
||||||
ViewportUnit::Vw => context.viewport_size_for_viewport_unit_resolution(variant).width,
|
ViewportUnit::Vw => size.width,
|
||||||
ViewportUnit::Vh => context.viewport_size_for_viewport_unit_resolution(variant).height,
|
ViewportUnit::Vh => size.height,
|
||||||
ViewportUnit::Vmin => {
|
ViewportUnit::Vmin => cmp::min(size.width, size.height),
|
||||||
let base_size =
|
ViewportUnit::Vmax => cmp::max(size.width, size.height),
|
||||||
context.viewport_size_for_viewport_unit_resolution(variant);
|
ViewportUnit::Vi | ViewportUnit::Vb => {
|
||||||
cmp::min(base_size.width, base_size.height)
|
|
||||||
},
|
|
||||||
ViewportUnit::Vmax => {
|
|
||||||
let base_size =
|
|
||||||
context.viewport_size_for_viewport_unit_resolution(variant);
|
|
||||||
cmp::max(base_size.width, base_size.height)
|
|
||||||
},
|
|
||||||
ViewportUnit::Vb => {
|
|
||||||
let base_size =
|
|
||||||
context.viewport_size_for_viewport_unit_resolution(variant);
|
|
||||||
context
|
context
|
||||||
.rule_cache_conditions
|
.rule_cache_conditions
|
||||||
.borrow_mut()
|
.borrow_mut()
|
||||||
.set_writing_mode_dependency(context.builder.writing_mode);
|
.set_writing_mode_dependency(context.builder.writing_mode);
|
||||||
if context.style().writing_mode.is_vertical() {
|
if (unit == ViewportUnit::Vb) == context.style().writing_mode.is_vertical() {
|
||||||
base_size.width
|
size.width
|
||||||
} else {
|
} else {
|
||||||
base_size.height
|
size.height
|
||||||
}
|
|
||||||
},
|
|
||||||
ViewportUnit::Vi => {
|
|
||||||
let base_size =
|
|
||||||
context.viewport_size_for_viewport_unit_resolution(variant);
|
|
||||||
context
|
|
||||||
.rule_cache_conditions
|
|
||||||
.borrow_mut()
|
|
||||||
.set_writing_mode_dependency(context.builder.writing_mode);
|
|
||||||
if context.style().writing_mode.is_vertical() {
|
|
||||||
base_size.height
|
|
||||||
} else {
|
|
||||||
base_size.width
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue