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
impl JagSurface
Sourcepub fn new(
device: Arc<Device>,
queue: Arc<Queue>,
surface_format: TextureFormat,
) -> Self
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.
Sourcepub fn from_device_queue(
device: Arc<Device>,
queue: Arc<Queue>,
surface_format: TextureFormat,
) -> Self
pub fn from_device_queue( device: Arc<Device>, queue: Arc<Queue>, surface_format: TextureFormat, ) -> Self
Convenience: construct from shared device/queue handles.
pub fn device(&self) -> Arc<Device>
pub fn queue(&self) -> Arc<Queue>
pub fn surface_format(&self) -> TextureFormat
pub fn pass_manager(&mut self) -> &mut PassManager
pub fn allocator_mut(&mut self) -> &mut RenderAllocator
Sourcepub fn set_direct(&mut self, direct: bool)
pub fn set_direct(&mut self, direct: bool)
Choose whether to render directly to the surface (bypass compositor).
Sourcepub fn set_preserve_surface(&mut self, preserve: bool)
pub fn set_preserve_surface(&mut self, preserve: bool)
Control whether to preserve existing contents on the surface.
Sourcepub fn set_use_intermediate(&mut self, use_it: bool)
pub fn set_use_intermediate(&mut self, use_it: bool)
Choose whether to use an intermediate texture and blit to the surface.
Sourcepub fn set_enable_smaa(&mut self, enable: bool)
pub fn set_enable_smaa(&mut self, enable: bool)
Enable or disable SMAA. Disabling skips the post-process filter to keep small text crisp.
Sourcepub fn set_logical_pixels(&mut self, on: bool)
pub fn set_logical_pixels(&mut self, on: bool)
Enable or disable logical pixel interpretation.
Sourcepub fn set_dpi_scale(&mut self, scale: f32)
pub fn set_dpi_scale(&mut self, scale: f32)
Set current DPI scale and propagate to passes before rendering.
Sourcepub fn set_ui_scale(&mut self, s: f32)
pub fn set_ui_scale(&mut self, s: f32)
Set a global UI scale multiplier
Sourcepub fn set_overlay(
&mut self,
callback: Box<dyn FnMut(&mut PassManager, &mut CommandEncoder, &TextureView, &Queue, u32, u32)>,
)
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
Sourcepub fn clear_overlay(&mut self)
pub fn clear_overlay(&mut self)
Clear the overlay callback
Sourcepub fn set_scroll_offset(&mut self, offset: [f32; 2])
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.
Sourcepub fn scroll_offset(&self) -> [f32; 2]
pub fn scroll_offset(&self) -> [f32; 2]
Get the current GPU-side scroll offset.
Sourcepub fn frame_cache(&self) -> Option<&CachedFrameData>
pub fn frame_cache(&self) -> Option<&CachedFrameData>
Access the cached frame data (if any) for scroll-only fast path decisions.
Sourcepub fn clear_frame_cache(&mut self)
pub fn clear_frame_cache(&mut self)
Clear the frame cache (e.g., on resize or content change).
Sourcepub fn update_frame_cache_metadata(
&mut self,
scroll_at_build: (f32, f32),
generation: u64,
hit_index: HitIndex,
)
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.
Sourcepub fn prepare_for_resize(&mut self, width: u32, height: u32)
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.
Sourcepub fn begin_frame(&self, width: u32, height: u32) -> Canvas
pub fn begin_frame(&self, width: u32, height: u32) -> Canvas
Begin a canvas frame of the given size (in pixels).
Sourcepub fn end_frame(&mut self, frame: SurfaceTexture, canvas: Canvas) -> Result<()>
pub fn end_frame(&mut self, frame: SurfaceTexture, canvas: Canvas) -> Result<()>
Finish the frame by rendering accumulated commands to the provided surface texture.
Sourcepub fn render_cached_frame_from_internal(
&mut self,
frame: SurfaceTexture,
scroll_delta: [f32; 2],
) -> Result<()>
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.
Sourcepub fn end_frame_headless(
&mut self,
canvas: Canvas,
) -> Result<(u32, u32, Vec<u8>)>
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§
impl !Freeze for JagSurface
impl !RefUnwindSafe for JagSurface
impl !Send for JagSurface
impl !Sync for JagSurface
impl Unpin for JagSurface
impl UnsafeUnpin for JagSurface
impl !UnwindSafe for JagSurface
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, 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> 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, 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