Struct fyrox_ui::widget::Widget

source ·
pub struct Widget {
Show 49 fields pub handle: Handle<UiNode>, pub name: String, pub desired_local_position: Vector2<f32>, pub width: f32, pub height: f32, pub min_size: Vector2<f32>, pub max_size: Vector2<f32>, pub background: Brush, pub foreground: Brush, pub row: usize, pub column: usize, pub vertical_alignment: VerticalAlignment, pub horizontal_alignment: HorizontalAlignment, pub margin: Thickness, pub visibility: bool, pub global_visibility: bool, pub children: Vec<Handle<UiNode>>, pub parent: Handle<UiNode>, pub command_indices: RefCell<Vec<usize>>, pub is_mouse_directly_over: bool, pub hit_test_visibility: bool, pub z_index: usize, pub allow_drag: bool, pub allow_drop: bool, pub user_data: Option<Rc<dyn Any>>, pub draw_on_top: bool, pub enabled: bool, pub cursor: Option<CursorIcon>, pub opacity: Option<f32>, pub tooltip: Option<RcUiNodeHandle>, pub tooltip_time: f32, pub context_menu: Option<RcUiNodeHandle>, pub clip_to_bounds: bool, pub layout_transform: Matrix3<f32>, pub render_transform: Matrix3<f32>, pub visual_transform: Matrix3<f32>, pub preview_messages: bool, pub handle_os_events: bool, pub layout_events_sender: Option<Sender<LayoutEvent>>, pub id: Uuid, pub measure_valid: Cell<bool>, pub arrange_valid: Cell<bool>, pub prev_measure: Cell<Vector2<f32>>, pub prev_arrange: Cell<Rect<f32>>, pub desired_size: Cell<Vector2<f32>>, pub actual_local_position: Cell<Vector2<f32>>, pub actual_local_size: Cell<Vector2<f32>>, pub prev_global_visibility: bool, pub clip_bounds: Cell<Rect<f32>>,
}
Expand description

Widget is a base UI element, that is always used to build derived, more complex, widgets. In general, it is a container for layout information, basic visual appearance, visibility options, parent-child information. It does almost nothing on its own, instead, the user interface modifies its state accordingly.

Fields§

§handle: Handle<UiNode>

Self handle of the widget. It is valid only, if the widget is added to the user interface, in other cases it will most likely be Handle::NONE.

§name: String

Name of the widget. Could be useful for debugging purposes.

§desired_local_position: Vector2<f32>

Desired position relative to the parent node. It is just a recommendation for the layout system, actual position will be stored in the actual_local_position field and can be fetched using Widget::actual_local_position method.

§width: f32

Explicit width for the widget, or automatic if f32::NAN (means the value is undefined). Default is f32::NAN.

§height: f32

Explicit height for the widget, or automatic if f32::NAN (means the value is undefined). Default is f32::NAN.

§min_size: Vector2<f32>

Minimum width and height. Default is 0.0 for both axes.

§max_size: Vector2<f32>

Maximum width and height. Default is f32::INFINITY for both axes.

§background: Brush

Background brush of the widget.

§foreground: Brush

Foreground brush of the widget.

§row: usize

Index of the row to which this widget belongs to. It is valid only in when used in crate::grid::Grid widget.

§column: usize

Index of the column to which this widget belongs to. It is valid only in when used in crate::grid::Grid widget.

§vertical_alignment: VerticalAlignment

Vertical alignment of the widget.

§horizontal_alignment: HorizontalAlignment

Horizontal alignment of the widget.

§margin: Thickness

Margin for every sides of bounding rectangle. See Thickness docs for more info.

§visibility: bool

Current, local, visibility state of the widget.

§global_visibility: bool

Current, global (including the chain of parent widgets), visibility state of the widget.

§children: Vec<Handle<UiNode>>

A set of handles to children nodes of this widget.

§parent: Handle<UiNode>

A handle to the parent node of this widget.

