mirror of
https://github.com/typst/typst
synced 2025-08-12 06:07:54 +08:00
Remove role applications
This commit is contained in:
parent
010cc2effc
commit
d9ce194fe7
@ -92,10 +92,6 @@ impl<const S: ShapeKind> LayoutInline for ShapeNode<S> {
|
||||
let mut pod = Regions::one(regions.first, regions.base, regions.expand);
|
||||
frames = child.layout_inline(world, &pod, styles)?;
|
||||
|
||||
for frame in frames.iter_mut() {
|
||||
frame.apply_role(Role::GenericBlock);
|
||||
}
|
||||
|
||||
// Relayout with full expansion into square region to make sure
|
||||
// the result is really a square or circle.
|
||||
if is_quadratic(S) {
|
||||
|
@ -207,10 +207,7 @@ impl<'a> FlowLayouter<'a> {
|
||||
|
||||
let frames = block.layout_block(world, &self.regions, styles)?;
|
||||
let len = frames.len();
|
||||
for (i, mut frame) in frames.into_iter().enumerate() {
|
||||
// Set the generic block role.
|
||||
frame.apply_role(Role::GenericBlock);
|
||||
|
||||
for (i, frame) in frames.into_iter().enumerate() {
|
||||
// Grow our size, shrink the region and save the frame for later.
|
||||
let size = frame.size();
|
||||
self.used.y += size.y;
|
||||
|
@ -481,14 +481,6 @@ impl<'a> GridLayouter<'a> {
|
||||
|
||||
let pod = Regions::one(size, base, Axes::splat(true));
|
||||
let frame = cell.layout_block(self.world, &pod, self.styles)?.remove(0);
|
||||
match frame.role() {
|
||||
Some(Role::ListLabel | Role::ListItemBody) => {
|
||||
output.apply_role(Role::ListItem)
|
||||
}
|
||||
Some(Role::TableCell) => output.apply_role(Role::TableRow),
|
||||
_ => {}
|
||||
}
|
||||
|
||||
output.push_frame(pos, frame);
|
||||
}
|
||||
|
||||
@ -530,13 +522,6 @@ impl<'a> GridLayouter<'a> {
|
||||
// Push the layouted frames into the individual output frames.
|
||||
let frames = cell.layout_block(self.world, &pod, self.styles)?;
|
||||
for (output, frame) in outputs.iter_mut().zip(frames) {
|
||||
match frame.role() {
|
||||
Some(Role::ListLabel | Role::ListItemBody) => {
|
||||
output.apply_role(Role::ListItem)
|
||||
}
|
||||
Some(Role::TableCell) => output.apply_role(Role::TableRow),
|
||||
_ => {}
|
||||
}
|
||||
output.push_frame(pos, frame);
|
||||
}
|
||||
}
|
||||
|
@ -110,23 +110,16 @@ impl PageNode {
|
||||
let pad = padding.resolve(styles).relative_to(size);
|
||||
let pw = size.x - pad.left - pad.right;
|
||||
let py = size.y - pad.bottom;
|
||||
for (role, marginal, pos, area) in [
|
||||
(Role::Header, header, Point::with_x(pad.left), Size::new(pw, pad.top)),
|
||||
(
|
||||
Role::Footer,
|
||||
footer,
|
||||
Point::new(pad.left, py),
|
||||
Size::new(pw, pad.bottom),
|
||||
),
|
||||
(Role::Foreground, foreground, Point::zero(), size),
|
||||
(Role::Background, background, Point::zero(), size),
|
||||
for (marginal, pos, area) in [
|
||||
(header, Point::with_x(pad.left), Size::new(pw, pad.top)),
|
||||
(footer, Point::new(pad.left, py), Size::new(pw, pad.bottom)),
|
||||
(foreground, Point::zero(), size),
|
||||
(background, Point::zero(), size),
|
||||
] {
|
||||
if let Some(content) = marginal.resolve(world, page)? {
|
||||
let pod = Regions::one(area, area, Axes::splat(true));
|
||||
let mut sub = content.layout_block(world, &pod, styles)?.remove(0);
|
||||
sub.apply_role(role);
|
||||
|
||||
if role == Role::Background {
|
||||
let sub = content.layout_block(world, &pod, styles)?.remove(0);
|
||||
if std::ptr::eq(marginal, background) {
|
||||
frame.prepend_frame(pos, sub);
|
||||
} else {
|
||||
frame.push_frame(pos, sub);
|
||||
|
@ -198,10 +198,7 @@ impl<'a> StackLayouter<'a> {
|
||||
|
||||
let frames = block.layout_block(world, &self.regions, styles)?;
|
||||
let len = frames.len();
|
||||
for (i, mut frame) in frames.into_iter().enumerate() {
|
||||
// Set the generic block role.
|
||||
frame.apply_role(Role::GenericBlock);
|
||||
|
||||
for (i, frame) in frames.into_iter().enumerate() {
|
||||
// Grow our size, shrink the region and save the frame for later.
|
||||
let size = frame.size();
|
||||
let size = match self.axis {
|
||||
|
@ -87,7 +87,6 @@ pub fn layout_tex(
|
||||
frame: {
|
||||
let mut frame = Frame::new(size);
|
||||
frame.set_baseline(top);
|
||||
frame.apply_role(Role::Formula);
|
||||
frame
|
||||
},
|
||||
baseline: top,
|
||||
|
@ -530,7 +530,6 @@ fn prepare<'a>(
|
||||
let pod = Regions::one(size, regions.base, Axes::splat(false));
|
||||
let mut frame = inline.layout_inline(world, &pod, styles)?.remove(0);
|
||||
frame.translate(Point::with_y(styles.get(TextNode::BASELINE)));
|
||||
frame.apply_role(Role::GenericInline);
|
||||
items.push(Item::Frame(frame));
|
||||
}
|
||||
}
|
||||
@ -1040,7 +1039,6 @@ fn stack(
|
||||
let mut finished = vec![];
|
||||
let mut first = true;
|
||||
let mut output = Frame::new(Size::with_x(width));
|
||||
output.apply_role(Role::Paragraph);
|
||||
|
||||
// Stack the lines into one frame per region.
|
||||
for line in lines {
|
||||
@ -1050,7 +1048,6 @@ fn stack(
|
||||
while !regions.first.y.fits(height) && !regions.in_last() {
|
||||
finished.push(output);
|
||||
output = Frame::new(Size::with_x(width));
|
||||
output.apply_role(Role::Paragraph);
|
||||
regions.next();
|
||||
first = true;
|
||||
}
|
||||
|
@ -245,13 +245,6 @@ impl Frame {
|
||||
}
|
||||
}
|
||||
|
||||
/// Apply the given role to the frame if it doesn't already have one.
|
||||
pub fn apply_role(&mut self, role: Role) {
|
||||
if self.role.map_or(true, |prev| prev.is_weak() && !role.is_weak()) {
|
||||
self.role = Some(role);
|
||||
}
|
||||
}
|
||||
|
||||
/// Link the whole frame to a resource.
|
||||
pub fn link(&mut self, dest: Destination) {
|
||||
self.push(Point::zero(), Element::Link(dest, self.size));
|
||||
|
Loading…
x
Reference in New Issue
Block a user