[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