aboutsummaryrefslogtreecommitdiff
path: root/src/platform/graphics/Geometry.cpp
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2023-10-12 17:10:18 +0800
committercrupest <crupest@outlook.com>2023-10-12 17:10:18 +0800
commit9a077caa6d3f7eb8255ae68916dccac9b50a4333 (patch)
tree486f5f01d5de8ff1b236029e1b955df1d70728a8 /src/platform/graphics/Geometry.cpp
parent6fc14693d01f2be98b45d70405b16883607d4666 (diff)
downloadcru-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.cpp31
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;