Skip to main content

PerformanceView

Struct PerformanceView 

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

“Mean CPU usage” label stacked above a frame-time sparkline.

Composition (Y-up: top of widget = high local Y):

┌────────────────────────────────────────┐ ← top
│ Mean CPU usage: 4.12 ms / frame        │   label_height
├────────────────────────────────────────┤
│                                        │
│  (sparkline of the last N frame times) │   sparkline_height
│                                        │
└────────────────────────────────────────┘ ← bottom (y = 0)

The horizontal orange line on the sparkline marks the 16.7 ms / 60 fps reference budget — same convention as the egui reference panel.

Implementations§

Source§

impl PerformanceView

Source

pub fn new(font: Arc<Font>, history: SharedFrameHistory) -> Self

Build a new view bound to history. font is used for the “Mean CPU usage” label and (if enabled) the run-mode selector labels.

Source

pub fn with_run_mode_selector(self, run_mode: Rc<Cell<RunMode>>) -> Self

Mount a Reactive / Continuous selector at the top of the widget. The two buttons read and write through run_mode, and a dynamic description label below them mirrors the current mode (and shows FPS in Continuous mode). The host’s main loop is expected to read the same cell to decide whether to pump frames.

Source

pub fn run_mode(&self) -> Option<Rc<Cell<RunMode>>>

Read the live run-mode cell, if a selector is wired.

Source

pub fn with_sparkline_height(self, h: f64) -> Self

Source

pub fn with_padding(self, p: f64) -> Self

Source

pub fn with_background(self, on: bool) -> Self

Paint a panel-fill background behind the widget. Off by default (lets the host pick — the demo’s Backend panel already paints its own background; a popup window paints its own panel fill).

Source

pub fn with_live_redraw(self, on: bool) -> Self

When true, claim a redraw every frame so the rolling mean + sparkline always show live values. Off by default — the demo’s Backend panel relies on continuous-mode repaints (or unrelated dirty events) to refresh the readout, and a default-on flag would prevent the host from going idle in reactive mode. Opt in for popup-window hosts that exist specifically to show live performance numbers (Solitaire’s Debug → Performance Window).

Source

pub fn with_history_redraw(self, on: bool) -> Self

When true, the view invalidates itself once for each new FrameHistory revision it has not painted yet.

Off by default because the agg-gui demo’s Backend panel pushes a frame-history sample after each paint; enabling this there would make Reactive mode behave like Continuous mode. Opt in for a dedicated popup / overlay whose whole job is to keep the graph visually caught up with samples generated by unrelated UI draws.

Trait Implementations§

Source§

impl Widget for PerformanceView

Source§

fn type_name(&self) -> &'static str

A static name for this widget type, used by the inspector. Default: “Widget”.
Source§

fn bounds(&self) -> Rect

Bounding rectangle in parent-local Y-up coordinates.
Source§

fn set_bounds(&mut self, bounds: Rect)

Set the bounding rectangle. Called by the parent during layout.
Source§

fn children(&self) -> &[Box<dyn Widget>]

Immutable access to child widgets.
Source§

fn children_mut(&mut self) -> &mut Vec<Box<dyn Widget>>

Mutable access to child widgets (required for event dispatch + layout).
Source§

fn layout(&mut self, available: Size) -> Size

Compute desired size given available space, and update internal layout. Read more
Source§

fn paint(&mut self, ctx: &mut dyn DrawCtx)

Paint this widget’s own content into ctx. Read more
Source§

fn on_event(&mut self, _event: &Event) -> EventResult

Handle an event. The event’s positions are already in local Y-up coordinates. Return EventResult::Consumed to stop bubbling. Read more
Source§

fn needs_draw(&self) -> bool

Return true if this widget, or any visible descendant, has an ongoing draw need that should keep the host drawing. Read more
Source§

fn hit_test(&self, local_pos: Point) -> bool

Return true if local_pos (in this widget’s local coordinates) falls inside this widget’s interactive area. Default: axis-aligned rect test.
Source§

fn claims_pointer_exclusively(&self, _local_pos: Point) -> bool

When true, hit_test_subtree stops recursing into this widget’s children and returns this widget as the hit target. Used for floating overlays (e.g. a scrollbar painted above its content) that must claim the pointer before children that happen to share the same pixels. Default: false.
Source§

fn hit_test_global_overlay(&self, _local_pos: Point) -> bool

