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);
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) {

View File

@ -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;

View File

@ -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);
}
}

View File

@ -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);

View File

@ -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 {

View File

@ -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,

View File

@ -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;
}

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.
pub fn link(&mut self, dest: Destination) {
self.push(Point::zero(), Element::Link(dest, self.size));