[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