pub struct CellGrid {
pub entries: Vec<Entry>,
pub cols: Vec<Sizing>,
pub rows: Vec<Sizing>,
pub vlines: Vec<Vec<Line>>,
pub hlines: Vec<Vec<Line>>,
pub headers: Vec<Repeatable<Header>>,
pub footer: Option<Repeatable<Footer>>,
pub has_gutter: bool,
}Expand description
A grid of cells, including the columns, rows, and cell data.
Fields§
§entries: Vec<Entry>The grid cells.
cols: Vec<Sizing>The column tracks including gutter tracks.
rows: Vec<Sizing>The row tracks including gutter tracks.
vlines: Vec<Vec<Line>>The vertical lines before each column, or on the end border. Gutter columns are not included. Contains up to ‘cols_without_gutter.len() + 1’ vectors of lines.
hlines: Vec<Vec<Line>>The horizontal lines on top of each row, or on the bottom border. Gutter rows are not included. Contains up to ‘rows_without_gutter.len() + 1’ vectors of lines.
headers: Vec<Repeatable<Header>>The repeatable headers of this grid.
The repeatable footer of this grid.
has_gutter: boolWhether this grid has gutters.
Implementations§
Source§impl CellGrid
impl CellGrid
Sourcepub fn new(
tracks: Axes<&[Sizing]>,
gutter: Axes<&[Sizing]>,
cells: impl IntoIterator<Item = Cell>,
) -> Self
pub fn new( tracks: Axes<&[Sizing]>, gutter: Axes<&[Sizing]>, cells: impl IntoIterator<Item = Cell>, ) -> Self
Generates the cell grid, given the tracks and cells.
Sourcepub fn new_internal(
tracks: Axes<&[Sizing]>,
gutter: Axes<&[Sizing]>,
vlines: Vec<Vec<Line>>,
hlines: Vec<Vec<Line>>,
headers: Vec<Repeatable<Header>>,
footer: Option<Repeatable<Footer>>,
entries: Vec<Entry>,
) -> Self
pub fn new_internal( tracks: Axes<&[Sizing]>, gutter: Axes<&[Sizing]>, vlines: Vec<Vec<Line>>, hlines: Vec<Vec<Line>>, headers: Vec<Repeatable<Header>>, footer: Option<Repeatable<Footer>>, entries: Vec<Entry>, ) -> Self
Generates the cell grid, given the tracks and resolved entries.
Sourcepub fn entry(&self, x: usize, y: usize) -> Option<&Entry>
pub fn entry(&self, x: usize, y: usize) -> Option<&Entry>
Get the grid entry in column x and row y.
Returns None if it’s a gutter cell.
Sourcepub fn cell(&self, x: usize, y: usize) -> Option<&Cell>
pub fn cell(&self, x: usize, y: usize) -> Option<&Cell>
Get the content of the cell in column x and row y.
Returns None if it’s a gutter cell or merged position.
Sourcepub fn parent_cell_position(&self, x: usize, y: usize) -> Option<Axes<usize>>
pub fn parent_cell_position(&self, x: usize, y: usize) -> Option<Axes<usize>>
Returns the position of the parent cell of the grid entry at the given position. It is guaranteed to have a non-gutter, non-merged cell at the returned position, due to how the grid is built.
- If the entry at the given position is a cell, returns the given position.
- If it is a merged cell, returns the parent cell’s position.
- If it is a gutter cell, returns None.
Sourcepub fn effective_parent_cell_position(
&self,
x: usize,
y: usize,
) -> Option<Axes<usize>>
pub fn effective_parent_cell_position( &self, x: usize, y: usize, ) -> Option<Axes<usize>>
Returns the position of the actual parent cell of a merged position,
even if the given position is gutter, in which case we return the
parent of the nearest adjacent content cell which could possibly span
the given gutter position. If the given position is not a gutter cell,
then this function will return the same as parent_cell_position would.
If the given position is a gutter cell, but no cell spans it, returns
None.
This is useful for lines. A line needs to check if a cell next to it has a stroke override - even at a gutter position there could be a stroke override, since a cell could be merged with two cells at both ends of the gutter cell (e.g. to its left and to its right), and thus that cell would impose a stroke under the gutter. This function allows getting the position of that cell (which spans the given gutter position, if it is gutter), if it exists; otherwise returns None (it’s gutter and no cell spans it).
Sourcepub fn is_gutter_track(&self, index: usize) -> bool
pub fn is_gutter_track(&self, index: usize) -> bool
Checks if the track with the given index is gutter. Does not check if the index is a valid track.
Sourcepub fn effective_colspan_of_cell(&self, cell: &Cell) -> usize
pub fn effective_colspan_of_cell(&self, cell: &Cell) -> usize
Returns the effective colspan of a cell, considering the gutters it might span if the grid has gutters.
Sourcepub fn effective_rowspan_of_cell(&self, cell: &Cell) -> usize
pub fn effective_rowspan_of_cell(&self, cell: &Cell) -> usize
Returns the effective rowspan of a cell, considering the gutters it might span if the grid has gutters.
pub fn non_gutter_column_count(&self) -> usize
pub fn non_gutter_row_count(&self) -> usize
pub fn has_repeated_headers(&self) -> bool
Trait Implementations§
impl StructuralPartialEq for CellGrid
Auto Trait Implementations§
impl Freeze for CellGrid
impl !RefUnwindSafe for CellGrid
impl Send for CellGrid
impl Sync for CellGrid
impl Unpin for CellGrid
impl !UnwindSafe for CellGrid
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> CheckedAs for T
impl<T> CheckedAs for T
Source§fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
Source§impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
Source§fn checked_cast_from(src: Src) -> Option<Dst>
fn checked_cast_from(src: Src) -> Option<Dst>
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> OverflowingAs for T
impl<T> OverflowingAs for T
Source§fn overflowing_as<Dst>(self) -> (Dst, bool)where
T: OverflowingCast<Dst>,
fn overflowing_as<Dst>(self) -> (Dst, bool)where
T: OverflowingCast<Dst>,
Source§impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere
Src: OverflowingCast<Dst>,
impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere
Src: OverflowingCast<Dst>,
Source§fn overflowing_cast_from(src: Src) -> (Dst, bool)
fn overflowing_cast_from(src: Src) -> (Dst, bool)
Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> SaturatingAs for T
impl<T> SaturatingAs for T
Source§fn saturating_as<Dst>(self) -> Dstwhere
T: SaturatingCast<Dst>,
fn saturating_as<Dst>(self) -> Dstwhere
T: SaturatingCast<Dst>,
Source§impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere
Src: SaturatingCast<Dst>,
impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere
Src: SaturatingCast<Dst>,
Source§fn saturating_cast_from(src: Src) -> Dst
fn saturating_cast_from(src: Src) -> Dst
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