1
2
3//! Read and write OpenEXR images.
4//! This library uses no foreign code or unsafe Rust.
5//!
6//! See the [README.md](https://github.com/johannesvollmer/exrs/blob/master/README.md) for crate information.
7//! Read __the [GUIDE.md](https://github.com/johannesvollmer/exrs/blob/master/GUIDE.md) for a API introduction__.
8//! Check out the [examples](https://github.com/johannesvollmer/exrs/tree/master/examples) for a first impression.
9
10#![warn(
11 rust_2018_idioms,
12 future_incompatible,
13 unused_extern_crates,
14 unused,
15
16 missing_copy_implementations,
17 missing_debug_implementations,
18
19 clippy::all,
20 clippy::restriction,
21 clippy::pedantic,
22 clippy::nursery,
23 clippy::cargo,
24)]
25
26#![deny(
27 unused_variables,
28 unused_assignments,
29 dead_code,
30 unused_must_use,
31 missing_copy_implementations,
32 trivial_numeric_casts,
33 redundant_semicolons
34)]
35
36#![forbid(unsafe_code)]
37#![warn(missing_docs)]
38
39pub mod io; // public to allow for custom attribute byte parsing
40
41pub mod math;
42pub mod compression;
43pub mod meta;
44pub mod image;
45
46pub mod error;
47pub mod block;
48
49#[macro_use]
50extern crate smallvec;
51
52/// Export the most important items from `exrs`.
53/// _Note: This includes a type called `Result`, possibly overwriting the default `std::Result` type usage._
54pub mod prelude {
55
56 /// Import this specifically if you want to be explicit but still use the extension traits.
57 pub mod traits {
58 pub use crate::image::write::{WritableImage, channels::GetPixel};
59 pub use crate::image::read::{
60 read, any_channels::ReadSamples, image::ReadLayers,
61 image::ReadImage, layers::ReadChannels,
62 specific_channels::{ReadSpecificChannel}
63 };
64
65 pub use crate::image::crop::{Crop, CropWhere, CropResult, InspectSample, CroppedChannels, ApplyCroppedView};
66 }
67
68 pub use traits::*;
69
70 pub use crate::image::write::{write_rgb_file, write_rgba_file};
71 pub use crate::image::read::{
72 read_first_rgba_layer_from_file,
73 read_all_rgba_layers_from_file,
74 read_all_data_from_file,
75 read_all_flat_layers_from_file,
76 read_first_flat_layer_from_file
77 };
78
79 // image data structures
80 pub use crate::image::*;
81 pub use crate::meta::{ attribute, MetaData, header::{ LayerAttributes, ImageAttributes } };
82 pub use crate::block::samples::Sample;
83 pub use crate::meta::attribute::{
84 AttributeValue, Compression, Text, IntegerBounds,
85 LineOrder, SampleType, TileDescription, ChannelDescription
86 };
87
88 // common math
89 pub use crate::math::Vec2;
90
91 // error handling
92 pub use crate::error::{ Result, Error };
93
94 // re-export external stuff
95 pub use half::f16;
96 pub use smallvec::SmallVec;
97}
98
99
100
101