[aseprite] 237/250: Fix symmetry for even brush sizes (2px, 4px, etc.)
Tobias Hansen
thansen at moszumanska.debian.org
Sun Dec 20 15:27:35 UTC 2015
This is an automated email from the git hooks/post-receive script.
thansen pushed a commit to branch master
in repository aseprite.
commit 95b0aec22e8b26622b89edba231a4d2dfaa7ff9f
Author: David Capello <davidcapello at gmail.com>
Date: Thu Nov 5 16:58:22 2015 -0300
Fix symmetry for even brush sizes (2px, 4px, etc.)
---
src/app/tools/intertwine.cpp | 2 +-
src/app/tools/symmetries.cpp | 16 ++++++++++++----
src/app/tools/symmetries.h | 6 ++++--
src/app/tools/symmetry.h | 4 +++-
src/app/tools/tool_loop_manager.cpp | 2 +-
5 files changed, 21 insertions(+), 9 deletions(-)
diff --git a/src/app/tools/intertwine.cpp b/src/app/tools/intertwine.cpp
index 02e992e..ce918b3 100644
--- a/src/app/tools/intertwine.cpp
+++ b/src/app/tools/intertwine.cpp
@@ -35,7 +35,7 @@ void Intertwine::doPointshapePoint(int x, int y, ToolLoop* loop)
main_stroke.addPoint(Point(x, y) + origin);
Strokes strokes;
- symmetry->generateStrokes(main_stroke, strokes);
+ symmetry->generateStrokes(main_stroke, strokes, loop);
for (const auto& stroke : strokes) {
// We call transformPoint() moving back each point to the cel
// origin.
diff --git a/src/app/tools/symmetries.cpp b/src/app/tools/symmetries.cpp
index 6f34f79..2d2ccee 100644
--- a/src/app/tools/symmetries.cpp
+++ b/src/app/tools/symmetries.cpp
@@ -12,27 +12,35 @@
#include "app/tools/symmetries.h"
#include "app/tools/stroke.h"
+#include "app/tools/tool_loop.h"
+#include "doc/brush.h"
namespace app {
namespace tools {
-void HorizontalSymmetry::generateStrokes(const Stroke& mainStroke, Strokes& strokes)
+void HorizontalSymmetry::generateStrokes(const Stroke& mainStroke, Strokes& strokes,
+ ToolLoop* loop)
{
+ int adjust = (loop->getBrush()->bounds().w % 2);
+
strokes.push_back(mainStroke);
Stroke stroke2;
for (const auto& pt : mainStroke)
- stroke2.addPoint(gfx::Point(m_x - (pt.x - m_x + 1), pt.y));
+ stroke2.addPoint(gfx::Point(m_x - (pt.x - m_x + adjust), pt.y));
strokes.push_back(stroke2);
}
-void VerticalSymmetry::generateStrokes(const Stroke& mainStroke, Strokes& strokes)
+void VerticalSymmetry::generateStrokes(const Stroke& mainStroke, Strokes& strokes,
+ ToolLoop* loop)
{
+ int adjust = (loop->getBrush()->bounds().h % 2);
+
strokes.push_back(mainStroke);
Stroke stroke2;
for (const auto& pt : mainStroke)
- stroke2.addPoint(gfx::Point(pt.x, m_y - (pt.y - m_y + 1)));
+ stroke2.addPoint(gfx::Point(pt.x, m_y - (pt.y - m_y + adjust)));
strokes.push_back(stroke2);
}
diff --git a/src/app/tools/symmetries.h b/src/app/tools/symmetries.h
index 388e6e1..0ca64d1 100644
--- a/src/app/tools/symmetries.h
+++ b/src/app/tools/symmetries.h
@@ -18,7 +18,8 @@ namespace tools {
class HorizontalSymmetry : public Symmetry {
public:
HorizontalSymmetry(int x) : m_x(x) { }
- void generateStrokes(const Stroke& mainStroke, Strokes& strokes) override;
+ void generateStrokes(const Stroke& mainStroke, Strokes& strokes,
+ ToolLoop* loop) override;
private:
int m_x;
};
@@ -26,7 +27,8 @@ private:
class VerticalSymmetry : public Symmetry {
public:
VerticalSymmetry(int y) : m_y(y) { }
- void generateStrokes(const Stroke& mainStroke, Strokes& strokes) override;
+ void generateStrokes(const Stroke& mainStroke, Strokes& strokes,
+ ToolLoop* loop) override;
private:
int m_y;
};
diff --git a/src/app/tools/symmetry.h b/src/app/tools/symmetry.h
index d70c637..d5138fa 100644
--- a/src/app/tools/symmetry.h
+++ b/src/app/tools/symmetry.h
@@ -16,13 +16,15 @@
namespace app {
namespace tools {
+ class ToolLoop;
+
// This class controls user input.
class Symmetry {
public:
virtual ~Symmetry() { }
// The "stroke" must be relative to the sprite origin.
- virtual void generateStrokes(const Stroke& stroke, Strokes& strokes) = 0;
+ virtual void generateStrokes(const Stroke& stroke, Strokes& strokes, ToolLoop* loop) = 0;
};
} // namespace tools
diff --git a/src/app/tools/tool_loop_manager.cpp b/src/app/tools/tool_loop_manager.cpp
index 8e7565f..f58b96a 100644
--- a/src/app/tools/tool_loop_manager.cpp
+++ b/src/app/tools/tool_loop_manager.cpp
@@ -176,7 +176,7 @@ void ToolLoopManager::doLoopStep(bool last_step)
Symmetry* symmetry = m_toolLoop->getSymmetry();
Strokes strokes;
if (symmetry)
- symmetry->generateStrokes(main_stroke, strokes);
+ symmetry->generateStrokes(main_stroke, strokes, m_toolLoop);
else
strokes.push_back(main_stroke);
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/aseprite.git
More information about the Pkg-games-commits
mailing list