зеркало из https://github.com/mozilla/gecko-dev.git
servo: Merge #18448 - stylo: Round down when computing viewport units (from Manishearth:viewport-round); r=emilio
r=emilio https://bugzilla.mozilla.org/show_bug.cgi?id=1396045 Source-Repo: https://github.com/servo/servo Source-Revision: a3a3f4bf4fa27e34855c76c69d95c338499f605d --HG-- extra : subtree_source : https%3A//hg.mozilla.org/projects/converted-servo-linear extra : subtree_revision : b52226a9749331511483632e3779ee6df01cec02
This commit is contained in:
Родитель
306241f7a1
Коммит
1c75afebad
|
@ -198,23 +198,21 @@ impl ToCss for ViewportPercentageLength {
|
|||
impl ViewportPercentageLength {
|
||||
/// Computes the given viewport-relative length for the given viewport size.
|
||||
pub fn to_computed_value(&self, viewport_size: Size2D<Au>) -> Au {
|
||||
macro_rules! to_unit {
|
||||
($viewport_dimension:expr) => {
|
||||
$viewport_dimension.to_f32_px() / 100.0
|
||||
}
|
||||
}
|
||||
|
||||
let value = match *self {
|
||||
let (factor, length) = match *self {
|
||||
ViewportPercentageLength::Vw(length) =>
|
||||
length * to_unit!(viewport_size.width),
|
||||
(length, viewport_size.width),
|
||||
ViewportPercentageLength::Vh(length) =>
|
||||
length * to_unit!(viewport_size.height),
|
||||
(length, viewport_size.height),
|
||||
ViewportPercentageLength::Vmin(length) =>
|
||||
length * to_unit!(cmp::min(viewport_size.width, viewport_size.height)),
|
||||
(length, cmp::min(viewport_size.width, viewport_size.height)),
|
||||
ViewportPercentageLength::Vmax(length) =>
|
||||
length * to_unit!(cmp::max(viewport_size.width, viewport_size.height)),
|
||||
(length, cmp::max(viewport_size.width, viewport_size.height)),
|
||||
};
|
||||
Au::from_f32_px(value)
|
||||
|
||||
// See bug 989802. We truncate so that adding multiple viewport units
|
||||
// that add up to 100 does not overflow due to rounding differences
|
||||
let trunc_scaled = ((length.0 as f64) * factor as f64 / 100.).trunc();
|
||||
Au::from_f64_au(trunc_scaled)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче