pub struct WidgetMeasure { /* private fields */ }
Expand description
Represents the in-progress measure pass for a widget tree.
Use WidgetLayout::to_measure
to instantiate.
Implementations§
source§impl WidgetMeasure
impl WidgetMeasure
sourcepub fn new_reuse(inline: Option<WidgetInlineMeasure>) -> Self
pub fn new_reuse(inline: Option<WidgetInlineMeasure>) -> Self
New with no widget layouts invalidated.
Prefer WidgetLayout::to_measure
instead of this.
sourcepub fn inline(&mut self) -> Option<&mut WidgetInlineMeasure>
pub fn inline(&mut self) -> Option<&mut WidgetInlineMeasure>
Mutable reference to the current widget’s inline info.
The widget must configure this to be inlined in parent layout. This is only Some(_)
if inline is enabled.
See WidgetInlineMeasure
for more details.
sourcepub fn disable_inline(&mut self)
pub fn disable_inline(&mut self)
Sets is_inline
to false
.
Must be called before child delegation, otherwise children that inline may render expecting to fit in the inline flow.
Note that this disables inline for the calling widget’s next layout too, every property that affects layout and does not support inline layout must propagate measure using this method to correctly configure the widget.
Prefer measure_block
as if also clears the layout constraints.
sourcepub fn measure_block(&mut self, child: &mut impl UiNode) -> PxSize
pub fn measure_block(&mut self, child: &mut impl UiNode) -> PxSize
Disable inline and measure child with no inline constraints.
sourcepub fn measure_inline(
&mut self,
first_max: Px,
mid_clear_min: Px,
child: &mut impl UiNode,
) -> (Option<WidgetInlineMeasure>, PxSize)
pub fn measure_inline( &mut self, first_max: Px, mid_clear_min: Px, child: &mut impl UiNode, ) -> (Option<WidgetInlineMeasure>, PxSize)
Measure the child node with inline enabled for the child
node context.
The first_max
and mid_clear_min
parameters match the InlineConstraintsMeasure
members, and will be set in
the child
context.
Note that this does not enabled inline in the calling widget if inlining was disabled by the parent nodes, it creates a new inlining context.
Returns the inline requirements of the child and its desired bounds size, returns None
requirements if the child
disables inline or is not a full widget.
sourcepub fn with_widget(
&mut self,
measure: impl FnOnce(&mut Self) -> PxSize,
) -> PxSize
pub fn with_widget( &mut self, measure: impl FnOnce(&mut Self) -> PxSize, ) -> PxSize
Measure a widget.
sourcepub fn with_inline_visual(
&mut self,
measure: impl FnOnce(&mut Self) -> PxSize,
) -> PxSize
pub fn with_inline_visual( &mut self, measure: impl FnOnce(&mut Self) -> PxSize, ) -> PxSize
Calls measure
with inline force enabled on the widget.
The widget will be inlining even if the parent widget is not inlining, if properties request disable_inline
these requests are ignored.
sourcepub fn parallel_split(&self) -> ParallelBuilder<WidgetMeasure>
pub fn parallel_split(&self) -> ParallelBuilder<WidgetMeasure>
Start a parallel measure.
Returns an instance that can be used to acquire multiple mutable WidgetMeasure
during measure.
The parallel_fold
method must be called after the parallel processing is done.
sourcepub fn parallel_fold(&mut self, split: ParallelBuilder<WidgetMeasure>)
pub fn parallel_fold(&mut self, split: ParallelBuilder<WidgetMeasure>)
Collect the parallel changes back.
Auto Trait Implementations§
impl Freeze for WidgetMeasure
impl !RefUnwindSafe for WidgetMeasure
impl Send for WidgetMeasure
impl Sync for WidgetMeasure
impl Unpin for WidgetMeasure
impl !UnwindSafe for WidgetMeasure
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> 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