pub struct Engine { /* private fields */ }Expand description
The rendering engine. Holds an immutable original image and mutable parameters.
On each render() call, all adjustments are applied from scratch in a fixed
internal order. This gives user-facing order-independence.
Implementations§
Source§impl Engine
impl Engine
Sourcepub fn new(image: Rgb32FImage) -> Self
pub fn new(image: Rgb32FImage) -> Self
Create a new engine with the given linear sRGB image and neutral parameters.
Always uses the CPU pipeline. This is the canonical path for deterministic
output across all platforms. Use Engine::new_gpu or
Engine::new_gpu_auto for GPU acceleration.
Sourcepub fn new_gpu_auto(image: Rgb32FImage) -> Self
pub fn new_gpu_auto(image: Rgb32FImage) -> Self
Create an engine that tries GPU first, falling back to CPU.
Use this when the caller explicitly opts into GPU acceleration
(e.g. via a --gpu CLI flag). Output may differ slightly from
the CPU path due to floating-point precision differences.
Sourcepub fn new_gpu(image: Rgb32FImage) -> Result<Self, AgxError>
pub fn new_gpu(image: Rgb32FImage) -> Result<Self, AgxError>
Create an engine that uses the GPU pipeline.
Returns Err if GPU initialization fails.
Sourcepub fn new_gpu_fallback(image: Rgb32FImage) -> Result<Self, AgxError>
pub fn new_gpu_fallback(image: Rgb32FImage) -> Result<Self, AgxError>
Create an engine using wgpu’s software fallback adapter.
Returns Err if no fallback adapter is available.
Sourcepub fn original(&self) -> &Rgb32FImage
pub fn original(&self) -> &Rgb32FImage
Get a reference to the original (unmodified) image.
Sourcepub fn params(&self) -> &Parameters
pub fn params(&self) -> &Parameters
Get a reference to the current parameters.
Sourcepub fn params_mut(&mut self) -> &mut Parameters
pub fn params_mut(&mut self) -> &mut Parameters
Get a mutable reference to the current parameters.
Sourcepub fn set_params(&mut self, params: Parameters)
pub fn set_params(&mut self, params: Parameters)
Set parameters from a full Parameters struct.
Sourcepub fn set_lut(&mut self, lut: Option<Arc<Lut3D>>)
pub fn set_lut(&mut self, lut: Option<Arc<Lut3D>>)
Set or clear the 3D LUT.
Accepts Arc<Lut3D> so the same LUT can be shared across multiple
engine instances (e.g. in batch processing) without cloning the table.
Sourcepub fn apply_preset(&mut self, preset: &Preset)
pub fn apply_preset(&mut self, preset: &Preset)
Apply a preset, replacing the current parameters and LUT.
Sourcepub fn layer_preset(&mut self, preset: &Preset)
pub fn layer_preset(&mut self, preset: &Preset)
Layer a preset on top of current parameters. Only fields specified in the preset (Some values in partial_params) are overridden. Unspecified fields keep their current values.
Sourcepub fn pipeline_name(&self) -> &'static str
pub fn pipeline_name(&self) -> &'static str
Returns "gpu" or "cpu" depending on which pipeline is active.
Sourcepub fn render(&mut self) -> RenderResult
pub fn render(&mut self) -> RenderResult
Render the image by applying all adjustments from scratch.
Delegates to the stage-based pipeline. Each render starts from the original image — no state accumulates between renders.
Auto Trait Implementations§
impl Freeze for Engine
impl !RefUnwindSafe for Engine
impl Send for Engine
impl Sync for Engine
impl Unpin for Engine
impl UnsafeUnpin for Engine
impl !UnwindSafe for Engine
Blanket Implementations§
Source§impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for Swhere
T: Real + Zero + Arithmetics + Clone,
Swp: WhitePoint<T>,
Dwp: WhitePoint<T>,
D: AdaptFrom<S, Swp, Dwp, T>,
impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for Swhere
T: Real + Zero + Arithmetics + Clone,
Swp: WhitePoint<T>,
Dwp: WhitePoint<T>,
D: AdaptFrom<S, Swp, Dwp, T>,
Source§fn adapt_into_using<M>(self, method: M) -> Dwhere
M: TransformMatrix<T>,
fn adapt_into_using<M>(self, method: M) -> Dwhere
M: TransformMatrix<T>,
Source§fn adapt_into(self) -> D
fn adapt_into(self) -> D
Source§impl<T, C> ArraysFrom<C> for Twhere
C: IntoArrays<T>,
impl<T, C> ArraysFrom<C> for Twhere
C: IntoArrays<T>,
Source§fn arrays_from(colors: C) -> T
fn arrays_from(colors: C) -> T
Source§impl<T, C> ArraysInto<C> for Twhere
C: FromArrays<T>,
impl<T, C> ArraysInto<C> for Twhere
C: FromArrays<T>,
Source§fn arrays_into(self) -> C
fn arrays_into(self) -> C
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for Uwhere
T: FromCam16Unclamped<WpParam, U>,
impl<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for Uwhere
T: FromCam16Unclamped<WpParam, U>,
Source§type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar
type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar
parameters when converting.Source§fn cam16_into_unclamped(
self,
parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>,
) -> T
fn cam16_into_unclamped( self, parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>, ) -> T
self into C, using the provided parameters.Source§impl<T, C> ComponentsFrom<C> for Twhere
C: IntoComponents<T>,
impl<T, C> ComponentsFrom<C> for Twhere
C: IntoComponents<T>,
Source§fn components_from(colors: C) -> T
fn components_from(colors: C) -> T
Source§impl<T> FromAngle<T> for T
impl<T> FromAngle<T> for T
Source§fn from_angle(angle: T) -> T
fn from_angle(angle: T) -> T
angle.Source§impl<T, U> FromStimulus<U> for Twhere
U: IntoStimulus<T>,
impl<T, U> FromStimulus<U> for Twhere
U: IntoStimulus<T>,
Source§fn from_stimulus(other: U) -> T
fn from_stimulus(other: U) -> T
other into Self, while performing the appropriate scaling,
rounding and clamping.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T, U> IntoAngle<U> for Twhere
U: FromAngle<T>,
impl<T, U> IntoAngle<U> for Twhere
U: FromAngle<T>,
Source§fn into_angle(self) -> U
fn into_angle(self) -> U
T.Source§impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for Uwhere
T: Cam16FromUnclamped<WpParam, U>,
impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for Uwhere
T: Cam16FromUnclamped<WpParam, U>,
Source§type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar
type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar
parameters when converting.Source§fn into_cam16_unclamped(
self,
parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>,
) -> T
fn into_cam16_unclamped( self, parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>, ) -> T
self into C, using the provided parameters.Source§impl<T, U> IntoColor<U> for Twhere
U: FromColor<T>,
impl<T, U> IntoColor<U> for Twhere
U: FromColor<T>,
Source§fn into_color(self) -> U
fn into_color(self) -> U
Source§impl<T, U> IntoColorUnclamped<U> for Twhere
U: FromColorUnclamped<T>,
impl<T, U> IntoColorUnclamped<U> for Twhere
U: FromColorUnclamped<T>,
Source§fn into_color_unclamped(self) -> U
fn into_color_unclamped(self) -> U
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> IntoStimulus<T> for T
impl<T> IntoStimulus<T> for T
Source§fn into_stimulus(self) -> T
fn into_stimulus(self) -> T
self into T, while performing the appropriate scaling,
rounding and clamping.Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T, C> TryComponentsInto<C> for Twhere
C: TryFromComponents<T>,
impl<T, C> TryComponentsInto<C> for Twhere
C: TryFromComponents<T>,
Source§type Error = <C as TryFromComponents<T>>::Error
type Error = <C as TryFromComponents<T>>::Error
try_into_colors fails to cast.Source§fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>
fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>
Source§impl<T, U> TryIntoColor<U> for Twhere
U: TryFromColor<T>,
impl<T, U> TryIntoColor<U> for Twhere
U: TryFromColor<T>,
Source§fn try_into_color(self) -> Result<U, OutOfBounds<U>>
fn try_into_color(self) -> Result<U, OutOfBounds<U>>
OutOfBounds error is returned which contains
the unclamped color. Read more