Remove role applications

This commit is contained in:
Laurenz 2022-11-09 22:49:25 +01:00
parent 010cc2effc
commit d9ce194fe7
8 changed files with 9 additions and 52 deletions

View File

@ -92,10 +92,6 @@ impl<const S: ShapeKind> LayoutInline for ShapeNode<S> {
let mut pod = Regions::one(regions.first, regions.base, regions.expand); let mut pod = Regions::one(regions.first, regions.base, regions.expand);
frames = child.layout_inline(world, &pod, styles)?; 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 // Relayout with full expansion into square region to make sure
// the result is really a square or circle. // the result is really a square or circle.
if is_quadratic(S) { if is_quadratic(S) {

View File

@ -207,10 +207,7 @@ impl<'a> FlowLayouter<'a> {
let frames = block.layout_block(world, &self.regions, styles)?; let frames = block.layout_block(world, &self.regions, styles)?;
let len = frames.len(); let len = frames.len();
for (i, mut frame) in frames.into_iter().enumerate() { for (i, frame) in frames.into_iter().enumerate() {
// Set the generic block role.
frame.apply_role(Role::GenericBlock);
// Grow our size, shrink the region and save the frame for later. // Grow our size, shrink the region and save the frame for later.
let size = frame.size(); let size = frame.size();
self.used.y += size.y; self.used.y += size.y;

View File

@ -481,14 +481,6 @@ impl<'a> GridLayouter<'a> {
let pod = Regions::one(size, base, Axes::splat(true)); let pod = Regions::one(size, base, Axes::splat(true));
let frame = cell.layout_block(self.world, &pod, self.styles)?.remove(0); 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); output.push_frame(pos, frame);
} }
@ -530,13 +522,6 @@ impl<'a> GridLayouter<'a> {
// Push the layouted frames into the individual output frames. // Push the layouted frames into the individual output frames.
let frames = cell.layout_block(self.world, &pod, self.styles)?; let frames = cell.layout_block(self.world, &pod, self.styles)?;
for (output, frame) in outputs.iter_mut().zip(frames) { 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); output.push_frame(pos, frame);
} }
} }

View File

@ -110,23 +110,16 @@ impl PageNode {
let pad = padding.resolve(styles).relative_to(size); let pad = padding.resolve(styles).relative_to(size);
let pw = size.x - pad.left - pad.right; let pw = size.x - pad.left - pad.right;
let py = size.y - pad.bottom; let py = size.y - pad.bottom;
for (role, marginal, pos, area) in [ for (marginal, pos, area) in [
(Role::Header, header, Point::with_x(pad.left), Size::new(pw, pad.top)), (header, Point::with_x(pad.left), Size::new(pw, pad.top)),
( (footer, Point::new(pad.left, py), Size::new(pw, pad.bottom)),
Role::Footer, (foreground, Point::zero(), size),
footer, (background, Point::zero(), size),
Point::new(pad.left, py),
Size::new(pw, pad.bottom),
),
(Role::Foreground, foreground, Point::zero(), size),
(Role::Background, background, Point::zero(), size),
] { ] {
if let Some(content) = marginal.resolve(world, page)? { if let Some(content) = marginal.resolve(world, page)? {
let pod = Regions::one(area, area, Axes::splat(true)); let pod = Regions::one(area, area, Axes::splat(true));
let mut sub = content.layout_block(world, &pod, styles)?.remove(0); let sub = content.layout_block(world, &pod, styles)?.remove(0);
sub.apply_role(role); if std::ptr::eq(marginal, background) {
if role == Role::Background {
frame.prepend_frame(pos, sub); frame.prepend_frame(pos, sub);
} else { } else {
frame.push_frame(pos, sub); frame.push_frame(pos, sub);

View File

@ -198,10 +198,7 @@ impl<'a> StackLayouter<'a> {
let frames = block.layout_block(world, &self.regions, styles)?; let frames = block.layout_block(world, &self.regions, styles)?;
let len = frames.len(); let len = frames.len();
for (i, mut frame) in frames.into_iter().enumerate() { for (i, frame) in frames.into_iter().enumerate() {
// Set the generic block role.
frame.apply_role(Role::GenericBlock);
// Grow our size, shrink the region and save the frame for later. // Grow our size, shrink the region and save the frame for later.
let size = frame.size(); let size = frame.size();
let size = match self.axis { let size = match self.axis {

View File

@ -87,7 +87,6 @@ pub fn layout_tex(
frame: { frame: {
let mut frame = Frame::new(size); let mut frame = Frame::new(size);
frame.set_baseline(top); frame.set_baseline(top);
frame.apply_role(Role::Formula);
frame frame
}, },
baseline: top, baseline: top,

View File

@ -530,7 +530,6 @@ fn prepare<'a>(
let pod = Regions::one(size, regions.base, Axes::splat(false)); let pod = Regions::one(size, regions.base, Axes::splat(false));
let mut frame = inline.layout_inline(world, &pod, styles)?.remove(0); let mut frame = inline.layout_inline(world, &pod, styles)?.remove(0);
frame.translate(Point::with_y(styles.get(TextNode::BASELINE))); frame.translate(Point::with_y(styles.get(TextNode::BASELINE)));
frame.apply_role(Role::GenericInline);
items.push(Item::Frame(frame)); items.push(Item::Frame(frame));
} }
} }
@ -1040,7 +1039,6 @@ fn stack(
let mut finished = vec![]; let mut finished = vec![];
let mut first = true; let mut first = true;
let mut output = Frame::new(Size::with_x(width)); let mut output = Frame::new(Size::with_x(width));
output.apply_role(Role::Paragraph);
// Stack the lines into one frame per region. // Stack the lines into one frame per region.
for line in lines { for line in lines {
@ -1050,7 +1048,6 @@ fn stack(
while !regions.first.y.fits(height) && !regions.in_last() { while !regions.first.y.fits(height) && !regions.in_last() {
finished.push(output); finished.push(output);
output = Frame::new(Size::with_x(width)); output = Frame::new(Size::with_x(width));
output.apply_role(Role::Paragraph);
regions.next(); regions.next();
first = true; first = true;
} }

View File

@ -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. /// Link the whole frame to a resource.
pub fn link(&mut self, dest: Destination) { pub fn link(&mut self, dest: Destination) {
self.push(Point::zero(), Element::Link(dest, self.size)); self.push(Point::zero(), Element::Link(dest, self.size));