Skip to main content

JagSurface

Struct JagSurface 

Source
pub struct JagSurface { /* private fields */ }
Expand description

High-level canvas-style wrapper over Painter + PassManager.

Typical flow:

  • let mut canvas = surface.begin_frame(w, h);
  • canvas.clear(color);
  • canvas.draw calls …
  • surface.end_frame(frame, canvas);

Implementations§

Source§

impl JagSurface

Source

pub fn new( device: Arc<Device>, queue: Arc<Queue>, surface_format: TextureFormat, ) -> Self

Create a new surface wrapper using an existing device/queue and the chosen surface format.

Source

pub fn from_device_queue( device: Arc<Device>, queue: Arc<Queue>, surface_format: TextureFormat, ) -> Self

Convenience: construct from shared device/queue handles.

Source

pub fn device(&self) -> Arc<Device>

Source

pub fn queue(&self) -> Arc<Queue>

Source

pub fn surface_format(&self) -> TextureFormat

Source

pub fn pass_manager(&mut self) -> &mut PassManager

Source

pub fn allocator_mut(&mut self) -> &mut RenderAllocator

Source

pub fn set_direct(&mut self, direct: bool)

Choose whether to render directly to the surface (bypass compositor).

Source

pub fn set_preserve_surface(&mut self, preserve: bool)

Control whether to preserve existing contents on the surface.

Source

pub fn set_use_intermediate(&mut self, use_it: bool)

Choose whether to use an intermediate texture and blit to the surface.

Source

pub fn set_enable_smaa(&mut self, enable: bool)

Enable or disable SMAA. Disabling skips the post-process filter to keep small text crisp.

Source

pub fn set_logical_pixels(&mut self, on: bool)

Enable or disable logical pixel interpretation.

Source

pub fn set_dpi_scale(&mut self, scale: f32)

Set current DPI scale and propagate to passes before rendering.

Source

pub fn set_ui_scale(&mut self, s: f32)

Set a global UI scale multiplier

Source

pub fn set_overlay( &mut self, callback: Box<dyn FnMut(&mut PassManager, &mut CommandEncoder, &TextureView, &Queue, u32, u32)>, )

Set an overlay callback for post-render passes

Source

pub fn clear_overlay(&mut self)

Clear the overlay callback

Source

pub fn set_scroll_offset(&mut self, offset: [f32; 2])

Set the GPU-side scroll offset (in logical pixels, typically negative). This is written into the viewport uniform so the GPU applies the scroll transform without rebuilding geometry.

Source

pub fn scroll_offset(&self) -> [f32; 2]

Get the current GPU-side scroll offset.

Source

pub fn frame_cache(&self) -> Option<&CachedFrameData>

Access the cached frame data (if any) for scroll-only fast path decisions.

Source

pub fn clear_frame_cache(&mut self)

Clear the frame cache (e.g., on resize or content change).

Source

pub fn update_frame_cache_metadata( &mut self, scroll_at_build: (f32, f32), generation: u64, hit_index: HitIndex, )

Update the scroll position, generation, and hit index on the most recent frame cache. Called by the renderer after end_frame to supply metadata that end_frame doesn’t have direct access to.

Source

pub fn prepare_for_resize(&mut self, width: u32, height: u32)

Pre-allocate intermediate texture at the given size. This should be called after surface reconfiguration to avoid jitter.

Source

pub fn begin_frame(&self, width: u32, height: u32) -> Canvas

Begin a canvas frame of the given size (in pixels).

Source

pub fn end_frame(&mut self, frame: SurfaceTexture, canvas: Canvas) -> Result<()>

Finish the frame by rendering accumulated commands to the provided surface texture.

Source

pub fn render_cached_frame_from_internal( &mut self, frame: SurfaceTexture, scroll_delta: [f32; 2], ) -> Result<()>

Re-render using the internally-cached frame data with an updated GPU scroll offset. This is the scroll-only fast path.

