pub struct Renderer { /* private fields */ }Expand description
Renderer for the terminal using custom wgpu cell renderer
Implementations§
Source§impl Renderer
impl Renderer
Sourcepub async fn new(
window: Arc<Window>,
font_family: Option<&str>,
font_family_bold: Option<&str>,
font_family_italic: Option<&str>,
font_family_bold_italic: Option<&str>,
font_ranges: &[FontRange],
font_size: f32,
window_padding: f32,
line_spacing: f32,
char_spacing: f32,
scrollbar_position: &str,
scrollbar_width: f32,
scrollbar_thumb_color: [f32; 4],
scrollbar_track_color: [f32; 4],
enable_text_shaping: bool,
enable_ligatures: bool,
enable_kerning: bool,
vsync_mode: VsyncMode,
window_opacity: f32,
background_color: [u8; 3],
background_image_path: Option<&str>,
background_image_enabled: bool,
background_image_mode: BackgroundImageMode,
background_image_opacity: f32,
custom_shader_path: Option<&str>,
custom_shader_enabled: bool,
custom_shader_animation: bool,
custom_shader_animation_speed: f32,
custom_shader_text_opacity: f32,
custom_shader_full_content: bool,
) -> Result<Self>
pub async fn new( window: Arc<Window>, font_family: Option<&str>, font_family_bold: Option<&str>, font_family_italic: Option<&str>, font_family_bold_italic: Option<&str>, font_ranges: &[FontRange], font_size: f32, window_padding: f32, line_spacing: f32, char_spacing: f32, scrollbar_position: &str, scrollbar_width: f32, scrollbar_thumb_color: [f32; 4], scrollbar_track_color: [f32; 4], enable_text_shaping: bool, enable_ligatures: bool, enable_kerning: bool, vsync_mode: VsyncMode, window_opacity: f32, background_color: [u8; 3], background_image_path: Option<&str>, background_image_enabled: bool, background_image_mode: BackgroundImageMode, background_image_opacity: f32, custom_shader_path: Option<&str>, custom_shader_enabled: bool, custom_shader_animation: bool, custom_shader_animation_speed: f32, custom_shader_text_opacity: f32, custom_shader_full_content: bool, ) -> Result<Self>
Create a new renderer
Sourcepub fn resize(&mut self, new_size: PhysicalSize<u32>) -> (usize, usize)
pub fn resize(&mut self, new_size: PhysicalSize<u32>) -> (usize, usize)
Resize the renderer and recalculate grid dimensions based on padding/font metrics
Sourcepub fn handle_scale_factor_change(
&mut self,
scale_factor: f64,
new_size: PhysicalSize<u32>,
) -> (usize, usize)
pub fn handle_scale_factor_change( &mut self, scale_factor: f64, new_size: PhysicalSize<u32>, ) -> (usize, usize)
Update scale factor and resize so the PTY grid matches the new DPI.
Sourcepub fn update_cells(&mut self, cells: &[Cell])
pub fn update_cells(&mut self, cells: &[Cell])
Update the terminal cells
Sourcepub fn update_cursor(
&mut self,
position: (usize, usize),
opacity: f32,
style: CursorStyle,
)
pub fn update_cursor( &mut self, position: (usize, usize), opacity: f32, style: CursorStyle, )
Update cursor position and style for geometric rendering
Sourcepub fn clear_cursor(&mut self)
pub fn clear_cursor(&mut self)
Clear cursor (hide it)
Sourcepub fn update_scrollbar(
&mut self,
scroll_offset: usize,
visible_lines: usize,
total_lines: usize,
)
pub fn update_scrollbar( &mut self, scroll_offset: usize, visible_lines: usize, total_lines: usize, )
Update scrollbar state
§Arguments
scroll_offset- Current scroll offset (0 = at bottom)visible_lines- Number of lines visible on screentotal_lines- Total number of lines including scrollback
Sourcepub fn set_visual_bell_intensity(&mut self, intensity: f32)
pub fn set_visual_bell_intensity(&mut self, intensity: f32)
Set the visual bell flash intensity
§Arguments
intensity- Flash intensity from 0.0 (no flash) to 1.0 (full white flash)
Sourcepub fn update_opacity(&mut self, opacity: f32)
pub fn update_opacity(&mut self, opacity: f32)
Update window opacity in real-time
Sourcepub fn update_window_padding(&mut self, padding: f32) -> Option<(usize, usize)>
pub fn update_window_padding(&mut self, padding: f32) -> Option<(usize, usize)>
Update window padding in real-time without full renderer rebuild Returns Some((cols, rows)) if grid size changed and terminal needs resize
Sourcepub fn set_background_image_enabled(
&mut self,
enabled: bool,
path: Option<&str>,
mode: BackgroundImageMode,
opacity: f32,
)
pub fn set_background_image_enabled( &mut self, enabled: bool, path: Option<&str>, mode: BackgroundImageMode, opacity: f32, )
Enable/disable background image and reload if needed
Sourcepub fn set_custom_shader_animation(&mut self, enabled: bool)
pub fn set_custom_shader_animation(&mut self, enabled: bool)
Enable or disable animation for the custom shader at runtime
Sourcepub fn set_shader_mouse_position(&mut self, x: f32, y: f32)
pub fn set_shader_mouse_position(&mut self, x: f32, y: f32)
Update mouse position for custom shader (iMouse uniform)
§Arguments
x- Mouse X position in pixels (0 = left edge)y- Mouse Y position in pixels (0 = top edge)
Update mouse button state for custom shader (iMouse uniform)
§Arguments
pressed- True if left mouse button is pressedx- Mouse X position at time of click/releasey- Mouse Y position at time of click/release
Sourcepub fn update_scrollbar_appearance(
&mut self,
width: f32,
thumb_color: [f32; 4],
track_color: [f32; 4],
)
pub fn update_scrollbar_appearance( &mut self, width: f32, thumb_color: [f32; 4], track_color: [f32; 4], )
Update scrollbar appearance in real-time
Sourcepub fn update_scrollbar_position(&mut self, position: &str)
pub fn update_scrollbar_position(&mut self, position: &str)
Update scrollbar position (left/right) in real-time
Sourcepub fn reload_shader_from_source(&mut self, source: &str) -> Result<()>
pub fn reload_shader_from_source(&mut self, source: &str) -> Result<()>
Reload the custom shader from source code
This method compiles the new shader source and replaces the current pipeline. If compilation fails, returns an error and the old shader remains active.
§Arguments
source- The GLSL shader source code
§Returns
Ok(()) if successful, Err with error message if compilation fails
Sourcepub fn set_custom_shader_enabled(
&mut self,
enabled: bool,
shader_path: Option<&str>,
window_opacity: f32,
text_opacity: f32,
animation_enabled: bool,
animation_speed: f32,
full_content: bool,
) -> Result<(), String>
pub fn set_custom_shader_enabled( &mut self, enabled: bool, shader_path: Option<&str>, window_opacity: f32, text_opacity: f32, animation_enabled: bool, animation_speed: f32, full_content: bool, ) -> Result<(), String>
Enable/disable custom shader at runtime. When enabling, tries to (re)load the shader from the given path; when disabling, drops the renderer instance.
Returns Ok(()) on success, or Err with error message on failure.
Sourcepub fn update_background_image_opacity(&mut self, opacity: f32)
pub fn update_background_image_opacity(&mut self, opacity: f32)
Update background image opacity in real-time
Sourcepub fn update_graphics(
&mut self,
graphics: &[TerminalGraphic],
view_scroll_offset: usize,
scrollback_len: usize,
visible_rows: usize,
) -> Result<()>
pub fn update_graphics( &mut self, graphics: &[TerminalGraphic], view_scroll_offset: usize, scrollback_len: usize, visible_rows: usize, ) -> Result<()>
Update graphics textures (Sixel, iTerm2, Kitty)
§Arguments
graphics- Graphics from the terminal with RGBA dataview_scroll_offset- Current view scroll offset (0 = viewing current content)scrollback_len- Total lines in scrollback buffervisible_rows- Number of visible rows in terminal
Sourcepub fn needs_continuous_render(&self) -> bool
pub fn needs_continuous_render(&self) -> bool
Check if animation requires continuous rendering
Sourcepub fn render(
&mut self,
egui_data: Option<(FullOutput, &Context)>,
force_egui_opaque: bool,
show_scrollbar: bool,
) -> Result<bool>
pub fn render( &mut self, egui_data: Option<(FullOutput, &Context)>, force_egui_opaque: bool, show_scrollbar: bool, ) -> Result<bool>
Render a frame with optional egui overlay Returns true if rendering was performed, false if skipped
Sourcepub fn size(&self) -> PhysicalSize<u32>
pub fn size(&self) -> PhysicalSize<u32>
Get the current size
Sourcepub fn cell_width(&self) -> f32
pub fn cell_width(&self) -> f32
Get cell width in pixels
Sourcepub fn cell_height(&self) -> f32
pub fn cell_height(&self) -> f32
Get cell height in pixels
Sourcepub fn window_padding(&self) -> f32
pub fn window_padding(&self) -> f32
Get window padding in pixels
Sourcepub fn scrollbar_contains_point(&self, x: f32, y: f32) -> bool
pub fn scrollbar_contains_point(&self, x: f32, y: f32) -> bool
Check if a point (in pixel coordinates) is within the scrollbar bounds
§Arguments
x- X coordinate in pixels (from left edge)y- Y coordinate in pixels (from top edge)
Sourcepub fn scrollbar_thumb_bounds(&self) -> Option<(f32, f32)>
pub fn scrollbar_thumb_bounds(&self) -> Option<(f32, f32)>
Get the scrollbar thumb bounds (top Y, height) in pixels
Sourcepub fn scrollbar_track_contains_x(&self, x: f32) -> bool
pub fn scrollbar_track_contains_x(&self, x: f32) -> bool
Check if an X coordinate is within the scrollbar track
Sourcepub fn scrollbar_mouse_y_to_scroll_offset(&self, mouse_y: f32) -> Option<usize>
pub fn scrollbar_mouse_y_to_scroll_offset(&self, mouse_y: f32) -> Option<usize>
Sourcepub fn mark_dirty(&mut self)
pub fn mark_dirty(&mut self)
Mark the renderer as dirty, forcing a redraw on next render call
Sourcepub fn clear_sixel_cache(&mut self)
pub fn clear_sixel_cache(&mut self)
Clear all cached sixel textures
Sourcepub fn sixel_cache_size(&self) -> usize
pub fn sixel_cache_size(&self) -> usize
Get the number of cached sixel textures
Sourcepub fn remove_sixel_texture(&mut self, id: u64)
pub fn remove_sixel_texture(&mut self, id: u64)
Remove a specific sixel texture from cache
Sourcepub fn render_debug_overlay(&mut self, text: &str)
pub fn render_debug_overlay(&mut self, text: &str)
Set debug overlay text to be rendered
Sourcepub fn reconfigure_surface(&mut self)
pub fn reconfigure_surface(&mut self)
Reconfigure the surface (call when surface becomes outdated or lost) This typically happens when dragging the window between displays
Sourcepub fn clear_glyph_cache(&mut self)
pub fn clear_glyph_cache(&mut self)
Clear the glyph cache to force re-rasterization Useful after display changes where font rendering may differ
Auto Trait Implementations§
impl !Freeze for Renderer
impl !RefUnwindSafe for Renderer
impl Send for Renderer
impl Sync for Renderer
impl Unpin for Renderer
impl !UnwindSafe for Renderer
Blanket Implementations§
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<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<S> FromSample<S> for S
impl<S> FromSample<S> for S
fn from_sample_(s: S) -> S
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> 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 more