Skip to content

Commit 4500eb0

Browse files
Asun0204kongbai1996
authored andcommitted
Add from_f32_px_by_trunc and from_f64_px_by_trunc methods
Signed-off-by: asun0204 <asun0204@163.com>
1 parent 480397f commit 4500eb0

File tree

2 files changed

+29
-1
lines changed

2 files changed

+29
-1
lines changed

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "app_units"
3-
version = "0.7.6"
3+
version = "0.7.7"
44
authors = ["The Servo Project Developers"]
55
description = "Servo app units type (Au)"
66
documentation = "https://docs.rs/app_units/"

src/app_unit.rs

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -273,6 +273,18 @@ impl Au {
273273
Au::from_f64_au(float)
274274
}
275275

276+
#[inline]
277+
pub fn from_f32_px_by_trunc(px: f32) -> Au {
278+
let float = (px * AU_PER_PX as f32).trunc();
279+
Au::from_f64_au(float as f64)
280+
}
281+
282+
#[inline]
283+
pub fn from_f64_px_by_trunc(px: f64) -> Au {
284+
let float = (px * AU_PER_PX as f64).trunc();
285+
Au::from_f64_au(float)
286+
}
287+
276288
#[inline]
277289
pub fn abs(self) -> Self {
278290
Au(self.0.abs())
@@ -407,6 +419,22 @@ fn convert() {
407419
assert_eq!(Au::from_f64_px(6.), Au(360));
408420
assert_eq!(Au::from_f64_px(6.12), Au(367));
409421
assert_eq!(Au::from_f64_px(6.13), Au(368));
422+
423+
assert_eq!(Au::from_f32_px_truncate(5.0), Au(300));
424+
assert_eq!(Au::from_f32_px_truncate(5.2), Au(312));
425+
assert_eq!(Au::from_f32_px_truncate(5.5), Au(330));
426+
assert_eq!(Au::from_f32_px_truncate(5.8), Au(348));
427+
assert_eq!(Au::from_f32_px_truncate(6.), Au(360));
428+
assert_eq!(Au::from_f32_px_truncate(6.12), Au(367));
429+
assert_eq!(Au::from_f32_px_truncate(6.13), Au(367));
430+
431+
assert_eq!(Au::from_f64_px_truncate(5.), Au(300));
432+
assert_eq!(Au::from_f64_px_truncate(5.2), Au(312));
433+
assert_eq!(Au::from_f64_px_truncate(5.5), Au(330));
434+
assert_eq!(Au::from_f64_px_truncate(5.8), Au(348));
435+
assert_eq!(Au::from_f64_px_truncate(6.), Au(360));
436+
assert_eq!(Au::from_f64_px_truncate(6.12), Au(367));
437+
assert_eq!(Au::from_f64_px_truncate(6.13), Au(367));
410438
}
411439

412440
#[test]

0 commit comments

Comments
 (0)