#![deny(
missing_docs,
missing_debug_implementations,
missing_copy_implementations,
unsafe_code,
unstable_features,
unused_import_braces,
unused_qualifications
)]
use lazy_static::lazy_static;
mod decoders;
pub use decoders::RawImage;
pub use decoders::RawImageData;
pub use decoders::Orientation;
pub use decoders::cfa::CFA;
#[doc(hidden)] pub use decoders::Buffer;
#[doc(hidden)] pub use decoders::RawLoader;
lazy_static! {
static ref LOADER: RawLoader = decoders::RawLoader::new();
}
use std::path::Path;
use std::error::Error;
use std::fmt;
use std::io::Read;
#[derive(Debug)]
pub struct RawLoaderError {
msg: String,
}
impl fmt::Display for RawLoaderError {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "RawLoaderError: \"{}\"", self.msg)
}
}
impl Error for RawLoaderError {
fn description(&self) -> &str {
"description() is deprecated; use Display"
}
}
impl RawLoaderError {
fn new(msg: String) -> Self {
Self {
msg,
}
}
}
pub fn decode_file<P: AsRef<Path>>(path: P) -> Result<RawImage,RawLoaderError> {
LOADER.decode_file(path.as_ref()).map_err(|err| RawLoaderError::new(err))
}
pub fn decode(reader: &mut dyn Read) -> Result<RawImage,RawLoaderError> {
LOADER.decode(reader, false).map_err(|err| RawLoaderError::new(err))
}
#[doc(hidden)]
pub fn force_initialization() {
lazy_static::initialize(&LOADER);
}
#[doc(hidden)]
pub fn decode_unwrapped(reader: &mut dyn Read) -> Result<RawImageData,RawLoaderError> {
LOADER.decode_unwrapped(reader).map_err(|err| RawLoaderError::new(err))
}
#[doc(hidden)]
pub fn decode_dummy(reader: &mut dyn Read) -> Result<RawImage,RawLoaderError> {
LOADER.decode(reader, true).map_err(|err| RawLoaderError::new(err))
}