zencodec_render/lib.rs
1//! Checked display rendering for shared zencodec image collections.
2//!
3//! Rendering applies canvas orientation and an optional display-coordinate crop,
4//! requires the selected packed color output, and preserves qualified aligned
5//! auxiliary planes. Unknown interpretation and unsupported composition fail
6//! explicitly. Native decoding/CMS workspace and proportional region decoding
7//! are not covered by the managed output budget.
8#![no_std]
9#![forbid(unsafe_code)]
10extern crate alloc;
11pub mod geometry;
12mod render;
13pub use render::{ColorTarget, RenderFailure, RenderRequest, RenderStage, Renderer};
14
15/// Render an existing selection with default sRGB RGBA8 output.
16/// The collection's stored policy runs once on the final rendered image.
17///
18/// ```
19/// use zencodec::{collection::{Collection, ImageId},
20/// operation::{CheckedCollection, OperationPolicy}, storage::StorageBudget};
21/// use zencodec_render::Renderer;
22/// fn render<C: Collection, R: OperationPolicy>(
23/// images: &mut CheckedCollection<C, R>, id: &ImageId,
24/// ) -> Result<(), Box<dyn core::error::Error>> {
25/// let renderer = Renderer::new(StorageBudget::new(64 * 1024 * 1024, 32));
26/// if let Some(first) = renderer.render_first(images)? {
27/// first.with_pixels(|pixels| assert_eq!(pixels.descriptor(), zenpixels::PixelDescriptor::RGBA8_SRGB))?;
28/// }
29/// let image = renderer.render_selected(images, id)?;
30/// image.with_pixels(|pixels| assert_eq!(pixels.descriptor(), zenpixels::PixelDescriptor::RGBA8_SRGB))?;
31/// Ok(())
32/// }
33/// ```
34#[cfg(doctest)]
35struct RenderExample;