§command_indices: RefCell<Vec<usize>>

Indices of drawing commands in the drawing context emitted by this widget. It is used for picking.

§is_mouse_directly_over: bool

A flag, that indicates that the mouse is directly over the widget. It will be raised only for top-most widget in the “stack” of widgets.

§hit_test_visibility: bool

A flag, that defines whether the widget is “visible” for hit testing (picking). Could be useful to prevent some widgets from any interactions with mouse.

§z_index: usize

Index of the widget in parent’s children list that defines its order in drawing and picking.

§allow_drag: bool

A flag, that defines whether the drag from drag’n’drop functionality can be started by the widget or not.

§allow_drop: bool

A flag, that defines whether the drop from drag’n’drop functionality can be accepted by the widget or not.

§user_data: Option<Rc<dyn Any>>

Optional, user-defined data.

§draw_on_top: bool

A flag, that defines whether the widget should be drawn in a separate drawind pass after any other widget that draws normally.

§enabled: bool

A flag, that defines whether the widget is enabled or not. Disabled widgets cannot be interacted by used and they’re greyed out.

§cursor: Option<CursorIcon>

Optional cursor icon that will be used for mouse cursor when hovering over the widget.

§opacity: Option<f32>

Optional opacity of the widget. It should be in [0.0..1.0] range, where 0.0 - fully transparent, 1.0 - fully opaque.

§tooltip: Option<RcUiNodeHandle>

An optional ref counted handle to a tooltip used by the widget.

§tooltip_time: f32

Maximum available time to show the tooltip after the cursor was moved away from the widget.

§context_menu: Option<RcUiNodeHandle>

An optional ref counted handle to a context menu used by the widget.

§clip_to_bounds: bool

A flag, that defines whether the widget should be clipped by the parent bounds or not.

§layout_transform: Matrix3<f32>

Current render transform of the node. It modifies layout information of the widget, as well as it affects visual transform of the widget.

§render_transform: Matrix3<f32>

Current render transform of the node. It only modifies the widget at drawing stage, layout information remains unmodified.

§visual_transform: Matrix3<f32>

Current visual transform of the node. It always contains a result of mixing the layout and render transformation matrices.

§preview_messages: bool

A flag, that defines whether the widget will preview UI messages or not. Basically, it defines whether crate::Control::preview_message is called or not.

§handle_os_events: bool

A flag, that defines whether the widget will receive any OS events or not. Basically, it defines whether crate::Control::handle_os_event is called or not.

§layout_events_sender: Option<Sender<LayoutEvent>>

Internal sender for layout events.

§id: Uuid

Unique identifier of the widget.

§measure_valid: Cell<bool>

A flag, that defines whether the measurement results are still valid or not.

§arrange_valid: Cell<bool>

A flag, that defines whether the arrangement results are still valid or not.

§prev_measure: Cell<Vector2<f32>>

Results or previous measurement.

§prev_arrange: Cell<Rect<f32>>

Results or previous arrangement.

§desired_size: Cell<Vector2<f32>>

Desired size of the node after Measure pass.

§actual_local_position: Cell<Vector2<f32>>

Actual local position of the widget after Arrange pass.

§actual_local_size: Cell<Vector2<f32>>

Actual local size of the widget after Arrange pass.

§prev_global_visibility: bool

Previous global visibility of the widget.

§clip_bounds: Cell<Rect<f32>>

Current clip bounds of the widget.

Implementations§

source§

impl Widget

source

pub fn handle(&self) -> Handle<UiNode>

Returns self handle of the widget.

source

pub fn name(&self) -> &str

Returns the name of the widget.

source

pub fn set_name<P: AsRef<str>>(&mut self, name: P) -> &mut Self

Sets the new name of the widget.

source

pub fn actual_local_size(&self) -> Vector2<f32>

Returns the actual size of the widget after the full layout cycle.

source

pub fn actual_initial_size(&self) -> Vector2<f32>

