From a20847bef6f1f05f5509d355a3848be5f1545811 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mart=C3=ADn=20Capello?= Date: Mon, 15 Sep 2025 16:21:38 -0300 Subject: [PATCH] Fix Intertwine interface --- src/app/tools/intertwine.cpp | 23 ------------- src/app/tools/intertwine.h | 10 ------ src/app/tools/intertwiners.h | 63 +++++++++++++++++++++++++++--------- 3 files changed, 47 insertions(+), 49 deletions(-) diff --git a/src/app/tools/intertwine.cpp b/src/app/tools/intertwine.cpp index cb3106c7d..8e1d784f6 100644 --- a/src/app/tools/intertwine.cpp +++ b/src/app/tools/intertwine.cpp @@ -159,27 +159,4 @@ doc::AlgoLineWithAlgoPixel Intertwine::getLineAlgo(ToolLoop* loop, } } -// static -void Intertwine::doPointshapeSlicedCircle(int x1, - int y1, - int x2, - int y2, - int r, - ToolLoop* loop, - bool fill) -{ - if (fill) { - algo_sliced_circlefill(x1, y1, x2, y2, r, loop, (AlgoHLine)doPointshapeHline); - } - else { - algo_sliced_circle(x1, y1, x2, y2, r, loop, (AlgoPixel)doPointshapePoint); - } -} - -// static -void Intertwine::doPointshapeArc(int xm, int ym, double sa, double ea, int r, ToolLoop* loop) -{ - algo_arc(xm, ym, sa, ea, r, loop, (AlgoPixel)doPointshapePoint); -} - }} // namespace app::tools diff --git a/src/app/tools/intertwine.h b/src/app/tools/intertwine.h index 52a8a3daf..e7881b5fd 100644 --- a/src/app/tools/intertwine.h +++ b/src/app/tools/intertwine.h @@ -62,16 +62,6 @@ protected: static doc::AlgoLineWithAlgoPixel getLineAlgo(ToolLoop* loop, const Stroke::Pt& a, const Stroke::Pt& b); - - static void doPointshapeSlicedCircle(int x1, - int y1, - int x2, - int y2, - int r, - ToolLoop* loop, - bool fill = false); - - static void doPointshapeArc(int xm, int ym, double sa, double ea, int r, ToolLoop* loop); }; }} // namespace app::tools diff --git a/src/app/tools/intertwiners.h b/src/app/tools/intertwiners.h index cfd326f42..9d0f0c6d0 100644 --- a/src/app/tools/intertwiners.h +++ b/src/app/tools/intertwiners.h @@ -11,6 +11,7 @@ #include "app/tools/tool_loop.h" #include "app/tools/tool_loop_modifiers.h" #include "base/pi.h" +#include "doc/algo.h" #include "doc/algorithm/polygon.h" #include "doc/layer_tilemap.h" #include "gfx/point.h" @@ -202,7 +203,7 @@ public: int w = x2 - x1 + 1; int h = y2 - y1 + 1; r = std::min(w, std::min(h, 2 * cornerRadius)) / 2; - doPointshapeSlicedCircle(x1, y1, x2, y2, r, loop); + algo_sliced_circle(x1, y1, x2, y2, r, loop, (AlgoPixel)doPointshapePoint); } doPointshapeLineWithoutDynamics(x1 + r, y1, x2 - r, y1, loop); @@ -234,10 +235,22 @@ public: const double ang_minus_PI_2 = base::fmod_radians(angle - PI / 2); const double ang_plus_PI_2 = base::fmod_radians(angle + PI / 2); const double ang_plus_PI = base::fmod_radians(angle + PI); - doPointshapeArc(p[2].x, p[2].y, ang_minus_PI_2, angle, r, loop); - doPointshapeArc(p[5].x, p[5].y, angle, ang_plus_PI_2, r, loop); - doPointshapeArc(p[8].x, p[8].y, ang_plus_PI_2, ang_plus_PI, r, loop); - doPointshapeArc(p[11].x, p[11].y, ang_plus_PI, ang_minus_PI_2, r, loop); + algo_arc(p[2].x, p[2].y, ang_minus_PI_2, angle, r, loop, (AlgoPixel)doPointshapePoint); + algo_arc(p[5].x, p[5].y, angle, ang_plus_PI_2, r, loop, (AlgoPixel)doPointshapePoint); + algo_arc(p[8].x, + p[8].y, + ang_plus_PI_2, + ang_plus_PI, + r, + loop, + (AlgoPixel)doPointshapePoint); + algo_arc(p[11].x, + p[11].y, + ang_plus_PI, + ang_minus_PI_2, + r, + loop, + (AlgoPixel)doPointshapePoint); } } } @@ -271,7 +284,7 @@ public: int w = x2 - x1 + 1; int h = y2 - y1 + 1; r = std::min(w, std::min(h, 2 * cornerRadius)) / 2; - doPointshapeSlicedCircle(x1, y1, x2, y2, r, loop, true); + algo_sliced_circlefill(x1, y1, x2, y2, r, loop, (AlgoHLine)doPointshapeHline); for (y = y1; y < y1 + r; y++) doPointshapeLineWithoutDynamics(x1 + r, y, x2 - r, y, loop); @@ -295,16 +308,34 @@ public: Stroke p = rotateRectangle(x1, y1, x2, y2, angle, cornerRadius); auto v = p.toXYInts(); doc::algorithm::polygon(v.size() / 2, &v[0], loop, (AlgoHLine)doPointshapeHline); - doPointshapeSlicedCircle(p[2].x - r, p[2].y - r, p[2].x + r, p[2].y + r, r, loop, true); - doPointshapeSlicedCircle(p[5].x - r, p[5].y - r, p[5].x + r, p[5].y + r, r, loop, true); - doPointshapeSlicedCircle(p[8].x - r, p[8].y - r, p[8].x + r, p[8].y + r, r, loop, true); - doPointshapeSlicedCircle(p[11].x - r, - p[11].y - r, - p[11].x + r, - p[11].y + r, - r, - loop, - true); + algo_sliced_circlefill(p[2].x - r, + p[2].y - r, + p[2].x + r, + p[2].y + r, + r, + loop, + (AlgoHLine)doPointshapeHline); + algo_sliced_circlefill(p[5].x - r, + p[5].y - r, + p[5].x + r, + p[5].y + r, + r, + loop, + (AlgoHLine)doPointshapeHline); + algo_sliced_circlefill(p[8].x - r, + p[8].y - r, + p[8].x + r, + p[8].y + r, + r, + loop, + (AlgoHLine)doPointshapeHline); + algo_sliced_circlefill(p[11].x - r, + p[11].y - r, + p[11].x + r, + p[11].y + r, + r, + loop, + (AlgoHLine)doPointshapeHline); } } }