mirror of
https://github.com/typst/typst
synced 2025-07-16 00:52:54 +08:00
add footer level fields
This commit is contained in:
parent
eae79440b0
commit
8c416b88f2
@ -496,6 +496,16 @@ pub struct GridFooter {
|
|||||||
#[default(true)]
|
#[default(true)]
|
||||||
pub repeat: bool,
|
pub repeat: bool,
|
||||||
|
|
||||||
|
/// The level of the footer. Must not be zero.
|
||||||
|
///
|
||||||
|
/// This allows repeating multiple footers at once. Footers with different
|
||||||
|
/// levels can repeat together, as long as they have descending levels.
|
||||||
|
///
|
||||||
|
/// Notably, when a footer with a lower level stops repeating, all higher
|
||||||
|
/// or equal level headers start repeating, replacing the previous footer.
|
||||||
|
#[default(NonZeroU32::ONE)]
|
||||||
|
pub level: NonZeroU32,
|
||||||
|
|
||||||
/// The cells and lines within the footer.
|
/// The cells and lines within the footer.
|
||||||
#[variadic]
|
#[variadic]
|
||||||
pub children: Vec<GridItem>,
|
pub children: Vec<GridItem>,
|
||||||
|
@ -54,6 +54,7 @@ pub fn grid_to_cellgrid<'a>(
|
|||||||
},
|
},
|
||||||
GridChild::Footer(footer) => ResolvableGridChild::Footer {
|
GridChild::Footer(footer) => ResolvableGridChild::Footer {
|
||||||
repeat: footer.repeat(styles),
|
repeat: footer.repeat(styles),
|
||||||
|
level: footer.level(styles),
|
||||||
span: footer.span(),
|
span: footer.span(),
|
||||||
items: footer.children.iter().map(resolve_item),
|
items: footer.children.iter().map(resolve_item),
|
||||||
},
|
},
|
||||||
@ -108,6 +109,7 @@ pub fn table_to_cellgrid<'a>(
|
|||||||
},
|
},
|
||||||
TableChild::Footer(footer) => ResolvableGridChild::Footer {
|
TableChild::Footer(footer) => ResolvableGridChild::Footer {
|
||||||
repeat: footer.repeat(styles),
|
repeat: footer.repeat(styles),
|
||||||
|
level: footer.level(styles),
|
||||||
span: footer.span(),
|
span: footer.span(),
|
||||||
items: footer.children.iter().map(resolve_item),
|
items: footer.children.iter().map(resolve_item),
|
||||||
},
|
},
|
||||||
@ -647,7 +649,7 @@ impl<'a> Entry<'a> {
|
|||||||
/// Any grid child, which can be either a header or an item.
|
/// Any grid child, which can be either a header or an item.
|
||||||
pub enum ResolvableGridChild<T: ResolvableCell, I> {
|
pub enum ResolvableGridChild<T: ResolvableCell, I> {
|
||||||
Header { repeat: bool, level: NonZeroU32, span: Span, items: I },
|
Header { repeat: bool, level: NonZeroU32, span: Span, items: I },
|
||||||
Footer { repeat: bool, span: Span, items: I },
|
Footer { repeat: bool, level: NonZeroU32, span: Span, items: I },
|
||||||
Item(ResolvableGridItem<T>),
|
Item(ResolvableGridItem<T>),
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1213,7 +1215,7 @@ impl<'x> CellGridResolver<'_, '_, 'x> {
|
|||||||
let mut first_available_row = 0;
|
let mut first_available_row = 0;
|
||||||
|
|
||||||
let (header_footer_items, simple_item) = match child {
|
let (header_footer_items, simple_item) = match child {
|
||||||
ResolvableGridChild::Header { repeat, level, span, items, .. } => {
|
ResolvableGridChild::Header { repeat, level, span, items } => {
|
||||||
row_group_data = Some(RowGroupData {
|
row_group_data = Some(RowGroupData {
|
||||||
range: None,
|
range: None,
|
||||||
span,
|
span,
|
||||||
@ -1240,13 +1242,13 @@ impl<'x> CellGridResolver<'_, '_, 'x> {
|
|||||||
|
|
||||||
(Some(items), None)
|
(Some(items), None)
|
||||||
}
|
}
|
||||||
ResolvableGridChild::Footer { repeat, span, items, .. } => {
|
ResolvableGridChild::Footer { repeat, level, span, items } => {
|
||||||
row_group_data = Some(RowGroupData {
|
row_group_data = Some(RowGroupData {
|
||||||
range: None,
|
range: None,
|
||||||
span,
|
span,
|
||||||
repeat,
|
repeat,
|
||||||
kind: RowGroupKind::Footer,
|
kind: RowGroupKind::Footer,
|
||||||
repeatable_level: NonZeroU32::ONE,
|
repeatable_level: level,
|
||||||
top_hlines_start: pending_hlines.len(),
|
top_hlines_start: pending_hlines.len(),
|
||||||
top_hlines_end: None,
|
top_hlines_end: None,
|
||||||
});
|
});
|
||||||
|
@ -590,6 +590,16 @@ pub struct TableFooter {
|
|||||||
#[default(true)]
|
#[default(true)]
|
||||||
pub repeat: bool,
|
pub repeat: bool,
|
||||||
|
|
||||||
|
/// The level of the footer. Must not be zero.
|
||||||
|
///
|
||||||
|
/// This allows repeating multiple footers at once. Footers with different
|
||||||
|
/// levels can repeat together, as long as they have descending levels.
|
||||||
|
///
|
||||||
|
/// Notably, when a footer with a lower level stops repeating, all higher
|
||||||
|
/// or equal level headers start repeating, replacing the previous footer.
|
||||||
|
#[default(NonZeroU32::ONE)]
|
||||||
|
pub level: NonZeroU32,
|
||||||
|
|
||||||
/// The cells and lines within the footer.
|
/// The cells and lines within the footer.
|
||||||
#[variadic]
|
#[variadic]
|
||||||
pub children: Vec<TableItem>,
|
pub children: Vec<TableItem>,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user