Returns size of the widget without any layout or rendering transform applied.

source

pub fn actual_global_size(&self) -> Vector2<f32>

Returns the actual global size of the widget after the full layout cycle.

source

pub fn set_min_size(&mut self, value: Vector2<f32>) -> &mut Self

Sets the new minimum size of the widget.

source

pub fn set_min_width(&mut self, value: f32) -> &mut Self

Sets the new minimum width of the widget.

source

pub fn set_min_height(&mut self, value: f32) -> &mut Self

Sets the new minimum height of the widget.

source

pub fn min_size(&self) -> Vector2<f32>

Sets the new minimum size of the widget.

source

pub fn min_width(&self) -> f32

Returns the minimum width of the widget.

source

pub fn min_height(&self) -> f32

Returns the minimum height of the widget.

source

pub fn is_drag_allowed(&self) -> bool

Return true if the dragging of the widget is allowed, false - otherwise.

source

pub fn is_drop_allowed(&self) -> bool

Return true if the dropping of other widgets is allowed on this widget, false - otherwise.

source

pub fn screen_to_local(&self, point: Vector2<f32>) -> Vector2<f32>

Maps the given point from screen to local widget’s coordinates.

source

pub fn invalidate_layout(&self)

Invalidates layout of the widget. WARNING: Do not use this method, unless you understand what you’re doing, it will cause new layout pass for this widget which could be quite heavy and doing so on every frame for multiple widgets will cause severe performance issues.

source

pub fn invalidate_measure(&self)

Invalidates measurement results of the widget. WARNING: Do not use this method, unless you understand what you’re doing, it will cause new measurement pass for this widget which could be quite heavy and doing so on every frame for multiple widgets will cause severe performance issues.

source

pub fn invalidate_arrange(&self)

Invalidates arrangement results of the widget. WARNING: Do not use this method, unless you understand what you’re doing, it will cause new arrangement pass for this widget which could be quite heavy and doing so on every frame for multiple widgets will cause severe performance issues.

source

pub fn is_hit_test_visible(&self) -> bool

Returns true if the widget is able to participate in hit testing, false - otherwise.

source

pub fn set_max_size(&mut self, value: Vector2<f32>) -> &mut Self

Sets the new maximum size of the widget.

source

pub fn max_size(&self) -> Vector2<f32>

Returns current maximum size of the widget.

source

pub fn max_width(&self) -> f32

Returns maximum width of the widget.

source

pub fn max_height(&self) -> f32

Return maximum height of the widget.

source

pub fn set_z_index(&mut self, z_index: usize) -> &mut Self

Sets new Z index for the widget. Z index defines the sorting (stable) index which will be used to “arrange” widgets in the correct order.

source

pub fn z_index(&self) -> usize

Returns current Z index of the widget.

source

pub fn set_background(&mut self, brush: Brush) -> &mut Self

Sets the new background of the widget.

source

pub fn background(&self) -> Brush

Returns current background of the widget.

source

pub fn set_foreground(&mut self, brush: Brush) -> &mut Self

Sets new foreground of the widget.

source

pub fn foreground(&self) -> Brush

Returns current foreground of the widget.

source

pub fn set_width(&mut self, width: f32) -> &mut Self

Sets new width of the widget.

source

pub fn width(&self) -> f32

Returns current width of the widget.

source

pub fn is_draw_on_top(&self) -> bool

Return true if the widget is set to be drawn on top of every other, normally drawn, widgets, false - otherwise.

source

pub fn set_height(&mut self, height: f32) -> &mut Self

Sets new height of the widget.

source

pub fn height(&self) -> f32

Returns current height of the widget.

source

pub fn set_desired_local_position(&mut self, pos: Vector2<f32>) -> &mut Self

Sets the desired local position of the widget.

source

pub fn screen_position(&self) -> Vector2<f32>

Returns current screen-space position of the widget.

source

pub fn children(&self) -> &[Handle<UiNode>]

