pub struct GenericLayout<W>{ /* private fields */ }Expand description
Stores layout data resulting from some layout algorithm.
Widgets and labels are stored for some key that identifies the widget. It is also possible to store the label text.
Blocks can be added too. It is expected that blocks will be rendered in order of addition.
There is a concept for pages too. The page-height defines the pages. The page-width is not used to constrain the pages and is just informational. It can be used to find if the layout has to be rebuilt after a resize.
The page-count is available too, but there may be areas that map beyond the page-count.
Implementations§
Source§impl<W> GenericLayout<W>
impl<W> GenericLayout<W>
pub fn new() -> Self
Sourcepub fn with_capacity(num_widgets: usize, num_blocks: usize) -> Self
pub fn with_capacity(num_widgets: usize, num_blocks: usize) -> Self
Initialize with a certain capacity.
Sourcepub fn set_area(&mut self, area: Rect)
pub fn set_area(&mut self, area: Rect)
Set the area used for this layout. The area may or may not have anything to do with the page-size.
Sourcepub fn area(&self) -> Rect
pub fn area(&self) -> Rect
The area used for this layout. The area may or may not have anything to do with the page-size.
Sourcepub fn area_changed(&self, area: Rect) -> bool
pub fn area_changed(&self, area: Rect) -> bool
Area differs from stored area?
Sourcepub fn set_page_size(&mut self, size: Size)
pub fn set_page_size(&mut self, size: Size)
Set the page-size for this layout.
Defaults to (u16::MAX, u16::MAX).
Sourcepub fn size_changed(&self, size: Size) -> bool
pub fn size_changed(&self, size: Size) -> bool
Page-size changed.
Sourcepub fn set_page_count(&mut self, page_count: usize)
pub fn set_page_count(&mut self, page_count: usize)
Number of pages
Sourcepub fn page_count(&self) -> usize
pub fn page_count(&self) -> usize
Number of pages
Sourcepub fn add(
&mut self,
key: W,
area: Rect,
label: Option<Cow<'static, str>>,
label_area: Rect,
)
pub fn add( &mut self, key: W, area: Rect, label: Option<Cow<'static, str>>, label_area: Rect, )
Add widget + label areas.
Sourcepub fn place(self, pos: Position) -> Self
pub fn place(self, pos: Position) -> Self
Places the layout at the given position. This shifts all area right by the given offset.
Most layout functions create a layout that starts at (0,0). That is ok, as the widgets using such a layout associate their top/left position with (0,0) and start from there.
If you want to use the layout without such a widget, this one is nice.
Sourcepub fn is_endless(&self) -> bool
pub fn is_endless(&self) -> bool
Is this as layout with height = u16::MAX?
Sourcepub fn widget_len(&self) -> usize
pub fn widget_len(&self) -> usize
Number of widgets/labels.
Sourcepub fn try_index_of(&self, widget: W) -> Option<usize>
pub fn try_index_of(&self, widget: W) -> Option<usize>
Returns the index for this widget.
Sourcepub fn index_of(&self, widget: W) -> usize
pub fn index_of(&self, widget: W) -> usize
Returns the index for this widget.
Panic Panics if there is no widget for the key.
Sourcepub fn widget_key(&self, idx: usize) -> W
pub fn widget_key(&self, idx: usize) -> W
Access widget key.
Panic Panics on out of bounds.
Sourcepub fn widget_keys(&self) -> impl Iterator<Item = &W>
pub fn widget_keys(&self) -> impl Iterator<Item = &W>
Access widget keys
Sourcepub fn label_for(&self, widget: W) -> Rect
pub fn label_for(&self, widget: W) -> Rect
Access the label area by key.
Panic Panics on out of bounds. Panics if the key doesn’t exist.
Sourcepub fn set_label(&mut self, idx: usize, area: Rect)
pub fn set_label(&mut self, idx: usize, area: Rect)
Set the label area.
Panic Panics on out of bounds.
Sourcepub fn widget_for(&self, widget: W) -> Rect
pub fn widget_for(&self, widget: W) -> Rect
Access the widget area by key.
Panic Panics on out of bounds. Panics if the key doesn’t exist.
Sourcepub fn set_widget(&mut self, idx: usize, area: Rect)
pub fn set_widget(&mut self, idx: usize, area: Rect)
Change the widget area.
Panic Panics on out of bounds.
Sourcepub fn try_label_str_for(&self, widget: W) -> &Option<Cow<'static, str>>
pub fn try_label_str_for(&self, widget: W) -> &Option<Cow<'static, str>>
Access the label string by key.
Panic Panics on out of bounds. Panics if the key doesn’t exist.
Sourcepub fn try_label_str(&self, idx: usize) -> &Option<Cow<'static, str>>
pub fn try_label_str(&self, idx: usize) -> &Option<Cow<'static, str>>
Access label string.
Panic Panics on out of bounds.
Sourcepub fn label_str_for(&self, widget: W) -> &str
pub fn label_str_for(&self, widget: W) -> &str
Access the label string by key.
Panic Panics on out of bounds. Panics if the key doesn’t exist.
Sourcepub fn label_str(&self, idx: usize) -> &str
pub fn label_str(&self, idx: usize) -> &str
Access label string.
Panic Panics on out of bounds.
Sourcepub fn set_label_str(&mut self, idx: usize, str: Option<Cow<'static, str>>)
pub fn set_label_str(&mut self, idx: usize, str: Option<Cow<'static, str>>)
Set the label string.
Panic Panics on out of bounds.
Sourcepub fn block_area(&self, idx: usize) -> Rect
pub fn block_area(&self, idx: usize) -> Rect
Access block area.
Panic Panics on out of bounds.
Sourcepub fn set_block_area(&mut self, idx: usize, area: Rect)
pub fn set_block_area(&mut self, idx: usize, area: Rect)
Set the block area.
Panic Panics on out of bounds.
Sourcepub fn block_area_iter(&self) -> impl Iterator<Item = &Rect>
pub fn block_area_iter(&self) -> impl Iterator<Item = &Rect>
Iterate block areas.
Trait Implementations§
Source§impl<W> Clone for GenericLayout<W>
impl<W> Clone for GenericLayout<W>
Source§fn clone(&self) -> GenericLayout<W>
fn clone(&self) -> GenericLayout<W>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl<W> Debug for GenericLayout<W>
impl<W> Debug for GenericLayout<W>
Auto Trait Implementations§
impl<W> Freeze for GenericLayout<W>
impl<W> RefUnwindSafe for GenericLayout<W>where
W: RefUnwindSafe,
impl<W> Send for GenericLayout<W>where
W: Send,
impl<W> Sync for GenericLayout<W>where
W: Sync,
impl<W> Unpin for GenericLayout<W>where
W: Unpin,
impl<W> UnwindSafe for GenericLayout<W>where
W: UnwindSafe,
Blanket Implementations§
Source§impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for Swhere
T: Real + Zero + Arithmetics + Clone,
Swp: WhitePoint<T>,
Dwp: WhitePoint<T>,
D: AdaptFrom<S, Swp, Dwp, T>,
impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for Swhere
T: Real + Zero + Arithmetics + Clone,
Swp: WhitePoint<T>,
Dwp: WhitePoint<T>,
D: AdaptFrom<S, Swp, Dwp, T>,
Source§fn adapt_into_using<M>(self, method: M) -> Dwhere
M: TransformMatrix<T>,
fn adapt_into_using<M>(self, method: M) -> Dwhere
M: TransformMatrix<T>,
Source§fn adapt_into(self) -> D
fn adapt_into(self) -> D
Source§impl<T, C> ArraysFrom<C> for Twhere
C: IntoArrays<T>,
impl<T, C> ArraysFrom<C> for Twhere
C: IntoArrays<T>,
Source§fn arrays_from(colors: C) -> T
fn arrays_from(colors: C) -> T
Source§impl<T, C> ArraysInto<C> for Twhere
C: FromArrays<T>,
impl<T, C> ArraysInto<C> for Twhere
C: FromArrays<T>,
Source§fn arrays_into(self) -> C
fn arrays_into(self) -> C
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for Uwhere
T: FromCam16Unclamped<WpParam, U>,
impl<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for Uwhere
T: FromCam16Unclamped<WpParam, U>,
Source§type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar
type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar
parameters when converting.Source§fn cam16_into_unclamped(
self,
parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>,
) -> T
fn cam16_into_unclamped( self, parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>, ) -> T
self into C, using the provided parameters.Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T, C> ComponentsFrom<C> for Twhere
C: IntoComponents<T>,
impl<T, C> ComponentsFrom<C> for Twhere
C: IntoComponents<T>,
Source§fn components_from(colors: C) -> T
fn components_from(colors: C) -> T
Source§impl<T> FromAngle<T> for T
impl<T> FromAngle<T> for T
Source§fn from_angle(angle: T) -> T
fn from_angle(angle: T) -> T
angle.Source§impl<T, U> FromStimulus<U> for Twhere
U: IntoStimulus<T>,
impl<T, U> FromStimulus<U> for Twhere
U: IntoStimulus<T>,
Source§fn from_stimulus(other: U) -> T
fn from_stimulus(other: U) -> T
other into Self, while performing the appropriate scaling,
rounding and clamping.Source§impl<T, U> IntoAngle<U> for Twhere
U: FromAngle<T>,
impl<T, U> IntoAngle<U> for Twhere
U: FromAngle<T>,
Source§fn into_angle(self) -> U
fn into_angle(self) -> U
T.Source§impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for Uwhere
T: Cam16FromUnclamped<WpParam, U>,
impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for Uwhere
T: Cam16FromUnclamped<WpParam, U>,
Source§type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar
type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar
parameters when converting.Source§fn into_cam16_unclamped(
self,
parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>,
) -> T
fn into_cam16_unclamped( self, parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>, ) -> T
self into C, using the provided parameters.Source§impl<T, U> IntoColor<U> for Twhere
U: FromColor<T>,
impl<T, U> IntoColor<U> for Twhere
U: FromColor<T>,
Source§fn into_color(self) -> U
fn into_color(self) -> U
Source§impl<T, U> IntoColorUnclamped<U> for Twhere
U: FromColorUnclamped<T>,
impl<T, U> IntoColorUnclamped<U> for Twhere
U: FromColorUnclamped<T>,
Source§fn into_color_unclamped(self) -> U
fn into_color_unclamped(self) -> U
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> IntoStimulus<T> for T
impl<T> IntoStimulus<T> for T
Source§fn into_stimulus(self) -> T
fn into_stimulus(self) -> T
self into T, while performing the appropriate scaling,
rounding and clamping.Source§impl<T, C> TryComponentsInto<C> for Twhere
C: TryFromComponents<T>,
impl<T, C> TryComponentsInto<C> for Twhere
C: TryFromComponents<T>,
Source§type Error = <C as TryFromComponents<T>>::Error
type Error = <C as TryFromComponents<T>>::Error
try_into_colors fails to cast.Source§fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>
fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>
Source§impl<T, U> TryIntoColor<U> for Twhere
U: TryFromColor<T>,
impl<T, U> TryIntoColor<U> for Twhere
U: TryFromColor<T>,
Source§fn try_into_color(self) -> Result<U, OutOfBounds<U>>
fn try_into_color(self) -> Result<U, OutOfBounds<U>>
OutOfBounds error is returned which contains
the unclamped color. Read more