Renderer

Struct Renderer 

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

Renderer for the terminal using custom wgpu cell renderer

Implementations§

Source§

impl Renderer

Source

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

Source

pub fn resize(&mut self, new_size: PhysicalSize<u32>) -> (usize, usize)

Resize the renderer and recalculate grid dimensions based on padding/font metrics

Source

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.

Source

pub fn update_cells(&mut self, cells: &[Cell])

Update the terminal cells

Source

pub fn update_cursor( &mut self, position: (usize, usize), opacity: f32, style: CursorStyle, )

Update cursor position and style for geometric rendering

Source

pub fn clear_cursor(&mut self)

Clear cursor (hide it)

Source

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 screen
  • total_lines - Total number of lines including scrollback
Source

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)
Source

pub fn update_opacity(&mut self, opacity: f32)

Update window opacity in real-time

Source

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

Source

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

Source

pub fn set_custom_shader_animation(&mut self, enabled: bool)

Enable or disable animation for the custom shader at runtime

Source

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)
Source

pub fn set_shader_mouse_button(&mut self, pressed: bool, x: f32, y: f32)

Update mouse button state for custom shader (iMouse uniform)

§Arguments
  • pressed - True if left mouse button is pressed
  • x - Mouse X position at time of click/release
  • y - Mouse Y position at time of click/release
Source

pub fn update_scrollbar_appearance( &mut self, width: f32, thumb_color: [f32; 4], track_color: [f32; 4], )

Update scrollbar appearance in real-time

Source

pub fn update_scrollbar_position(&mut self, position: &str)

Update scrollbar position (left/right) in real-time

Source

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

Source

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.

Source

pub fn update_background_image_opacity(&mut self, opacity: f32)

Update background image opacity in real-time

Source

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 data
  • view_scroll_offset - Current view scroll offset (0 = viewing current content)
  • scrollback_len - Total lines in scrollback buffer
  • visible_rows - Number of visible rows in terminal
Source

pub fn needs_continuous_render(&self) -> bool

Check if animation requires continuous rendering

Source

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

Source

pub fn size(&self) -> PhysicalSize<u32>

Get the current size

Source

pub fn grid_size(&self) -> (usize, usize)

Get the current grid dimensions (columns, rows)

Source

pub fn cell_width(&self) -> f32

Get cell width in pixels

Source

pub fn cell_height(&self) -> f32

Get cell height in pixels

Source

pub fn window_padding(&self) -> f32

Get window padding in pixels

Source

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)
Source

pub fn scrollbar_thumb_bounds(&self) -> Option<(f32, f32)>

Get the scrollbar thumb bounds (top Y, height) in pixels

Source

pub fn scrollbar_track_contains_x(&self, x: f32) -> bool

Check if an X coordinate is within the scrollbar track

Source

pub fn scrollbar_mouse_y_to_scroll_offset(&self, mouse_y: f32) -> Option<usize>

Convert a mouse Y position to a scroll offset

§Arguments
  • mouse_y - Mouse Y coordinate in pixels (from top edge)
§Returns

The scroll offset corresponding to the mouse position, or None if scrollbar is not visible

Source

pub fn is_dirty(&self) -> bool

Check if the renderer needs to be redrawn

Source

pub fn mark_dirty(&mut self)

Mark the renderer as dirty, forcing a redraw on next render call

Source

pub fn clear_sixel_cache(&mut self)

Clear all cached sixel textures

Source

pub fn sixel_cache_size(&self) -> usize

Get the number of cached sixel textures

Source

pub fn remove_sixel_texture(&mut self, id: u64)

Remove a specific sixel texture from cache

Source

pub fn render_debug_overlay(&mut self, text: &str)

Set debug overlay text to be rendered

Source

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

Source

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§

Blanket Implementations§

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> 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<T> Downcast<T> for T

Source§

fn downcast(&self) -> &T

Source§

impl<T> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert 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>

Convert 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)

Convert &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)

Convert &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
where T: Any + Send + Sync,

Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Sync + Send>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<S> FromSample<S> for S

Source§

fn from_sample_(s: S) -> S

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<F, T> IntoSample<T> for F
where T: FromSample<F>,

Source§

fn into_sample(self) -> T

Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T, U> ToSample<U> for T
where U: FromSample<T>,

Source§

fn to_sample_(self) -> U

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> Upcast<T> for T

Source§

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

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<S, T> Duplex<S> for T
where T: FromSample<S> + ToSample<S>,

Source§

impl<T> WasmNotSend for T
where T: Send,

Source§

impl<T> WasmNotSendSync for T

Source§

impl<T> WasmNotSync for T
where T: Sync,