pub struct Viewport<Msg: Clone> {
pub child: Box<Element<Msg>>,
pub width: Option<f32>,
pub height: Option<f32>,
pub fade_bottom: f32,
}Expand description
A non-scrollable clipped viewport for revealing only part of a child tree.
Unlike Scroll, this widget does not own
any gesture state. It simply renders its child into an off-screen canvas
and blits the result into the allocated rect, clipping anything outside.
Fields§
§child: Box<Element<Msg>>The child element to render inside the viewport.
width: Option<f32>Optional fixed width in logical pixels. When omitted the
viewport reports max_width as its preferred width — i.e. it
stretches to fill whatever horizontal slice the parent layout
gives it. Set explicitly when the viewport has to coexist with
flex siblings (the flex would otherwise lose every pixel to
the viewport’s max_width claim) or whenever the inner content
has its own intrinsic width and the viewport is just a vertical
clip.
height: Option<f32>Optional fixed height in logical pixels. When omitted the viewport reports the child’s natural height.
fade_bottom: f32Logical pixels at the bottom edge that fade to transparent during the blit. Zero leaves the bottom hard-edged. Useful for slide-in panels so the leading edge of the animation does not knife-cut against the layer below it.
Implementations§
Source§impl<Msg: Clone> Viewport<Msg>
impl<Msg: Clone> Viewport<Msg>
pub fn new(child: impl Into<Element<Msg>>) -> Self
Sourcepub fn width(self, w: f32) -> Self
pub fn width(self, w: f32) -> Self
Set a fixed viewport width in logical pixels. Mirrors
Self::height: with an explicit value the viewport
reports w as its preferred width and the child is laid
out against w rather than the parent-supplied max_width.
Sourcepub fn fade_bottom(self, px: f32) -> Self
pub fn fade_bottom(self, px: f32) -> Self
Feather the bottom px rows of the viewport so its lower edge dissolves
to transparent. Drawn by the GLES blit shader as a linear alpha ramp
over the bottom band; the software backend currently renders a hard
edge regardless.
pub fn preferred_size(&self, max_width: f32, canvas: &Canvas) -> (f32, f32)
Trait Implementations§
Auto Trait Implementations§
impl<Msg> Freeze for Viewport<Msg>
impl<Msg> !RefUnwindSafe for Viewport<Msg>
impl<Msg> !Send for Viewport<Msg>
impl<Msg> !Sync for Viewport<Msg>
impl<Msg> Unpin for Viewport<Msg>
impl<Msg> !UnwindSafe for Viewport<Msg>
Blanket Implementations§
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
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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 more