vello_hybrid: Expose glyph cache rendering state APIs publicly
diff --git a/sparse_strips/vello_hybrid/src/lib.rs b/sparse_strips/vello_hybrid/src/lib.rs index fd8bf21..7dca888 100644 --- a/sparse_strips/vello_hybrid/src/lib.rs +++ b/sparse_strips/vello_hybrid/src/lib.rs
@@ -59,7 +59,7 @@ pub use render::{Config, GpuStrip, RenderSize}; #[cfg(all(target_arch = "wasm32", feature = "webgl"))] pub use render::{WebGlAtlasWriter, WebGlRenderer, WebGlTextureWithDimensions}; -pub use scene::{RenderSettings, Scene, SceneConstraints}; +pub use scene::{RenderSettings, RenderState, Scene, SceneConstraints}; pub use util::DimensionConstraints; pub use vello_common::multi_atlas::{AllocationStrategy, AtlasConfig, AtlasId}; pub use vello_common::pixmap::Pixmap;
diff --git a/sparse_strips/vello_hybrid/src/render/wgpu.rs b/sparse_strips/vello_hybrid/src/render/wgpu.rs index 39fab5c..9d1ec2f 100644 --- a/sparse_strips/vello_hybrid/src/render/wgpu.rs +++ b/sparse_strips/vello_hybrid/src/render/wgpu.rs
@@ -86,7 +86,7 @@ /// The state used by the scheduler. scheduler_state: SchedulerState, /// Image cache for storing images atlas allocations. - pub(crate) image_cache: ImageCache, + pub image_cache: ImageCache, /// Encoded paints for storing encoded paints. encoded_paints: Vec<GpuEncodedPaint>, /// Stores the index (offset) of the encoded paints in the encoded paints texture.
diff --git a/sparse_strips/vello_hybrid/src/scene.rs b/sparse_strips/vello_hybrid/src/scene.rs index 1421baf..7f624dd 100644 --- a/sparse_strips/vello_hybrid/src/scene.rs +++ b/sparse_strips/vello_hybrid/src/scene.rs
@@ -141,7 +141,7 @@ /// /// This is used to save and restore rendering state during recording operations. #[derive(Debug)] -struct RenderState { +pub struct RenderState { /// The paint type (solid color, gradient, or image). pub(crate) paint: PaintType, /// Transform applied to the paint coordinates. @@ -726,6 +726,28 @@ pub fn height(&self) -> u16 { self.height } + + /// Save current rendering state. + pub fn take_current_state(&mut self) -> RenderState { + RenderState { + paint: self.paint.clone(), + paint_transform: self.paint_transform, + transform: self.transform, + fill_rule: self.fill_rule, + blend_mode: self.blend_mode, + stroke: core::mem::take(&mut self.stroke), + } + } + + /// Restore rendering state. + pub fn restore_state(&mut self, state: RenderState) { + self.paint = state.paint; + self.paint_transform = state.paint_transform; + self.stroke = state.stroke; + self.transform = state.transform; + self.fill_rule = state.fill_rule; + self.blend_mode = state.blend_mode; + } } #[cfg(feature = "text")] @@ -1064,26 +1086,4 @@ }) .collect() } - - /// Save current rendering state. - fn take_current_state(&mut self) -> RenderState { - RenderState { - paint: self.paint.clone(), - paint_transform: self.paint_transform, - transform: self.transform, - fill_rule: self.fill_rule, - blend_mode: self.blend_mode, - stroke: core::mem::take(&mut self.stroke), - } - } - - /// Restore rendering state. - fn restore_state(&mut self, state: RenderState) { - self.paint = state.paint; - self.paint_transform = state.paint_transform; - self.stroke = state.stroke; - self.transform = state.transform; - self.fill_rule = state.fill_rule; - self.blend_mode = state.blend_mode; - } }