Returns a reference to the slice with the children widgets of this widget.

source

pub fn parent(&self) -> Handle<UiNode>

Returns current parent handle of the widget.

source

pub fn set_column(&mut self, column: usize) -> &mut Self

Sets new column of the widget. Columns are used only by crate::grid::Grid widget.

source

pub fn column(&self) -> usize

Returns current column of the widget. Columns are used only by crate::grid::Grid widget.

source

pub fn set_row(&mut self, row: usize) -> &mut Self

Sets new row of the widget. Rows are used only by crate::grid::Grid widget.

source

pub fn row(&self) -> usize

Returns current row of the widget. Rows are used only by crate::grid::Grid widget.

source

pub fn desired_size(&self) -> Vector2<f32>

Returns the desired size of the widget.

source

pub fn desired_local_position(&self) -> Vector2<f32>

Returns current desired local position of the widget.

source

pub fn screen_bounds(&self) -> Rect<f32>

Returns current screen-space bounds of the widget.

source

pub fn bounding_rect(&self) -> Rect<f32>

Returns local-space bounding rect of the widget.

source

pub fn visual_transform(&self) -> &Matrix3<f32>

Returns current visual transform of the widget.

source

pub fn render_transform(&self) -> &Matrix3<f32>

Returns current render transform of the widget.

source

pub fn layout_transform(&self) -> &Matrix3<f32>

Returns current layout transform of the widget.

source

pub fn has_descendant( &self, node_handle: Handle<UiNode>, ui: &UserInterface ) -> bool

Returns true, if the widget has a descendant widget with the specified handle, false - otherwise.

source

pub fn find_by_criteria_up<Func: Fn(&UiNode) -> bool>( &self, ui: &UserInterface, func: Func ) -> Handle<UiNode>

Searches a node up on tree starting from the given root that matches a criteria defined by the given func.

source

pub fn handle_routed_message( &mut self, _ui: &mut UserInterface, msg: &mut UiMessage )

Handles incoming WidgetMessages. This method must be called in crate::control::Control::handle_routed_message of any derived widgets!

source

pub fn set_vertical_alignment( &mut self, vertical_alignment: VerticalAlignment ) -> &mut Self

Sets new vertical alignment of the widget.

source

pub fn vertical_alignment(&self) -> VerticalAlignment

Returns current vertical alignment of the widget.

source

pub fn set_horizontal_alignment( &mut self, horizontal_alignment: HorizontalAlignment ) -> &mut Self

Sets new horizontal alignment of the widget.

source

pub fn horizontal_alignment(&self) -> HorizontalAlignment

Returns current horizontal alignment of the widget.

source

pub fn set_margin(&mut self, margin: Thickness) -> &mut Self

Sets new margin of the widget.

source

pub fn margin(&self) -> Thickness

Returns current margin of the widget.

source

pub fn measure_override( &self, ui: &UserInterface, available_size: Vector2<f32> ) -> Vector2<f32>

Performs standard measurement of children nodes. It provides available size as a constraint and returns the maximum desired size across all children. As a result, this widget will have this size as its desired size to fit all the children nodes.

source

pub fn arrange_override( &self, ui: &UserInterface, final_size: Vector2<f32> ) -> Vector2<f32>

Performs standard arrangement of the children nodes of the widget. It uses input final size to make a final bounding rectangle to arrange children. As a result, all the children nodes will be located at the top-left corner of this widget and stretched to fit its bounds.

source

pub fn is_arrange_valid(&self) -> bool

Returns true if the current results of arrangement of the widget are valid, false - otherwise.

source

pub fn is_measure_valid(&self) -> bool

Returns true if the current results of measurement of the widget are valid, false - otherwise.

source

pub fn actual_local_position(&self) -> Vector2<f32>

Returns current actual local position of the widget. It is valid only after layout pass!

source

pub fn center(&self) -> Vector2<f32>

