[aseprite] 53/308: Add commands to navigate frames with same tag

Tobias Hansen thansen at moszumanska.debian.org
Tue Mar 8 02:44:51 UTC 2016


This is an automated email from the git hooks/post-receive script.

thansen pushed a commit to branch master
in repository aseprite.

commit 2fa6f1995e1aead9d9960e43bfe782998bcea766
Author: Ying Ruei Liang (KK) <thumbd03803 at gmail.com>
Date:   Sat Dec 5 18:10:24 2015 +0800

    Add commands to navigate frames with same tag
---
 data/gui.xml                        |  4 +--
 src/app/commands/cmd_goto_frame.cpp | 53 +++++++++++++++++++++++++++++++++++++
 src/app/commands/commands_list.h    |  2 ++
 3 files changed, 57 insertions(+), 2 deletions(-)

diff --git a/data/gui.xml b/data/gui.xml
index db5157a..945dc62 100644
--- a/data/gui.xml
+++ b/data/gui.xml
@@ -85,8 +85,8 @@
       <key command="GotoFirstFrame" shortcut="Home" />
       <key command="GotoPreviousFrame" shortcut="Left" context="Normal" />
       <key command="GotoNextFrame" shortcut="Right" context="Normal" />
-      <key command="GotoPreviousFrame" shortcut="," />
-      <key command="GotoNextFrame" shortcut="." />
+      <key command="GotoPreviousFrameWithSameTag" shortcut="," />
+      <key command="GotoNextFrameWithSameTag" shortcut="." />
       <key command="GotoLastFrame" shortcut="End" />
       <key command="GotoFrame" shortcut="Alt+G" />
       <key command="PlayAnimation" shortcut="Enter" />
diff --git a/src/app/commands/cmd_goto_frame.cpp b/src/app/commands/cmd_goto_frame.cpp
index 5fc89cc..c7a4ca6 100644
--- a/src/app/commands/cmd_goto_frame.cpp
+++ b/src/app/commands/cmd_goto_frame.cpp
@@ -11,9 +11,11 @@
 
 #include "app/commands/command.h"
 #include "app/commands/params.h"
+#include "app/loop_tag.h"
 #include "app/modules/editors.h"
 #include "app/modules/gui.h"
 #include "app/ui/editor/editor.h"
+#include "doc/frame_tag.h"
 #include "doc/sprite.h"
 #include "ui/window.h"
 
@@ -22,6 +24,7 @@
 namespace app {
 
 using namespace ui;
+using namespace doc;
 
 class GotoCommand : public Command {
 protected:
@@ -88,6 +91,46 @@ protected:
   }
 };
 
+class GotoNextFrameWithSameTagCommand : public GotoCommand {
+public:
+  GotoNextFrameWithSameTagCommand() : GotoCommand("GotoNextFrameWithSameTag",
+                                                  "Go to Next Frame with same tag") { }
+  Command* clone() const override { return new GotoNextFrameWithSameTagCommand(*this); }
+
+protected:
+  frame_t onGetFrame(Editor* editor) override {
+    Sprite* sprite = editor->sprite();
+    frame_t currentFrame = editor->frame();
+    FrameTag* tag = get_animation_tag(sprite, currentFrame);
+    frame_t frameToGo = currentFrame + frame_t(1);
+
+    if (frameToGo > tag->toFrame())
+      frameToGo = tag->fromFrame();
+
+    return frameToGo;
+  }
+};
+
+class GotoPreviousFrameWithSameTagCommand : public GotoCommand {
+public:
+  GotoPreviousFrameWithSameTagCommand() : GotoCommand("GotoPreviousFrameWithSameTag",
+                                                      "Go to Previous Frame with same tag") { }
+  Command* clone() const override { return new GotoPreviousFrameWithSameTagCommand(*this); }
+
+protected:
+  frame_t onGetFrame(Editor* editor) override {
+    Sprite* sprite = editor->sprite();
+    frame_t currentFrame = editor->frame();
+    FrameTag* tag = get_animation_tag(sprite, currentFrame);
+    frame_t frameToGo = currentFrame - frame_t(1);
+
+    if (frameToGo < tag->fromFrame())
+      frameToGo = tag->toFrame();
+
+    return frameToGo;
+  }
+};
+
 class GotoLastFrameCommand : public GotoCommand {
 public:
   GotoLastFrameCommand() : GotoCommand("GotoLastFrame",
@@ -157,6 +200,16 @@ Command* CommandFactory::createGotoLastFrameCommand()
   return new GotoLastFrameCommand;
 }
 
+Command* CommandFactory::createGotoNextFrameWithSameTagCommand()
+{
+  return new GotoNextFrameWithSameTagCommand;
+}
+
+Command* CommandFactory::createGotoPreviousFrameWithSameTagCommand()
+{
+  return new GotoPreviousFrameWithSameTagCommand;
+}
+
 Command* CommandFactory::createGotoFrameCommand()
 {
   return new GotoFrameCommand;
diff --git a/src/app/commands/commands_list.h b/src/app/commands/commands_list.h
index baeddf1..0cfef55 100644
--- a/src/app/commands/commands_list.h
+++ b/src/app/commands/commands_list.h
@@ -45,9 +45,11 @@ FOR_EACH_COMMAND(GotoFirstFrame)
 FOR_EACH_COMMAND(GotoFrame)
 FOR_EACH_COMMAND(GotoLastFrame)
 FOR_EACH_COMMAND(GotoNextFrame)
+FOR_EACH_COMMAND(GotoNextFrameWithSameTag)
 FOR_EACH_COMMAND(GotoNextLayer)
 FOR_EACH_COMMAND(GotoNextTab)
 FOR_EACH_COMMAND(GotoPreviousFrame)
+FOR_EACH_COMMAND(GotoPreviousFrameWithSameTag)
 FOR_EACH_COMMAND(GotoPreviousLayer)
 FOR_EACH_COMMAND(GotoPreviousTab)
 FOR_EACH_COMMAND(GridSettings)

-- 
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