diff options
author | Yuqian Yang <crupest@crupest.life> | 2025-09-21 23:40:30 +0800 |
---|---|---|
committer | Yuqian Yang <crupest@crupest.life> | 2025-09-21 23:43:31 +0800 |
commit | 6b78788d049c90dab3aec01d7bb7193f3927dc75 (patch) | |
tree | 977cfe754ccafb94e3e6743937d9132d2184df2f /src/platform/graphics/quartz/Geometry.cpp | |
parent | e31b0b8b37ae52e9402dc351e5fb0f361d30d0e0 (diff) | |
download | cru-geo-arc.tar.gz cru-geo-arc.tar.bz2 cru-geo-arc.zip |
HALF WORK!geo-arc
Diffstat (limited to 'src/platform/graphics/quartz/Geometry.cpp')
-rw-r--r-- | src/platform/graphics/quartz/Geometry.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/platform/graphics/quartz/Geometry.cpp b/src/platform/graphics/quartz/Geometry.cpp index e6558fbb..db0581a7 100644 --- a/src/platform/graphics/quartz/Geometry.cpp +++ b/src/platform/graphics/quartz/Geometry.cpp @@ -68,6 +68,20 @@ void QuartzGeometryBuilder::QuadraticBezierTo(const Point &control_point, control_point.y, end_point.x, end_point.y); } +void QuartzGeometryBuilder::ArcTo(const Point &radius, float angle, + bool is_large_arc, bool is_clockwise, + const Point &end_point) { + auto info = CalculateArcInfo(GetCurrentPosition(), radius, angle, + is_large_arc, is_clockwise, end_point); + + auto matrix = + Matrix::Translation(info.center) * Matrix::Scale(radius.x, radius.y); + CGAffineTransform transform = Convert(matrix); + + CGPathAddArc(cg_mutable_path_, &transform, 0, 0, 1, info.start_angle, + info.end_angle, true); +} + void QuartzGeometryBuilder::CloseFigure(bool close) { if (close) CGPathCloseSubpath(cg_mutable_path_); } |