jpreprocess_jpcommon/feature/
limit.rs1pub enum Limit {
2 S,
4 M,
6 L,
8 LL,
10}
11impl Limit {
12 pub fn ulimit(self, value: usize) -> u8 {
13 match self {
14 Self::S => Self::clamp(value, 1, 19) as u8,
15 Self::M => Self::clamp(value, 1, 49) as u8,
16 Self::L => Self::clamp(value, 1, 99) as u8,
17 Self::LL => Self::clamp(value, 1, 199) as u8,
18 }
19 }
20 pub fn ilimit(self, value: isize) -> i8 {
21 match self {
22 Self::S => Self::clamp(value, -19, 19) as i8,
23 Self::M => Self::clamp(value, -49, 49) as i8,
24 Self::L => Self::clamp(value, -99, 99) as i8,
25 Self::LL => Self::clamp(value, -199, 199) as i8,
26 }
27 }
28 fn clamp<T>(value: T, lower_bound: T, upper_bound: T) -> T
29 where
30 T: PartialOrd,
31 {
32 if value < lower_bound {
33 lower_bound
34 } else if upper_bound < value {
35 upper_bound
36 } else {
37 value
38 }
39 }
40}