summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--crates/typst/src/layout/grid/layout.rs4
-rw-r--r--crates/typst/src/visualize/image/mod.rs1
-rw-r--r--crates/typst/src/visualize/line.rs1
-rw-r--r--crates/typst/src/visualize/polygon.rs1
-rw-r--r--tests/ref/layout/hide.pngbin943 -> 49286 bytes
-rw-r--r--tests/typ/layout/hide.typ71
6 files changed, 78 insertions, 0 deletions
diff --git a/crates/typst/src/layout/grid/layout.rs b/crates/typst/src/layout/grid/layout.rs
index 24d641a6..b58e73c8 100644
--- a/crates/typst/src/layout/grid/layout.rs
+++ b/crates/typst/src/layout/grid/layout.rs
@@ -376,6 +376,10 @@ impl<'a> GridLayouter<'a> {
self.render_fills_strokes()?;
+ for frame in &mut self.finished {
+ frame.meta(self.styles, false);
+ }
+
Ok(Fragment::frames(self.finished))
}
diff --git a/crates/typst/src/visualize/image/mod.rs b/crates/typst/src/visualize/image/mod.rs
index 5bfda381..7aa8361b 100644
--- a/crates/typst/src/visualize/image/mod.rs
+++ b/crates/typst/src/visualize/image/mod.rs
@@ -236,6 +236,7 @@ impl Layout for ImageElem {
// Create a clipping group if only part of the image should be visible.
if fit == ImageFit::Cover && !target.fits(fitted) {
+ frame.meta(styles, false);
frame.clip(Path::rect(frame.size()));
}
diff --git a/crates/typst/src/visualize/line.rs b/crates/typst/src/visualize/line.rs
index 12ec4473..94841d39 100644
--- a/crates/typst/src/visualize/line.rs
+++ b/crates/typst/src/visualize/line.rs
@@ -89,6 +89,7 @@ impl Layout for LineElem {
let mut frame = Frame::soft(target);
let shape = Geometry::Line(delta.to_point()).stroked(stroke);
frame.push(start.to_point(), FrameItem::Shape(shape, self.span()));
+ frame.meta(styles, false);
Ok(Fragment::frame(frame))
}
}
diff --git a/crates/typst/src/visualize/polygon.rs b/crates/typst/src/visualize/polygon.rs
index 14156ce1..3b686f79 100644
--- a/crates/typst/src/visualize/polygon.rs
+++ b/crates/typst/src/visualize/polygon.rs
@@ -171,6 +171,7 @@ impl Layout for PolygonElem {
let shape = Shape { geometry: Geometry::Path(path), stroke, fill };
frame.push(Point::zero(), FrameItem::Shape(shape, self.span()));
+ frame.meta(styles, false);
Ok(Fragment::frame(frame))
}
diff --git a/tests/ref/layout/hide.png b/tests/ref/layout/hide.png
index 7367e8ce..d8980049 100644
--- a/tests/ref/layout/hide.png
+++ b/tests/ref/layout/hide.png
Binary files differ
diff --git a/tests/typ/layout/hide.typ b/tests/typ/layout/hide.typ
index a979b24f..2cd8333e 100644
--- a/tests/typ/layout/hide.typ
+++ b/tests/typ/layout/hide.typ
@@ -3,3 +3,74 @@
---
AB #h(1fr) CD \
#hide[A]B #h(1fr) C#hide[D]
+---
+Hidden:
+#hide[#line(length: 100%)]
+#line(length: 100%)
+---
+Hidden:
+#hide(table(rows: 2, columns: 2)[a][b][c][d])
+#table(rows: 2, columns: 2)[a][b][c][d]
+---
+Hidden:
+#hide[
+ #polygon((20%, 0pt),
+ (60%, 0pt),
+ (80%, 2cm),
+ (0%, 2cm),)
+]
+#polygon((20%, 0pt),
+ (60%, 0pt),
+ (80%, 2cm),
+ (0%, 2cm),)
+---
+#set rect(
+ inset: 8pt,
+ fill: rgb("e4e5ea"),
+ width: 100%,
+)
+
+Hidden:
+#hide[
+#grid(
+ columns: (1fr, 1fr, 2fr),
+ rows: (auto, 40pt),
+ gutter: 3pt,
+ rect[A],
+ rect[B],
+ rect[C],
+ rect(height: 100%)[D],
+)
+]
+#grid(
+ columns: (1fr, 1fr, 2fr),
+ rows: (auto, 40pt),
+ gutter: 3pt,
+ rect[A],
+ rect[B],
+ rect[C],
+ rect(height: 100%)[D],
+)
+---
+
+Hidden:
+#hide[
+- 1
+- 2
+ 1. A
+ 2. B
+- 3
+]
+
+
+- 1
+- 2
+ 1. A
+ 2. B
+- 3
+
+---
+Hidden:
+#hide(image("/files/tiger.jpg", width: 5cm, height: 1cm,))
+
+#image("/files/tiger.jpg", width: 5cm, height: 1cm,)