From 3e11b954a73d4718750b130abd6f511e624ffce7 Mon Sep 17 00:00:00 2001 From: crupest Date: Wed, 2 Mar 2022 19:33:18 +0800 Subject: ... --- src/osx/graphics/quartz/Geometry.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'src/osx') diff --git a/src/osx/graphics/quartz/Geometry.cpp b/src/osx/graphics/quartz/Geometry.cpp index 87ddff3e..c88add87 100644 --- a/src/osx/graphics/quartz/Geometry.cpp +++ b/src/osx/graphics/quartz/Geometry.cpp @@ -15,6 +15,24 @@ bool QuartzGeometry::FillContains(const Point &point) { kCGPathFill); } +Rect QuartzGeometry::GetBounds() { + auto bounds = CGPathGetPathBoundingBox(cg_path_); + if (CGRectIsNull(bounds)) return {}; + return Convert(bounds); +} + +std::unique_ptr QuartzGeometry::Transform(const Matrix &matrix) { + auto cg_matrix = Convert(matrix); + auto cg_path = CGPathCreateCopyByTransformingPath(cg_path_, &cg_matrix); + return std::make_unique(GetGraphicsFactory(), cg_path); +} + +std::unique_ptr QuartzGeometry::CreateStrokeGeometry(float width) { + auto cg_path = CGPathCreateCopyByStrokingPath( + cg_path_, nullptr, width, kCGLineCapButt, kCGLineJoinMiter, 10); + return std::make_unique(GetGraphicsFactory(), cg_path); +} + QuartzGeometryBuilder::QuartzGeometryBuilder(IGraphicsFactory *graphics_factory) : OsxQuartzResource(graphics_factory) { cg_mutable_path_ = CGPathCreateMutable(); -- cgit v1.2.3