jpegxl_rs/encode/
options.rs1use std::mem::MaybeUninit;
2
3use jpegxl_sys::{color::color_encoding::JxlColorEncoding, encoder::encode as api};
4
5#[derive(Debug, Clone, Copy, Default)]
7pub enum EncoderSpeed {
8 Lightning = 1,
10 Thunder = 2,
12 Falcon = 3,
14 Cheetah,
16 Hare,
18 Wombat,
20 #[default]
22 Squirrel,
23 Kitten,
25 Tortoise,
27 Glacier,
29}
30
31#[derive(Debug, Clone)]
33pub enum ColorEncoding {
34 Srgb,
36 LinearSrgb,
38 SrgbLuma,
40 LinearSrgbLuma,
42 Custom(JxlColorEncoding),
44}
45
46impl From<&ColorEncoding> for JxlColorEncoding {
47 fn from(val: &ColorEncoding) -> Self {
48 use ColorEncoding::{Custom, LinearSrgb, LinearSrgbLuma, Srgb, SrgbLuma};
49
50 let mut color_encoding = MaybeUninit::uninit();
51
52 unsafe {
53 match val {
54 Srgb => api::JxlColorEncodingSetToSRGB(color_encoding.as_mut_ptr(), false.into()),
55 LinearSrgb => {
56 api::JxlColorEncodingSetToLinearSRGB(color_encoding.as_mut_ptr(), false.into());
57 }
58 SrgbLuma => {
59 api::JxlColorEncodingSetToSRGB(color_encoding.as_mut_ptr(), true.into());
60 }
61 LinearSrgbLuma => {
62 api::JxlColorEncodingSetToLinearSRGB(color_encoding.as_mut_ptr(), true.into());
63 }
64 Custom(e) => {
65 return e.clone();
66 }
67 }
68 color_encoding.assume_init()
69 }
70 }
71}