Download libraries/rawkit/src/tiff/values.rs from openfree/graphite2: direct link, hf CLI and curl.
- Browser
- Download file 1.54 kB
-
https://huggingface.co/spaces/openfree/graphite2/resolve/main/libraries/rawkit/src/tiff/values.rs
- Command line
-
hf download hf://spaces/openfree/graphite2/libraries/rawkit/src/tiff/values.rs
-
curl -L -o values.rs https://huggingface.co/spaces/openfree/graphite2/resolve/main/libraries/rawkit/src/tiff/values.rs
1.54 kB
| pub trait ToFloat { | |
| fn to_float(&self) -> f64; | |
| } | |
| impl ToFloat for u32 { | |
| fn to_float(&self) -> f64 { | |
| *self as f64 | |
| } | |
| } | |
| impl ToFloat for i32 { | |
| fn to_float(&self) -> f64 { | |
| *self as f64 | |
| } | |
| } | |
| pub struct Rational<T: ToFloat> { | |
| pub numerator: T, | |
| pub denominator: T, | |
| } | |
| impl<T: ToFloat> ToFloat for Rational<T> { | |
| fn to_float(&self) -> f64 { | |
| self.numerator.to_float() / self.denominator.to_float() | |
| } | |
| } | |
| pub struct CurveLookupTable { | |
| table: Vec<u16>, | |
| } | |
| impl CurveLookupTable { | |
| pub fn from_sony_tone_table(values: [u16; 4]) -> CurveLookupTable { | |
| let mut sony_curve = [0, 0, 0, 0, 0, 4095]; | |
| for i in 0..4 { | |
| sony_curve[i + 1] = values[i] >> 2 & 0xfff; | |
| } | |
| let mut table = vec![0_u16; (sony_curve[5] + 1).into()]; | |
| for i in 0..5 { | |
| for j in (sony_curve[i] + 1)..=sony_curve[i + 1] { | |
| table[j as usize] = table[(j - 1) as usize] + (1 << i); | |
| } | |
| } | |
| CurveLookupTable { table } | |
| } | |
| pub fn get(&self, x: usize) -> u16 { | |
| self.table[x] | |
| } | |
| } | |
| pub enum Transform { | |
| Horizontal, | |
| MirrorHorizontal, | |
| Rotate180, | |
| MirrorVertical, | |
| MirrorHorizontalRotate270, | |
| Rotate90, | |
| MirrorHorizontalRotate90, | |
| Rotate270, | |
| } | |
| impl Transform { | |
| pub fn is_identity(&self) -> bool { | |
| *self == Transform::Horizontal | |
| } | |
| pub fn will_swap_coordinates(&self) -> bool { | |
| use Transform as Tr; | |
| match *self { | |
| Tr::Horizontal | Tr::MirrorHorizontal | Tr::Rotate180 | Tr::MirrorVertical => false, | |
| Tr::MirrorHorizontalRotate270 | Tr::Rotate90 | Tr::MirrorHorizontalRotate90 | Tr::Rotate270 => true, | |
| } | |
| } | |
| } | |