summaryrefslogtreecommitdiffstats
path: root/servo/components/style/values/computed/length_percentage.rs
diff options
context:
space:
mode:
Diffstat (limited to 'servo/components/style/values/computed/length_percentage.rs')
-rw-r--r--servo/components/style/values/computed/length_percentage.rs13
1 files changed, 13 insertions, 0 deletions
diff --git a/servo/components/style/values/computed/length_percentage.rs b/servo/components/style/values/computed/length_percentage.rs
index 898281a7ef..0dbd2de76d 100644
--- a/servo/components/style/values/computed/length_percentage.rs
+++ b/servo/components/style/values/computed/length_percentage.rs
@@ -443,6 +443,19 @@ impl LengthPercentage {
}
}
+ /// Converts to a `<percentage>` with given basis. Returns None if the basis is 0.
+ #[inline]
+ pub fn to_percentage_of(&self, basis: Length) -> Option<Percentage> {
+ if basis.px() == 0. {
+ return None;
+ }
+ Some(match self.unpack() {
+ Unpacked::Length(l) => Percentage(l.px() / basis.px()),
+ Unpacked::Percentage(p) => p,
+ Unpacked::Calc(ref c) => Percentage(c.resolve(basis).px() / basis.px()),
+ })
+ }
+
/// Returns the used value.
#[inline]
pub fn to_used_value(&self, containing_length: Au) -> Au {