From 6b78788d049c90dab3aec01d7bb7193f3927dc75 Mon Sep 17 00:00:00 2001 From: Yuqian Yang Date: Sun, 21 Sep 2025 23:40:30 +0800 Subject: HALF WORK! --- include/cru/platform/graphics/Geometry.h | 12 ++++++++++++ include/cru/platform/graphics/quartz/Geometry.h | 2 ++ 2 files changed, 14 insertions(+) (limited to 'include/cru/platform/graphics') diff --git a/include/cru/platform/graphics/Geometry.h b/include/cru/platform/graphics/Geometry.h index b4b05194..6550a8ce 100644 --- a/include/cru/platform/graphics/Geometry.h +++ b/include/cru/platform/graphics/Geometry.h @@ -63,6 +63,18 @@ struct CRU_PLATFORM_GRAPHICS_API IGeometry : virtual IGraphicsResource { * virtual so it can override them. */ struct CRU_PLATFORM_GRAPHICS_API IGeometryBuilder : virtual IGraphicsResource { + struct ArcInfo { + Point center; + // In radian. + float start_angle; + // In radian. + float end_angle; + }; + + static ArcInfo CalculateArcInfo(const Point& start_point, const Point& radius, + float angle, bool is_large_arc, bool is_clockwise, + const Point& end_point); + virtual Point GetCurrentPosition() = 0; virtual void MoveTo(const Point& point) = 0; diff --git a/include/cru/platform/graphics/quartz/Geometry.h b/include/cru/platform/graphics/quartz/Geometry.h index 18e2e25e..14d06deb 100644 --- a/include/cru/platform/graphics/quartz/Geometry.h +++ b/include/cru/platform/graphics/quartz/Geometry.h @@ -47,6 +47,8 @@ class QuartzGeometryBuilder : public OsxQuartzResource, const Point &end_point) override; void QuadraticBezierTo(const Point &control_point, const Point &end_point) override; + void ArcTo(const Point &radius, float angle, bool is_large_arc, + bool is_clockwise, const Point &end_point) override; void CloseFigure(bool close) override; std::unique_ptr Build() override; -- cgit v1.2.3