Module cursive::view

source ·
Expand description

Base elements required to build views.

Views are the main building blocks of your UI.

A view can delegate part or all of its responsabilities to child views, forming a view tree. The root of this tree is a StackView handled directly by the Cursive element.

Layout

The layout phase is when the size and location of each view is computed.

Each view is given an area of the screen by the View::layout() method. With this, the view is free to plan its content, including calling View::layout() on its own children.

In order to determine how much space should be given each child, parents can use View::required_size() on them.

Contracts

When building new Views, you should respect these contracts:

  • By default, View::layout() should be called before any call to View::draw() with the same available size. The only exceptions is when both following conditions are met:

    • The available size has not changed since the last call to View::layout()
    • View::needs_relayout() returns false

    In this case, it is safe to omit the call to View::layout().

  • The value returned by required_size should be an actually viable size, no matter what the request is. This means calling View::layout() with a size returned by required_size is never an error.

Structs

Four values representing each direction.
Provide scrolling functionalities to a view.
Cache around a one-dimensional layout result.
Represents a path to a single view in the layout.

Enums

Single-dimensional offset policy.
Defines the scrolling behaviour on content or size change
Selects a single view (if any) in the tree.
Single-dimensional constraint on a view size.

Traits

A view that can be downcasted to its concrete type.
Makes a view wrappable in a BoxView.
Provides call_on<V: View> to views.
Makes a view wrappable in an IdView.
Represents a type that can be made into a Box<View>.
Makes a view wrappable in a ScrollView.
Main trait defining a view behaviour.
Generic wrapper around a view.

Type Definitions

Location of the view on screen