[][src]Struct conrod_core::widget::scroll::State

pub struct State<A> {
    pub offset: Scalar,
    pub offset_bounds: Range,
    pub scrollable_range_len: Scalar,
    pub is_scrolling: bool,
    // some fields omitted
}

Scroll state calculated for a single axis.

Fields

offset: Scalar

The distance that has been scrolled from the origin.

A positive offset pushes the scrollable range that is under the kid_area upwards.

A negative offset pushes the scrollable range that is under the kid_area downwards.

offset_bounds: Range

The start and end bounds for the offset along the axis.

scrollable_range_len: Scalar

The total range which may be "offset" from the "root" range (aka the kid_area).

The scrollable_range is determined as the bounding range around both the kid_area and all un-scrolled visible children widgets.

is_scrolling: bool

Whether or not the this axis is currently scrolling.

Implementations

impl<A> State<A> where
    A: Axis
[src]

pub fn update(
    ui: &Ui,
    idx: Id,
    kid_area: &KidArea,
    maybe_prev_scroll_state: Option<Self>,
    additional_offset: Scalar
) -> Self
[src]

Calculate the new scroll state for the single axis of a Widget.


          >     +---+
          |     |   |
          |   =========================
          |   | | a | scroll root     |
          |   | +---+ aka `kid_area`  |
          |   |            +--------+ |
          |   |            |        | |
          |   =========================
          |                |   b    |
          |                +--------+
scrollable|    +--------+
   range y|    |        |
          |    |        | +------+
          |    |    c   | |      |
          |    +--------+ |  d   |
          |               |      |
          >               +------+

               ^--------------------^
                    scrollable
                     range x

  • kid_area is the cropped area of the container widget in which kid widgets may be viewed.
  • a, b, c and d are widgets that are kids of the "scroll root" widget in their original, un-scrolled positions.
  • scrollable_range is the total range occuppied by all children widgets in their original, un-scrolled positions.

Everything above and below the set of ==== bars of the parent widget is hidden, i.e:


=========================
| | a | scroll root     |
| +---+ aka `kid_area`  |
|            +--------+ |
|            |   b    | |
=========================

The scrollable_range on each axis only becomes scrollable if its length exceeds the length of the kid_area on the same axis. Thus, in the above example, only the y scrollable_range is scrollable.

The offset_bounds are calculated as the amount which the original, un-scrolled, scrollable_range may be offset from its origin.


  offset +              >
  bounds v              |
  .start >              |   =========================
                        |   |                       |
                        |   |        kid_area       |
                        |   |                       |
                        |   |                       |
         >   scrollable |   =========================
         ^      range y |
         ^              |    
         ^              |    
  offset ^              |    
  bounds ^              |    
    .end ^              |    
         ^              |    
         ^              |    
         +              >    

Trait Implementations

impl<A: Clone> Clone for State<A>[src]

impl<A: Copy> Copy for State<A>[src]

impl<A: Debug> Debug for State<A>[src]

impl<A: PartialEq> PartialEq<State<A>> for State<A>[src]

impl<A> StructuralPartialEq for State<A>[src]

Auto Trait Implementations

impl<A> RefUnwindSafe for State<A> where
    A: RefUnwindSafe

impl<A> Send for State<A> where
    A: Send

impl<A> Sync for State<A> where
    A: Sync

impl<A> Unpin for State<A> where
    A: Unpin

impl<A> UnwindSafe for State<A> where
    A: UnwindSafe

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> Style for T where
    T: Any + Debug + PartialEq<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.