diff options
| author | Eric Biedert <github@ericbiedert.de> | 2024-10-28 15:31:00 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-10-28 14:31:00 +0000 |
| commit | 45377f25ecbd33b56ec5fcd1335f20b13488a93d (patch) | |
| tree | 994bd469ffbadbafdba62f44143c1fbbcfb2b812 /crates/typst-library/src/visualize | |
| parent | 6dd05cc17ab0a1d6ddbc11854d1a662d91da142f (diff) | |
Fix clipping with outset (#5295)
Co-authored-by: Laurenz <laurmaedje@gmail.com>
Diffstat (limited to 'crates/typst-library/src/visualize')
| -rw-r--r-- | crates/typst-library/src/visualize/path.rs | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/crates/typst-library/src/visualize/path.rs b/crates/typst-library/src/visualize/path.rs index 76fd0df0..f592a712 100644 --- a/crates/typst-library/src/visualize/path.rs +++ b/crates/typst-library/src/visualize/path.rs @@ -1,4 +1,5 @@ use kurbo::ParamCurveExtrema; +use typst_utils::Numeric; use self::PathVertex::{AllControlPoints, MirroredControlPoint, Vertex}; use crate::diag::{bail, SourceResult}; @@ -228,6 +229,25 @@ impl Path { self.0.push(PathItem::ClosePath); } + /// Translate all points in this path by the given offset. + pub fn translate(&mut self, offset: Point) { + if offset.is_zero() { + return; + } + for item in self.0.iter_mut() { + match item { + PathItem::MoveTo(p) => *p += offset, + PathItem::LineTo(p) => *p += offset, + PathItem::CubicTo(p1, p2, p3) => { + *p1 += offset; + *p2 += offset; + *p3 += offset; + } + PathItem::ClosePath => (), + } + } + } + /// Computes the size of bounding box of this path. pub fn bbox_size(&self) -> Size { let mut min_x = Abs::inf(); |
