diff options
author | crupest <crupest@outlook.com> | 2023-10-12 17:10:18 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2023-10-12 17:10:18 +0800 |
commit | 9a077caa6d3f7eb8255ae68916dccac9b50a4333 (patch) | |
tree | 486f5f01d5de8ff1b236029e1b955df1d70728a8 /src/platform/graphics/Geometry.cpp | |
parent | 6fc14693d01f2be98b45d70405b16883607d4666 (diff) | |
download | cru-9a077caa6d3f7eb8255ae68916dccac9b50a4333.tar.gz cru-9a077caa6d3f7eb8255ae68916dccac9b50a4333.tar.bz2 cru-9a077caa6d3f7eb8255ae68916dccac9b50a4333.zip |
...
Diffstat (limited to 'src/platform/graphics/Geometry.cpp')
-rw-r--r-- | src/platform/graphics/Geometry.cpp | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/platform/graphics/Geometry.cpp b/src/platform/graphics/Geometry.cpp index 20197153..b6f2a724 100644 --- a/src/platform/graphics/Geometry.cpp +++ b/src/platform/graphics/Geometry.cpp @@ -12,6 +12,37 @@ bool IGeometry::StrokeContains(float width, const Point& point) { return geometry->FillContains(point); } +void IGeometryBuilder::RelativeMoveTo(const Point& offset) { + MoveTo(GetCurrentPosition() + offset); +} + +void IGeometryBuilder::RelativeLineTo(const Point& offset) { + LineTo(GetCurrentPosition() + offset); +} + +void IGeometryBuilder::RelativeCubicBezierTo(const Point& start_control_offset, + const Point& end_control_offset, + const Point& end_offset) { + auto current_position = GetCurrentPosition(); + CubicBezierTo(current_position + start_control_offset, + current_position + end_control_offset, + current_position + end_offset); +} + +void IGeometryBuilder::RelativeQuadraticBezierTo(const Point& control_offset, + const Point& end_offset) { + auto current_position = GetCurrentPosition(); + QuadraticBezierTo(current_position + control_offset, + current_position + end_offset); +} + +void IGeometryBuilder::RelativeArcTo(const Point& radius, float angle, + bool is_large_arc, bool is_clockwise, + const Point& end_offset) { + ArcTo(radius, angle, is_large_arc, is_clockwise, + GetCurrentPosition() + end_offset); +} + constexpr float PI = 3.14159265358979323846f; using std::abs; |