Returns center point of the widget. It is valid only after layout pass!

source

pub fn is_globally_visible(&self) -> bool

Returns true of the widget is globally visible, which means that all its parents are visible as well as this widget. It is valid only after the first update of the layout, otherwise if will be always false.

source

pub fn set_visibility(&mut self, visibility: bool) -> &mut Self

Sets new visibility of the widget.

source

pub fn request_update_visibility(&self)

Requests (via event queue, so the request is deferred) the update of the visibility of the widget.

source

pub fn visibility(&self) -> bool

Returns current visibility of the widget.

source

pub fn set_enabled(&mut self, enabled: bool) -> &mut Self

Enables or disables the widget. Disabled widgets does not interact with user and usually greyed out.

source

pub fn enabled(&self) -> bool

Returns true if the widget if enabled, false - otherwise.

source

pub fn set_cursor(&mut self, cursor: Option<CursorIcon>)

Sets new cursor of the widget.

source

pub fn cursor(&self) -> Option<CursorIcon>

Returns current cursor of the widget.

source

pub fn user_data_ref<T: 'static>(&self) -> Option<&T>

Tries to fetch user-defined data of the specified type T.

source

pub fn clip_bounds(&self) -> Rect<f32>

Returns current clipping bounds of the widget. It is valid only after at least one layout pass.

source

pub fn set_opacity(&mut self, opacity: Option<f32>) -> &mut Self

Set new opacity of the widget. Opacity should be in [0.0..1.0] range.

source

pub fn opacity(&self) -> Option<f32>

Returns current opacity of the widget.

source

pub fn tooltip(&self) -> Option<RcUiNodeHandle>

Returns current tooltip handle of the widget.

source

pub fn set_tooltip(&mut self, tooltip: Option<RcUiNodeHandle>) -> &mut Self

Sets new tooltip handle of the widget (if any).

source

pub fn tooltip_time(&self) -> f32

Returns maximum available time to show the tooltip after the cursor was moved away from the widget.

source

pub fn set_tooltip_time(&mut self, tooltip_time: f32) -> &mut Self

Set the maximum available time to show the tooltip after the cursor was moved away from the widget.

source

pub fn context_menu(&self) -> Option<RcUiNodeHandle>

Returns current context menu of the widget.

source

pub fn set_context_menu( &mut self, context_menu: Option<RcUiNodeHandle> ) -> &mut Self

The context menu receives PopupMessages for being displayed, and so should support those.

Trait Implementations§

source§

impl Clone for Widget

source§

fn clone(&self) -> Widget

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Widget

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl !RefUnwindSafe for Widget

§

impl !Send for Widget

§

impl !Sync for Widget

§

impl Unpin for Widget

§

impl !UnwindSafe for Widget

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> FieldValue for Twhere T: 'static,

source§

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

Casts self to a &dyn Any
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere 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.

§

impl<T> Pointable for T

§

const ALIGN: usize = mem::align_of::<T>()

The alignment of pointer.
§

type Init = T

The type for initializers.
§

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

Initializes a with the given initializer. Read more
§

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

Dereferences the given pointer. Read more
§

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

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

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

impl<T> Same<T> for T

§

type Output = T

Should always be Self
§

impl<SS, SP> SupersetOf<SS> for SPwhere SS: SubsetOf<SP>,

§

fn to_subset(&self) -> Option<SS>

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more
§

fn is_in_subset(&self) -> bool

Checks if self is actually part of its subset T (and can be converted to it).
§

fn to_subset_unchecked(&self) -> SS

Use with care! Same as self.to_subset but without any property checks. Always succeeds.
§

fn from_subset(element: &SS) -> SP

The inclusion map: converts self to the equivalent element of its superset.
source§

impl<T> ToOwned for Twhere T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

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 Twhere U: TryFrom<T>,

§

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.
§

impl<V, T> VZip<V> for Twhere V: MultiLane<T>,

§

fn vzip(self) -> V