Skip to main content

skia_safe/codec/
decoders.rs

1pub mod bmp_decoder {
2    use std::{io, result};
3
4    use crate::{codec::codecs::Decoder, codec::Result, Codec};
5
6    pub fn decode_stream(stream: &mut impl io::Read) -> result::Result<Codec, Result> {
7        decoder().from_stream(stream)
8    }
9
10    pub fn decoder() -> Decoder {
11        Decoder::construct(|decoder| unsafe { skia_bindings::C_SkBmpDecoder_Decoder(decoder) })
12    }
13}
14
15pub mod gif_decoder {
16    use std::{io, result};
17
18    use crate::{codec::codecs::Decoder, codec::Result, Codec};
19
20    pub fn decode_stream(stream: &mut impl io::Read) -> result::Result<Codec, Result> {
21        decoder().from_stream(stream)
22    }
23
24    pub fn decoder() -> Decoder {
25        Decoder::construct(|decoder| unsafe { skia_bindings::C_SkGifDecoder_Decoder(decoder) })
26    }
27}
28
29pub mod ico_decoder {
30    use std::{io, result};
31
32    use crate::{codec::codecs::Decoder, codec::Result, Codec};
33
34    pub fn decode_stream(stream: &mut impl io::Read) -> result::Result<Codec, Result> {
35        decoder().from_stream(stream)
36    }
37
38    pub fn decoder() -> Decoder {
39        Decoder::construct(|decoder| unsafe { skia_bindings::C_SkIcoDecoder_Decoder(decoder) })
40    }
41}
42
43#[cfg(feature = "jpeg")]
44pub mod jpeg_decoder {
45    use std::{io, result};
46
47    use crate::{codec::codecs::Decoder, codec::Result, Codec};
48
49    pub fn decode_stream(stream: &mut impl io::Read) -> result::Result<Codec, Result> {
50        decoder().from_stream(stream)
51    }
52
53    pub fn decoder() -> Decoder {
54        Decoder::construct(|decoder| unsafe { skia_bindings::C_SkJpegDecoder_Decoder(decoder) })
55    }
56}
57
58pub mod png_decoder {
59    use std::{io, result};
60
61    use crate::{codec::codecs::Decoder, codec::Result, Codec};
62
63    pub fn decode_stream(stream: &mut impl io::Read) -> result::Result<Codec, Result> {
64        decoder().from_stream(stream)
65    }
66
67    pub fn decoder() -> Decoder {
68        Decoder::construct(|decoder| unsafe { skia_bindings::C_SkPngDecoder_Decoder(decoder) })
69    }
70}
71
72#[cfg(any())]
73pub mod png_rust_decoder {
74    use std::{io, result};
75
76    use crate::{codec::codecs::Decoder, codec::Result, Codec};
77
78    pub fn decode_stream(stream: &mut impl io::Read) -> result::Result<Codec, Result> {
79        decoder().from_stream(stream)
80    }
81
82    pub fn decoder() -> Decoder {
83        Decoder::construct(|decoder| unsafe { skia_bindings::C_SkPngRustDecoder_Decoder(decoder) })
84    }
85}
86
87pub mod wbmp_decoder {
88    use std::{io, result};
89
90    use crate::{codec::codecs::Decoder, codec::Result, Codec};
91
92    pub fn decode_stream(stream: &mut impl io::Read) -> result::Result<Codec, Result> {
93        decoder().from_stream(stream)
94    }
95
96    pub fn decoder() -> Decoder {
97        Decoder::construct(|decoder| unsafe { skia_bindings::C_SkWbmpDecoder_Decoder(decoder) })
98    }
99}
100
101#[cfg(feature = "webp-decode")]
102pub mod webp_decoder {
103    use std::{io, result};
104
105    use crate::{codec::codecs::Decoder, codec::Result, Codec};
106
107    pub fn decode_stream(stream: &mut impl io::Read) -> result::Result<Codec, Result> {
108        decoder().from_stream(stream)
109    }
110
111    pub fn decoder() -> Decoder {
112        Decoder::construct(|decoder| unsafe { skia_bindings::C_SkWebpDecoder_Decoder(decoder) })
113    }
114}