Struct conrod::UiCell [] [src]

pub struct UiCell<'a, C: 'a> {
    // some fields omitted
}

A wrapper around a Ui that only exposes the functionality necessary for the Widget::update method.

Its primary role is to allow for widget designers to compose their own unique Widgets from other Widgets by calling the Widget::set method within their own Widget's update method.

It also provides methods for accessing the Ui's Theme, GlyphCache and UserInput via immutable reference.

BTW - if you have a better name for this type, please post an issue or PR! "Cell" was the best I could come up with as it's kind of like a jail cell for the Ui - restricting a user's access to it.

Methods

impl<'a, C> UiCell<'a, C>
[src]

fn theme(&self) -> &Theme

A reference to the Theme that is currently active within the Ui.

fn glyph_cache(&self) -> &GlyphCache<C>

A reference to the Ui's GlyphCache.

fn input(&self) -> UserInput

A struct representing the user input that has occurred since the last update.

fn input_for<I: Into<Index>>(&self, idx: I) -> UserInput

A struct representing the user input that has occurred since the last update for the Widget with the given index..

fn capture_mouse(&mut self) -> bool

Have the widget capture the mouse input. The mouse state will be hidden from other widgets while captured.

Returns true if the mouse was successfully captured.

Returns false if it was already captured by some other widget.

fn uncapture_mouse(&mut self) -> bool

Uncapture the mouse input.

Returns true if the mouse was successfully uncaptured.

Returns false if the mouse wasn't captured by our widget in the first place.

fn capture_keyboard(&mut self) -> bool

Have the widget capture the keyboard input. The keyboard state will be hidden from other widgets while captured.

Returns true if the keyboard was successfully captured.

Returns false if it was already captured by some other widget.

fn uncapture_keyboard(&mut self) -> bool

Uncapture the keyboard input.

Returns true if the keyboard was successfully uncaptured.

Returns false if the keyboard wasn't captured by our widget in the first place.

fn new_unique_node_index(&mut self) -> NodeIndex

Generate a new, unique NodeIndex into a Placeholder node within the Ui's widget graph. This should only be called once for each unique widget needed to avoid unnecessary bloat within the Ui's widget graph.

When using this method in your Widget's update method, be sure to store the returned NodeIndex somewhere within your Widget::State so that it can be re-used on next update.

Panics if adding another node would exceed the maximum capacity for node indices.

fn kids_bounding_box<I: Into<Index>>(&self, idx: I) -> Option<Rect>

The Rect that bounds the kids of the widget with the given index.

Returns None if the widget has no children or if there's is no widget for the given index.

Methods from Deref<Target=Ui<C>>

fn rect_of<I: Into<Index>>(&self, idx: I) -> Option<Rect>

The Rect for the widget at the given index.

Returns None if there is no widget for the given index.

fn w_of<I: Into<Index>>(&self, idx: I) -> Option<Scalar>

The absolute width of the widget at the given index.

Returns None if there is no widget for the given index.

fn h_of<I: Into<Index>>(&self, idx: I) -> Option<Scalar>

The absolute height of the widget at the given index.

Returns None if there is no widget for the given index.

fn wh_of<I: Into<Index>>(&self, idx: I) -> Option<Dimensions>

The absolute dimensions for the widget at the given index.

Returns None if there is no widget for the given index.

fn xy_of<I: Into<Index>>(&self, idx: I) -> Option<Point>

The coordinates for the widget at the given index.

Returns None if there is no widget for the given index.

fn kid_area_of<I: Into<Index>>(&self, idx: I) -> Option<Rect>

The kid_area of the widget at the given index.

Returns None if there is no widget for the given index.

fn maybe_prev_widget(&self) -> Option<Index>

An index to the previously updated widget if there is one.

fn widget_graph(&self) -> &Graph

Borrow the Ui's widget_graph.

fn handle_event<E: GenericEvent>(&mut self, event: &E)

Handle game events and update the state.

fn calc_xy(&self, maybe_idx: Option<Index>, x_position: Position, y_position: Position, dim: Dimensions, place_on_kid_area: bool) -> Point

Get the centred xy coords for some given Dimensions, Position and alignment.

If getting the xy for a specific widget, its widget::Index should be specified so that we can also consider the scroll offset of the scrollable parent widgets.

The place_on_kid_area argument specifies whether or not Place Position variants should target a Widget's kid_area, or simply the Widget's total area.

fn set_widgets<F>(&mut self, user_widgets_fn: F) where C: CharacterCache, F: FnOnce(&mut Self)

A function within which all widgets are instantiated by the user, normally situated within the "update" stage of an event loop.

fn set_num_redraw_frames(&mut self, num_frames: u8)

Set the number of frames that the Ui should draw in the case that needs_redraw is called. The default is 3 (see the SAFE_REDRAW_COUNT docs for details).

fn needs_redraw(&mut self)

Tells the Ui that it needs to be re-draw everything. It does this by setting the redraw count to num_redraw_frames. See the docs for set_num_redraw_frames, SAFE_REDRAW_COUNT or draw_if_changed for more info on how/why the redraw count is used.

fn draw<G>(&mut self, context: Context, graphics: &mut G) where G: Graphics, C: CharacterCache<Texture=G::Texture>

Draw the Ui in it's current state.

NOTE: If you don't need to redraw your conrod GUI every frame, it is recommended to use the Ui::draw_if_changed method instead.

fn draw_if_changed<G>(&mut self, context: Context, graphics: &mut G) where G: Graphics, C: CharacterCache<Texture=G::Texture>

Same as the Ui::draw method, but only draws if the redraw_count is greater than 0.

The redraw_count is set to SAFE_REDRAW_COUNT whenever a Widget indicates that it needs to be re-drawn.

It can also be triggered manually by the user using the Ui::needs_redraw method.

This method is generally preferred over Ui::draw as it requires far less CPU usage, only redrawing to the screen if necessary.

Note that when Ui::needs_redraw is triggered, it sets the redraw_count to 3 by default. This ensures that conrod is drawn to each buffer in the case that there is buffer swapping happening. Let us know if you need finer control over this and we'll expose a way for you to set the redraw count manually.

fn kids_bounding_box<I: Into<Index>>(&self, idx: I) -> Option<Rect>

The Rect that bounds the kids of the widget with the given index.

fn visible_area<I: Into<Index>>(&self, idx: I) -> Option<Rect>

The Rect that represents the maximum fully visible area for the widget with the given index, including consideration of cropped scroll area.

Otherwise, return None if the widget is not visible.

Trait Implementations

impl<'a, C> Deref for UiCell<'a, C>
[src]

type Target = Ui<C>

The resulting type after dereferencing

fn deref(&self) -> &Ui<C>

The method called to dereference a value

impl<'a, C> AsRef<Ui<C>> for UiCell<'a, C>
[src]

fn as_ref(&self) -> &Ui<C>

Performs the conversion.