1 | // font-kit/src/utils.rs |
2 | // |
3 | // Copyright © 2018 The Pathfinder Project Developers. |
4 | // |
5 | // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or |
6 | // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license |
7 | // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your |
8 | // option. This file may not be copied, modified, or distributed |
9 | // except according to those terms. |
10 | |
11 | //! Miscellaneous utilities for use in this crate. |
12 | |
13 | #![allow (dead_code)] |
14 | |
15 | use std::fs::File; |
16 | use std::io::{Error as IOError, Read}; |
17 | |
18 | pub(crate) static SFNT_VERSIONS: [[u8; 4]; 4] = [ |
19 | [0x00, 0x01, 0x00, 0x00], |
20 | [b'O' , b'T' , b'T' , b'O' ], |
21 | [b't' , b'r' , b'u' , b'e' ], |
22 | [b't' , b'y' , b'p' , b'1' ], |
23 | ]; |
24 | |
25 | pub(crate) fn clamp(x: f32, min: f32, max: f32) -> f32 { |
26 | if x < min { |
27 | min |
28 | } else if x > max { |
29 | max |
30 | } else { |
31 | x |
32 | } |
33 | } |
34 | |
35 | #[inline ] |
36 | pub(crate) fn lerp(a: f32, b: f32, t: f32) -> f32 { |
37 | a + (b - a) * t |
38 | } |
39 | |
40 | #[inline ] |
41 | pub(crate) fn div_round_up(a: usize, b: usize) -> usize { |
42 | (a + b - 1) / b |
43 | } |
44 | |
45 | pub(crate) fn slurp_file(file: &mut File) -> Result<Vec<u8>, IOError> { |
46 | let mut data: Vec = match file.metadata() { |
47 | Ok(metadata: Metadata) => Vec::with_capacity(metadata.len() as usize), |
48 | Err(_) => vec![], |
49 | }; |
50 | file.read_to_end(&mut data)?; |
51 | Ok(data) |
52 | } |
53 | |