summaryrefslogtreecommitdiffstats
path: root/servo/components/style/values/computed/length.rs
diff options
context:
space:
mode:
Diffstat (limited to 'servo/components/style/values/computed/length.rs')
-rw-r--r--servo/components/style/values/computed/length.rs23
1 files changed, 21 insertions, 2 deletions
diff --git a/servo/components/style/values/computed/length.rs b/servo/components/style/values/computed/length.rs
index e75676a76d..881efed126 100644
--- a/servo/components/style/values/computed/length.rs
+++ b/servo/components/style/values/computed/length.rs
@@ -6,12 +6,13 @@
use super::{Context, Number, ToComputedValue};
use crate::values::animated::ToAnimatedValue;
-use crate::values::computed::NonNegativeNumber;
+use crate::values::computed::{NonNegativeNumber, Zoom};
use crate::values::generics::length as generics;
use crate::values::generics::length::{
GenericLengthOrNumber, GenericLengthPercentageOrNormal, GenericMaxSize, GenericSize,
};
use crate::values::generics::NonNegative;
+use crate::values::resolved::{Context as ResolvedContext, ToResolvedValue};
use crate::values::specified::length::{AbsoluteLength, FontBaseSize, LineHeightBase};
use crate::values::{specified, CSSFloat};
use crate::Zero;
@@ -227,12 +228,24 @@ impl Size {
ToAnimatedValue,
ToAnimatedZero,
ToComputedValue,
- ToResolvedValue,
ToShmem,
)]
#[repr(C)]
pub struct CSSPixelLength(CSSFloat);
+impl ToResolvedValue for CSSPixelLength {
+ type ResolvedValue = Self;
+
+ fn to_resolved_value(self, context: &ResolvedContext) -> Self::ResolvedValue {
+ Self(context.style.effective_zoom.unzoom(self.0))
+ }
+
+ #[inline]
+ fn from_resolved_value(value: Self::ResolvedValue) -> Self {
+ value
+ }
+}
+
impl fmt::Debug for CSSPixelLength {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
self.0.fmt(f)?;
@@ -271,6 +284,12 @@ impl CSSPixelLength {
self.0
}
+ /// Zooms a particular length.
+ #[inline]
+ pub fn zoom(self, zoom: Zoom) -> Self {
+ Self::new(zoom.zoom(self.px()))
+ }
+
/// Return the length with app_unit i32 type.
#[inline]
pub fn to_i32_au(self) -> i32 {