Skip to main content

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;