[−][src]Struct conrod_core::widget::scroll::State
Scroll state calculated for a single axis.
Fields
offset: ScalarThe 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: RangeThe start and end bounds for the offset along the axis.
scrollable_range_len: ScalarThe 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: boolWhether or not the this axis is currently scrolling.
Implementations
impl<A> State<A> where
A: Axis, [src]
A: Axis,
pub fn update(
ui: &Ui,
idx: Id,
kid_area: &KidArea,
maybe_prev_scroll_state: Option<Self>,
additional_offset: Scalar
) -> Self[src]
ui: &Ui,
idx: Id,
kid_area: &KidArea,
maybe_prev_scroll_state: Option<Self>,
additional_offset: Scalar
) -> Self
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_areais the cropped area of the container widget in which kid widgets may be viewed.a,b,canddare widgets that are kids of the "scroll root" widget in their original, un-scrolled positions.scrollable_rangeis 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,
A: RefUnwindSafe,
impl<A> Send for State<A> where
A: Send,
A: Send,
impl<A> Sync for State<A> where
A: Sync,
A: Sync,
impl<A> Unpin for State<A> where
A: Unpin,
A: Unpin,
impl<A> UnwindSafe for State<A> where
A: UnwindSafe,
A: UnwindSafe,
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized, [src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized, [src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T[src]
impl<T> From<T> for T[src]
impl<T, U> Into<U> for T where
U: From<T>, [src]
U: From<T>,
impl<T> Style for T where
T: Any + Debug + PartialEq<T>, [src]
T: Any + Debug + PartialEq<T>,
impl<T> ToOwned for T where
T: Clone, [src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
fn to_owned(&self) -> T[src]
fn clone_into(&self, target: &mut T)[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>, [src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>, [src]
U: TryFrom<T>,