[aseprite] 121/134: Fix get_cels_in_range() when range type != DocumentRange::kCels
Tobias Hansen
thansen at moszumanska.debian.org
Sat Mar 14 17:10:16 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 77c2fb57a71d0fc9af7af13ca0e1ff7c3c405dd0
Author: David Capello <davidcapello at gmail.com>
Date: Thu Jan 29 12:08:29 2015 -0300
Fix get_cels_in_range() when range type != DocumentRange::kCels
---
src/app/ui/editor/moving_cel_state.cpp | 8 ++++++--
src/app/util/range_utils.cpp | 21 ++++++++++++++++++---
2 files changed, 24 insertions(+), 5 deletions(-)
diff --git a/src/app/ui/editor/moving_cel_state.cpp b/src/app/ui/editor/moving_cel_state.cpp
index 72a7bd6..15e9e2c 100644
--- a/src/app/ui/editor/moving_cel_state.cpp
+++ b/src/app/ui/editor/moving_cel_state.cpp
@@ -101,8 +101,12 @@ bool MovingCelState::onMouseUp(Editor* editor, MouseMessage* msg)
DocumentRange range = App::instance()->getMainWindow()->getTimeline()->range();
if (range.enabled()) {
- for (Cel* cel : get_cels_in_range(writer.sprite(), range))
- api.setCelPosition(writer.sprite(), cel, cel->x()+deltaX, cel->y()+deltaY);
+ for (Cel* cel : get_cels_in_range(writer.sprite(), range)) {
+ Layer* layer = cel->layer();
+ ASSERT(layer);
+ if (layer && layer->isMoveable() && !layer->isBackground())
+ api.setCelPosition(writer.sprite(), cel, cel->x()+deltaX, cel->y()+deltaY);
+ }
}
else if (m_cel) {
api.setCelPosition(writer.sprite(), m_cel, m_celNewX, m_celNewY);
diff --git a/src/app/util/range_utils.cpp b/src/app/util/range_utils.cpp
index 771e3e5..296b371 100644
--- a/src/app/util/range_utils.cpp
+++ b/src/app/util/range_utils.cpp
@@ -31,17 +31,32 @@ namespace app {
using namespace raster;
// TODO the DocumentRange should be "iteratable" to replace this function
-CelList get_cels_in_range(Sprite* sprite, const DocumentRange& range)
+CelList get_cels_in_range(Sprite* sprite, const DocumentRange& inrange)
{
+ DocumentRange range = inrange;
CelList cels;
+ switch (range.type()) {
+ case DocumentRange::kNone:
+ return cels;
+ case DocumentRange::kCels:
+ break;
+ case DocumentRange::kFrames:
+ range.startRange(LayerIndex(0), inrange.frameBegin(), DocumentRange::kCels);
+ range.endRange(LayerIndex(sprite->countLayers()-1), inrange.frameEnd());
+ break;
+ case DocumentRange::kLayers:
+ range.startRange(inrange.layerBegin(), FrameNumber(0), DocumentRange::kCels);
+ range.endRange(inrange.layerEnd(), sprite->lastFrame());
+ break;
+ }
+
for (LayerIndex layerIdx = range.layerBegin(); layerIdx <= range.layerEnd(); ++layerIdx) {
Layer* layer = sprite->indexToLayer(layerIdx);
- if (!layer->isImage())
+ if (!layer || !layer->isImage())
continue;
LayerImage* layerImage = static_cast<LayerImage*>(layer);
-
for (FrameNumber frame = range.frameEnd(),
begin = range.frameBegin().previous();
frame != begin;
--
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