Revision control

Copy as Markdown

Other Tools

// Copyright (c) the JPEG XL Project Authors. All rights reserved.
//
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
use crate::api::JxlCms;
pub enum JxlProgressiveMode {
/// Renders all pixels in every call to Process.
Eager,
/// Renders pixels once passes are completed.
Pass,
/// Renders pixels only once the final frame is ready.
FullFrame,
}
#[non_exhaustive]
pub struct JxlDecoderOptions {
pub adjust_orientation: bool,
pub render_spot_colors: bool,
pub coalescing: bool,
pub desired_intensity_target: Option<f32>,
pub skip_preview: bool,
pub progressive_mode: JxlProgressiveMode,
pub enable_output: bool,
pub cms: Option<Box<dyn JxlCms>>,
/// Fail decoding images with more than this number of pixels, or with frames with
/// more than this number of pixels. The limit counts the product of pixels and
/// channels, so for example an image with 1 extra channel of size 1024x1024 has 4
/// million pixels.
pub pixel_limit: Option<usize>,
/// Use high precision mode for decoding.
/// When false (default), uses lower precision settings that match libjxl's default.
/// When true, uses higher precision at the cost of performance.
///
/// This affects multiple decoder decisions including spline rendering precision
/// and potentially intermediate buffer storage (e.g., using f32 vs f16).
pub high_precision: bool,
/// If true, multiply RGB by alpha before writing to output buffer.
/// This produces premultiplied alpha output, which is useful for compositing.
/// Default: false (output straight alpha)
pub premultiply_output: bool,
}
impl Default for JxlDecoderOptions {
fn default() -> Self {
Self {
adjust_orientation: true,
render_spot_colors: true,
coalescing: true,
skip_preview: true,
desired_intensity_target: None,
progressive_mode: JxlProgressiveMode::Pass,
enable_output: true,
cms: None,
pixel_limit: None,
high_precision: false,
premultiply_output: false,
}
}
}