Skip to main content

Column

Struct Column 

Source
pub struct Column<C: Fn(ColumnContent<'_, '_, '_>) -> Option<()>> {
    pub content: C,
    pub gap: f32,
    pub collapse: bool,
}
Expand description

A container that arranges child elements vertically with optional gaps.

Elements are laid out from top to bottom with configurable spacing between them. Supports page breaking and collapsing behavior for empty elements.

§Gap Behavior

Gaps are only applied between elements that have actual height. Elements with None height (collapsed elements) don’t get gaps before or after them.

§Collapse Behavior

When collapse: true (default):

  • If all children have None height, the column returns None height
  • If all children have None width, the column returns None width
  • The gaps around a child with a None height are collapsed into one.

When collapse: false:

  • Empty columns return Some(0.0) for height/width instead of None
  • Useful when you need a column to always occupy space even when empty
  • A child with a None height will still have a gap on either side

§Page Breaking

In breakable contexts, when a child element causes a page break, the column’s accumulated height is reset and continues on the new page.

Fields§

§content: C

Closure that gets called for adding the content.

The closure is basically an internal iterator that produces elements by calling ColumnContent::add. For short circuiting with the ? operator ColumnContent::add and this closure return an Option.

If the column is in a context that measures it before drawing (such as BreakWhole), this function will be called twice. In more complicated nested layouts it could be called more than that (though in real world layouts this effect should be minimal as not all containers need a measure pass before drawing). Because of this it’s beneficial to keep expensive computations and allocation outside of this closure.

§gap: f32

Vertical spacing between elements in millimeters

§collapse: bool

Whether to collapse to None size when all children are collapsed. When false, empty columns return Some(0.0) instead of None.

Implementations§

Source§

impl<C: Fn(ColumnContent<'_, '_, '_>) -> Option<()>> Column<C>

Source

pub fn new(content: C) -> Self

Source

pub fn with_gap(self, gap: f32) -> Self

Source

pub fn with_collapse(self, collapse: bool) -> Self

Trait Implementations§

Source§

impl<C: Fn(ColumnContent<'_, '_, '_>) -> Option<()>> Element for Column<C>

Source§

fn first_location_usage( &self, ctx: FirstLocationUsageCtx<'_>, ) -> FirstLocationUsage

Source§

fn measure(&self, ctx: MeasureCtx<'_>) -> ElementSize

Source§

fn draw(&self, ctx: DrawCtx<'_, '_>) -> ElementSize

Source§

fn with_padding_top(self, padding: f32) -> Padding<Self>
where Self: Sized,

Source§

fn with_vertical_padding(self, padding: f32) -> Padding<Self>
where Self: Sized,

Source§

fn debug(self, color: u8) -> Debug<Self>
where Self: Sized,

Auto Trait Implementations§

§

impl<C> Freeze for Column<C>
where C: Freeze,

§

impl<C> RefUnwindSafe for Column<C>
where C: RefUnwindSafe,

§

impl<C> Send for Column<C>
where C: Send,

§

impl<C> Sync for Column<C>
where C: Sync,

§

impl<C> Unpin for Column<C>
where C: Unpin,

§

impl<C> UnwindSafe for Column<C>
where C: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> Finish for T

Source§

fn finish(self)

Does nothing but move self, equivalent to drop.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<U, T> ToOwnedObj<U> for T
where U: FromObjRef<T>,

Source§

fn to_owned_obj(&self, data: FontData<'_>) -> U

Convert this type into T, using the provided data to resolve any offsets.
Source§

impl<U, T> ToOwnedTable<U> for T
where U: FromTableRef<T>,

Source§

fn to_owned_table(&self) -> U

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

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

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> ErasedDestructor for T
where T: 'static,

Source§

impl<T> MaybeSendSync for T