scroll_delta is the negated difference between the current scroll position and the position when the frame was originally built.

Source

pub fn end_frame_headless( &mut self, canvas: Canvas, ) -> Result<(u32, u32, Vec<u8>)>

Finish a frame by rendering to an offscreen texture and returning the pixel data as an RGBA byte vector. This is the headless equivalent of [end_frame] and does not require a window or surface.

Returns (width, height, pixels) where pixels is tightly-packed RGBA with 4 bytes per pixel (width * height * 4 total).

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for S
where 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) -> D
where M: TransformMatrix<T>,

Convert the source color to the destination color using the specified method.
Source§

fn adapt_into(self) -> D

Convert the source color to the destination color using the bradford method by default.
Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T, C> ArraysFrom<C> for T
where C: IntoArrays<T>,

Source§

fn arrays_from(colors: C) -> T

Cast a collection of colors into a collection of arrays.
Source§

impl<T, C> ArraysInto<C> for T
where C: FromArrays<T>,

Source§

fn arrays_into(self) -> C

Cast this collection of arrays into a collection of colors.
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for U
where T: FromCam16Unclamped<WpParam, U>,

Source§

type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar

The number type that’s used in parameters when converting.
Source§

fn cam16_into_unclamped( self, parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>, ) -> T

Converts self into C, using the provided parameters.
Source§

impl<T, C> ComponentsFrom<C> for T
where C: IntoComponents<T>,

Source§

fn components_from(colors: C) -> T

Cast a collection of colors into a collection of color components.
Source§

impl<T> Downcast<T> for T

Source§

fn downcast(&self) -> &T

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FromAngle<T> for T

Source§

fn from_angle(angle: T) -> T

Performs a conversion from angle.
Source§

impl<T, U> FromStimulus<U> for T
where U: IntoStimulus<T>,

Source§

fn from_stimulus(other: U) -> T

Converts other into Self, while performing the appropriate scaling, rounding and clamping.
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> IntoAngle<U> for T
where U: FromAngle<T>,

Source§

fn into_angle(self) -> U

Performs a conversion into T.
Source§

impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for U
where T: Cam16FromUnclamped<WpParam, U>,

Source§

type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar

The number type that’s used in parameters when converting.
Source§

fn into_cam16_unclamped( self, parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>, ) -> T

Converts self into C, using the provided parameters.
Source§

impl<T, U> IntoColor<U> for T
where U: FromColor<T>,

Source§

fn into_color(self) -> U

Convert into T with values clamped to the color defined bounds Read more
Source§

impl<T, U> IntoColorUnclamped<U> for T
where U: FromColorUnclamped<T>,

Source§

fn into_color_unclamped(self) -> U

Convert into T. The resulting color might be invalid in its color space Read more
Source§

impl<T> IntoStimulus<T> for T

Source§

fn into_stimulus(self) -> T

Converts self into T, while performing the appropriate scaling, rounding and clamping.
Source§

impl<T, C> TryComponentsInto<C> for T
where C: TryFromComponents<T>,

Source§

type Error = <C as TryFromComponents<T>>::Error

The error for when try_into_colors fails to cast.
Source§

fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>

Try to cast this collection of color components into a collection of colors. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T, U> TryIntoColor<U> for T
where U: TryFromColor<T>,

Source§

fn try_into_color(self) -> Result<U, OutOfBounds<U>>

Convert into T, returning ok if the color is inside of its defined range, otherwise an OutOfBounds error is returned which contains the unclamped color. Read more
Source§

impl<C, U> UintsFrom<C> for U
where C: IntoUints<U>,

Source§

fn uints_from(colors: C) -> U

Cast a collection of colors into a collection of unsigned integers.
Source§

impl<C, U> UintsInto<C> for U
where C: FromUints<U>,

Source§

fn uints_into(self) -> C

Cast this collection of unsigned integers into a collection of colors.
Source§

impl<T> Upcast<T> for T

Source§

fn upcast(&self) -> Option<&T>