@@ -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