Struct layout_2013::table::TableFlow
source · #[repr(C)]pub struct TableFlow {
pub block_flow: BlockFlow,
pub column_intrinsic_inline_sizes: Vec<ColumnIntrinsicInlineSize>,
pub column_computed_inline_sizes: Vec<ColumnComputedInlineSize>,
pub collapsed_inline_direction_border_widths_for_table: Vec<Au>,
pub collapsed_block_direction_border_widths_for_table: Vec<Au>,
pub table_layout: TableLayout,
}
Expand description
A table flow corresponded to the table’s internal table fragment under a table wrapper flow.
The properties position
, float
, and margin-*
are used on the table wrapper fragment,
not table fragment per CSS 2.1 § 10.5.
Fields§
§block_flow: BlockFlow
§column_intrinsic_inline_sizes: Vec<ColumnIntrinsicInlineSize>
Information about the intrinsic inline-sizes of each column, computed bottom-up during intrinsic inline-size bubbling.
column_computed_inline_sizes: Vec<ColumnComputedInlineSize>
Information about the actual inline sizes of each column, computed top-down during actual inline-size bubbling.
collapsed_inline_direction_border_widths_for_table: Vec<Au>
The final width of the borders in the inline direction for each cell, computed by the entire table and pushed down into each row during inline size computation.
collapsed_block_direction_border_widths_for_table: Vec<Au>
The final width of the borders in the block direction for each cell, computed by the entire table and pushed down into each row during inline size computation.
table_layout: TableLayout
Table-layout property
Implementations§
source§impl TableFlow
impl TableFlow
pub fn from_fragment(fragment: Fragment) -> TableFlow
sourcefn update_automatic_column_inline_sizes(
parent_inline_sizes: &mut Vec<ColumnIntrinsicInlineSize>,
child_cell_inline_sizes: &[CellIntrinsicInlineSize],
surrounding_size: Au,
) -> IntrinsicISizes
fn update_automatic_column_inline_sizes( parent_inline_sizes: &mut Vec<ColumnIntrinsicInlineSize>, child_cell_inline_sizes: &[CellIntrinsicInlineSize], surrounding_size: Au, ) -> IntrinsicISizes
Update the corresponding value of self_inline_sizes
if a value of kid_inline_sizes
has
a larger value than one of self_inline_sizes
. Returns the minimum and preferred inline
sizes.
sourcefn update_column_inline_sizes_for_row(
row: &TableRowFlow,
column_inline_sizes: &mut Vec<ColumnIntrinsicInlineSize>,
computation: &mut IntrinsicISizesContribution,
first_row: bool,
table_layout: TableLayout,
surrounding_inline_size: Au,
)
fn update_column_inline_sizes_for_row( row: &TableRowFlow, column_inline_sizes: &mut Vec<ColumnIntrinsicInlineSize>, computation: &mut IntrinsicISizesContribution, first_row: bool, table_layout: TableLayout, surrounding_inline_size: Au, )
Updates the minimum and preferred inline-size calculation for a single row. This is factored out into a separate function because we process children of rowgroups too.
sourcepub fn spacing(&self) -> T
pub fn spacing(&self) -> T
Returns the effective spacing per cell, taking the value of border-collapse
into account.
pub fn total_horizontal_spacing(&self) -> Au
fn column_styles(&self) -> Vec<ColumnStyle<'_>>
Trait Implementations§
source§impl Flow for TableFlow
impl Flow for TableFlow
source§fn bubble_inline_sizes(&mut self)
fn bubble_inline_sizes(&mut self)
The specified column inline-sizes are set from column group and the first row for the fixed table layout calculation. The maximum min/pref inline-sizes of each column are set from the rows for the automatic table layout calculation.
source§fn assign_inline_sizes(&mut self, layout_context: &LayoutContext<'_>)
fn assign_inline_sizes(&mut self, layout_context: &LayoutContext<'_>)
Recursively (top-down) determines the actual inline-size of child contexts and fragments. When called on this context, the context has had its inline-size set by the parent context.
source§fn as_mut_table(&mut self) -> &mut TableFlow
fn as_mut_table(&mut self) -> &mut TableFlow
source§fn as_table(&self) -> &TableFlow
fn as_table(&self) -> &TableFlow
source§fn as_mut_block(&mut self) -> &mut BlockFlow
fn as_mut_block(&mut self) -> &mut BlockFlow
source§fn as_block(&self) -> &BlockFlow
fn as_block(&self) -> &BlockFlow
source§fn mark_as_root(&mut self)
fn mark_as_root(&mut self)
source§fn assign_block_size(&mut self, lc: &LayoutContext<'_>)
fn assign_block_size(&mut self, lc: &LayoutContext<'_>)
source§fn compute_stacking_relative_position(
&mut self,
layout_context: &LayoutContext<'_>,
)
fn compute_stacking_relative_position( &mut self, layout_context: &LayoutContext<'_>, )
source§fn generated_containing_block_size(&self, flow: OpaqueFlow) -> LogicalSize<Au>
fn generated_containing_block_size(&self, flow: OpaqueFlow) -> LogicalSize<Au>
for_flow
. For block flows, this is the padding box. Read moresource§fn update_late_computed_inline_position_if_necessary(
&mut self,
inline_position: Au,
)
fn update_late_computed_inline_position_if_necessary( &mut self, inline_position: Au, )
source§fn update_late_computed_block_position_if_necessary(
&mut self,
block_position: Au,
)
fn update_late_computed_block_position_if_necessary( &mut self, block_position: Au, )
source§fn build_display_list(&mut self, state: &mut DisplayListBuildState<'_>)
fn build_display_list(&mut self, state: &mut DisplayListBuildState<'_>)
fn collect_stacking_contexts( &mut self, state: &mut StackingContextCollectionState, )
source§fn repair_style(&mut self, new_style: &Arc<ComputedValues>)
fn repair_style(&mut self, new_style: &Arc<ComputedValues>)
source§fn compute_overflow(&self) -> Overflow
fn compute_overflow(&self) -> Overflow
source§fn iterate_through_fragment_border_boxes(
&self,
iterator: &mut dyn FragmentBorderBoxIterator,
level: i32,
stacking_context_position: &Point2D<Au>,
)
fn iterate_through_fragment_border_boxes( &self, iterator: &mut dyn FragmentBorderBoxIterator, level: i32, stacking_context_position: &Point2D<Au>, )
source§fn mutate_fragments(&mut self, mutator: &mut dyn FnMut(&mut Fragment))
fn mutate_fragments(&mut self, mutator: &mut dyn FnMut(&mut Fragment))
source§fn print_extra_flow_children(&self, print_tree: &mut PrintTree)
fn print_extra_flow_children(&self, print_tree: &mut PrintTree)
source§fn as_flex(&self) -> &FlexFlow
fn as_flex(&self) -> &FlexFlow
source§fn as_inline(&self) -> &InlineFlow
fn as_inline(&self) -> &InlineFlow
source§fn as_mut_inline(&mut self) -> &mut InlineFlow
fn as_mut_inline(&mut self) -> &mut InlineFlow
source§fn as_table_wrapper(&self) -> &TableWrapperFlow
fn as_table_wrapper(&self) -> &TableWrapperFlow
source§fn as_mut_table_colgroup(&mut self) -> &mut TableColGroupFlow
fn as_mut_table_colgroup(&mut self) -> &mut TableColGroupFlow
source§fn as_table_colgroup(&self) -> &TableColGroupFlow
fn as_table_colgroup(&self) -> &TableColGroupFlow
source§fn as_mut_table_rowgroup(&mut self) -> &mut TableRowGroupFlow
fn as_mut_table_rowgroup(&mut self) -> &mut TableRowGroupFlow
source§fn as_table_rowgroup(&self) -> &TableRowGroupFlow
fn as_table_rowgroup(&self) -> &TableRowGroupFlow
source§fn as_mut_table_row(&mut self) -> &mut TableRowFlow
fn as_mut_table_row(&mut self) -> &mut TableRowFlow
source§fn as_table_row(&self) -> &TableRowFlow
fn as_table_row(&self) -> &TableRowFlow
source§fn as_mut_table_cell(&mut self) -> &mut TableCellFlow
fn as_mut_table_cell(&mut self) -> &mut TableCellFlow
source§fn as_table_cell(&self) -> &TableCellFlow
fn as_table_cell(&self) -> &TableCellFlow
source§fn fragment(
&mut self,
layout_context: &LayoutContext<'_>,
_fragmentation_context: Option<FragmentationContext>,
) -> Option<Arc<dyn Flow>>
fn fragment( &mut self, layout_context: &LayoutContext<'_>, _fragmentation_context: Option<FragmentationContext>, ) -> Option<Arc<dyn Flow>>
assign_block_size
, but is recurses explicitly into descendants.
Fit as much content as possible within available_block_size
.
If that’s not all of it, truncate the contents of self
and return a new flow similar to self
with the rest of the content. Read moresource§fn place_float_if_applicable(&mut self)
fn place_float_if_applicable(&mut self)
source§fn assign_block_size_for_inorder_child_if_necessary(
&mut self,
layout_context: &LayoutContext<'_>,
parent_thread_id: u8,
_content_box: LogicalRect<Au>,
) -> bool
fn assign_block_size_for_inorder_child_if_necessary( &mut self, layout_context: &LayoutContext<'_>, parent_thread_id: u8, _content_box: LogicalRect<Au>, ) -> bool
fn has_non_invertible_transform_or_zero_scale(&self) -> bool
fn get_overflow_in_parent_coordinates(&self) -> Overflow
source§fn store_overflow(&mut self, _: &LayoutContext<'_>)
fn store_overflow(&mut self, _: &LayoutContext<'_>)
fn is_root(&self) -> bool
source§fn positioning(&self) -> Position
fn positioning(&self) -> Position
fn contains_positioned_fragments(&self) -> bool
fn contains_relatively_positioned_fragments(&self) -> bool
source§fn is_absolute_containing_block(&self) -> bool
fn is_absolute_containing_block(&self) -> bool
source§fn contains_roots_of_absolute_flow_tree(&self) -> bool
fn contains_roots_of_absolute_flow_tree(&self) -> bool
fn clipping_and_scrolling(&self) -> ClippingAndScrolling
impl HasBaseFlow for TableFlow
Auto Trait Implementations§
impl !Freeze for TableFlow
impl !RefUnwindSafe for TableFlow
impl Send for TableFlow
impl Sync for TableFlow
impl Unpin for TableFlow
impl !UnwindSafe for TableFlow
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
source§impl<T> GetBaseFlow for Twhere
T: HasBaseFlow + ?Sized,
impl<T> GetBaseFlow for Twhere
T: HasBaseFlow + ?Sized,
source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§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