Return true when local_pos hits an app-level overlay owned by this widget. Unlike normal hit testing, ancestors may be missed because the overlay is painted outside their bounds.
Source§

fn has_active_modal(&self) -> bool

Whether this widget currently owns an app-modal interaction layer. Read more
Source§

fn on_unconsumed_key( &mut self, _key: &Key, _modifiers: Modifiers, ) -> EventResult

Handle a key that was not consumed by the focused widget path. Read more
Source§

fn is_focusable(&self) -> bool

Whether this widget can receive keyboard focus. Default: false.
Source§

fn focus_id(&self) -> Option<FocusId>

Stable identifier for the programmatic focus channel (crate::focus::request_focus). Read more
Source§

fn id(&self) -> Option<&str>

Optional human-readable identifier for this widget instance. Read more
Source§

fn is_visible(&self) -> bool

Return false to suppress painting this widget and all its children. The widget’s own paint() will not be called. Default: true.
Source§

fn properties(&self) -> Vec<(&'static str, String)>

Return type-specific properties for the inspector properties pane. Read more
Source§

fn accepts_text_input(&self) -> bool

true when this widget accepts free-form character input (typing arbitrary letters, numbers, punctuation). Used by the on-screen software keyboard (crate::widgets::on_screen_keyboard) to decide whether to slide up when this widget gains focus. Read more
Source§

fn text_input_value(&self) -> Option<String>

Current text contents of this widget if it is text-bearing. Used by the on-screen software keyboard to apply the sentence-start auto-capitalize heuristic: an empty field (or one ending in ., !, ?, newline) opens the keyboard with Shift active. Read more
Source§

fn text_input_mode(&self) -> KeyboardInputMode

Preferred keyboard input mode for this widget — used by the on-screen software keyboard to pick the initial layer when this widget gains focus. Default is KeyboardInputMode::Text; numeric fields override to Numeric so the digit pad slides up instead of the letter row. Read more
Source§

fn try_scroll_to_lift(&mut self, _amount: f64) -> f64

Try to lift this widget’s visible content upward by amount pixels. Used by the on-screen-keyboard auto-scroll so a focused text field doesn’t end up hidden behind the keyboard panel: the App walks UP the focus path and asks each ancestor to absorb some of the deficit. Read more
Source§

fn set_label_color(&mut self, _color: Color)

If this widget is text-bearing (e.g. Label), update its foreground colour. Default is a no-op. Composite widgets call this on their children to retint labels without rebuilding them — used by Button when toggling between active (white text on accent) and inactive (theme text on subtle bg) appearances.
Source§

fn set_label_text(&mut self, _text: &str)

If this widget is text-bearing (e.g. Label), update its displayed text. Default is a no-op. Composite widgets that own a Label child use this to push live values (e.g. an FPS counter) into the child without bypassing the standard backbuffered glyph cache — calling this on a Label only invalidates the cache when the text actually changed.
Source§

fn as_reflect(&self) -> Option<&dyn Reflect>

Opt-in reflection accessor for the inspector’s typed property editors. Read more
Source§

fn as_reflect_mut(&mut self) -> Option<&mut dyn Reflect>

Mutable counterpart of as_reflect. Used by the inspector to write edits back into the live widget.
Source§

fn has_backbuffer(&self) -> bool

Whether this widget renders into its own offscreen buffer before compositing into the parent. Read more
Source§

fn compositing_layer(&mut self) -> Option<CompositingLayer>

Request that this widget subtree be painted into a transient transparent compositing layer before being blended into its parent. Read more
Source§

fn backbuffer_spec(&mut self) -> BackbufferSpec

Unified widget-owned backbuffer request.
Source§

fn backbuffer_state_mut(&mut self) -> Option<&mut BackbufferState>

Mutable retained backbuffer state for widgets that request a BackbufferSpec other than BackbufferKind::None.
Source§

fn mark_dirty(&mut self)

Mark this widget’s own retained surface dirty, if it owns one. Read more
Source§

fn backbuffer_cache_mut(&mut self) -> Option<&mut BackbufferCache>

Opt into per-widget CPU bitmap caching with a dirty flag. Read more
Source§

fn backbuffer_mode(&self) -> BackbufferMode

Storage format for this widget’s backbuffer. Ignored unless [backbuffer_cache_mut] returns Some. Default BackbufferMode::Rgba — correct for any widget. Opt into BackbufferMode::LcdCoverage only when the widget paints opaque content covering its full bounds.
Source§

fn contributes_children_to_inspector(&self) -> bool

Whether the inspector should recurse into this widget’s children. Read more
Source§

fn show_in_inspector(&self) -> bool

Return false to hide this widget (and its subtree) from the inspector node snapshot entirely. Intended for zero-size utility widgets such as layout-time watchers / tickers / invisible composers — they bloat the inspector tree without providing user-relevant information and, at scale, can make the inspector’s per-frame tree rebuild expensive.
Source§

fn lcd_preference(&self) -> Option<bool>

Per-widget LCD subpixel preference for backbuffered text rendering. Read more
Source§

fn paint_overlay(&mut self, _ctx: &mut dyn DrawCtx)

Paint decorations that must appear on top of all children. Read more
Source§

fn finish_paint(&mut self, _ctx: &mut dyn DrawCtx)

Called after paint, child painting, and optional overlay painting. Read more
Source§

fn paint_global_overlay(&mut self, _ctx: &mut dyn DrawCtx)

Paint app-level overlays after the entire widget tree has been painted. Read more
Source§

fn clip_children_rect(&self) -> Option<(f64, f64, f64, f64)>

Return a clip rectangle (in local coordinates) that constrains all child painting. paint_subtree applies this clip before recursing into children, then restores the previous clip state afterward. The clip does not affect paint_overlay, which runs after the clip is removed. Read more
Source§

fn inspector_child_transform(&self) -> TransAffine

Affine transform applied between this widget and its children during inspector traversal. Mirrors what paint() does — e.g. a widget that pushes pan/zoom in paint() and pops it in finish_paint() makes the framework recurse into its children with pan/zoom active, so collect_inspector_nodes must apply the same transform when accumulating descendant screen bounds. Without this hook the inspector hover overlay lands at the un-transformed canvas position when the widget sits inside a panning/zooming container. Read more
Source§

fn margin(&self) -> Insets

Outer margin around this widget in logical units. Read more
Source§

fn padding(&self) -> Insets

Inner padding — space the widget reserves between its own bounds and its child layout area. Only container widgets carry padding; leaf widgets default to Insets::ZERO. Read more
Source§

fn h_anchor(&self) -> HAnchor

Horizontal anchor: how this widget sizes/positions itself horizontally within the slot the parent assigns. Default: HAnchor::FIT (take natural content width).
Source§

fn v_anchor(&self) -> VAnchor

Vertical anchor: how this widget sizes/positions itself vertically within the slot the parent assigns. Default: VAnchor::FIT (take natural content height).
Source§

fn min_size(&self) -> Size

Minimum size constraint (logical units). Read more
Source§

fn max_size(&self) -> Size

Maximum size constraint (logical units). Read more
Source§

fn widget_base(&self) -> Option<&WidgetBase>

Direct read access to the widget’s embedded WidgetBase. Read more
Source§

fn widget_base_mut(&mut self) -> Option<&mut WidgetBase>

Mutable counterpart of widget_base. Read more
Source§

fn enforce_integer_bounds(&self) -> bool

Whether paint_subtree should snap this widget’s incoming translation to the physical pixel grid. Read more
Source§

fn measure_min_height(&self, _available_w: f64) -> f64

Report the minimum height this widget needs to fully render its content when given the supplied available_w for width. Read more
Source§

fn take_raise_request(&mut self) -> bool

Container widgets (notably crate::widgets::Stack) call this on each child at the start of layout(). A widget that returns true is moved to the END of its parent’s child list — painted last, i.e. raised to the top of the z-order. take_ semantics: the call is also expected to clear the request so the child doesn’t keep getting raised every frame. Read more
Source§

fn next_draw_deadline(&self) -> Option<Instant>

Return the earliest wall-clock instant at which this widget (or any visible descendant) wants the next draw. None = no scheduled wake. The host loop turns a Some(t) into ControlFlow::WaitUntil(t) so e.g. a cursor blink fires without continuous polling. Read more

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 for T
where T: Any,

Source§

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

Converts Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.
Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Converts Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
Source§

fn as_any(&self) -> &(dyn Any + 'static)

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

Converts &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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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<A> Is for A
where A: Any,

Source§

fn is<T>() -> bool
where T: Any,

Checks if the current type “is” another type, using a TypeId equality comparison. This is most useful in the context of generic logic. Read more
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> 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.