mirror of
https://github.com/aseprite/aseprite.git
synced 2025-03-30 04:20:23 +00:00
Rename DocumentRange -> DocRange
This commit is contained in:
parent
432094f432
commit
d00fc99138
@ -497,13 +497,13 @@ add_library(app-lib
|
|||||||
context.cpp
|
context.cpp
|
||||||
context_flags.cpp
|
context_flags.cpp
|
||||||
doc_api.cpp
|
doc_api.cpp
|
||||||
|
doc_range.cpp
|
||||||
|
doc_range_ops.cpp
|
||||||
doc_undo.cpp
|
doc_undo.cpp
|
||||||
docs.cpp
|
docs.cpp
|
||||||
document.cpp
|
document.cpp
|
||||||
document_diff.cpp
|
document_diff.cpp
|
||||||
document_exporter.cpp
|
document_exporter.cpp
|
||||||
document_range.cpp
|
|
||||||
document_range_ops.cpp
|
|
||||||
extensions.cpp
|
extensions.cpp
|
||||||
extra_cel.cpp
|
extra_cel.cpp
|
||||||
file/file.cpp
|
file/file.cpp
|
||||||
|
@ -30,7 +30,7 @@ CmdTransaction::CmdTransaction(const std::string& label,
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void CmdTransaction::setNewDocumentRange(const DocumentRange& range)
|
void CmdTransaction::setNewDocRange(const DocRange& range)
|
||||||
{
|
{
|
||||||
#ifdef ENABLE_UI
|
#ifdef ENABLE_UI
|
||||||
if (m_ranges)
|
if (m_ranges)
|
||||||
@ -47,7 +47,7 @@ void CmdTransaction::commit()
|
|||||||
// commit/command (on Timeline::onAfterCommandExecution).
|
// commit/command (on Timeline::onAfterCommandExecution).
|
||||||
//
|
//
|
||||||
// So m_ranges->m_after is captured explicitly in
|
// So m_ranges->m_after is captured explicitly in
|
||||||
// setNewDocumentRange().
|
// setNewDocRange().
|
||||||
}
|
}
|
||||||
|
|
||||||
std::istream* CmdTransaction::documentRangeBeforeExecute() const
|
std::istream* CmdTransaction::documentRangeBeforeExecute() const
|
||||||
@ -78,9 +78,9 @@ void CmdTransaction::onExecute()
|
|||||||
// very beginning, just to save the current sprite position.
|
// very beginning, just to save the current sprite position.
|
||||||
m_spritePositionBefore = calcSpritePosition();
|
m_spritePositionBefore = calcSpritePosition();
|
||||||
#ifdef ENABLE_UI
|
#ifdef ENABLE_UI
|
||||||
if (isDocumentRangeEnabled()) {
|
if (isDocRangeEnabled()) {
|
||||||
m_ranges.reset(new Ranges);
|
m_ranges.reset(new Ranges);
|
||||||
calcDocumentRange().write(m_ranges->m_before);
|
calcDocRange().write(m_ranges->m_before);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -125,7 +125,7 @@ SpritePosition CmdTransaction::calcSpritePosition() const
|
|||||||
return SpritePosition(site.layer(), site.frame());
|
return SpritePosition(site.layer(), site.frame());
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CmdTransaction::isDocumentRangeEnabled() const
|
bool CmdTransaction::isDocRangeEnabled() const
|
||||||
{
|
{
|
||||||
#ifdef ENABLE_UI
|
#ifdef ENABLE_UI
|
||||||
if (App::instance()) {
|
if (App::instance()) {
|
||||||
@ -137,11 +137,11 @@ bool CmdTransaction::isDocumentRangeEnabled() const
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
DocumentRange CmdTransaction::calcDocumentRange() const
|
DocRange CmdTransaction::calcDocRange() const
|
||||||
{
|
{
|
||||||
#ifdef ENABLE_UI
|
#ifdef ENABLE_UI
|
||||||
// TODO We cannot use Context::activeSite() because it losts
|
// TODO We cannot use Context::activeSite() because it losts
|
||||||
// important information about the DocumentRange() (type and
|
// important information about the DocRange() (type and
|
||||||
// flags).
|
// flags).
|
||||||
if (App::instance()) {
|
if (App::instance()) {
|
||||||
Timeline* timeline = App::instance()->timeline();
|
Timeline* timeline = App::instance()->timeline();
|
||||||
@ -149,7 +149,7 @@ DocumentRange CmdTransaction::calcDocumentRange() const
|
|||||||
return timeline->range();
|
return timeline->range();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
return DocumentRange();
|
return DocRange();
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace app
|
} // namespace app
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "app/cmd_sequence.h"
|
#include "app/cmd_sequence.h"
|
||||||
#include "app/document_range.h"
|
#include "app/doc_range.h"
|
||||||
#include "app/sprite_position.h"
|
#include "app/sprite_position.h"
|
||||||
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
@ -24,7 +24,7 @@ namespace app {
|
|||||||
CmdTransaction(const std::string& label,
|
CmdTransaction(const std::string& label,
|
||||||
bool changeSavedState, int* savedCounter);
|
bool changeSavedState, int* savedCounter);
|
||||||
|
|
||||||
void setNewDocumentRange(const DocumentRange& range);
|
void setNewDocRange(const DocRange& range);
|
||||||
void commit();
|
void commit();
|
||||||
|
|
||||||
SpritePosition spritePositionBeforeExecute() const { return m_spritePositionBefore; }
|
SpritePosition spritePositionBeforeExecute() const { return m_spritePositionBefore; }
|
||||||
@ -42,8 +42,8 @@ namespace app {
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
SpritePosition calcSpritePosition() const;
|
SpritePosition calcSpritePosition() const;
|
||||||
bool isDocumentRangeEnabled() const;
|
bool isDocRangeEnabled() const;
|
||||||
DocumentRange calcDocumentRange() const;
|
DocRange calcDocRange() const;
|
||||||
|
|
||||||
struct Ranges {
|
struct Ranges {
|
||||||
std::stringstream m_before;
|
std::stringstream m_before;
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
#include "app/console.h"
|
#include "app/console.h"
|
||||||
#include "app/context_access.h"
|
#include "app/context_access.h"
|
||||||
#include "app/doc_event.h"
|
#include "app/doc_event.h"
|
||||||
#include "app/document_range.h"
|
#include "app/doc_range.h"
|
||||||
#include "app/modules/gui.h"
|
#include "app/modules/gui.h"
|
||||||
#include "app/transaction.h"
|
#include "app/transaction.h"
|
||||||
#include "app/ui/timeline/timeline.h"
|
#include "app/ui/timeline/timeline.h"
|
||||||
@ -169,11 +169,11 @@ private:
|
|||||||
ContextWriter writer(UIContext::instance());
|
ContextWriter writer(UIContext::instance());
|
||||||
Transaction transaction(writer.context(), "Set Cel Properties");
|
Transaction transaction(writer.context(), "Set Cel Properties");
|
||||||
|
|
||||||
DocumentRange range;
|
DocRange range;
|
||||||
if (m_range.enabled())
|
if (m_range.enabled())
|
||||||
range = m_range;
|
range = m_range;
|
||||||
else {
|
else {
|
||||||
range.startRange(m_cel->layer(), m_cel->frame(), DocumentRange::kCels);
|
range.startRange(m_cel->layer(), m_cel->frame(), DocRange::kCels);
|
||||||
range.endRange(m_cel->layer(), m_cel->frame());
|
range.endRange(m_cel->layer(), m_cel->frame());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -264,7 +264,7 @@ private:
|
|||||||
Timer m_timer;
|
Timer m_timer;
|
||||||
Document* m_document;
|
Document* m_document;
|
||||||
Cel* m_cel;
|
Cel* m_cel;
|
||||||
DocumentRange m_range;
|
DocRange m_range;
|
||||||
bool m_selfUpdate;
|
bool m_selfUpdate;
|
||||||
UserData m_userData;
|
UserData m_userData;
|
||||||
bool m_newUserData;
|
bool m_newUserData;
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
// Aseprite
|
// Aseprite
|
||||||
// Copyright (C) 2001-2017 David Capello
|
// Copyright (C) 2001-2018 David Capello
|
||||||
//
|
//
|
||||||
// This program is distributed under the terms of
|
// This program is distributed under the terms of
|
||||||
// the End-User License Agreement for Aseprite.
|
// the End-User License Agreement for Aseprite.
|
||||||
@ -19,7 +19,7 @@
|
|||||||
#include "app/commands/params.h"
|
#include "app/commands/params.h"
|
||||||
#include "app/context_access.h"
|
#include "app/context_access.h"
|
||||||
#include "app/doc_api.h"
|
#include "app/doc_api.h"
|
||||||
#include "app/document_range.h"
|
#include "app/doc_range.h"
|
||||||
#include "app/i18n/strings.h"
|
#include "app/i18n/strings.h"
|
||||||
#include "app/modules/gui.h"
|
#include "app/modules/gui.h"
|
||||||
#include "app/transaction.h"
|
#include "app/transaction.h"
|
||||||
|
@ -225,11 +225,11 @@ private:
|
|||||||
ContextWriter writer(UIContext::instance());
|
ContextWriter writer(UIContext::instance());
|
||||||
Transaction transaction(writer.context(), "Set Layer Properties");
|
Transaction transaction(writer.context(), "Set Layer Properties");
|
||||||
|
|
||||||
DocumentRange range;
|
DocRange range;
|
||||||
if (m_range.enabled())
|
if (m_range.enabled())
|
||||||
range = m_range;
|
range = m_range;
|
||||||
else {
|
else {
|
||||||
range.startRange(m_layer, -1, DocumentRange::kLayers);
|
range.startRange(m_layer, -1, DocRange::kLayers);
|
||||||
range.endRange(m_layer, -1);
|
range.endRange(m_layer, -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -347,7 +347,7 @@ private:
|
|||||||
Timer m_timer;
|
Timer m_timer;
|
||||||
Document* m_document;
|
Document* m_document;
|
||||||
Layer* m_layer;
|
Layer* m_layer;
|
||||||
DocumentRange m_range;
|
DocRange m_range;
|
||||||
bool m_selfUpdate;
|
bool m_selfUpdate;
|
||||||
UserData m_userData;
|
UserData m_userData;
|
||||||
};
|
};
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
// Aseprite
|
// Aseprite
|
||||||
// Copyright (C) 2001-2017 David Capello
|
// Copyright (C) 2001-2018 David Capello
|
||||||
//
|
//
|
||||||
// This program is distributed under the terms of
|
// This program is distributed under the terms of
|
||||||
// the End-User License Agreement for Aseprite.
|
// the End-User License Agreement for Aseprite.
|
||||||
@ -113,7 +113,7 @@ void NewFrameCommand::onExecute(Context* context)
|
|||||||
|
|
||||||
auto timeline = App::instance()->timeline();
|
auto timeline = App::instance()->timeline();
|
||||||
timeline->prepareToMoveRange();
|
timeline->prepareToMoveRange();
|
||||||
DocumentRange range = timeline->range();
|
DocRange range = timeline->range();
|
||||||
|
|
||||||
SelectedLayers selLayers;
|
SelectedLayers selLayers;
|
||||||
if (site->inFrames())
|
if (site->inFrames())
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
// Aseprite
|
// Aseprite
|
||||||
// Copyright (C) 2001-2017 David Capello
|
// Copyright (C) 2001-2018 David Capello
|
||||||
//
|
//
|
||||||
// This program is distributed under the terms of
|
// This program is distributed under the terms of
|
||||||
// the End-User License Agreement for Aseprite.
|
// the End-User License Agreement for Aseprite.
|
||||||
@ -54,8 +54,8 @@ void NewFrameTagCommand::onExecute(Context* context)
|
|||||||
|
|
||||||
auto range = App::instance()->timeline()->range();
|
auto range = App::instance()->timeline()->range();
|
||||||
if (range.enabled() &&
|
if (range.enabled() &&
|
||||||
(range.type() == DocumentRange::kFrames ||
|
(range.type() == DocRange::kFrames ||
|
||||||
range.type() == DocumentRange::kCels)) {
|
range.type() == DocRange::kCels)) {
|
||||||
from = range.selectedFrames().firstFrame();
|
from = range.selectedFrames().firstFrame();
|
||||||
to = range.selectedFrames().lastFrame();
|
to = range.selectedFrames().lastFrame();
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
// Aseprite
|
// Aseprite
|
||||||
// Copyright (C) 2001-2017 David Capello
|
// Copyright (C) 2001-2018 David Capello
|
||||||
//
|
//
|
||||||
// This program is distributed under the terms of
|
// This program is distributed under the terms of
|
||||||
// the End-User License Agreement for Aseprite.
|
// the End-User License Agreement for Aseprite.
|
||||||
@ -11,9 +11,9 @@
|
|||||||
#include "app/app.h"
|
#include "app/app.h"
|
||||||
#include "app/commands/command.h"
|
#include "app/commands/command.h"
|
||||||
#include "app/context_access.h"
|
#include "app/context_access.h"
|
||||||
|
#include "app/doc_range_ops.h"
|
||||||
#include "app/modules/gui.h"
|
#include "app/modules/gui.h"
|
||||||
#include "app/ui/timeline/timeline.h"
|
#include "app/ui/timeline/timeline.h"
|
||||||
#include "app/document_range_ops.h"
|
|
||||||
|
|
||||||
namespace app {
|
namespace app {
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
// Aseprite
|
// Aseprite
|
||||||
// Copyright (C) 2001-2017 David Capello
|
// Copyright (C) 2001-2018 David Capello
|
||||||
//
|
//
|
||||||
// This program is distributed under the terms of
|
// This program is distributed under the terms of
|
||||||
// the End-User License Agreement for Aseprite.
|
// the End-User License Agreement for Aseprite.
|
||||||
@ -14,7 +14,7 @@
|
|||||||
#include "app/commands/params.h"
|
#include "app/commands/params.h"
|
||||||
#include "app/context_access.h"
|
#include "app/context_access.h"
|
||||||
#include "app/doc_api.h"
|
#include "app/doc_api.h"
|
||||||
#include "app/document_range.h"
|
#include "app/doc_range.h"
|
||||||
#include "app/i18n/strings.h"
|
#include "app/i18n/strings.h"
|
||||||
#include "app/modules/editors.h"
|
#include "app/modules/editors.h"
|
||||||
#include "app/modules/gui.h"
|
#include "app/modules/gui.h"
|
||||||
|
@ -102,9 +102,9 @@ void UndoCommand::onExecute(Context* context)
|
|||||||
// range because there could be inexistent layers.
|
// range because there could be inexistent layers.
|
||||||
std::istream* docRangeStream;
|
std::istream* docRangeStream;
|
||||||
if (m_type == Undo)
|
if (m_type == Undo)
|
||||||
docRangeStream = undo->nextUndoDocumentRange();
|
docRangeStream = undo->nextUndoDocRange();
|
||||||
else
|
else
|
||||||
docRangeStream = undo->nextRedoDocumentRange();
|
docRangeStream = undo->nextRedoDocRange();
|
||||||
|
|
||||||
StatusBar* statusbar = StatusBar::instance();
|
StatusBar* statusbar = StatusBar::instance();
|
||||||
if (statusbar) {
|
if (statusbar) {
|
||||||
@ -139,13 +139,13 @@ void UndoCommand::onExecute(Context* context)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update timeline range. We've to deserialize the DocumentRange at
|
// Update timeline range. We've to deserialize the DocRange at
|
||||||
// this point when objects (possible layers) are re-created after
|
// this point when objects (possible layers) are re-created after
|
||||||
// the undo and we can deserialize them.
|
// the undo and we can deserialize them.
|
||||||
if (docRangeStream) {
|
if (docRangeStream) {
|
||||||
Timeline* timeline = App::instance()->timeline();
|
Timeline* timeline = App::instance()->timeline();
|
||||||
if (timeline) {
|
if (timeline) {
|
||||||
DocumentRange docRange;
|
DocRange docRange;
|
||||||
if (docRange.read(*docRangeStream))
|
if (docRange.read(*docRangeStream))
|
||||||
timeline->setRange(docRange);
|
timeline->setRange(docRange);
|
||||||
}
|
}
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
#include "config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "app/document_range.h"
|
#include "app/doc_range.h"
|
||||||
|
|
||||||
#include "base/serialization.h"
|
#include "base/serialization.h"
|
||||||
#include "doc/cel.h"
|
#include "doc/cel.h"
|
||||||
@ -24,7 +24,7 @@ using namespace base::serialization;
|
|||||||
using namespace base::serialization::little_endian;
|
using namespace base::serialization::little_endian;
|
||||||
using namespace doc;
|
using namespace doc;
|
||||||
|
|
||||||
DocumentRange::DocumentRange()
|
DocRange::DocRange()
|
||||||
: m_type(kNone)
|
: m_type(kNone)
|
||||||
, m_flags(m_type)
|
, m_flags(m_type)
|
||||||
, m_selectingFromLayer(nullptr)
|
, m_selectingFromLayer(nullptr)
|
||||||
@ -32,7 +32,7 @@ DocumentRange::DocumentRange()
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
DocumentRange::DocumentRange(Cel* cel)
|
DocRange::DocRange(Cel* cel)
|
||||||
: m_type(kCels)
|
: m_type(kCels)
|
||||||
, m_flags(m_type)
|
, m_flags(m_type)
|
||||||
, m_selectingFromLayer(nullptr)
|
, m_selectingFromLayer(nullptr)
|
||||||
@ -42,7 +42,7 @@ DocumentRange::DocumentRange(Cel* cel)
|
|||||||
m_selectedFrames.insert(cel->frame());
|
m_selectedFrames.insert(cel->frame());
|
||||||
}
|
}
|
||||||
|
|
||||||
void DocumentRange::clearRange()
|
void DocRange::clearRange()
|
||||||
{
|
{
|
||||||
m_type = kNone;
|
m_type = kNone;
|
||||||
m_flags = kNone;
|
m_flags = kNone;
|
||||||
@ -50,7 +50,7 @@ void DocumentRange::clearRange()
|
|||||||
m_selectedFrames.clear();
|
m_selectedFrames.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
void DocumentRange::startRange(Layer* fromLayer, frame_t fromFrame, Type type)
|
void DocRange::startRange(Layer* fromLayer, frame_t fromFrame, Type type)
|
||||||
{
|
{
|
||||||
m_type = type;
|
m_type = type;
|
||||||
m_flags |= type;
|
m_flags |= type;
|
||||||
@ -63,7 +63,7 @@ void DocumentRange::startRange(Layer* fromLayer, frame_t fromFrame, Type type)
|
|||||||
m_selectedFrames.insert(fromFrame);
|
m_selectedFrames.insert(fromFrame);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DocumentRange::endRange(Layer* toLayer, frame_t toFrame)
|
void DocRange::endRange(Layer* toLayer, frame_t toFrame)
|
||||||
{
|
{
|
||||||
ASSERT(enabled());
|
ASSERT(enabled());
|
||||||
|
|
||||||
@ -74,7 +74,7 @@ void DocumentRange::endRange(Layer* toLayer, frame_t toFrame)
|
|||||||
selectFrameRange(m_selectingFromFrame, toFrame);
|
selectFrameRange(m_selectingFromFrame, toFrame);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DocumentRange::selectLayer(Layer* layer)
|
void DocRange::selectLayer(Layer* layer)
|
||||||
{
|
{
|
||||||
if (m_type == kNone)
|
if (m_type == kNone)
|
||||||
m_type = kLayers;
|
m_type = kLayers;
|
||||||
@ -83,7 +83,7 @@ void DocumentRange::selectLayer(Layer* layer)
|
|||||||
m_selectedLayers.insert(layer);
|
m_selectedLayers.insert(layer);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DocumentRange::selectLayers(const SelectedLayers& selLayers)
|
void DocRange::selectLayers(const SelectedLayers& selLayers)
|
||||||
{
|
{
|
||||||
if (m_type == kNone)
|
if (m_type == kNone)
|
||||||
m_type = kLayers;
|
m_type = kLayers;
|
||||||
@ -93,7 +93,7 @@ void DocumentRange::selectLayers(const SelectedLayers& selLayers)
|
|||||||
m_selectedLayers.insert(layer);
|
m_selectedLayers.insert(layer);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool DocumentRange::contains(const Layer* layer) const
|
bool DocRange::contains(const Layer* layer) const
|
||||||
{
|
{
|
||||||
if (enabled())
|
if (enabled())
|
||||||
return m_selectedLayers.contains(const_cast<Layer*>(layer));
|
return m_selectedLayers.contains(const_cast<Layer*>(layer));
|
||||||
@ -101,15 +101,15 @@ bool DocumentRange::contains(const Layer* layer) const
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool DocumentRange::contains(const Layer* layer,
|
bool DocRange::contains(const Layer* layer,
|
||||||
const frame_t frame) const
|
const frame_t frame) const
|
||||||
{
|
{
|
||||||
switch (m_type) {
|
switch (m_type) {
|
||||||
case DocumentRange::kNone:
|
case DocRange::kNone:
|
||||||
return false;
|
return false;
|
||||||
case DocumentRange::kCels:
|
case DocRange::kCels:
|
||||||
return contains(layer) && contains(frame);
|
return contains(layer) && contains(frame);
|
||||||
case DocumentRange::kFrames:
|
case DocRange::kFrames:
|
||||||
if (contains(frame)) {
|
if (contains(frame)) {
|
||||||
if ((m_flags & (kCels | kLayers)) != 0)
|
if ((m_flags & (kCels | kLayers)) != 0)
|
||||||
return contains(layer);
|
return contains(layer);
|
||||||
@ -117,7 +117,7 @@ bool DocumentRange::contains(const Layer* layer,
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case DocumentRange::kLayers:
|
case DocRange::kLayers:
|
||||||
if (contains(layer)) {
|
if (contains(layer)) {
|
||||||
if ((m_flags & (kCels | kFrames)) != 0)
|
if ((m_flags & (kCels | kFrames)) != 0)
|
||||||
return contains(frame);
|
return contains(frame);
|
||||||
@ -129,37 +129,37 @@ bool DocumentRange::contains(const Layer* layer,
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DocumentRange::displace(layer_t layerDelta, frame_t frameDelta)
|
void DocRange::displace(layer_t layerDelta, frame_t frameDelta)
|
||||||
{
|
{
|
||||||
m_selectedLayers.displace(layerDelta);
|
m_selectedLayers.displace(layerDelta);
|
||||||
m_selectedFrames.displace(frameDelta);
|
m_selectedFrames.displace(frameDelta);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool DocumentRange::convertToCels(const Sprite* sprite)
|
bool DocRange::convertToCels(const Sprite* sprite)
|
||||||
{
|
{
|
||||||
switch (m_type) {
|
switch (m_type) {
|
||||||
case DocumentRange::kNone:
|
case DocRange::kNone:
|
||||||
return false;
|
return false;
|
||||||
case DocumentRange::kCels:
|
case DocRange::kCels:
|
||||||
break;
|
break;
|
||||||
case DocumentRange::kFrames: {
|
case DocRange::kFrames: {
|
||||||
if ((m_flags & (kCels | kLayers)) == 0) {
|
if ((m_flags & (kCels | kLayers)) == 0) {
|
||||||
for (auto layer : sprite->allBrowsableLayers())
|
for (auto layer : sprite->allBrowsableLayers())
|
||||||
m_selectedLayers.insert(layer);
|
m_selectedLayers.insert(layer);
|
||||||
}
|
}
|
||||||
m_type = DocumentRange::kCels;
|
m_type = DocRange::kCels;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case DocumentRange::kLayers:
|
case DocRange::kLayers:
|
||||||
if ((m_flags & (kCels | kFrames)) == 0)
|
if ((m_flags & (kCels | kFrames)) == 0)
|
||||||
selectFrameRange(0, sprite->lastFrame());
|
selectFrameRange(0, sprite->lastFrame());
|
||||||
m_type = DocumentRange::kCels;
|
m_type = DocRange::kCels;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool DocumentRange::write(std::ostream& os) const
|
bool DocRange::write(std::ostream& os) const
|
||||||
{
|
{
|
||||||
write32(os, m_type);
|
write32(os, m_type);
|
||||||
write32(os, m_flags);
|
write32(os, m_flags);
|
||||||
@ -172,7 +172,7 @@ bool DocumentRange::write(std::ostream& os) const
|
|||||||
return os.good();
|
return os.good();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool DocumentRange::read(std::istream& is)
|
bool DocRange::read(std::istream& is)
|
||||||
{
|
{
|
||||||
clearRange();
|
clearRange();
|
||||||
|
|
||||||
@ -188,7 +188,7 @@ bool DocumentRange::read(std::istream& is)
|
|||||||
return is.good();
|
return is.good();
|
||||||
}
|
}
|
||||||
|
|
||||||
void DocumentRange::selectLayerRange(Layer* fromLayer, Layer* toLayer)
|
void DocRange::selectLayerRange(Layer* fromLayer, Layer* toLayer)
|
||||||
{
|
{
|
||||||
ASSERT(fromLayer);
|
ASSERT(fromLayer);
|
||||||
ASSERT(toLayer);
|
ASSERT(toLayer);
|
||||||
@ -234,7 +234,7 @@ void DocumentRange::selectLayerRange(Layer* fromLayer, Layer* toLayer)
|
|||||||
} while (it);
|
} while (it);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DocumentRange::selectFrameRange(frame_t fromFrame, frame_t toFrame)
|
void DocRange::selectFrameRange(frame_t fromFrame, frame_t toFrame)
|
||||||
{
|
{
|
||||||
m_selectedFrames.insert(fromFrame, toFrame);
|
m_selectedFrames.insert(fromFrame, toFrame);
|
||||||
}
|
}
|
@ -4,8 +4,8 @@
|
|||||||
// This program is distributed under the terms of
|
// This program is distributed under the terms of
|
||||||
// the End-User License Agreement for Aseprite.
|
// the End-User License Agreement for Aseprite.
|
||||||
|
|
||||||
#ifndef APP_DOCUMENT_RANGE_H_INCLUDED
|
#ifndef APP_DOC_RANGE_H_INCLUDED
|
||||||
#define APP_DOCUMENT_RANGE_H_INCLUDED
|
#define APP_DOC_RANGE_H_INCLUDED
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "doc/frame.h"
|
#include "doc/frame.h"
|
||||||
@ -22,15 +22,15 @@ namespace doc {
|
|||||||
namespace app {
|
namespace app {
|
||||||
using namespace doc;
|
using namespace doc;
|
||||||
|
|
||||||
class DocumentRange {
|
class DocRange {
|
||||||
public:
|
public:
|
||||||
enum Type { kNone = 0,
|
enum Type { kNone = 0,
|
||||||
kCels = 1,
|
kCels = 1,
|
||||||
kFrames = 2,
|
kFrames = 2,
|
||||||
kLayers = 4 };
|
kLayers = 4 };
|
||||||
|
|
||||||
DocumentRange();
|
DocRange();
|
||||||
DocumentRange(Cel* cel);
|
DocRange(Cel* cel);
|
||||||
|
|
||||||
Type type() const { return m_type; }
|
Type type() const { return m_type; }
|
||||||
bool enabled() const { return m_type != kNone; }
|
bool enabled() const { return m_type != kNone; }
|
||||||
@ -58,7 +58,7 @@ namespace app {
|
|||||||
frame_t firstFrame() const { return m_selectedFrames.firstFrame(); }
|
frame_t firstFrame() const { return m_selectedFrames.firstFrame(); }
|
||||||
frame_t lastFrame() const { return m_selectedFrames.lastFrame(); }
|
frame_t lastFrame() const { return m_selectedFrames.lastFrame(); }
|
||||||
|
|
||||||
bool operator==(const DocumentRange& o) const {
|
bool operator==(const DocRange& o) const {
|
||||||
return (m_type == o.m_type &&
|
return (m_type == o.m_type &&
|
||||||
m_selectedLayers == o.m_selectedLayers &&
|
m_selectedLayers == o.m_selectedLayers &&
|
||||||
m_selectedFrames == o.m_selectedFrames);
|
m_selectedFrames == o.m_selectedFrames);
|
@ -11,12 +11,12 @@
|
|||||||
#include "config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "app/document_range_ops.h"
|
#include "app/doc_range_ops.h"
|
||||||
|
|
||||||
#include "app/app.h"
|
#include "app/app.h"
|
||||||
#include "app/context_access.h"
|
#include "app/context_access.h"
|
||||||
#include "app/doc_api.h"
|
#include "app/doc_api.h"
|
||||||
#include "app/document_range.h"
|
#include "app/doc_range.h"
|
||||||
#include "app/transaction.h"
|
#include "app/transaction.h"
|
||||||
#include "app/ui/timeline/timeline.h"
|
#include "app/ui/timeline/timeline.h"
|
||||||
#include "doc/layer.h"
|
#include "doc/layer.h"
|
||||||
@ -75,12 +75,12 @@ static void move_or_copy_cels(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static DocumentRange move_or_copy_frames(
|
static DocRange move_or_copy_frames(
|
||||||
DocApi& api, Op op,
|
DocApi& api, Op op,
|
||||||
Sprite* sprite,
|
Sprite* sprite,
|
||||||
const DocumentRange& srcRange,
|
const DocRange& srcRange,
|
||||||
frame_t dstFrame,
|
frame_t dstFrame,
|
||||||
const DocumentRangePlace place,
|
const DocRangePlace place,
|
||||||
const TagsHandling tagsHandling)
|
const TagsHandling tagsHandling)
|
||||||
{
|
{
|
||||||
const SelectedFrames& srcFrames = srcRange.selectedFrames();
|
const SelectedFrames& srcFrames = srcRange.selectedFrames();
|
||||||
@ -91,9 +91,9 @@ static DocumentRange move_or_copy_frames(
|
|||||||
std::clog << srcFrame << ", ";
|
std::clog << srcFrame << ", ";
|
||||||
}
|
}
|
||||||
std::clog << "] "
|
std::clog << "] "
|
||||||
<< (place == kDocumentRangeBefore ? "before":
|
<< (place == kDocRangeBefore ? "before":
|
||||||
place == kDocumentRangeAfter ? "after":
|
place == kDocRangeAfter ? "after":
|
||||||
"as first child")
|
"as first child")
|
||||||
<< " " << dstFrame << "\n";
|
<< " " << dstFrame << "\n";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -102,8 +102,8 @@ static DocumentRange move_or_copy_frames(
|
|||||||
frame_t srcDelta = 0;
|
frame_t srcDelta = 0;
|
||||||
frame_t firstCopiedBlock = 0;
|
frame_t firstCopiedBlock = 0;
|
||||||
frame_t dstBeforeFrame =
|
frame_t dstBeforeFrame =
|
||||||
(place == kDocumentRangeBefore ? dstFrame:
|
(place == kDocRangeBefore ? dstFrame:
|
||||||
dstFrame+1);
|
dstFrame+1);
|
||||||
|
|
||||||
for (; srcFrame != srcFrameEnd; ++srcFrame) {
|
for (; srcFrame != srcFrameEnd; ++srcFrame) {
|
||||||
frame_t fromFrame = (*srcFrame)+srcDelta;
|
frame_t fromFrame = (*srcFrame)+srcDelta;
|
||||||
@ -134,7 +134,7 @@ static DocumentRange move_or_copy_frames(
|
|||||||
std::clog << "] => "
|
std::clog << "] => "
|
||||||
<< (op == Move ? "Move": "Copy")
|
<< (op == Move ? "Move": "Copy")
|
||||||
<< " " << (*srcFrame) << "+" << (srcDelta)
|
<< " " << (*srcFrame) << "+" << (srcDelta)
|
||||||
<< (place == kDocumentRangeBefore ? " before ": " after ")
|
<< (place == kDocRangeBefore ? " before ": " after ")
|
||||||
<< dstFrame << " => ";
|
<< dstFrame << " => ";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -142,8 +142,8 @@ static DocumentRange move_or_copy_frames(
|
|||||||
|
|
||||||
case Move:
|
case Move:
|
||||||
api.moveFrame(sprite, fromFrame, dstFrame,
|
api.moveFrame(sprite, fromFrame, dstFrame,
|
||||||
(place == kDocumentRangeBefore ? kDropBeforeFrame:
|
(place == kDocRangeBefore ? kDropBeforeFrame:
|
||||||
kDropAfterFrame),
|
kDropAfterFrame),
|
||||||
tagsHandling);
|
tagsHandling);
|
||||||
|
|
||||||
if (fromFrame < dstBeforeFrame-1) {
|
if (fromFrame < dstBeforeFrame-1) {
|
||||||
@ -157,8 +157,8 @@ static DocumentRange move_or_copy_frames(
|
|||||||
|
|
||||||
case Copy:
|
case Copy:
|
||||||
api.copyFrame(sprite, fromFrame, dstFrame,
|
api.copyFrame(sprite, fromFrame, dstFrame,
|
||||||
(place == kDocumentRangeBefore ? kDropBeforeFrame:
|
(place == kDocRangeBefore ? kDropBeforeFrame:
|
||||||
kDropAfterFrame),
|
kDropAfterFrame),
|
||||||
tagsHandling);
|
tagsHandling);
|
||||||
|
|
||||||
if (fromFrame < dstBeforeFrame-1) {
|
if (fromFrame < dstBeforeFrame-1) {
|
||||||
@ -181,10 +181,10 @@ static DocumentRange move_or_copy_frames(
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
DocumentRange result;
|
DocRange result;
|
||||||
if (!srcRange.selectedLayers().empty())
|
if (!srcRange.selectedLayers().empty())
|
||||||
result.selectLayers(srcRange.selectedLayers());
|
result.selectLayers(srcRange.selectedLayers());
|
||||||
result.startRange(nullptr, dstBeforeFrame-srcFrames.size(), DocumentRange::kFrames);
|
result.startRange(nullptr, dstBeforeFrame-srcFrames.size(), DocRange::kFrames);
|
||||||
result.endRange(nullptr, dstBeforeFrame-1);
|
result.endRange(nullptr, dstBeforeFrame-1);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@ -201,25 +201,25 @@ static bool has_child(LayerGroup* parent, Layer* child)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
static DocumentRange drop_range_op(
|
static DocRange drop_range_op(
|
||||||
Document* doc,
|
Document* doc,
|
||||||
const Op op,
|
const Op op,
|
||||||
const DocumentRange& from,
|
const DocRange& from,
|
||||||
DocumentRangePlace place,
|
DocRangePlace place,
|
||||||
const TagsHandling tagsHandling,
|
const TagsHandling tagsHandling,
|
||||||
DocumentRange to)
|
DocRange to)
|
||||||
{
|
{
|
||||||
// Convert "first child" operation into a insert after last child.
|
// Convert "first child" operation into a insert after last child.
|
||||||
LayerGroup* parent = nullptr;
|
LayerGroup* parent = nullptr;
|
||||||
if (to.type() == DocumentRange::kLayers &&
|
if (to.type() == DocRange::kLayers &&
|
||||||
!to.selectedLayers().empty()) {
|
!to.selectedLayers().empty()) {
|
||||||
if (place == kDocumentRangeFirstChild &&
|
if (place == kDocRangeFirstChild &&
|
||||||
(*to.selectedLayers().begin())->isGroup()) {
|
(*to.selectedLayers().begin())->isGroup()) {
|
||||||
place = kDocumentRangeAfter;
|
place = kDocRangeAfter;
|
||||||
parent = static_cast<LayerGroup*>((*to.selectedLayers().begin()));
|
parent = static_cast<LayerGroup*>((*to.selectedLayers().begin()));
|
||||||
|
|
||||||
to.clearRange();
|
to.clearRange();
|
||||||
to.startRange(parent->lastLayer(), -1, DocumentRange::kLayers);
|
to.startRange(parent->lastLayer(), -1, DocRange::kLayers);
|
||||||
to.endRange(parent->lastLayer(), -1);
|
to.endRange(parent->lastLayer(), -1);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@ -235,8 +235,8 @@ static DocumentRange drop_range_op(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (place != kDocumentRangeBefore &&
|
if (place != kDocRangeBefore &&
|
||||||
place != kDocumentRangeAfter) {
|
place != kDocRangeAfter) {
|
||||||
ASSERT(false);
|
ASSERT(false);
|
||||||
throw std::invalid_argument("Invalid 'place' argument");
|
throw std::invalid_argument("Invalid 'place' argument");
|
||||||
}
|
}
|
||||||
@ -247,20 +247,20 @@ static DocumentRange drop_range_op(
|
|||||||
// Also check invalid cases, like moving a Background layer.
|
// Also check invalid cases, like moving a Background layer.
|
||||||
switch (from.type()) {
|
switch (from.type()) {
|
||||||
|
|
||||||
case DocumentRange::kCels:
|
case DocRange::kCels:
|
||||||
if (from == to)
|
if (from == to)
|
||||||
return from;
|
return from;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DocumentRange::kFrames:
|
case DocRange::kFrames:
|
||||||
if (op == Move) {
|
if (op == Move) {
|
||||||
// Simple cases with one continuos range of frames that are a
|
// Simple cases with one continuos range of frames that are a
|
||||||
// no-op.
|
// no-op.
|
||||||
if ((from.selectedFrames().ranges() == 1) &&
|
if ((from.selectedFrames().ranges() == 1) &&
|
||||||
((to.firstFrame() >= from.firstFrame() &&
|
((to.firstFrame() >= from.firstFrame() &&
|
||||||
to.lastFrame() <= from.lastFrame()) ||
|
to.lastFrame() <= from.lastFrame()) ||
|
||||||
(place == kDocumentRangeBefore && to.firstFrame() == from.lastFrame()+1) ||
|
(place == kDocRangeBefore && to.firstFrame() == from.lastFrame()+1) ||
|
||||||
(place == kDocumentRangeAfter && to.lastFrame() == from.firstFrame()-1)) &&
|
(place == kDocRangeAfter && to.lastFrame() == from.firstFrame()-1)) &&
|
||||||
// If there are tags, this might not be a no-op
|
// If there are tags, this might not be a no-op
|
||||||
(sprite->frameTags().empty() ||
|
(sprite->frameTags().empty() ||
|
||||||
tagsHandling == kDontAdjustTags)) {
|
tagsHandling == kDontAdjustTags)) {
|
||||||
@ -269,7 +269,7 @@ static DocumentRange drop_range_op(
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DocumentRange::kLayers:
|
case DocRange::kLayers:
|
||||||
if (op == Move) {
|
if (op == Move) {
|
||||||
SelectedLayers srcSelLayers = from.selectedLayers();
|
SelectedLayers srcSelLayers = from.selectedLayers();
|
||||||
SelectedLayers dstSelLayers = to.selectedLayers();
|
SelectedLayers dstSelLayers = to.selectedLayers();
|
||||||
@ -294,9 +294,9 @@ static DocumentRange drop_range_op(
|
|||||||
if (dstSelLayers.contains(srcLayer))
|
if (dstSelLayers.contains(srcLayer))
|
||||||
return from;
|
return from;
|
||||||
|
|
||||||
if ((place == kDocumentRangeBefore
|
if ((place == kDocRangeBefore
|
||||||
&& dstLayers.front() == srcLayers.back()->getNext()) ||
|
&& dstLayers.front() == srcLayers.back()->getNext()) ||
|
||||||
(place == kDocumentRangeAfter
|
(place == kDocRangeAfter
|
||||||
&& dstLayers.back() == srcLayers.front()->getPrevious()))
|
&& dstLayers.back() == srcLayers.front()->getPrevious()))
|
||||||
return from;
|
return from;
|
||||||
}
|
}
|
||||||
@ -308,7 +308,7 @@ static DocumentRange drop_range_op(
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Before background
|
// Before background
|
||||||
if (place == kDocumentRangeBefore) {
|
if (place == kDocRangeBefore) {
|
||||||
for (Layer* background : to.selectedLayers()) {
|
for (Layer* background : to.selectedLayers()) {
|
||||||
if (background && background->isBackground())
|
if (background && background->isBackground())
|
||||||
throw std::runtime_error("You cannot move or copy something below the background layer");
|
throw std::runtime_error("You cannot move or copy something below the background layer");
|
||||||
@ -325,7 +325,7 @@ static DocumentRange drop_range_op(
|
|||||||
ASSERT(false);
|
ASSERT(false);
|
||||||
throw std::invalid_argument("Invalid 'op' argument");
|
throw std::invalid_argument("Invalid 'op' argument");
|
||||||
}
|
}
|
||||||
DocumentRange resultRange;
|
DocRange resultRange;
|
||||||
|
|
||||||
{
|
{
|
||||||
const app::Context* context = static_cast<app::Context*>(doc->context());
|
const app::Context* context = static_cast<app::Context*>(doc->context());
|
||||||
@ -340,7 +340,7 @@ static DocumentRange drop_range_op(
|
|||||||
|
|
||||||
switch (from.type()) {
|
switch (from.type()) {
|
||||||
|
|
||||||
case DocumentRange::kCels: {
|
case DocRange::kCels: {
|
||||||
LayerList allLayers = sprite->allBrowsableLayers();
|
LayerList allLayers = sprite->allBrowsableLayers();
|
||||||
if (allLayers.empty())
|
if (allLayers.empty())
|
||||||
break;
|
break;
|
||||||
@ -374,9 +374,9 @@ static DocumentRange drop_range_op(
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case DocumentRange::kFrames: {
|
case DocRange::kFrames: {
|
||||||
frame_t dstFrame;
|
frame_t dstFrame;
|
||||||
if (place == kDocumentRangeBefore)
|
if (place == kDocRangeBefore)
|
||||||
dstFrame = to.firstFrame();
|
dstFrame = to.firstFrame();
|
||||||
else
|
else
|
||||||
dstFrame = to.lastFrame();
|
dstFrame = to.lastFrame();
|
||||||
@ -387,7 +387,7 @@ static DocumentRange drop_range_op(
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case DocumentRange::kLayers: {
|
case DocRange::kLayers: {
|
||||||
LayerList allLayers = sprite->allBrowsableLayers();
|
LayerList allLayers = sprite->allBrowsableLayers();
|
||||||
if (allLayers.empty())
|
if (allLayers.empty())
|
||||||
break;
|
break;
|
||||||
@ -399,7 +399,7 @@ static DocumentRange drop_range_op(
|
|||||||
switch (op) {
|
switch (op) {
|
||||||
|
|
||||||
case Move:
|
case Move:
|
||||||
if (place == kDocumentRangeBefore) {
|
if (place == kDocRangeBefore) {
|
||||||
Layer* beforeThis = (!dstLayers.empty() ? dstLayers.front(): nullptr);
|
Layer* beforeThis = (!dstLayers.empty() ? dstLayers.front(): nullptr);
|
||||||
Layer* afterThis = nullptr;
|
Layer* afterThis = nullptr;
|
||||||
|
|
||||||
@ -412,7 +412,7 @@ static DocumentRange drop_range_op(
|
|||||||
afterThis = srcLayer;
|
afterThis = srcLayer;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (place == kDocumentRangeAfter) {
|
else if (place == kDocRangeAfter) {
|
||||||
Layer* afterThis = (!dstLayers.empty() ? dstLayers.back(): nullptr);
|
Layer* afterThis = (!dstLayers.empty() ? dstLayers.back(): nullptr);
|
||||||
for (Layer* srcLayer : srcLayers) {
|
for (Layer* srcLayer : srcLayers) {
|
||||||
api.restackLayerAfter(srcLayer, parent, afterThis);
|
api.restackLayerAfter(srcLayer, parent, afterThis);
|
||||||
@ -425,17 +425,17 @@ static DocumentRange drop_range_op(
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case Copy: {
|
case Copy: {
|
||||||
if (place == kDocumentRangeBefore) {
|
if (place == kDocRangeBefore) {
|
||||||
Layer* beforeThis = (!dstLayers.empty() ? dstLayers.front(): nullptr);
|
Layer* beforeThis = (!dstLayers.empty() ? dstLayers.front(): nullptr);
|
||||||
for (Layer* srcLayer : srcLayers) {
|
for (Layer* srcLayer : srcLayers) {
|
||||||
Layer* copiedLayer = api.duplicateLayerBefore(
|
Layer* copiedLayer = api.duplicateLayerBefore(
|
||||||
srcLayer, parent, beforeThis);
|
srcLayer, parent, beforeThis);
|
||||||
|
|
||||||
resultRange.startRange(copiedLayer, -1, DocumentRange::kLayers);
|
resultRange.startRange(copiedLayer, -1, DocRange::kLayers);
|
||||||
resultRange.endRange(copiedLayer, -1);
|
resultRange.endRange(copiedLayer, -1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (place == kDocumentRangeAfter) {
|
else if (place == kDocRangeAfter) {
|
||||||
std::reverse(srcLayers.begin(), srcLayers.end());
|
std::reverse(srcLayers.begin(), srcLayers.end());
|
||||||
|
|
||||||
Layer* afterThis = (!dstLayers.empty() ? dstLayers.back(): nullptr);
|
Layer* afterThis = (!dstLayers.empty() ? dstLayers.back(): nullptr);
|
||||||
@ -443,7 +443,7 @@ static DocumentRange drop_range_op(
|
|||||||
Layer* copiedLayer = api.duplicateLayerAfter(
|
Layer* copiedLayer = api.duplicateLayerAfter(
|
||||||
srcLayer, parent, afterThis);
|
srcLayer, parent, afterThis);
|
||||||
|
|
||||||
resultRange.startRange(copiedLayer, -1, DocumentRange::kLayers);
|
resultRange.startRange(copiedLayer, -1, DocRange::kLayers);
|
||||||
resultRange.endRange(copiedLayer, -1);
|
resultRange.endRange(copiedLayer, -1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -454,8 +454,8 @@ static DocumentRange drop_range_op(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (resultRange.type() != DocumentRange::kNone)
|
if (resultRange.type() != DocRange::kNone)
|
||||||
transaction.setNewDocumentRange(resultRange);
|
transaction.setNewDocRange(resultRange);
|
||||||
|
|
||||||
transaction.commit();
|
transaction.commit();
|
||||||
}
|
}
|
||||||
@ -463,27 +463,27 @@ static DocumentRange drop_range_op(
|
|||||||
return resultRange;
|
return resultRange;
|
||||||
}
|
}
|
||||||
|
|
||||||
DocumentRange move_range(Document* doc,
|
DocRange move_range(Document* doc,
|
||||||
const DocumentRange& from,
|
const DocRange& from,
|
||||||
const DocumentRange& to,
|
const DocRange& to,
|
||||||
const DocumentRangePlace place,
|
const DocRangePlace place,
|
||||||
const TagsHandling tagsHandling)
|
const TagsHandling tagsHandling)
|
||||||
{
|
{
|
||||||
return drop_range_op(doc, Move, from, place,
|
return drop_range_op(doc, Move, from, place,
|
||||||
tagsHandling, DocumentRange(to));
|
tagsHandling, DocRange(to));
|
||||||
}
|
}
|
||||||
|
|
||||||
DocumentRange copy_range(Document* doc,
|
DocRange copy_range(Document* doc,
|
||||||
const DocumentRange& from,
|
const DocRange& from,
|
||||||
const DocumentRange& to,
|
const DocRange& to,
|
||||||
const DocumentRangePlace place,
|
const DocRangePlace place,
|
||||||
const TagsHandling tagsHandling)
|
const TagsHandling tagsHandling)
|
||||||
{
|
{
|
||||||
return drop_range_op(doc, Copy, from, place,
|
return drop_range_op(doc, Copy, from, place,
|
||||||
tagsHandling, DocumentRange(to));
|
tagsHandling, DocRange(to));
|
||||||
}
|
}
|
||||||
|
|
||||||
void reverse_frames(Document* doc, const DocumentRange& range)
|
void reverse_frames(Document* doc, const DocRange& range)
|
||||||
{
|
{
|
||||||
const app::Context* context = static_cast<app::Context*>(doc->context());
|
const app::Context* context = static_cast<app::Context*>(doc->context());
|
||||||
const ContextReader reader(context);
|
const ContextReader reader(context);
|
||||||
@ -497,19 +497,19 @@ void reverse_frames(Document* doc, const DocumentRange& range)
|
|||||||
bool swapCels = false;
|
bool swapCels = false;
|
||||||
|
|
||||||
switch (range.type()) {
|
switch (range.type()) {
|
||||||
case DocumentRange::kCels:
|
case DocRange::kCels:
|
||||||
frameBegin = range.firstFrame();
|
frameBegin = range.firstFrame();
|
||||||
frameEnd = range.lastFrame();
|
frameEnd = range.lastFrame();
|
||||||
layers = range.selectedLayers().toLayerList();
|
layers = range.selectedLayers().toLayerList();
|
||||||
swapCels = true;
|
swapCels = true;
|
||||||
break;
|
break;
|
||||||
case DocumentRange::kFrames:
|
case DocRange::kFrames:
|
||||||
frameBegin = range.firstFrame();
|
frameBegin = range.firstFrame();
|
||||||
frameEnd = range.lastFrame();
|
frameEnd = range.lastFrame();
|
||||||
layers = sprite->allLayers();
|
layers = sprite->allLayers();
|
||||||
moveFrames = true;
|
moveFrames = true;
|
||||||
break;
|
break;
|
||||||
case DocumentRange::kLayers:
|
case DocRange::kLayers:
|
||||||
frameBegin = frame_t(0);
|
frameBegin = frame_t(0);
|
||||||
frameEnd = sprite->totalFrames()-1;
|
frameEnd = sprite->totalFrames()-1;
|
||||||
layers = range.selectedLayers().toLayerList();
|
layers = range.selectedLayers().toLayerList();
|
||||||
@ -544,7 +544,7 @@ void reverse_frames(Document* doc, const DocumentRange& range)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
transaction.setNewDocumentRange(range);
|
transaction.setNewDocRange(range);
|
||||||
transaction.commit();
|
transaction.commit();
|
||||||
}
|
}
|
||||||
|
|
43
src/app/doc_range_ops.h
Normal file
43
src/app/doc_range_ops.h
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
// Aseprite
|
||||||
|
// Copyright (C) 2001-2018 David Capello
|
||||||
|
//
|
||||||
|
// This program is distributed under the terms of
|
||||||
|
// the End-User License Agreement for Aseprite.
|
||||||
|
|
||||||
|
#ifndef APP_DOC_RANGE_OPS_H_INCLUDED
|
||||||
|
#define APP_DOC_RANGE_OPS_H_INCLUDED
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "app/tags_handling.h"
|
||||||
|
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
namespace app {
|
||||||
|
class Document;
|
||||||
|
class DocRange;
|
||||||
|
|
||||||
|
enum DocRangePlace {
|
||||||
|
kDocRangeBefore,
|
||||||
|
kDocRangeAfter,
|
||||||
|
kDocRangeFirstChild,
|
||||||
|
};
|
||||||
|
|
||||||
|
// These functions returns the new location of the "from" range or
|
||||||
|
// throws an std::runtime_error() in case that the operation cannot
|
||||||
|
// be done. (E.g. the background layer cannot be moved.)
|
||||||
|
DocRange move_range(Document* doc,
|
||||||
|
const DocRange& from,
|
||||||
|
const DocRange& to,
|
||||||
|
const DocRangePlace place,
|
||||||
|
const TagsHandling tagsHandling = kDefaultTagsAdjustment);
|
||||||
|
DocRange copy_range(Document* doc,
|
||||||
|
const DocRange& from,
|
||||||
|
const DocRange& to,
|
||||||
|
const DocRangePlace place,
|
||||||
|
const TagsHandling tagsHandling = kDefaultTagsAdjustment);
|
||||||
|
|
||||||
|
void reverse_frames(Document* doc, const DocRange& range);
|
||||||
|
|
||||||
|
} // namespace app
|
||||||
|
|
||||||
|
#endif
|
@ -7,11 +7,11 @@
|
|||||||
#include "tests/test.h"
|
#include "tests/test.h"
|
||||||
|
|
||||||
#include "app/context.h"
|
#include "app/context.h"
|
||||||
|
#include "app/doc_api.h"
|
||||||
|
#include "app/doc_range.h"
|
||||||
|
#include "app/doc_range_ops.h"
|
||||||
#include "app/doc_undo.h"
|
#include "app/doc_undo.h"
|
||||||
#include "app/document.h"
|
#include "app/document.h"
|
||||||
#include "app/doc_api.h"
|
|
||||||
#include "app/document_range.h"
|
|
||||||
#include "app/document_range_ops.h"
|
|
||||||
#include "app/test_context.h"
|
#include "app/test_context.h"
|
||||||
#include "app/transaction.h"
|
#include "app/transaction.h"
|
||||||
#include "base/unique_ptr.h"
|
#include "base/unique_ptr.h"
|
||||||
@ -30,7 +30,7 @@ std::ostream& operator<<(std::ostream& os, const doc::Layer* layer) {
|
|||||||
return os;
|
return os;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::ostream& operator<<(std::ostream& os, const app::DocumentRange& range) {
|
std::ostream& operator<<(std::ostream& os, const app::DocRange& range) {
|
||||||
os << "{ layers: [";
|
os << "{ layers: [";
|
||||||
|
|
||||||
bool first = true;
|
bool first = true;
|
||||||
@ -244,48 +244,48 @@ protected:
|
|||||||
return (cel == NULL);
|
return (cel == NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
DocumentRange range(Layer* fromLayer, frame_t fromFrNum, Layer* toLayer, frame_t toFrNum, DocumentRange::Type type) {
|
DocRange range(Layer* fromLayer, frame_t fromFrNum, Layer* toLayer, frame_t toFrNum, DocRange::Type type) {
|
||||||
DocumentRange r;
|
DocRange r;
|
||||||
r.startRange(fromLayer, fromFrNum, type);
|
r.startRange(fromLayer, fromFrNum, type);
|
||||||
r.endRange(toLayer, toFrNum);
|
r.endRange(toLayer, toFrNum);
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
DocumentRange range(layer_t fromLayer, frame_t fromFrNum,
|
DocRange range(layer_t fromLayer, frame_t fromFrNum,
|
||||||
layer_t toLayer, frame_t toFrNum, DocumentRange::Type type) {
|
layer_t toLayer, frame_t toFrNum, DocRange::Type type) {
|
||||||
LayerList layers = sprite->allLayers();
|
LayerList layers = sprite->allLayers();
|
||||||
return range(layers[fromLayer], fromFrNum, layers[toLayer], toFrNum, type);
|
return range(layers[fromLayer], fromFrNum, layers[toLayer], toFrNum, type);
|
||||||
}
|
}
|
||||||
|
|
||||||
DocumentRange layers_range(Layer* fromLayer, Layer* toLayer) {
|
DocRange layers_range(Layer* fromLayer, Layer* toLayer) {
|
||||||
return range(fromLayer, -1, toLayer, -1, DocumentRange::kLayers);
|
return range(fromLayer, -1, toLayer, -1, DocRange::kLayers);
|
||||||
}
|
}
|
||||||
|
|
||||||
DocumentRange layers_range(layer_t fromLayer, layer_t toLayer) {
|
DocRange layers_range(layer_t fromLayer, layer_t toLayer) {
|
||||||
LayerList layers = sprite->allLayers();
|
LayerList layers = sprite->allLayers();
|
||||||
return layers_range(layers[fromLayer], layers[toLayer]);
|
return layers_range(layers[fromLayer], layers[toLayer]);
|
||||||
}
|
}
|
||||||
|
|
||||||
DocumentRange layers_range(Layer* layer) {
|
DocRange layers_range(Layer* layer) {
|
||||||
return range(layer, -1, layer, -1, DocumentRange::kLayers);
|
return range(layer, -1, layer, -1, DocRange::kLayers);
|
||||||
}
|
}
|
||||||
|
|
||||||
DocumentRange layers_range(layer_t layer) {
|
DocRange layers_range(layer_t layer) {
|
||||||
LayerList layers = sprite->allLayers();
|
LayerList layers = sprite->allLayers();
|
||||||
return layers_range(layers[layer]);
|
return layers_range(layers[layer]);
|
||||||
}
|
}
|
||||||
|
|
||||||
DocumentRange frames_range(frame_t fromFrame, frame_t toFrame) {
|
DocRange frames_range(frame_t fromFrame, frame_t toFrame) {
|
||||||
return range(nullptr, fromFrame, nullptr, toFrame, DocumentRange::kFrames);
|
return range(nullptr, fromFrame, nullptr, toFrame, DocRange::kFrames);
|
||||||
}
|
}
|
||||||
|
|
||||||
DocumentRange frames_range(frame_t frame) {
|
DocRange frames_range(frame_t frame) {
|
||||||
return range(nullptr, frame, nullptr, frame, DocumentRange::kFrames);
|
return range(nullptr, frame, nullptr, frame, DocRange::kFrames);
|
||||||
}
|
}
|
||||||
|
|
||||||
DocumentRange cels_range(layer_t fromLayer, frame_t fromFrNum,
|
DocRange cels_range(layer_t fromLayer, frame_t fromFrNum,
|
||||||
layer_t toLayer, frame_t toFrNum) {
|
layer_t toLayer, frame_t toFrNum) {
|
||||||
return range(fromLayer, fromFrNum, toLayer, toFrNum, DocumentRange::kCels);
|
return range(fromLayer, fromFrNum, toLayer, toFrNum, DocRange::kCels);
|
||||||
}
|
}
|
||||||
|
|
||||||
TestContextT<app::Context> ctx;
|
TestContextT<app::Context> ctx;
|
||||||
@ -304,35 +304,35 @@ TEST_F(DocRangeOps, MoveLayersNoOp) {
|
|||||||
EXPECT_EQ(layers_range(layer1),
|
EXPECT_EQ(layers_range(layer1),
|
||||||
move_range(doc,
|
move_range(doc,
|
||||||
layers_range(layer1),
|
layers_range(layer1),
|
||||||
layers_range(layer1), kDocumentRangeAfter));
|
layers_range(layer1), kDocRangeAfter));
|
||||||
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
|
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
|
||||||
EXPECT_FALSE(doc->undoHistory()->canUndo());
|
EXPECT_FALSE(doc->undoHistory()->canUndo());
|
||||||
|
|
||||||
EXPECT_EQ(layers_range(layer1),
|
EXPECT_EQ(layers_range(layer1),
|
||||||
move_range(doc,
|
move_range(doc,
|
||||||
layers_range(layer1),
|
layers_range(layer1),
|
||||||
layers_range(layer2), kDocumentRangeBefore));
|
layers_range(layer2), kDocRangeBefore));
|
||||||
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
|
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
|
||||||
EXPECT_FALSE(doc->undoHistory()->canUndo());
|
EXPECT_FALSE(doc->undoHistory()->canUndo());
|
||||||
|
|
||||||
EXPECT_EQ(layers_range(layer4),
|
EXPECT_EQ(layers_range(layer4),
|
||||||
move_range(doc,
|
move_range(doc,
|
||||||
layers_range(layer4),
|
layers_range(layer4),
|
||||||
layers_range(layer4), kDocumentRangeAfter));
|
layers_range(layer4), kDocRangeAfter));
|
||||||
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
|
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
|
||||||
EXPECT_FALSE(doc->undoHistory()->canUndo());
|
EXPECT_FALSE(doc->undoHistory()->canUndo());
|
||||||
|
|
||||||
EXPECT_EQ(layers_range(layer4),
|
EXPECT_EQ(layers_range(layer4),
|
||||||
move_range(doc,
|
move_range(doc,
|
||||||
layers_range(layer4),
|
layers_range(layer4),
|
||||||
layers_range(layer4), kDocumentRangeBefore));
|
layers_range(layer4), kDocRangeBefore));
|
||||||
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
|
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
|
||||||
EXPECT_FALSE(doc->undoHistory()->canUndo());
|
EXPECT_FALSE(doc->undoHistory()->canUndo());
|
||||||
|
|
||||||
EXPECT_EQ(layers_range(layer4),
|
EXPECT_EQ(layers_range(layer4),
|
||||||
move_range(doc,
|
move_range(doc,
|
||||||
layers_range(layer4),
|
layers_range(layer4),
|
||||||
layers_range(layer3), kDocumentRangeAfter));
|
layers_range(layer3), kDocRangeAfter));
|
||||||
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
|
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
|
||||||
EXPECT_FALSE(doc->undoHistory()->canUndo());
|
EXPECT_FALSE(doc->undoHistory()->canUndo());
|
||||||
|
|
||||||
@ -341,76 +341,76 @@ TEST_F(DocRangeOps, MoveLayersNoOp) {
|
|||||||
EXPECT_EQ(layers_range(layer1, layer2),
|
EXPECT_EQ(layers_range(layer1, layer2),
|
||||||
move_range(doc,
|
move_range(doc,
|
||||||
layers_range(layer1, layer2),
|
layers_range(layer1, layer2),
|
||||||
layers_range(layer1), kDocumentRangeBefore));
|
layers_range(layer1), kDocRangeBefore));
|
||||||
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
|
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
|
||||||
EXPECT_FALSE(doc->undoHistory()->canUndo());
|
EXPECT_FALSE(doc->undoHistory()->canUndo());
|
||||||
|
|
||||||
EXPECT_EQ(layers_range(layer1, layer2),
|
EXPECT_EQ(layers_range(layer1, layer2),
|
||||||
move_range(doc,
|
move_range(doc,
|
||||||
layers_range(layer1, layer2),
|
layers_range(layer1, layer2),
|
||||||
layers_range(layer1), kDocumentRangeAfter));
|
layers_range(layer1), kDocRangeAfter));
|
||||||
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
|
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
|
||||||
EXPECT_FALSE(doc->undoHistory()->canUndo());
|
EXPECT_FALSE(doc->undoHistory()->canUndo());
|
||||||
|
|
||||||
EXPECT_EQ(layers_range(layer1, layer2),
|
EXPECT_EQ(layers_range(layer1, layer2),
|
||||||
move_range(doc,
|
move_range(doc,
|
||||||
layers_range(layer1, layer2),
|
layers_range(layer1, layer2),
|
||||||
layers_range(layer2), kDocumentRangeBefore));
|
layers_range(layer2), kDocRangeBefore));
|
||||||
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
|
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
|
||||||
EXPECT_FALSE(doc->undoHistory()->canUndo());
|
EXPECT_FALSE(doc->undoHistory()->canUndo());
|
||||||
|
|
||||||
EXPECT_EQ(layers_range(layer1, layer2),
|
EXPECT_EQ(layers_range(layer1, layer2),
|
||||||
move_range(doc,
|
move_range(doc,
|
||||||
layers_range(layer1, layer2),
|
layers_range(layer1, layer2),
|
||||||
layers_range(layer2), kDocumentRangeAfter));
|
layers_range(layer2), kDocRangeAfter));
|
||||||
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
|
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
|
||||||
EXPECT_FALSE(doc->undoHistory()->canUndo());
|
EXPECT_FALSE(doc->undoHistory()->canUndo());
|
||||||
|
|
||||||
EXPECT_EQ(layers_range(layer1, layer2),
|
EXPECT_EQ(layers_range(layer1, layer2),
|
||||||
move_range(doc,
|
move_range(doc,
|
||||||
layers_range(layer1, layer2),
|
layers_range(layer1, layer2),
|
||||||
layers_range(layer3), kDocumentRangeBefore));
|
layers_range(layer3), kDocRangeBefore));
|
||||||
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
|
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
|
||||||
EXPECT_FALSE(doc->undoHistory()->canUndo());
|
EXPECT_FALSE(doc->undoHistory()->canUndo());
|
||||||
|
|
||||||
EXPECT_EQ(layers_range(layer3, layer4),
|
EXPECT_EQ(layers_range(layer3, layer4),
|
||||||
move_range(doc,
|
move_range(doc,
|
||||||
layers_range(layer3, layer4),
|
layers_range(layer3, layer4),
|
||||||
layers_range(layer2), kDocumentRangeAfter));
|
layers_range(layer2), kDocRangeAfter));
|
||||||
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
|
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
|
||||||
EXPECT_FALSE(doc->undoHistory()->canUndo());
|
EXPECT_FALSE(doc->undoHistory()->canUndo());
|
||||||
|
|
||||||
EXPECT_EQ(layers_range(layer3, layer4),
|
EXPECT_EQ(layers_range(layer3, layer4),
|
||||||
move_range(doc,
|
move_range(doc,
|
||||||
layers_range(layer3, layer4),
|
layers_range(layer3, layer4),
|
||||||
layers_range(layer3), kDocumentRangeBefore));
|
layers_range(layer3), kDocRangeBefore));
|
||||||
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
|
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
|
||||||
EXPECT_FALSE(doc->undoHistory()->canUndo());
|
EXPECT_FALSE(doc->undoHistory()->canUndo());
|
||||||
|
|
||||||
EXPECT_EQ(layers_range(layer3, layer4),
|
EXPECT_EQ(layers_range(layer3, layer4),
|
||||||
move_range(doc,
|
move_range(doc,
|
||||||
layers_range(layer3, layer4),
|
layers_range(layer3, layer4),
|
||||||
layers_range(layer3), kDocumentRangeAfter));
|
layers_range(layer3), kDocRangeAfter));
|
||||||
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
|
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
|
||||||
EXPECT_FALSE(doc->undoHistory()->canUndo());
|
EXPECT_FALSE(doc->undoHistory()->canUndo());
|
||||||
|
|
||||||
EXPECT_EQ(layers_range(layer3, layer4),
|
EXPECT_EQ(layers_range(layer3, layer4),
|
||||||
move_range(doc,
|
move_range(doc,
|
||||||
layers_range(layer3, layer4),
|
layers_range(layer3, layer4),
|
||||||
layers_range(layer4), kDocumentRangeBefore));
|
layers_range(layer4), kDocRangeBefore));
|
||||||
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
|
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
|
||||||
EXPECT_FALSE(doc->undoHistory()->canUndo());
|
EXPECT_FALSE(doc->undoHistory()->canUndo());
|
||||||
|
|
||||||
EXPECT_EQ(layers_range(layer3, layer4),
|
EXPECT_EQ(layers_range(layer3, layer4),
|
||||||
move_range(doc,
|
move_range(doc,
|
||||||
layers_range(layer3, layer4),
|
layers_range(layer3, layer4),
|
||||||
layers_range(layer4), kDocumentRangeAfter));
|
layers_range(layer4), kDocRangeAfter));
|
||||||
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
|
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
|
||||||
EXPECT_FALSE(doc->undoHistory()->canUndo());
|
EXPECT_FALSE(doc->undoHistory()->canUndo());
|
||||||
|
|
||||||
// Move four layers
|
// Move four layers
|
||||||
|
|
||||||
DocumentRangePlace places[] = { kDocumentRangeBefore, kDocumentRangeAfter };
|
DocRangePlace places[] = { kDocRangeBefore, kDocRangeAfter };
|
||||||
for (int i=0; i<2; ++i) {
|
for (int i=0; i<2; ++i) {
|
||||||
for (int layer=0; layer<4; ++layer) {
|
for (int layer=0; layer<4; ++layer) {
|
||||||
EXPECT_EQ(layers_range(layer1, layer4),
|
EXPECT_EQ(layers_range(layer1, layer4),
|
||||||
@ -454,35 +454,35 @@ TEST_F(DocRangeOps, MoveFramesNoOp) {
|
|||||||
EXPECT_EQ(frames_range(0),
|
EXPECT_EQ(frames_range(0),
|
||||||
move_range(doc,
|
move_range(doc,
|
||||||
frames_range(0),
|
frames_range(0),
|
||||||
frames_range(0), kDocumentRangeAfter));
|
frames_range(0), kDocRangeAfter));
|
||||||
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
||||||
EXPECT_FALSE(doc->undoHistory()->canUndo());
|
EXPECT_FALSE(doc->undoHistory()->canUndo());
|
||||||
|
|
||||||
EXPECT_EQ(frames_range(0),
|
EXPECT_EQ(frames_range(0),
|
||||||
move_range(doc,
|
move_range(doc,
|
||||||
frames_range(0),
|
frames_range(0),
|
||||||
frames_range(1), kDocumentRangeBefore));
|
frames_range(1), kDocRangeBefore));
|
||||||
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
||||||
EXPECT_FALSE(doc->undoHistory()->canUndo());
|
EXPECT_FALSE(doc->undoHistory()->canUndo());
|
||||||
|
|
||||||
EXPECT_EQ(frames_range(3),
|
EXPECT_EQ(frames_range(3),
|
||||||
move_range(doc,
|
move_range(doc,
|
||||||
frames_range(3),
|
frames_range(3),
|
||||||
frames_range(3), kDocumentRangeAfter));
|
frames_range(3), kDocRangeAfter));
|
||||||
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
||||||
EXPECT_FALSE(doc->undoHistory()->canUndo());
|
EXPECT_FALSE(doc->undoHistory()->canUndo());
|
||||||
|
|
||||||
EXPECT_EQ(frames_range(3),
|
EXPECT_EQ(frames_range(3),
|
||||||
move_range(doc,
|
move_range(doc,
|
||||||
frames_range(3),
|
frames_range(3),
|
||||||
frames_range(3), kDocumentRangeBefore));
|
frames_range(3), kDocRangeBefore));
|
||||||
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
||||||
EXPECT_FALSE(doc->undoHistory()->canUndo());
|
EXPECT_FALSE(doc->undoHistory()->canUndo());
|
||||||
|
|
||||||
EXPECT_EQ(frames_range(3),
|
EXPECT_EQ(frames_range(3),
|
||||||
move_range(doc,
|
move_range(doc,
|
||||||
frames_range(3),
|
frames_range(3),
|
||||||
frames_range(2), kDocumentRangeAfter));
|
frames_range(2), kDocRangeAfter));
|
||||||
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
||||||
EXPECT_FALSE(doc->undoHistory()->canUndo());
|
EXPECT_FALSE(doc->undoHistory()->canUndo());
|
||||||
|
|
||||||
@ -491,76 +491,76 @@ TEST_F(DocRangeOps, MoveFramesNoOp) {
|
|||||||
EXPECT_EQ(frames_range(0, 1),
|
EXPECT_EQ(frames_range(0, 1),
|
||||||
move_range(doc,
|
move_range(doc,
|
||||||
frames_range(0, 1),
|
frames_range(0, 1),
|
||||||
frames_range(0), kDocumentRangeBefore));
|
frames_range(0), kDocRangeBefore));
|
||||||
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
||||||
EXPECT_FALSE(doc->undoHistory()->canUndo());
|
EXPECT_FALSE(doc->undoHistory()->canUndo());
|
||||||
|
|
||||||
EXPECT_EQ(frames_range(0, 1),
|
EXPECT_EQ(frames_range(0, 1),
|
||||||
move_range(doc,
|
move_range(doc,
|
||||||
frames_range(0, 1),
|
frames_range(0, 1),
|
||||||
frames_range(0), kDocumentRangeAfter));
|
frames_range(0), kDocRangeAfter));
|
||||||
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
||||||
EXPECT_FALSE(doc->undoHistory()->canUndo());
|
EXPECT_FALSE(doc->undoHistory()->canUndo());
|
||||||
|
|
||||||
EXPECT_EQ(frames_range(0, 1),
|
EXPECT_EQ(frames_range(0, 1),
|
||||||
move_range(doc,
|
move_range(doc,
|
||||||
frames_range(0, 1),
|
frames_range(0, 1),
|
||||||
frames_range(1), kDocumentRangeBefore));
|
frames_range(1), kDocRangeBefore));
|
||||||
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
||||||
EXPECT_FALSE(doc->undoHistory()->canUndo());
|
EXPECT_FALSE(doc->undoHistory()->canUndo());
|
||||||
|
|
||||||
EXPECT_EQ(frames_range(0, 1),
|
EXPECT_EQ(frames_range(0, 1),
|
||||||
move_range(doc,
|
move_range(doc,
|
||||||
frames_range(0, 1),
|
frames_range(0, 1),
|
||||||
frames_range(1), kDocumentRangeAfter));
|
frames_range(1), kDocRangeAfter));
|
||||||
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
||||||
EXPECT_FALSE(doc->undoHistory()->canUndo());
|
EXPECT_FALSE(doc->undoHistory()->canUndo());
|
||||||
|
|
||||||
EXPECT_EQ(frames_range(0, 1),
|
EXPECT_EQ(frames_range(0, 1),
|
||||||
move_range(doc,
|
move_range(doc,
|
||||||
frames_range(0, 1),
|
frames_range(0, 1),
|
||||||
frames_range(2), kDocumentRangeBefore));
|
frames_range(2), kDocRangeBefore));
|
||||||
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
||||||
EXPECT_FALSE(doc->undoHistory()->canUndo());
|
EXPECT_FALSE(doc->undoHistory()->canUndo());
|
||||||
|
|
||||||
EXPECT_EQ(frames_range(2, 3),
|
EXPECT_EQ(frames_range(2, 3),
|
||||||
move_range(doc,
|
move_range(doc,
|
||||||
frames_range(2, 3),
|
frames_range(2, 3),
|
||||||
frames_range(1), kDocumentRangeAfter));
|
frames_range(1), kDocRangeAfter));
|
||||||
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
||||||
EXPECT_FALSE(doc->undoHistory()->canUndo());
|
EXPECT_FALSE(doc->undoHistory()->canUndo());
|
||||||
|
|
||||||
EXPECT_EQ(frames_range(2, 3),
|
EXPECT_EQ(frames_range(2, 3),
|
||||||
move_range(doc,
|
move_range(doc,
|
||||||
frames_range(2, 3),
|
frames_range(2, 3),
|
||||||
frames_range(2), kDocumentRangeBefore));
|
frames_range(2), kDocRangeBefore));
|
||||||
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
||||||
EXPECT_FALSE(doc->undoHistory()->canUndo());
|
EXPECT_FALSE(doc->undoHistory()->canUndo());
|
||||||
|
|
||||||
EXPECT_EQ(frames_range(2, 3),
|
EXPECT_EQ(frames_range(2, 3),
|
||||||
move_range(doc,
|
move_range(doc,
|
||||||
frames_range(2, 3),
|
frames_range(2, 3),
|
||||||
frames_range(2), kDocumentRangeAfter));
|
frames_range(2), kDocRangeAfter));
|
||||||
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
||||||
EXPECT_FALSE(doc->undoHistory()->canUndo());
|
EXPECT_FALSE(doc->undoHistory()->canUndo());
|
||||||
|
|
||||||
EXPECT_EQ(frames_range(2, 3),
|
EXPECT_EQ(frames_range(2, 3),
|
||||||
move_range(doc,
|
move_range(doc,
|
||||||
frames_range(2, 3),
|
frames_range(2, 3),
|
||||||
frames_range(3), kDocumentRangeBefore));
|
frames_range(3), kDocRangeBefore));
|
||||||
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
||||||
EXPECT_FALSE(doc->undoHistory()->canUndo());
|
EXPECT_FALSE(doc->undoHistory()->canUndo());
|
||||||
|
|
||||||
EXPECT_EQ(frames_range(2, 3),
|
EXPECT_EQ(frames_range(2, 3),
|
||||||
move_range(doc,
|
move_range(doc,
|
||||||
frames_range(2, 3),
|
frames_range(2, 3),
|
||||||
frames_range(3), kDocumentRangeAfter));
|
frames_range(3), kDocRangeAfter));
|
||||||
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
||||||
EXPECT_FALSE(doc->undoHistory()->canUndo());
|
EXPECT_FALSE(doc->undoHistory()->canUndo());
|
||||||
|
|
||||||
// Move four frames
|
// Move four frames
|
||||||
|
|
||||||
DocumentRangePlace places[] = { kDocumentRangeBefore, kDocumentRangeAfter };
|
DocRangePlace places[] = { kDocRangeBefore, kDocRangeAfter };
|
||||||
for (int i=0; i<2; ++i) {
|
for (int i=0; i<2; ++i) {
|
||||||
for (int frame=0; frame<4; ++frame) {
|
for (int frame=0; frame<4; ++frame) {
|
||||||
EXPECT_EQ(frames_range(0, 3),
|
EXPECT_EQ(frames_range(0, 3),
|
||||||
@ -602,7 +602,7 @@ TEST_F(DocRangeOps, MoveCelsNoOp) {
|
|||||||
EXPECT_EQ(cels_range(0, 0, 1, 1),
|
EXPECT_EQ(cels_range(0, 0, 1, 1),
|
||||||
move_range(doc,
|
move_range(doc,
|
||||||
cels_range(0, 0, 1, 1),
|
cels_range(0, 0, 1, 1),
|
||||||
cels_range(0, 0, 1, 1), kDocumentRangeAfter));
|
cels_range(0, 0, 1, 1), kDocRangeAfter));
|
||||||
EXPECT_CEL(0, 0, 0, 0);
|
EXPECT_CEL(0, 0, 0, 0);
|
||||||
EXPECT_CEL(0, 1, 0, 1);
|
EXPECT_CEL(0, 1, 0, 1);
|
||||||
EXPECT_CEL(1, 0, 1, 0);
|
EXPECT_CEL(1, 0, 1, 0);
|
||||||
@ -619,7 +619,7 @@ TEST_F(DocRangeOps, MoveLayers) {
|
|||||||
EXPECT_EQ(layers_range(layer1),
|
EXPECT_EQ(layers_range(layer1),
|
||||||
move_range(doc,
|
move_range(doc,
|
||||||
layers_range(layer1),
|
layers_range(layer1),
|
||||||
layers_range(layer2), kDocumentRangeAfter));
|
layers_range(layer2), kDocRangeAfter));
|
||||||
EXPECT_LAYER_ORDER(layer2, layer1, layer3, layer4);
|
EXPECT_LAYER_ORDER(layer2, layer1, layer3, layer4);
|
||||||
doc->undoHistory()->undo();
|
doc->undoHistory()->undo();
|
||||||
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
|
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
|
||||||
@ -628,7 +628,7 @@ TEST_F(DocRangeOps, MoveLayers) {
|
|||||||
EXPECT_EQ(layers_range(layer2),
|
EXPECT_EQ(layers_range(layer2),
|
||||||
move_range(doc,
|
move_range(doc,
|
||||||
layers_range(layer2),
|
layers_range(layer2),
|
||||||
layers_range(layer1), kDocumentRangeBefore));
|
layers_range(layer1), kDocRangeBefore));
|
||||||
EXPECT_LAYER_ORDER(layer2, layer1, layer3, layer4);
|
EXPECT_LAYER_ORDER(layer2, layer1, layer3, layer4);
|
||||||
doc->undoHistory()->undo();
|
doc->undoHistory()->undo();
|
||||||
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
|
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
|
||||||
@ -638,7 +638,7 @@ TEST_F(DocRangeOps, MoveLayers) {
|
|||||||
EXPECT_THROW({
|
EXPECT_THROW({
|
||||||
move_range(doc,
|
move_range(doc,
|
||||||
layers_range(layer1),
|
layers_range(layer1),
|
||||||
layers_range(layer2), kDocumentRangeAfter);
|
layers_range(layer2), kDocRangeAfter);
|
||||||
}, std::exception);
|
}, std::exception);
|
||||||
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
|
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
|
||||||
layer1->setBackground(false);
|
layer1->setBackground(false);
|
||||||
@ -647,7 +647,7 @@ TEST_F(DocRangeOps, MoveLayers) {
|
|||||||
EXPECT_EQ(layers_range(layer2),
|
EXPECT_EQ(layers_range(layer2),
|
||||||
move_range(doc,
|
move_range(doc,
|
||||||
layers_range(layer2),
|
layers_range(layer2),
|
||||||
layers_range(layer4), kDocumentRangeAfter));
|
layers_range(layer4), kDocRangeAfter));
|
||||||
EXPECT_LAYER_ORDER(layer1, layer3, layer4, layer2);
|
EXPECT_LAYER_ORDER(layer1, layer3, layer4, layer2);
|
||||||
doc->undoHistory()->undo();
|
doc->undoHistory()->undo();
|
||||||
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
|
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
|
||||||
@ -656,7 +656,7 @@ TEST_F(DocRangeOps, MoveLayers) {
|
|||||||
EXPECT_EQ(layers_range(layer2),
|
EXPECT_EQ(layers_range(layer2),
|
||||||
move_range(doc,
|
move_range(doc,
|
||||||
layers_range(layer2),
|
layers_range(layer2),
|
||||||
layers_range(layer4), kDocumentRangeBefore));
|
layers_range(layer4), kDocRangeBefore));
|
||||||
EXPECT_LAYER_ORDER(layer1, layer3, layer2, layer4);
|
EXPECT_LAYER_ORDER(layer1, layer3, layer2, layer4);
|
||||||
doc->undoHistory()->undo();
|
doc->undoHistory()->undo();
|
||||||
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
|
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
|
||||||
@ -664,7 +664,7 @@ TEST_F(DocRangeOps, MoveLayers) {
|
|||||||
EXPECT_EQ(layers_range(layer1),
|
EXPECT_EQ(layers_range(layer1),
|
||||||
move_range(doc,
|
move_range(doc,
|
||||||
layers_range(layer1),
|
layers_range(layer1),
|
||||||
layers_range(layer3, layer4), kDocumentRangeBefore));
|
layers_range(layer3, layer4), kDocRangeBefore));
|
||||||
EXPECT_LAYER_ORDER(layer2, layer1, layer3, layer4);
|
EXPECT_LAYER_ORDER(layer2, layer1, layer3, layer4);
|
||||||
doc->undoHistory()->undo();
|
doc->undoHistory()->undo();
|
||||||
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
|
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
|
||||||
@ -673,13 +673,13 @@ TEST_F(DocRangeOps, MoveLayers) {
|
|||||||
EXPECT_EQ(layers_range(layer2, layer3),
|
EXPECT_EQ(layers_range(layer2, layer3),
|
||||||
move_range(doc,
|
move_range(doc,
|
||||||
layers_range(layer2, layer3),
|
layers_range(layer2, layer3),
|
||||||
layers_range(layer4), kDocumentRangeAfter));
|
layers_range(layer4), kDocRangeAfter));
|
||||||
EXPECT_LAYER_ORDER(layer1, layer4, layer2, layer3);
|
EXPECT_LAYER_ORDER(layer1, layer4, layer2, layer3);
|
||||||
|
|
||||||
EXPECT_EQ(layers_range(layer2, layer3),
|
EXPECT_EQ(layers_range(layer2, layer3),
|
||||||
move_range(doc,
|
move_range(doc,
|
||||||
layers_range(layer2, layer3),
|
layers_range(layer2, layer3),
|
||||||
layers_range(layer1), kDocumentRangeAfter));
|
layers_range(layer1), kDocRangeAfter));
|
||||||
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
|
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
|
||||||
|
|
||||||
// Move three layers at the bottom (but we cannot because the bottom is a background layer)
|
// Move three layers at the bottom (but we cannot because the bottom is a background layer)
|
||||||
@ -687,7 +687,7 @@ TEST_F(DocRangeOps, MoveLayers) {
|
|||||||
EXPECT_THROW({
|
EXPECT_THROW({
|
||||||
move_range(doc,
|
move_range(doc,
|
||||||
layers_range(layer2, layer4),
|
layers_range(layer2, layer4),
|
||||||
layers_range(layer1), kDocumentRangeBefore);
|
layers_range(layer1), kDocRangeBefore);
|
||||||
}, std::exception);
|
}, std::exception);
|
||||||
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
|
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
|
||||||
layer1->setBackground(false);
|
layer1->setBackground(false);
|
||||||
@ -696,7 +696,7 @@ TEST_F(DocRangeOps, MoveLayers) {
|
|||||||
EXPECT_EQ(layers_range(layer1, layer3),
|
EXPECT_EQ(layers_range(layer1, layer3),
|
||||||
move_range(doc,
|
move_range(doc,
|
||||||
layers_range(layer1, layer3),
|
layers_range(layer1, layer3),
|
||||||
layers_range(layer4), kDocumentRangeAfter));
|
layers_range(layer4), kDocRangeAfter));
|
||||||
EXPECT_LAYER_ORDER(layer4, layer1, layer2, layer3);
|
EXPECT_LAYER_ORDER(layer4, layer1, layer2, layer3);
|
||||||
doc->undoHistory()->undo();
|
doc->undoHistory()->undo();
|
||||||
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
|
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
|
||||||
@ -705,7 +705,7 @@ TEST_F(DocRangeOps, MoveLayers) {
|
|||||||
EXPECT_EQ(layers_range(layer2, layer4),
|
EXPECT_EQ(layers_range(layer2, layer4),
|
||||||
move_range(doc,
|
move_range(doc,
|
||||||
layers_range(layer2, layer4),
|
layers_range(layer2, layer4),
|
||||||
layers_range(layer1), kDocumentRangeBefore));
|
layers_range(layer1), kDocRangeBefore));
|
||||||
EXPECT_LAYER_ORDER(layer2, layer3, layer4, layer1);
|
EXPECT_LAYER_ORDER(layer2, layer3, layer4, layer1);
|
||||||
doc->undoHistory()->undo();
|
doc->undoHistory()->undo();
|
||||||
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
|
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
|
||||||
@ -716,7 +716,7 @@ TEST_F(DocRangeOps, MoveFrames) {
|
|||||||
EXPECT_EQ(frames_range(1),
|
EXPECT_EQ(frames_range(1),
|
||||||
move_range(doc,
|
move_range(doc,
|
||||||
frames_range(0),
|
frames_range(0),
|
||||||
frames_range(1), kDocumentRangeAfter));
|
frames_range(1), kDocRangeAfter));
|
||||||
EXPECT_FRAME_ORDER(1, 0, 2, 3);
|
EXPECT_FRAME_ORDER(1, 0, 2, 3);
|
||||||
doc->undoHistory()->undo();
|
doc->undoHistory()->undo();
|
||||||
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
||||||
@ -726,7 +726,7 @@ TEST_F(DocRangeOps, MoveFrames) {
|
|||||||
EXPECT_EQ(frames_range(5),
|
EXPECT_EQ(frames_range(5),
|
||||||
move_range(doc,
|
move_range(doc,
|
||||||
frames_range(1),
|
frames_range(1),
|
||||||
frames_range(5), kDocumentRangeAfter));
|
frames_range(5), kDocRangeAfter));
|
||||||
EXPECT_FRAME_ORDER6(0, 2, 3, 4, 5, 1);
|
EXPECT_FRAME_ORDER6(0, 2, 3, 4, 5, 1);
|
||||||
doc->undoHistory()->undo();
|
doc->undoHistory()->undo();
|
||||||
EXPECT_FRAME_ORDER6(0, 1, 2, 3, 4, 5);
|
EXPECT_FRAME_ORDER6(0, 1, 2, 3, 4, 5);
|
||||||
@ -736,7 +736,7 @@ TEST_F(DocRangeOps, MoveFrames) {
|
|||||||
move_range(
|
move_range(
|
||||||
doc,
|
doc,
|
||||||
frames_range(1, 2),
|
frames_range(1, 2),
|
||||||
frames_range(5), kDocumentRangeAfter));
|
frames_range(5), kDocRangeAfter));
|
||||||
EXPECT_FRAME_ORDER6(0, 3, 4, 5, 1, 2);
|
EXPECT_FRAME_ORDER6(0, 3, 4, 5, 1, 2);
|
||||||
doc->undoHistory()->undo();
|
doc->undoHistory()->undo();
|
||||||
EXPECT_FRAME_ORDER6(0, 1, 2, 3, 4, 5);
|
EXPECT_FRAME_ORDER6(0, 1, 2, 3, 4, 5);
|
||||||
@ -745,7 +745,7 @@ TEST_F(DocRangeOps, MoveFrames) {
|
|||||||
EXPECT_EQ(frames_range(1, 2),
|
EXPECT_EQ(frames_range(1, 2),
|
||||||
move_range(doc,
|
move_range(doc,
|
||||||
frames_range(2, 3),
|
frames_range(2, 3),
|
||||||
frames_range(0), kDocumentRangeAfter));
|
frames_range(0), kDocRangeAfter));
|
||||||
EXPECT_FRAME_ORDER(0, 2, 3, 1);
|
EXPECT_FRAME_ORDER(0, 2, 3, 1);
|
||||||
doc->undoHistory()->undo();
|
doc->undoHistory()->undo();
|
||||||
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
||||||
@ -754,7 +754,7 @@ TEST_F(DocRangeOps, MoveFrames) {
|
|||||||
EXPECT_EQ(frames_range(0, 2),
|
EXPECT_EQ(frames_range(0, 2),
|
||||||
move_range(doc,
|
move_range(doc,
|
||||||
frames_range(1, 3),
|
frames_range(1, 3),
|
||||||
frames_range(0), kDocumentRangeBefore));
|
frames_range(0), kDocRangeBefore));
|
||||||
EXPECT_FRAME_ORDER(1, 2, 3, 0);
|
EXPECT_FRAME_ORDER(1, 2, 3, 0);
|
||||||
doc->undoHistory()->undo();
|
doc->undoHistory()->undo();
|
||||||
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
||||||
@ -763,7 +763,7 @@ TEST_F(DocRangeOps, MoveFrames) {
|
|||||||
EXPECT_EQ(frames_range(1, 3),
|
EXPECT_EQ(frames_range(1, 3),
|
||||||
move_range(doc,
|
move_range(doc,
|
||||||
frames_range(0, 2),
|
frames_range(0, 2),
|
||||||
frames_range(3), kDocumentRangeAfter));
|
frames_range(3), kDocRangeAfter));
|
||||||
EXPECT_FRAME_ORDER(3, 0, 1, 2);
|
EXPECT_FRAME_ORDER(3, 0, 1, 2);
|
||||||
doc->undoHistory()->undo();
|
doc->undoHistory()->undo();
|
||||||
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
||||||
@ -772,14 +772,14 @@ TEST_F(DocRangeOps, MoveFrames) {
|
|||||||
TEST_F(DocRangeOps, MoveFramesNonAdjacent) {
|
TEST_F(DocRangeOps, MoveFramesNonAdjacent) {
|
||||||
// Move frames 0,2...
|
// Move frames 0,2...
|
||||||
|
|
||||||
DocumentRange from;
|
DocRange from;
|
||||||
from.startRange(nullptr, 0, DocumentRange::kFrames); from.endRange(nullptr, 0);
|
from.startRange(nullptr, 0, DocRange::kFrames); from.endRange(nullptr, 0);
|
||||||
from.startRange(nullptr, 2, DocumentRange::kFrames); from.endRange(nullptr, 2);
|
from.startRange(nullptr, 2, DocRange::kFrames); from.endRange(nullptr, 2);
|
||||||
|
|
||||||
// Move frames 0,2 after 3...
|
// Move frames 0,2 after 3...
|
||||||
|
|
||||||
EXPECT_EQ(frames_range(2, 3),
|
EXPECT_EQ(frames_range(2, 3),
|
||||||
move_range(doc, from, frames_range(3), kDocumentRangeAfter));
|
move_range(doc, from, frames_range(3), kDocRangeAfter));
|
||||||
EXPECT_FRAME_ORDER(1, 3, 0, 2);
|
EXPECT_FRAME_ORDER(1, 3, 0, 2);
|
||||||
doc->undoHistory()->undo();
|
doc->undoHistory()->undo();
|
||||||
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
||||||
@ -787,7 +787,7 @@ TEST_F(DocRangeOps, MoveFramesNonAdjacent) {
|
|||||||
// Move frames 0,2 before 3...
|
// Move frames 0,2 before 3...
|
||||||
|
|
||||||
EXPECT_EQ(frames_range(1, 2),
|
EXPECT_EQ(frames_range(1, 2),
|
||||||
move_range(doc, from, frames_range(3), kDocumentRangeBefore));
|
move_range(doc, from, frames_range(3), kDocRangeBefore));
|
||||||
EXPECT_FRAME_ORDER(1, 0, 2, 3);
|
EXPECT_FRAME_ORDER(1, 0, 2, 3);
|
||||||
doc->undoHistory()->undo();
|
doc->undoHistory()->undo();
|
||||||
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
||||||
@ -795,7 +795,7 @@ TEST_F(DocRangeOps, MoveFramesNonAdjacent) {
|
|||||||
// Move frames 0,2 before 0...
|
// Move frames 0,2 before 0...
|
||||||
|
|
||||||
EXPECT_EQ(frames_range(0, 1),
|
EXPECT_EQ(frames_range(0, 1),
|
||||||
move_range(doc, from, frames_range(0), kDocumentRangeBefore));
|
move_range(doc, from, frames_range(0), kDocRangeBefore));
|
||||||
EXPECT_FRAME_ORDER(0, 2, 1, 3);
|
EXPECT_FRAME_ORDER(0, 2, 1, 3);
|
||||||
doc->undoHistory()->undo();
|
doc->undoHistory()->undo();
|
||||||
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
||||||
@ -803,7 +803,7 @@ TEST_F(DocRangeOps, MoveFramesNonAdjacent) {
|
|||||||
// Move frames 0,2 after 0...
|
// Move frames 0,2 after 0...
|
||||||
|
|
||||||
EXPECT_EQ(frames_range(0, 1),
|
EXPECT_EQ(frames_range(0, 1),
|
||||||
move_range(doc, from, frames_range(0), kDocumentRangeAfter));
|
move_range(doc, from, frames_range(0), kDocRangeAfter));
|
||||||
EXPECT_FRAME_ORDER(0, 2, 1, 3);
|
EXPECT_FRAME_ORDER(0, 2, 1, 3);
|
||||||
doc->undoHistory()->undo();
|
doc->undoHistory()->undo();
|
||||||
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
||||||
@ -811,7 +811,7 @@ TEST_F(DocRangeOps, MoveFramesNonAdjacent) {
|
|||||||
// Move frames 0,2 before 1...
|
// Move frames 0,2 before 1...
|
||||||
|
|
||||||
EXPECT_EQ(frames_range(0, 1),
|
EXPECT_EQ(frames_range(0, 1),
|
||||||
move_range(doc, from, frames_range(1), kDocumentRangeBefore));
|
move_range(doc, from, frames_range(1), kDocRangeBefore));
|
||||||
EXPECT_FRAME_ORDER(0, 2, 1, 3);
|
EXPECT_FRAME_ORDER(0, 2, 1, 3);
|
||||||
doc->undoHistory()->undo();
|
doc->undoHistory()->undo();
|
||||||
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
||||||
@ -819,7 +819,7 @@ TEST_F(DocRangeOps, MoveFramesNonAdjacent) {
|
|||||||
// Move frames 0,2 after 1...
|
// Move frames 0,2 after 1...
|
||||||
|
|
||||||
EXPECT_EQ(frames_range(1, 2),
|
EXPECT_EQ(frames_range(1, 2),
|
||||||
move_range(doc, from, frames_range(1), kDocumentRangeAfter));
|
move_range(doc, from, frames_range(1), kDocRangeAfter));
|
||||||
EXPECT_FRAME_ORDER(1, 0, 2, 3);
|
EXPECT_FRAME_ORDER(1, 0, 2, 3);
|
||||||
doc->undoHistory()->undo();
|
doc->undoHistory()->undo();
|
||||||
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
||||||
@ -827,16 +827,16 @@ TEST_F(DocRangeOps, MoveFramesNonAdjacent) {
|
|||||||
// Move 1,2,5...
|
// Move 1,2,5...
|
||||||
|
|
||||||
from.clearRange();
|
from.clearRange();
|
||||||
from.startRange(nullptr, 1, DocumentRange::kFrames);
|
from.startRange(nullptr, 1, DocRange::kFrames);
|
||||||
from.endRange(nullptr, 2);
|
from.endRange(nullptr, 2);
|
||||||
from.startRange(nullptr, 5, DocumentRange::kFrames);
|
from.startRange(nullptr, 5, DocRange::kFrames);
|
||||||
from.endRange(nullptr, 5);
|
from.endRange(nullptr, 5);
|
||||||
|
|
||||||
// Move 1,2,5 before 4...
|
// Move 1,2,5 before 4...
|
||||||
|
|
||||||
EXPECT_FRAME_ORDER6(0, 1, 2, 3, 4, 5);
|
EXPECT_FRAME_ORDER6(0, 1, 2, 3, 4, 5);
|
||||||
EXPECT_EQ(frames_range(2, 4),
|
EXPECT_EQ(frames_range(2, 4),
|
||||||
move_range(doc, from, frames_range(4), kDocumentRangeBefore));
|
move_range(doc, from, frames_range(4), kDocRangeBefore));
|
||||||
EXPECT_FRAME_ORDER6(0, 3, 1, 2, 5, 4);
|
EXPECT_FRAME_ORDER6(0, 3, 1, 2, 5, 4);
|
||||||
doc->undoHistory()->undo();
|
doc->undoHistory()->undo();
|
||||||
EXPECT_FRAME_ORDER6(0, 1, 2, 3, 4, 5);
|
EXPECT_FRAME_ORDER6(0, 1, 2, 3, 4, 5);
|
||||||
@ -844,7 +844,7 @@ TEST_F(DocRangeOps, MoveFramesNonAdjacent) {
|
|||||||
// Move 1,2,5 after 4...
|
// Move 1,2,5 after 4...
|
||||||
|
|
||||||
EXPECT_EQ(frames_range(3, 5),
|
EXPECT_EQ(frames_range(3, 5),
|
||||||
move_range(doc, from, frames_range(4), kDocumentRangeAfter));
|
move_range(doc, from, frames_range(4), kDocRangeAfter));
|
||||||
EXPECT_FRAME_ORDER6(0, 3, 4, 1, 2, 5);
|
EXPECT_FRAME_ORDER6(0, 3, 4, 1, 2, 5);
|
||||||
doc->undoHistory()->undo();
|
doc->undoHistory()->undo();
|
||||||
EXPECT_FRAME_ORDER6(0, 1, 2, 3, 4, 5);
|
EXPECT_FRAME_ORDER6(0, 1, 2, 3, 4, 5);
|
||||||
@ -852,7 +852,7 @@ TEST_F(DocRangeOps, MoveFramesNonAdjacent) {
|
|||||||
// Move 1,2,5 before 2...
|
// Move 1,2,5 before 2...
|
||||||
|
|
||||||
EXPECT_EQ(frames_range(1, 3),
|
EXPECT_EQ(frames_range(1, 3),
|
||||||
move_range(doc, from, frames_range(2), kDocumentRangeBefore));
|
move_range(doc, from, frames_range(2), kDocRangeBefore));
|
||||||
EXPECT_FRAME_ORDER6(0, 1, 2, 5, 3, 4);
|
EXPECT_FRAME_ORDER6(0, 1, 2, 5, 3, 4);
|
||||||
doc->undoHistory()->undo();
|
doc->undoHistory()->undo();
|
||||||
EXPECT_FRAME_ORDER6(0, 1, 2, 3, 4, 5);
|
EXPECT_FRAME_ORDER6(0, 1, 2, 3, 4, 5);
|
||||||
@ -860,7 +860,7 @@ TEST_F(DocRangeOps, MoveFramesNonAdjacent) {
|
|||||||
// Move 1,2,5 after 2...
|
// Move 1,2,5 after 2...
|
||||||
|
|
||||||
EXPECT_EQ(frames_range(1, 3),
|
EXPECT_EQ(frames_range(1, 3),
|
||||||
move_range(doc, from, frames_range(2), kDocumentRangeAfter));
|
move_range(doc, from, frames_range(2), kDocRangeAfter));
|
||||||
EXPECT_FRAME_ORDER6(0, 1, 2, 5, 3, 4);
|
EXPECT_FRAME_ORDER6(0, 1, 2, 5, 3, 4);
|
||||||
doc->undoHistory()->undo();
|
doc->undoHistory()->undo();
|
||||||
EXPECT_FRAME_ORDER6(0, 1, 2, 3, 4, 5);
|
EXPECT_FRAME_ORDER6(0, 1, 2, 3, 4, 5);
|
||||||
@ -868,7 +868,7 @@ TEST_F(DocRangeOps, MoveFramesNonAdjacent) {
|
|||||||
// Move 1,2,5 before 1...
|
// Move 1,2,5 before 1...
|
||||||
|
|
||||||
EXPECT_EQ(frames_range(1, 3),
|
EXPECT_EQ(frames_range(1, 3),
|
||||||
move_range(doc, from, frames_range(1), kDocumentRangeBefore));
|
move_range(doc, from, frames_range(1), kDocRangeBefore));
|
||||||
EXPECT_FRAME_ORDER6(0, 1, 2, 5, 3, 4);
|
EXPECT_FRAME_ORDER6(0, 1, 2, 5, 3, 4);
|
||||||
doc->undoHistory()->undo();
|
doc->undoHistory()->undo();
|
||||||
EXPECT_FRAME_ORDER6(0, 1, 2, 3, 4, 5);
|
EXPECT_FRAME_ORDER6(0, 1, 2, 3, 4, 5);
|
||||||
@ -876,17 +876,17 @@ TEST_F(DocRangeOps, MoveFramesNonAdjacent) {
|
|||||||
// Move 1,3,5...
|
// Move 1,3,5...
|
||||||
|
|
||||||
from.clearRange();
|
from.clearRange();
|
||||||
from.startRange(nullptr, 1, DocumentRange::kFrames);
|
from.startRange(nullptr, 1, DocRange::kFrames);
|
||||||
from.endRange(nullptr, 1);
|
from.endRange(nullptr, 1);
|
||||||
from.startRange(nullptr, 3, DocumentRange::kFrames);
|
from.startRange(nullptr, 3, DocRange::kFrames);
|
||||||
from.endRange(nullptr, 3);
|
from.endRange(nullptr, 3);
|
||||||
from.startRange(nullptr, 5, DocumentRange::kFrames);
|
from.startRange(nullptr, 5, DocRange::kFrames);
|
||||||
from.endRange(nullptr, 5);
|
from.endRange(nullptr, 5);
|
||||||
|
|
||||||
// Move 1,3,5 before 4...
|
// Move 1,3,5 before 4...
|
||||||
|
|
||||||
EXPECT_EQ(frames_range(2, 4),
|
EXPECT_EQ(frames_range(2, 4),
|
||||||
move_range(doc, from, frames_range(4), kDocumentRangeBefore));
|
move_range(doc, from, frames_range(4), kDocRangeBefore));
|
||||||
EXPECT_FRAME_ORDER6(0, 2, 1, 3, 5, 4);
|
EXPECT_FRAME_ORDER6(0, 2, 1, 3, 5, 4);
|
||||||
doc->undoHistory()->undo();
|
doc->undoHistory()->undo();
|
||||||
EXPECT_FRAME_ORDER6(0, 1, 2, 3, 4, 5);
|
EXPECT_FRAME_ORDER6(0, 1, 2, 3, 4, 5);
|
||||||
@ -894,7 +894,7 @@ TEST_F(DocRangeOps, MoveFramesNonAdjacent) {
|
|||||||
// Move 1,3,5 after 4...
|
// Move 1,3,5 after 4...
|
||||||
|
|
||||||
EXPECT_EQ(frames_range(3, 5),
|
EXPECT_EQ(frames_range(3, 5),
|
||||||
move_range(doc, from, frames_range(4), kDocumentRangeAfter));
|
move_range(doc, from, frames_range(4), kDocRangeAfter));
|
||||||
EXPECT_FRAME_ORDER6(0, 2, 4, 1, 3, 5);
|
EXPECT_FRAME_ORDER6(0, 2, 4, 1, 3, 5);
|
||||||
doc->undoHistory()->undo();
|
doc->undoHistory()->undo();
|
||||||
EXPECT_FRAME_ORDER6(0, 1, 2, 3, 4, 5);
|
EXPECT_FRAME_ORDER6(0, 1, 2, 3, 4, 5);
|
||||||
@ -902,7 +902,7 @@ TEST_F(DocRangeOps, MoveFramesNonAdjacent) {
|
|||||||
// Move 1,3,5 before 5...
|
// Move 1,3,5 before 5...
|
||||||
|
|
||||||
EXPECT_EQ(frames_range(3, 5),
|
EXPECT_EQ(frames_range(3, 5),
|
||||||
move_range(doc, from, frames_range(5), kDocumentRangeBefore));
|
move_range(doc, from, frames_range(5), kDocRangeBefore));
|
||||||
EXPECT_FRAME_ORDER6(0, 2, 4, 1, 3, 5);
|
EXPECT_FRAME_ORDER6(0, 2, 4, 1, 3, 5);
|
||||||
doc->undoHistory()->undo();
|
doc->undoHistory()->undo();
|
||||||
EXPECT_FRAME_ORDER6(0, 1, 2, 3, 4, 5);
|
EXPECT_FRAME_ORDER6(0, 1, 2, 3, 4, 5);
|
||||||
@ -910,14 +910,14 @@ TEST_F(DocRangeOps, MoveFramesNonAdjacent) {
|
|||||||
// Move 1,3,5 after 5...
|
// Move 1,3,5 after 5...
|
||||||
|
|
||||||
EXPECT_EQ(frames_range(3, 5),
|
EXPECT_EQ(frames_range(3, 5),
|
||||||
move_range(doc, from, frames_range(5), kDocumentRangeAfter));
|
move_range(doc, from, frames_range(5), kDocRangeAfter));
|
||||||
EXPECT_FRAME_ORDER6(0, 2, 4, 1, 3, 5);
|
EXPECT_FRAME_ORDER6(0, 2, 4, 1, 3, 5);
|
||||||
doc->undoHistory()->undo();
|
doc->undoHistory()->undo();
|
||||||
EXPECT_FRAME_ORDER6(0, 1, 2, 3, 4, 5);
|
EXPECT_FRAME_ORDER6(0, 1, 2, 3, 4, 5);
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(DocRangeOps, MoveCels) {
|
TEST_F(DocRangeOps, MoveCels) {
|
||||||
DocumentRangePlace ignore = kDocumentRangeBefore;
|
DocRangePlace ignore = kDocRangeBefore;
|
||||||
|
|
||||||
move_range(doc,
|
move_range(doc,
|
||||||
cels_range(0, 0, 0, 0),
|
cels_range(0, 0, 0, 0),
|
||||||
@ -982,7 +982,7 @@ TEST_F(DocRangeOps, CopyFrames) {
|
|||||||
EXPECT_EQ(frames_range(2),
|
EXPECT_EQ(frames_range(2),
|
||||||
copy_range(doc,
|
copy_range(doc,
|
||||||
frames_range(0),
|
frames_range(0),
|
||||||
frames_range(2, 3), kDocumentRangeBefore));
|
frames_range(2, 3), kDocRangeBefore));
|
||||||
EXPECT_FRAME_COPY1(0, 1, 0, 2, 3);
|
EXPECT_FRAME_COPY1(0, 1, 0, 2, 3);
|
||||||
doc->undoHistory()->undo();
|
doc->undoHistory()->undo();
|
||||||
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
||||||
@ -990,7 +990,7 @@ TEST_F(DocRangeOps, CopyFrames) {
|
|||||||
EXPECT_EQ(frames_range(4),
|
EXPECT_EQ(frames_range(4),
|
||||||
copy_range(doc,
|
copy_range(doc,
|
||||||
frames_range(0),
|
frames_range(0),
|
||||||
frames_range(2, 3), kDocumentRangeAfter));
|
frames_range(2, 3), kDocRangeAfter));
|
||||||
EXPECT_FRAME_COPY1(0, 1, 2, 3, 0);
|
EXPECT_FRAME_COPY1(0, 1, 2, 3, 0);
|
||||||
doc->undoHistory()->undo();
|
doc->undoHistory()->undo();
|
||||||
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
||||||
@ -998,7 +998,7 @@ TEST_F(DocRangeOps, CopyFrames) {
|
|||||||
EXPECT_EQ(frames_range(0),
|
EXPECT_EQ(frames_range(0),
|
||||||
copy_range(doc,
|
copy_range(doc,
|
||||||
frames_range(3),
|
frames_range(3),
|
||||||
frames_range(0, 1), kDocumentRangeBefore));
|
frames_range(0, 1), kDocRangeBefore));
|
||||||
EXPECT_FRAME_COPY1(3, 0, 1, 2, 3);
|
EXPECT_FRAME_COPY1(3, 0, 1, 2, 3);
|
||||||
doc->undoHistory()->undo();
|
doc->undoHistory()->undo();
|
||||||
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
||||||
@ -1006,7 +1006,7 @@ TEST_F(DocRangeOps, CopyFrames) {
|
|||||||
EXPECT_EQ(frames_range(2),
|
EXPECT_EQ(frames_range(2),
|
||||||
copy_range(doc,
|
copy_range(doc,
|
||||||
frames_range(3),
|
frames_range(3),
|
||||||
frames_range(0, 1), kDocumentRangeAfter));
|
frames_range(0, 1), kDocRangeAfter));
|
||||||
EXPECT_FRAME_COPY1(0, 1, 3, 2, 3);
|
EXPECT_FRAME_COPY1(0, 1, 3, 2, 3);
|
||||||
doc->undoHistory()->undo();
|
doc->undoHistory()->undo();
|
||||||
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
||||||
@ -1016,7 +1016,7 @@ TEST_F(DocRangeOps, CopyFrames) {
|
|||||||
EXPECT_EQ(frames_range(3, 5),
|
EXPECT_EQ(frames_range(3, 5),
|
||||||
copy_range(doc,
|
copy_range(doc,
|
||||||
frames_range(0, 2),
|
frames_range(0, 2),
|
||||||
frames_range(3), kDocumentRangeBefore));
|
frames_range(3), kDocRangeBefore));
|
||||||
EXPECT_FRAME_COPY3(0, 1, 2, 0, 1, 2, 3);
|
EXPECT_FRAME_COPY3(0, 1, 2, 0, 1, 2, 3);
|
||||||
doc->undoHistory()->undo();
|
doc->undoHistory()->undo();
|
||||||
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
||||||
@ -1024,7 +1024,7 @@ TEST_F(DocRangeOps, CopyFrames) {
|
|||||||
EXPECT_EQ(frames_range(4, 6),
|
EXPECT_EQ(frames_range(4, 6),
|
||||||
copy_range(doc,
|
copy_range(doc,
|
||||||
frames_range(0, 2),
|
frames_range(0, 2),
|
||||||
frames_range(3), kDocumentRangeAfter));
|
frames_range(3), kDocRangeAfter));
|
||||||
EXPECT_FRAME_COPY3(0, 1, 2, 3, 0, 1, 2);
|
EXPECT_FRAME_COPY3(0, 1, 2, 3, 0, 1, 2);
|
||||||
doc->undoHistory()->undo();
|
doc->undoHistory()->undo();
|
||||||
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
||||||
@ -1032,7 +1032,7 @@ TEST_F(DocRangeOps, CopyFrames) {
|
|||||||
EXPECT_EQ(frames_range(0, 2),
|
EXPECT_EQ(frames_range(0, 2),
|
||||||
copy_range(doc,
|
copy_range(doc,
|
||||||
frames_range(1, 3),
|
frames_range(1, 3),
|
||||||
frames_range(0), kDocumentRangeBefore));
|
frames_range(0), kDocRangeBefore));
|
||||||
EXPECT_FRAME_COPY3(1, 2, 3, 0, 1, 2, 3);
|
EXPECT_FRAME_COPY3(1, 2, 3, 0, 1, 2, 3);
|
||||||
doc->undoHistory()->undo();
|
doc->undoHistory()->undo();
|
||||||
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
||||||
@ -1040,7 +1040,7 @@ TEST_F(DocRangeOps, CopyFrames) {
|
|||||||
EXPECT_EQ(frames_range(1, 3),
|
EXPECT_EQ(frames_range(1, 3),
|
||||||
copy_range(doc,
|
copy_range(doc,
|
||||||
frames_range(1, 3),
|
frames_range(1, 3),
|
||||||
frames_range(0), kDocumentRangeAfter));
|
frames_range(0), kDocRangeAfter));
|
||||||
EXPECT_FRAME_COPY3(0, 1, 2, 3, 1, 2, 3);
|
EXPECT_FRAME_COPY3(0, 1, 2, 3, 1, 2, 3);
|
||||||
doc->undoHistory()->undo();
|
doc->undoHistory()->undo();
|
||||||
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
||||||
@ -1048,7 +1048,7 @@ TEST_F(DocRangeOps, CopyFrames) {
|
|||||||
EXPECT_EQ(frames_range(0, 2),
|
EXPECT_EQ(frames_range(0, 2),
|
||||||
copy_range(doc,
|
copy_range(doc,
|
||||||
frames_range(0, 2),
|
frames_range(0, 2),
|
||||||
frames_range(0, 2), kDocumentRangeBefore));
|
frames_range(0, 2), kDocRangeBefore));
|
||||||
EXPECT_FRAME_COPY3(0, 1, 2, 0, 1, 2, 3);
|
EXPECT_FRAME_COPY3(0, 1, 2, 0, 1, 2, 3);
|
||||||
doc->undoHistory()->undo();
|
doc->undoHistory()->undo();
|
||||||
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
||||||
@ -1056,7 +1056,7 @@ TEST_F(DocRangeOps, CopyFrames) {
|
|||||||
EXPECT_EQ(frames_range(3, 5),
|
EXPECT_EQ(frames_range(3, 5),
|
||||||
copy_range(doc,
|
copy_range(doc,
|
||||||
frames_range(0, 2),
|
frames_range(0, 2),
|
||||||
frames_range(0, 2), kDocumentRangeAfter));
|
frames_range(0, 2), kDocRangeAfter));
|
||||||
EXPECT_FRAME_COPY3(0, 1, 2, 0, 1, 2, 3);
|
EXPECT_FRAME_COPY3(0, 1, 2, 0, 1, 2, 3);
|
||||||
doc->undoHistory()->undo();
|
doc->undoHistory()->undo();
|
||||||
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
||||||
@ -1065,30 +1065,30 @@ TEST_F(DocRangeOps, CopyFrames) {
|
|||||||
TEST_F(DocRangeOps, CopyFramesNonAdjacent) {
|
TEST_F(DocRangeOps, CopyFramesNonAdjacent) {
|
||||||
// Copy frames 0 and 2...
|
// Copy frames 0 and 2...
|
||||||
|
|
||||||
DocumentRange from;
|
DocRange from;
|
||||||
from.startRange(nullptr, 0, DocumentRange::kFrames); from.endRange(nullptr, 0);
|
from.startRange(nullptr, 0, DocRange::kFrames); from.endRange(nullptr, 0);
|
||||||
from.startRange(nullptr, 2, DocumentRange::kFrames); from.endRange(nullptr, 2);
|
from.startRange(nullptr, 2, DocRange::kFrames); from.endRange(nullptr, 2);
|
||||||
|
|
||||||
EXPECT_EQ(frames_range(3, 4),
|
EXPECT_EQ(frames_range(3, 4),
|
||||||
copy_range(doc, from, frames_range(3), kDocumentRangeBefore));
|
copy_range(doc, from, frames_range(3), kDocRangeBefore));
|
||||||
EXPECT_FRAME_COPY2(0, 1, 2, 0, 2, 3);
|
EXPECT_FRAME_COPY2(0, 1, 2, 0, 2, 3);
|
||||||
doc->undoHistory()->undo();
|
doc->undoHistory()->undo();
|
||||||
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
||||||
|
|
||||||
EXPECT_EQ(frames_range(4, 5),
|
EXPECT_EQ(frames_range(4, 5),
|
||||||
copy_range(doc, from, frames_range(3), kDocumentRangeAfter));
|
copy_range(doc, from, frames_range(3), kDocRangeAfter));
|
||||||
EXPECT_FRAME_COPY2(0, 1, 2, 3, 0, 2);
|
EXPECT_FRAME_COPY2(0, 1, 2, 3, 0, 2);
|
||||||
doc->undoHistory()->undo();
|
doc->undoHistory()->undo();
|
||||||
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
||||||
|
|
||||||
EXPECT_EQ(frames_range(2, 3),
|
EXPECT_EQ(frames_range(2, 3),
|
||||||
copy_range(doc, from, frames_range(1), kDocumentRangeAfter));
|
copy_range(doc, from, frames_range(1), kDocRangeAfter));
|
||||||
EXPECT_FRAME_COPY2(0, 1, 0, 2, 2, 3);
|
EXPECT_FRAME_COPY2(0, 1, 0, 2, 2, 3);
|
||||||
doc->undoHistory()->undo();
|
doc->undoHistory()->undo();
|
||||||
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
||||||
|
|
||||||
EXPECT_EQ(frames_range(1, 2),
|
EXPECT_EQ(frames_range(1, 2),
|
||||||
copy_range(doc, from, frames_range(1), kDocumentRangeBefore));
|
copy_range(doc, from, frames_range(1), kDocRangeBefore));
|
||||||
EXPECT_FRAME_COPY2(0, 0, 2, 1, 2, 3);
|
EXPECT_FRAME_COPY2(0, 0, 2, 1, 2, 3);
|
||||||
doc->undoHistory()->undo();
|
doc->undoHistory()->undo();
|
||||||
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
||||||
@ -1096,17 +1096,17 @@ TEST_F(DocRangeOps, CopyFramesNonAdjacent) {
|
|||||||
// Copy frames 1 and 3...
|
// Copy frames 1 and 3...
|
||||||
|
|
||||||
from.clearRange();
|
from.clearRange();
|
||||||
from.startRange(nullptr, 1, DocumentRange::kFrames); from.endRange(nullptr, 1);
|
from.startRange(nullptr, 1, DocRange::kFrames); from.endRange(nullptr, 1);
|
||||||
from.startRange(nullptr, 3, DocumentRange::kFrames); from.endRange(nullptr, 3);
|
from.startRange(nullptr, 3, DocRange::kFrames); from.endRange(nullptr, 3);
|
||||||
|
|
||||||
EXPECT_EQ(frames_range(0, 1),
|
EXPECT_EQ(frames_range(0, 1),
|
||||||
copy_range(doc, from, frames_range(0), kDocumentRangeBefore));
|
copy_range(doc, from, frames_range(0), kDocRangeBefore));
|
||||||
EXPECT_FRAME_COPY2(1, 3, 0, 1, 2, 3);
|
EXPECT_FRAME_COPY2(1, 3, 0, 1, 2, 3);
|
||||||
doc->undoHistory()->undo();
|
doc->undoHistory()->undo();
|
||||||
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
||||||
|
|
||||||
EXPECT_EQ(frames_range(1, 2),
|
EXPECT_EQ(frames_range(1, 2),
|
||||||
copy_range(doc, from, frames_range(0), kDocumentRangeAfter));
|
copy_range(doc, from, frames_range(0), kDocRangeAfter));
|
||||||
EXPECT_FRAME_COPY2(0, 1, 3, 1, 2, 3);
|
EXPECT_FRAME_COPY2(0, 1, 3, 1, 2, 3);
|
||||||
doc->undoHistory()->undo();
|
doc->undoHistory()->undo();
|
||||||
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
EXPECT_FRAME_ORDER(0, 1, 2, 3);
|
||||||
@ -1169,10 +1169,10 @@ TEST(DocRangeOps2, DropInsideBugs) {
|
|||||||
// layer3 --> layer1
|
// layer3 --> layer1
|
||||||
// layer2 layer3
|
// layer2 layer3
|
||||||
// layer1 layer2
|
// layer1 layer2
|
||||||
DocumentRange from, to;
|
DocRange from, to;
|
||||||
from.selectLayer(layer1);
|
from.selectLayer(layer1);
|
||||||
to.selectLayer(layer4);
|
to.selectLayer(layer4);
|
||||||
move_range(doc, from, to, kDocumentRangeFirstChild);
|
move_range(doc, from, to, kDocRangeFirstChild);
|
||||||
EXPECT_EQ(layer2, sprite->root()->layers()[0]);
|
EXPECT_EQ(layer2, sprite->root()->layers()[0]);
|
||||||
EXPECT_EQ(layer3, sprite->root()->layers()[1]);
|
EXPECT_EQ(layer3, sprite->root()->layers()[1]);
|
||||||
EXPECT_EQ(layer4, sprite->root()->layers()[2]);
|
EXPECT_EQ(layer4, sprite->root()->layers()[2]);
|
||||||
@ -1184,7 +1184,7 @@ TEST(DocRangeOps2, DropInsideBugs) {
|
|||||||
// layer2 layer2
|
// layer2 layer2
|
||||||
from.clearRange(); from.selectLayer(layer3);
|
from.clearRange(); from.selectLayer(layer3);
|
||||||
to.clearRange(); to.selectLayer(layer1);
|
to.clearRange(); to.selectLayer(layer1);
|
||||||
move_range(doc, from, to, kDocumentRangeBefore);
|
move_range(doc, from, to, kDocRangeBefore);
|
||||||
EXPECT_EQ(layer2, sprite->root()->layers()[0]);
|
EXPECT_EQ(layer2, sprite->root()->layers()[0]);
|
||||||
EXPECT_EQ(layer4, sprite->root()->layers()[1]);
|
EXPECT_EQ(layer4, sprite->root()->layers()[1]);
|
||||||
EXPECT_EQ(layer3, layer4->layers()[0]);
|
EXPECT_EQ(layer3, layer4->layers()[0]);
|
||||||
@ -1196,7 +1196,7 @@ TEST(DocRangeOps2, DropInsideBugs) {
|
|||||||
// layer2 layer2
|
// layer2 layer2
|
||||||
from.clearRange(); from.selectLayer(layer1);
|
from.clearRange(); from.selectLayer(layer1);
|
||||||
to.clearRange(); to.selectLayer(layer3);
|
to.clearRange(); to.selectLayer(layer3);
|
||||||
move_range(doc, from, to, kDocumentRangeFirstChild);
|
move_range(doc, from, to, kDocRangeFirstChild);
|
||||||
EXPECT_EQ(layer2, sprite->root()->layers()[0]);
|
EXPECT_EQ(layer2, sprite->root()->layers()[0]);
|
||||||
EXPECT_EQ(layer4, sprite->root()->layers()[1]);
|
EXPECT_EQ(layer4, sprite->root()->layers()[1]);
|
||||||
EXPECT_EQ(layer3, layer4->layers()[0]);
|
EXPECT_EQ(layer3, layer4->layers()[0]);
|
||||||
@ -1205,7 +1205,7 @@ TEST(DocRangeOps2, DropInsideBugs) {
|
|||||||
// move layer4 as first child of layer4 (invalid operation)
|
// move layer4 as first child of layer4 (invalid operation)
|
||||||
from.clearRange(); from.selectLayer(layer4);
|
from.clearRange(); from.selectLayer(layer4);
|
||||||
to.clearRange(); to.selectLayer(layer4);
|
to.clearRange(); to.selectLayer(layer4);
|
||||||
move_range(doc, from, to, kDocumentRangeFirstChild);
|
move_range(doc, from, to, kDocRangeFirstChild);
|
||||||
// Everything is exactly the same (no new undo operation)
|
// Everything is exactly the same (no new undo operation)
|
||||||
EXPECT_EQ(layer2, sprite->root()->layers()[0]);
|
EXPECT_EQ(layer2, sprite->root()->layers()[0]);
|
||||||
EXPECT_EQ(layer4, sprite->root()->layers()[1]);
|
EXPECT_EQ(layer4, sprite->root()->layers()[1]);
|
||||||
@ -1215,7 +1215,7 @@ TEST(DocRangeOps2, DropInsideBugs) {
|
|||||||
// move layer4 as first child of layer3 (invalid operation)
|
// move layer4 as first child of layer3 (invalid operation)
|
||||||
from.clearRange(); from.selectLayer(layer4);
|
from.clearRange(); from.selectLayer(layer4);
|
||||||
to.clearRange(); to.selectLayer(layer3);
|
to.clearRange(); to.selectLayer(layer3);
|
||||||
move_range(doc, from, to, kDocumentRangeFirstChild);
|
move_range(doc, from, to, kDocRangeFirstChild);
|
||||||
// Everything is exactly the same (no new undo operation)
|
// Everything is exactly the same (no new undo operation)
|
||||||
EXPECT_EQ(layer2, sprite->root()->layers()[0]);
|
EXPECT_EQ(layer2, sprite->root()->layers()[0]);
|
||||||
EXPECT_EQ(layer4, sprite->root()->layers()[1]);
|
EXPECT_EQ(layer4, sprite->root()->layers()[1]);
|
||||||
@ -1225,7 +1225,7 @@ TEST(DocRangeOps2, DropInsideBugs) {
|
|||||||
// move layer4 after layer1 (invalid operation)
|
// move layer4 after layer1 (invalid operation)
|
||||||
from.clearRange(); from.selectLayer(layer4);
|
from.clearRange(); from.selectLayer(layer4);
|
||||||
to.clearRange(); to.selectLayer(layer1);
|
to.clearRange(); to.selectLayer(layer1);
|
||||||
move_range(doc, from, to, kDocumentRangeAfter);
|
move_range(doc, from, to, kDocRangeAfter);
|
||||||
// Everything is exactly the same (no new undo operation)
|
// Everything is exactly the same (no new undo operation)
|
||||||
EXPECT_EQ(layer2, sprite->root()->layers()[0]);
|
EXPECT_EQ(layer2, sprite->root()->layers()[0]);
|
||||||
EXPECT_EQ(layer4, sprite->root()->layers()[1]);
|
EXPECT_EQ(layer4, sprite->root()->layers()[1]);
|
||||||
@ -1235,7 +1235,7 @@ TEST(DocRangeOps2, DropInsideBugs) {
|
|||||||
// move layer4 after layer1 (invalid operation)
|
// move layer4 after layer1 (invalid operation)
|
||||||
from.clearRange(); from.selectLayer(layer4);
|
from.clearRange(); from.selectLayer(layer4);
|
||||||
to.clearRange(); to.selectLayer(layer1);
|
to.clearRange(); to.selectLayer(layer1);
|
||||||
move_range(doc, from, to, kDocumentRangeBefore);
|
move_range(doc, from, to, kDocRangeBefore);
|
||||||
// Everything is exactly the same (no new undo operation)
|
// Everything is exactly the same (no new undo operation)
|
||||||
EXPECT_EQ(layer2, sprite->root()->layers()[0]);
|
EXPECT_EQ(layer2, sprite->root()->layers()[0]);
|
||||||
EXPECT_EQ(layer4, sprite->root()->layers()[1]);
|
EXPECT_EQ(layer4, sprite->root()->layers()[1]);
|
||||||
@ -1245,7 +1245,7 @@ TEST(DocRangeOps2, DropInsideBugs) {
|
|||||||
// move layer2 inside layer2 (invalid operation)
|
// move layer2 inside layer2 (invalid operation)
|
||||||
from.clearRange(); from.selectLayer(layer2);
|
from.clearRange(); from.selectLayer(layer2);
|
||||||
to.clearRange(); to.selectLayer(layer2);
|
to.clearRange(); to.selectLayer(layer2);
|
||||||
move_range(doc, from, to, kDocumentRangeFirstChild);
|
move_range(doc, from, to, kDocRangeFirstChild);
|
||||||
// Everything is exactly the same (no new undo operation)
|
// Everything is exactly the same (no new undo operation)
|
||||||
EXPECT_EQ(layer2, sprite->root()->layers()[0]);
|
EXPECT_EQ(layer2, sprite->root()->layers()[0]);
|
||||||
EXPECT_EQ(layer4, sprite->root()->layers()[1]);
|
EXPECT_EQ(layer4, sprite->root()->layers()[1]);
|
||||||
@ -1301,7 +1301,7 @@ TEST_F(DocRangeOps, MoveRangeWithTags) {
|
|||||||
move_range(doc,
|
move_range(doc,
|
||||||
frames_range(1, 2),
|
frames_range(1, 2),
|
||||||
frames_range(0),
|
frames_range(0),
|
||||||
kDocumentRangeBefore,
|
kDocRangeBefore,
|
||||||
kFitOutsideTags));
|
kFitOutsideTags));
|
||||||
EXPECT_FRAME_ORDER6(1, 2, 0, 3, 4, 5);
|
EXPECT_FRAME_ORDER6(1, 2, 0, 3, 4, 5);
|
||||||
EXPECT_EQ(2, a->fromFrame());
|
EXPECT_EQ(2, a->fromFrame());
|
||||||
@ -1321,7 +1321,7 @@ TEST_F(DocRangeOps, MoveRangeWithTags) {
|
|||||||
move_range(doc,
|
move_range(doc,
|
||||||
frames_range(1, 2),
|
frames_range(1, 2),
|
||||||
frames_range(0),
|
frames_range(0),
|
||||||
kDocumentRangeBefore,
|
kDocRangeBefore,
|
||||||
kFitInsideTags));
|
kFitInsideTags));
|
||||||
EXPECT_FRAME_ORDER6(1, 2, 0, 3, 4, 5);
|
EXPECT_FRAME_ORDER6(1, 2, 0, 3, 4, 5);
|
||||||
EXPECT_EQ(0, a->fromFrame());
|
EXPECT_EQ(0, a->fromFrame());
|
||||||
@ -1336,7 +1336,7 @@ TEST_F(DocRangeOps, MoveRangeWithTags) {
|
|||||||
move_range(doc,
|
move_range(doc,
|
||||||
frames_range(0, 1),
|
frames_range(0, 1),
|
||||||
frames_range(2),
|
frames_range(2),
|
||||||
kDocumentRangeAfter,
|
kDocRangeAfter,
|
||||||
kFitInsideTags));
|
kFitInsideTags));
|
||||||
EXPECT_FRAME_ORDER6(2, 0, 1, 3, 4, 5);
|
EXPECT_FRAME_ORDER6(2, 0, 1, 3, 4, 5);
|
||||||
EXPECT_EQ(0, a->fromFrame());
|
EXPECT_EQ(0, a->fromFrame());
|
||||||
@ -1351,7 +1351,7 @@ TEST_F(DocRangeOps, MoveRangeWithTags) {
|
|||||||
move_range(doc,
|
move_range(doc,
|
||||||
frames_range(0, 1),
|
frames_range(0, 1),
|
||||||
frames_range(2),
|
frames_range(2),
|
||||||
kDocumentRangeAfter,
|
kDocRangeAfter,
|
||||||
kFitOutsideTags));
|
kFitOutsideTags));
|
||||||
EXPECT_FRAME_ORDER6(2, 0, 1, 3, 4, 5);
|
EXPECT_FRAME_ORDER6(2, 0, 1, 3, 4, 5);
|
||||||
EXPECT_EQ(0, a->fromFrame());
|
EXPECT_EQ(0, a->fromFrame());
|
||||||
@ -1365,7 +1365,7 @@ TEST_F(DocRangeOps, MoveRangeWithTags) {
|
|||||||
move_range(doc,
|
move_range(doc,
|
||||||
frames_range(0, 1),
|
frames_range(0, 1),
|
||||||
frames_range(3),
|
frames_range(3),
|
||||||
kDocumentRangeBefore,
|
kDocRangeBefore,
|
||||||
kFitOutsideTags));
|
kFitOutsideTags));
|
||||||
EXPECT_FRAME_ORDER6(2, 0, 1, 3, 4, 5);
|
EXPECT_FRAME_ORDER6(2, 0, 1, 3, 4, 5);
|
||||||
EXPECT_EQ(0, a->fromFrame());
|
EXPECT_EQ(0, a->fromFrame());
|
||||||
@ -1379,7 +1379,7 @@ TEST_F(DocRangeOps, MoveRangeWithTags) {
|
|||||||
move_range(doc,
|
move_range(doc,
|
||||||
frames_range(2, 3),
|
frames_range(2, 3),
|
||||||
frames_range(2),
|
frames_range(2),
|
||||||
kDocumentRangeAfter,
|
kDocRangeAfter,
|
||||||
kFitOutsideTags));
|
kFitOutsideTags));
|
||||||
EXPECT_FRAME_ORDER6(0, 1, 2, 3, 4, 5);
|
EXPECT_FRAME_ORDER6(0, 1, 2, 3, 4, 5);
|
||||||
EXPECT_EQ(0, a->fromFrame());
|
EXPECT_EQ(0, a->fromFrame());
|
||||||
@ -1393,7 +1393,7 @@ TEST_F(DocRangeOps, MoveRangeWithTags) {
|
|||||||
move_range(doc,
|
move_range(doc,
|
||||||
frames_range(2, 3),
|
frames_range(2, 3),
|
||||||
frames_range(3),
|
frames_range(3),
|
||||||
kDocumentRangeBefore,
|
kDocRangeBefore,
|
||||||
kFitOutsideTags));
|
kFitOutsideTags));
|
||||||
EXPECT_FRAME_ORDER6(0, 1, 2, 3, 4, 5);
|
EXPECT_FRAME_ORDER6(0, 1, 2, 3, 4, 5);
|
||||||
EXPECT_EQ(0, a->fromFrame());
|
EXPECT_EQ(0, a->fromFrame());
|
||||||
@ -1408,7 +1408,7 @@ TEST_F(DocRangeOps, MoveRangeWithTags) {
|
|||||||
move_range(doc,
|
move_range(doc,
|
||||||
frames_range(0, 1),
|
frames_range(0, 1),
|
||||||
frames_range(5),
|
frames_range(5),
|
||||||
kDocumentRangeAfter,
|
kDocRangeAfter,
|
||||||
kFitInsideTags));
|
kFitInsideTags));
|
||||||
EXPECT_FRAME_ORDER6(2, 3, 4, 5, 0, 1);
|
EXPECT_FRAME_ORDER6(2, 3, 4, 5, 0, 1);
|
||||||
EXPECT_EQ(0, a->fromFrame());
|
EXPECT_EQ(0, a->fromFrame());
|
||||||
@ -1423,7 +1423,7 @@ TEST_F(DocRangeOps, MoveRangeWithTags) {
|
|||||||
move_range(doc,
|
move_range(doc,
|
||||||
frames_range(0, 1),
|
frames_range(0, 1),
|
||||||
frames_range(5),
|
frames_range(5),
|
||||||
kDocumentRangeAfter,
|
kDocRangeAfter,
|
||||||
kFitOutsideTags));
|
kFitOutsideTags));
|
||||||
EXPECT_FRAME_ORDER6(2, 3, 4, 5, 0, 1);
|
EXPECT_FRAME_ORDER6(2, 3, 4, 5, 0, 1);
|
||||||
EXPECT_EQ(0, a->fromFrame());
|
EXPECT_EQ(0, a->fromFrame());
|
||||||
@ -1434,14 +1434,14 @@ TEST_F(DocRangeOps, MoveRangeWithTags) {
|
|||||||
doc->undoHistory()->undo();
|
doc->undoHistory()->undo();
|
||||||
|
|
||||||
// Put frame 1 and 4 in the middle of both tags (outside)
|
// Put frame 1 and 4 in the middle of both tags (outside)
|
||||||
DocumentRange from;
|
DocRange from;
|
||||||
from.startRange(nullptr, 1, DocumentRange::kFrames); from.endRange(nullptr, 1);
|
from.startRange(nullptr, 1, DocRange::kFrames); from.endRange(nullptr, 1);
|
||||||
from.startRange(nullptr, 4, DocumentRange::kFrames); from.endRange(nullptr, 4);
|
from.startRange(nullptr, 4, DocRange::kFrames); from.endRange(nullptr, 4);
|
||||||
EXPECT_EQ(frames_range(2, 3),
|
EXPECT_EQ(frames_range(2, 3),
|
||||||
move_range(doc,
|
move_range(doc,
|
||||||
from,
|
from,
|
||||||
frames_range(2),
|
frames_range(2),
|
||||||
kDocumentRangeAfter,
|
kDocRangeAfter,
|
||||||
kFitOutsideTags));
|
kFitOutsideTags));
|
||||||
EXPECT_FRAME_ORDER6(0, 2, 1, 4, 3, 5);
|
EXPECT_FRAME_ORDER6(0, 2, 1, 4, 3, 5);
|
||||||
EXPECT_EQ(0, a->fromFrame());
|
EXPECT_EQ(0, a->fromFrame());
|
||||||
@ -1456,7 +1456,7 @@ TEST_F(DocRangeOps, MoveRangeWithTags) {
|
|||||||
move_range(doc,
|
move_range(doc,
|
||||||
from,
|
from,
|
||||||
frames_range(3),
|
frames_range(3),
|
||||||
kDocumentRangeBefore,
|
kDocRangeBefore,
|
||||||
kFitInsideTags));
|
kFitInsideTags));
|
||||||
EXPECT_FRAME_ORDER6(0, 2, 1, 4, 3, 5);
|
EXPECT_FRAME_ORDER6(0, 2, 1, 4, 3, 5);
|
||||||
EXPECT_EQ(0, a->fromFrame());
|
EXPECT_EQ(0, a->fromFrame());
|
||||||
@ -1483,7 +1483,7 @@ TEST_F(DocRangeOps, CopyRangeWithTags) {
|
|||||||
copy_range(doc,
|
copy_range(doc,
|
||||||
frames_range(1),
|
frames_range(1),
|
||||||
frames_range(0),
|
frames_range(0),
|
||||||
kDocumentRangeBefore,
|
kDocRangeBefore,
|
||||||
kFitOutsideTags));
|
kFitOutsideTags));
|
||||||
EXPECT_FRAME_COPY3(1, 0, 1, 2, 3, 4, 5);
|
EXPECT_FRAME_COPY3(1, 0, 1, 2, 3, 4, 5);
|
||||||
EXPECT_EQ(1, a->fromFrame());
|
EXPECT_EQ(1, a->fromFrame());
|
||||||
@ -1498,7 +1498,7 @@ TEST_F(DocRangeOps, CopyRangeWithTags) {
|
|||||||
copy_range(doc,
|
copy_range(doc,
|
||||||
frames_range(1),
|
frames_range(1),
|
||||||
frames_range(0),
|
frames_range(0),
|
||||||
kDocumentRangeBefore,
|
kDocRangeBefore,
|
||||||
kFitInsideTags));
|
kFitInsideTags));
|
||||||
EXPECT_FRAME_COPY3(1, 0, 1, 2, 3, 4, 5);
|
EXPECT_FRAME_COPY3(1, 0, 1, 2, 3, 4, 5);
|
||||||
EXPECT_EQ(0, a->fromFrame());
|
EXPECT_EQ(0, a->fromFrame());
|
||||||
@ -1513,7 +1513,7 @@ TEST_F(DocRangeOps, CopyRangeWithTags) {
|
|||||||
copy_range(doc,
|
copy_range(doc,
|
||||||
frames_range(1),
|
frames_range(1),
|
||||||
frames_range(2),
|
frames_range(2),
|
||||||
kDocumentRangeAfter,
|
kDocRangeAfter,
|
||||||
kFitOutsideTags));
|
kFitOutsideTags));
|
||||||
EXPECT_FRAME_COPY3(0, 1, 2, 1, 3, 4, 5);
|
EXPECT_FRAME_COPY3(0, 1, 2, 1, 3, 4, 5);
|
||||||
EXPECT_EQ(0, a->fromFrame());
|
EXPECT_EQ(0, a->fromFrame());
|
@ -187,7 +187,7 @@ SpritePosition DocUndo::nextRedoSpritePosition() const
|
|||||||
return SpritePosition();
|
return SpritePosition();
|
||||||
}
|
}
|
||||||
|
|
||||||
std::istream* DocUndo::nextUndoDocumentRange() const
|
std::istream* DocUndo::nextUndoDocRange() const
|
||||||
{
|
{
|
||||||
const undo::UndoState* state = nextUndo();
|
const undo::UndoState* state = nextUndo();
|
||||||
if (state)
|
if (state)
|
||||||
@ -196,7 +196,7 @@ std::istream* DocUndo::nextUndoDocumentRange() const
|
|||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::istream* DocUndo::nextRedoDocumentRange() const
|
std::istream* DocUndo::nextRedoDocRange() const
|
||||||
{
|
{
|
||||||
const undo::UndoState* state = nextRedo();
|
const undo::UndoState* state = nextRedo();
|
||||||
if (state)
|
if (state)
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
#define APP_DOCUMENT_UNDO_H_INCLUDED
|
#define APP_DOCUMENT_UNDO_H_INCLUDED
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "app/document_range.h"
|
#include "app/doc_range.h"
|
||||||
#include "app/sprite_position.h"
|
#include "app/sprite_position.h"
|
||||||
#include "base/disable_copying.h"
|
#include "base/disable_copying.h"
|
||||||
#include "base/unique_ptr.h"
|
#include "base/unique_ptr.h"
|
||||||
@ -53,8 +53,8 @@ namespace app {
|
|||||||
|
|
||||||
SpritePosition nextUndoSpritePosition() const;
|
SpritePosition nextUndoSpritePosition() const;
|
||||||
SpritePosition nextRedoSpritePosition() const;
|
SpritePosition nextRedoSpritePosition() const;
|
||||||
std::istream* nextUndoDocumentRange() const;
|
std::istream* nextUndoDocRange() const;
|
||||||
std::istream* nextRedoDocumentRange() const;
|
std::istream* nextRedoDocRange() const;
|
||||||
|
|
||||||
Cmd* lastExecutedCmd() const;
|
Cmd* lastExecutedCmd() const;
|
||||||
|
|
||||||
|
@ -1,43 +0,0 @@
|
|||||||
// Aseprite
|
|
||||||
// Copyright (C) 2001-2018 David Capello
|
|
||||||
//
|
|
||||||
// This program is distributed under the terms of
|
|
||||||
// the End-User License Agreement for Aseprite.
|
|
||||||
|
|
||||||
#ifndef APP_DOCUMENT_RANGE_OPS_H_INCLUDED
|
|
||||||
#define APP_DOCUMENT_RANGE_OPS_H_INCLUDED
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include "app/tags_handling.h"
|
|
||||||
|
|
||||||
#include <vector>
|
|
||||||
|
|
||||||
namespace app {
|
|
||||||
class Document;
|
|
||||||
class DocumentRange;
|
|
||||||
|
|
||||||
enum DocumentRangePlace {
|
|
||||||
kDocumentRangeBefore,
|
|
||||||
kDocumentRangeAfter,
|
|
||||||
kDocumentRangeFirstChild,
|
|
||||||
};
|
|
||||||
|
|
||||||
// These functions returns the new location of the "from" range or
|
|
||||||
// throws an std::runtime_error() in case that the operation cannot
|
|
||||||
// be done. (E.g. the background layer cannot be moved.)
|
|
||||||
DocumentRange move_range(Document* doc,
|
|
||||||
const DocumentRange& from,
|
|
||||||
const DocumentRange& to,
|
|
||||||
const DocumentRangePlace place,
|
|
||||||
const TagsHandling tagsHandling = kDefaultTagsAdjustment);
|
|
||||||
DocumentRange copy_range(Document* doc,
|
|
||||||
const DocumentRange& from,
|
|
||||||
const DocumentRange& to,
|
|
||||||
const DocumentRangePlace place,
|
|
||||||
const TagsHandling tagsHandling = kDefaultTagsAdjustment);
|
|
||||||
|
|
||||||
void reverse_frames(Document* doc, const DocumentRange& range);
|
|
||||||
|
|
||||||
} // namespace app
|
|
||||||
|
|
||||||
#endif
|
|
@ -60,10 +60,10 @@ Transaction::~Transaction()
|
|||||||
// Used to set the document range after all the transaction is
|
// Used to set the document range after all the transaction is
|
||||||
// executed and before the commit. This range is stored in
|
// executed and before the commit. This range is stored in
|
||||||
// CmdTransaction to recover it on Edit > Redo.
|
// CmdTransaction to recover it on Edit > Redo.
|
||||||
void Transaction::setNewDocumentRange(const DocumentRange& range)
|
void Transaction::setNewDocRange(const DocRange& range)
|
||||||
{
|
{
|
||||||
ASSERT(m_cmds);
|
ASSERT(m_cmds);
|
||||||
m_cmds->setNewDocumentRange(range);
|
m_cmds->setNewDocRange(range);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Transaction::commit()
|
void Transaction::commit()
|
||||||
|
@ -15,7 +15,7 @@ namespace app {
|
|||||||
class Cmd;
|
class Cmd;
|
||||||
class CmdTransaction;
|
class CmdTransaction;
|
||||||
class Context;
|
class Context;
|
||||||
class DocumentRange;
|
class DocRange;
|
||||||
class DocUndo;
|
class DocUndo;
|
||||||
|
|
||||||
enum Modification {
|
enum Modification {
|
||||||
@ -49,7 +49,7 @@ namespace app {
|
|||||||
// Can be used to change the new document range resulting from
|
// Can be used to change the new document range resulting from
|
||||||
// executing this transaction. This range can be used then in
|
// executing this transaction. This range can be used then in
|
||||||
// undo/redo operations to restore the Timeline selection/range.
|
// undo/redo operations to restore the Timeline selection/range.
|
||||||
void setNewDocumentRange(const DocumentRange& range);
|
void setNewDocRange(const DocRange& range);
|
||||||
|
|
||||||
// This must be called to commit all the changes, so the undo will
|
// This must be called to commit all the changes, so the undo will
|
||||||
// be finally added in the sprite.
|
// be finally added in the sprite.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
// Aseprite
|
// Aseprite
|
||||||
// Copyright (C) 2001-2017 David Capello
|
// Copyright (C) 2001-2018 David Capello
|
||||||
//
|
//
|
||||||
// This program is distributed under the terms of
|
// This program is distributed under the terms of
|
||||||
// the End-User License Agreement for Aseprite.
|
// the End-User License Agreement for Aseprite.
|
||||||
@ -14,7 +14,7 @@
|
|||||||
#include "app/cmd/set_cel_bounds.h"
|
#include "app/cmd/set_cel_bounds.h"
|
||||||
#include "app/context_access.h"
|
#include "app/context_access.h"
|
||||||
#include "app/doc_api.h"
|
#include "app/doc_api.h"
|
||||||
#include "app/document_range.h"
|
#include "app/doc_range.h"
|
||||||
#include "app/transaction.h"
|
#include "app/transaction.h"
|
||||||
#include "app/ui/editor/editor.h"
|
#include "app/ui/editor/editor.h"
|
||||||
#include "app/ui/editor/editor_customization_delegate.h"
|
#include "app/ui/editor/editor_customization_delegate.h"
|
||||||
@ -43,13 +43,13 @@ MovingCelCollect::MovingCelCollect(Editor* editor, Layer* layer)
|
|||||||
if (layer && layer->isImage())
|
if (layer && layer->isImage())
|
||||||
m_mainCel = layer->cel(editor->frame());
|
m_mainCel = layer->cel(editor->frame());
|
||||||
|
|
||||||
DocumentRange range = App::instance()->timeline()->range();
|
DocRange range = App::instance()->timeline()->range();
|
||||||
if (!range.enabled()) {
|
if (!range.enabled()) {
|
||||||
range.startRange(editor->layer(), editor->frame(), DocumentRange::kCels);
|
range.startRange(editor->layer(), editor->frame(), DocRange::kCels);
|
||||||
range.endRange(editor->layer(), editor->frame());
|
range.endRange(editor->layer(), editor->frame());
|
||||||
}
|
}
|
||||||
|
|
||||||
DocumentRange range2 = range;
|
DocRange range2 = range;
|
||||||
for (Layer* layer : range.selectedLayers()) {
|
for (Layer* layer : range.selectedLayers()) {
|
||||||
if (layer && layer->isGroup()) {
|
if (layer && layer->isGroup()) {
|
||||||
LayerList childrenList;
|
LayerList childrenList;
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
#include "app/commands/cmd_eyedropper.h"
|
#include "app/commands/cmd_eyedropper.h"
|
||||||
#include "app/commands/commands.h"
|
#include "app/commands/commands.h"
|
||||||
#include "app/commands/params.h"
|
#include "app/commands/params.h"
|
||||||
#include "app/document_range.h"
|
#include "app/doc_range.h"
|
||||||
#include "app/ini_file.h"
|
#include "app/ini_file.h"
|
||||||
#include "app/pref/preferences.h"
|
#include "app/pref/preferences.h"
|
||||||
#include "app/tools/active_tool.h"
|
#include "app/tools/active_tool.h"
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
#include "app/context_access.h"
|
#include "app/context_access.h"
|
||||||
#include "app/doc_event.h"
|
#include "app/doc_event.h"
|
||||||
#include "app/document_access.h"
|
#include "app/document_access.h"
|
||||||
#include "app/document_range.h"
|
#include "app/doc_range.h"
|
||||||
#include "app/modules/editors.h"
|
#include "app/modules/editors.h"
|
||||||
#include "app/modules/gfx.h"
|
#include "app/modules/gfx.h"
|
||||||
#include "app/modules/gui.h"
|
#include "app/modules/gui.h"
|
||||||
|
@ -18,11 +18,11 @@
|
|||||||
#include "app/commands/params.h"
|
#include "app/commands/params.h"
|
||||||
#include "app/console.h"
|
#include "app/console.h"
|
||||||
#include "app/context_access.h"
|
#include "app/context_access.h"
|
||||||
|
#include "app/doc_api.h"
|
||||||
#include "app/doc_event.h"
|
#include "app/doc_event.h"
|
||||||
|
#include "app/doc_range_ops.h"
|
||||||
#include "app/doc_undo.h"
|
#include "app/doc_undo.h"
|
||||||
#include "app/document.h"
|
#include "app/document.h"
|
||||||
#include "app/doc_api.h"
|
|
||||||
#include "app/document_range_ops.h"
|
|
||||||
#include "app/loop_tag.h"
|
#include "app/loop_tag.h"
|
||||||
#include "app/modules/editors.h"
|
#include "app/modules/editors.h"
|
||||||
#include "app/modules/gfx.h"
|
#include "app/modules/gfx.h"
|
||||||
@ -593,7 +593,7 @@ bool Timeline::onProcessMessage(Message* msg)
|
|||||||
case kTimerMessage:
|
case kTimerMessage:
|
||||||
if (static_cast<TimerMessage*>(msg)->timer() == &m_clipboard_timer) {
|
if (static_cast<TimerMessage*>(msg)->timer() == &m_clipboard_timer) {
|
||||||
Document* clipboard_document;
|
Document* clipboard_document;
|
||||||
DocumentRange clipboard_range;
|
DocRange clipboard_range;
|
||||||
clipboard::get_document_range_info(
|
clipboard::get_document_range_info(
|
||||||
&clipboard_document,
|
&clipboard_document,
|
||||||
&clipboard_range);
|
&clipboard_range);
|
||||||
@ -1880,7 +1880,7 @@ void Timeline::drawPart(ui::Graphics* g, const gfx::Rect& bounds,
|
|||||||
void Timeline::drawClipboardRange(ui::Graphics* g)
|
void Timeline::drawClipboardRange(ui::Graphics* g)
|
||||||
{
|
{
|
||||||
Document* clipboard_document;
|
Document* clipboard_document;
|
||||||
DocumentRange clipboard_range;
|
DocRange clipboard_range;
|
||||||
clipboard::get_document_range_info(
|
clipboard::get_document_range_info(
|
||||||
&clipboard_document,
|
&clipboard_document,
|
||||||
&clipboard_range);
|
&clipboard_range);
|
||||||
@ -2386,7 +2386,7 @@ void Timeline::drawFrameTags(ui::Graphics* g)
|
|||||||
int dx = 0, dw = 0;
|
int dx = 0, dw = 0;
|
||||||
if (m_dropTarget.outside &&
|
if (m_dropTarget.outside &&
|
||||||
m_dropTarget.hhit != DropTarget::HNone &&
|
m_dropTarget.hhit != DropTarget::HNone &&
|
||||||
m_dropRange.type() == DocumentRange::kFrames) {
|
m_dropRange.type() == DocRange::kFrames) {
|
||||||
switch (m_dropTarget.hhit) {
|
switch (m_dropTarget.hhit) {
|
||||||
case DropTarget::Before:
|
case DropTarget::Before:
|
||||||
if (m_dropRange.firstFrame() == frameTag->fromFrame()) {
|
if (m_dropRange.firstFrame() == frameTag->fromFrame()) {
|
||||||
@ -3613,7 +3613,7 @@ void Timeline::dropRange(DropOp op)
|
|||||||
{
|
{
|
||||||
bool copy = (op == Timeline::kCopy);
|
bool copy = (op == Timeline::kCopy);
|
||||||
Range newFromRange;
|
Range newFromRange;
|
||||||
DocumentRangePlace place = kDocumentRangeAfter;
|
DocRangePlace place = kDocRangeAfter;
|
||||||
Range dropRange = m_dropRange;
|
Range dropRange = m_dropRange;
|
||||||
bool outside = m_dropTarget.outside;
|
bool outside = m_dropTarget.outside;
|
||||||
|
|
||||||
@ -3621,19 +3621,19 @@ void Timeline::dropRange(DropOp op)
|
|||||||
|
|
||||||
case Range::kFrames:
|
case Range::kFrames:
|
||||||
if (m_dropTarget.hhit == DropTarget::Before)
|
if (m_dropTarget.hhit == DropTarget::Before)
|
||||||
place = kDocumentRangeBefore;
|
place = kDocRangeBefore;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Range::kLayers:
|
case Range::kLayers:
|
||||||
switch (m_dropTarget.vhit) {
|
switch (m_dropTarget.vhit) {
|
||||||
case DropTarget::Bottom:
|
case DropTarget::Bottom:
|
||||||
place = kDocumentRangeBefore;
|
place = kDocRangeBefore;
|
||||||
break;
|
break;
|
||||||
case DropTarget::FirstChild:
|
case DropTarget::FirstChild:
|
||||||
place = kDocumentRangeFirstChild;
|
place = kDocRangeFirstChild;
|
||||||
break;
|
break;
|
||||||
case DropTarget::VeryBottom:
|
case DropTarget::VeryBottom:
|
||||||
place = kDocumentRangeBefore;
|
place = kDocRangeBefore;
|
||||||
{
|
{
|
||||||
Layer* layer = m_sprite->root()->firstLayer();
|
Layer* layer = m_sprite->root()->firstLayer();
|
||||||
dropRange.clearRange();
|
dropRange.clearRange();
|
||||||
@ -3792,7 +3792,7 @@ void Timeline::updateDropRange(const gfx::Point& pt)
|
|||||||
void Timeline::clearClipboardRange()
|
void Timeline::clearClipboardRange()
|
||||||
{
|
{
|
||||||
Document* clipboard_document;
|
Document* clipboard_document;
|
||||||
DocumentRange clipboard_range;
|
DocRange clipboard_range;
|
||||||
clipboard::get_document_range_info(
|
clipboard::get_document_range_info(
|
||||||
&clipboard_document,
|
&clipboard_document,
|
||||||
&clipboard_range);
|
&clipboard_range);
|
||||||
@ -3940,7 +3940,7 @@ bool Timeline::onCanCopy(Context* ctx)
|
|||||||
bool Timeline::onCanPaste(Context* ctx)
|
bool Timeline::onCanPaste(Context* ctx)
|
||||||
{
|
{
|
||||||
return
|
return
|
||||||
(clipboard::get_current_format() == clipboard::ClipboardDocumentRange &&
|
(clipboard::get_current_format() == clipboard::ClipboardDocRange &&
|
||||||
ctx->checkFlags(ContextFlags::ActiveDocumentIsWritable));
|
ctx->checkFlags(ContextFlags::ActiveDocumentIsWritable));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3968,7 +3968,7 @@ bool Timeline::onCopy(Context* ctx)
|
|||||||
|
|
||||||
bool Timeline::onPaste(Context* ctx)
|
bool Timeline::onPaste(Context* ctx)
|
||||||
{
|
{
|
||||||
if (clipboard::get_current_format() == clipboard::ClipboardDocumentRange) {
|
if (clipboard::get_current_format() == clipboard::ClipboardDocRange) {
|
||||||
clipboard::paste();
|
clipboard::paste();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -3984,13 +3984,13 @@ bool Timeline::onClear(Context* ctx)
|
|||||||
Command* cmd = nullptr;
|
Command* cmd = nullptr;
|
||||||
|
|
||||||
switch (m_range.type()) {
|
switch (m_range.type()) {
|
||||||
case DocumentRange::kCels:
|
case DocRange::kCels:
|
||||||
cmd = Commands::instance()->byId(CommandId::ClearCel());
|
cmd = Commands::instance()->byId(CommandId::ClearCel());
|
||||||
break;
|
break;
|
||||||
case DocumentRange::kFrames:
|
case DocRange::kFrames:
|
||||||
cmd = Commands::instance()->byId(CommandId::RemoveFrame());
|
cmd = Commands::instance()->byId(CommandId::RemoveFrame());
|
||||||
break;
|
break;
|
||||||
case DocumentRange::kLayers:
|
case DocRange::kLayers:
|
||||||
cmd = Commands::instance()->byId(CommandId::RemoveLayer());
|
cmd = Commands::instance()->byId(CommandId::RemoveLayer());
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
#include "app/doc_observer.h"
|
#include "app/doc_observer.h"
|
||||||
#include "app/docs_observer.h"
|
#include "app/docs_observer.h"
|
||||||
#include "app/document_range.h"
|
#include "app/doc_range.h"
|
||||||
#include "app/loop_tag.h"
|
#include "app/loop_tag.h"
|
||||||
#include "app/pref/preferences.h"
|
#include "app/pref/preferences.h"
|
||||||
#include "app/ui/editor/editor_observer.h"
|
#include "app/ui/editor/editor_observer.h"
|
||||||
@ -62,7 +62,7 @@ namespace app {
|
|||||||
public InputChainElement,
|
public InputChainElement,
|
||||||
public FrameTagProvider {
|
public FrameTagProvider {
|
||||||
public:
|
public:
|
||||||
typedef DocumentRange Range;
|
typedef DocRange Range;
|
||||||
|
|
||||||
enum State {
|
enum State {
|
||||||
STATE_STANDBY,
|
STATE_STANDBY,
|
||||||
|
@ -225,9 +225,9 @@ void UIContext::onGetActiveSite(Site* site) const
|
|||||||
if (timeline &&
|
if (timeline &&
|
||||||
timeline->range().enabled()) {
|
timeline->range().enabled()) {
|
||||||
switch (timeline->range().type()) {
|
switch (timeline->range().type()) {
|
||||||
case DocumentRange::kCels: site->focus(Site::InCels); break;
|
case DocRange::kCels: site->focus(Site::InCels); break;
|
||||||
case DocumentRange::kFrames: site->focus(Site::InFrames); break;
|
case DocRange::kFrames: site->focus(Site::InFrames); break;
|
||||||
case DocumentRange::kLayers: site->focus(Site::InLayers); break;
|
case DocRange::kLayers: site->focus(Site::InLayers); break;
|
||||||
}
|
}
|
||||||
site->selectedLayers(timeline->selectedLayers());
|
site->selectedLayers(timeline->selectedLayers());
|
||||||
site->selectedFrames(timeline->selectedFrames());
|
site->selectedFrames(timeline->selectedFrames());
|
||||||
|
@ -14,10 +14,10 @@
|
|||||||
#include "app/cmd/trim_cel.h"
|
#include "app/cmd/trim_cel.h"
|
||||||
#include "app/console.h"
|
#include "app/console.h"
|
||||||
#include "app/context_access.h"
|
#include "app/context_access.h"
|
||||||
#include "app/document.h"
|
|
||||||
#include "app/doc_api.h"
|
#include "app/doc_api.h"
|
||||||
#include "app/document_range.h"
|
#include "app/doc_range.h"
|
||||||
#include "app/document_range_ops.h"
|
#include "app/doc_range_ops.h"
|
||||||
|
#include "app/document.h"
|
||||||
#include "app/modules/editors.h"
|
#include "app/modules/editors.h"
|
||||||
#include "app/modules/gfx.h"
|
#include "app/modules/gfx.h"
|
||||||
#include "app/modules/gui.h"
|
#include "app/modules/gui.h"
|
||||||
@ -68,13 +68,13 @@ namespace {
|
|||||||
m_doc = nullptr;
|
m_doc = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
void setRange(Document* doc, const DocumentRange& range) {
|
void setRange(Document* doc, const DocRange& range) {
|
||||||
m_doc = doc;
|
m_doc = doc;
|
||||||
m_range = range;
|
m_range = range;
|
||||||
}
|
}
|
||||||
|
|
||||||
Document* document() const { return m_doc; }
|
Document* document() const { return m_doc; }
|
||||||
DocumentRange range() const { return m_range; }
|
DocRange range() const { return m_range; }
|
||||||
|
|
||||||
// DocsObserver impl
|
// DocsObserver impl
|
||||||
void onRemoveDocument(Document* doc) override {
|
void onRemoveDocument(Document* doc) override {
|
||||||
@ -84,7 +84,7 @@ namespace {
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
Document* m_doc;
|
Document* m_doc;
|
||||||
DocumentRange m_range;
|
DocRange m_range;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -216,14 +216,14 @@ ClipboardFormat get_current_format()
|
|||||||
else if (clipboard_image)
|
else if (clipboard_image)
|
||||||
return ClipboardImage;
|
return ClipboardImage;
|
||||||
else if (clipboard_range.valid())
|
else if (clipboard_range.valid())
|
||||||
return ClipboardDocumentRange;
|
return ClipboardDocRange;
|
||||||
else if (clipboard_palette && clipboard_picks.picks())
|
else if (clipboard_palette && clipboard_picks.picks())
|
||||||
return ClipboardPaletteEntries;
|
return ClipboardPaletteEntries;
|
||||||
else
|
else
|
||||||
return ClipboardNone;
|
return ClipboardNone;
|
||||||
}
|
}
|
||||||
|
|
||||||
void get_document_range_info(Document** document, DocumentRange* range)
|
void get_document_range_info(Document** document, DocRange* range)
|
||||||
{
|
{
|
||||||
if (clipboard_range.valid()) {
|
if (clipboard_range.valid()) {
|
||||||
*document = clipboard_range.document();
|
*document = clipboard_range.document();
|
||||||
@ -285,7 +285,7 @@ void copy_merged(const ContextReader& reader)
|
|||||||
copy_from_document(*reader.site(), true);
|
copy_from_document(*reader.site(), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void copy_range(const ContextReader& reader, const DocumentRange& range)
|
void copy_range(const ContextReader& reader, const DocRange& range)
|
||||||
{
|
{
|
||||||
ASSERT(reader.document() != NULL);
|
ASSERT(reader.document() != NULL);
|
||||||
|
|
||||||
@ -376,19 +376,19 @@ void paste()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case clipboard::ClipboardDocumentRange: {
|
case clipboard::ClipboardDocRange: {
|
||||||
DocumentRange srcRange = clipboard_range.range();
|
DocRange srcRange = clipboard_range.range();
|
||||||
Document* srcDoc = clipboard_range.document();
|
Document* srcDoc = clipboard_range.document();
|
||||||
Sprite* srcSpr = srcDoc->sprite();
|
Sprite* srcSpr = srcDoc->sprite();
|
||||||
|
|
||||||
switch (srcRange.type()) {
|
switch (srcRange.type()) {
|
||||||
|
|
||||||
case DocumentRange::kCels: {
|
case DocRange::kCels: {
|
||||||
Layer* dstLayer = editor->layer();
|
Layer* dstLayer = editor->layer();
|
||||||
frame_t dstFrameFirst = editor->frame();
|
frame_t dstFrameFirst = editor->frame();
|
||||||
|
|
||||||
DocumentRange dstRange;
|
DocRange dstRange;
|
||||||
dstRange.startRange(dstLayer, dstFrameFirst, DocumentRange::kCels);
|
dstRange.startRange(dstLayer, dstFrameFirst, DocRange::kCels);
|
||||||
for (layer_t i=1; i<srcRange.layers(); ++i) {
|
for (layer_t i=1; i<srcRange.layers(); ++i) {
|
||||||
dstLayer = dstLayer->getPreviousBrowsable();
|
dstLayer = dstLayer->getPreviousBrowsable();
|
||||||
if (dstLayer == nullptr)
|
if (dstLayer == nullptr)
|
||||||
@ -401,7 +401,7 @@ void paste()
|
|||||||
if (srcDoc == dstDoc) {
|
if (srcDoc == dstDoc) {
|
||||||
// This is the app::copy_range (not clipboard::copy_range()).
|
// This is the app::copy_range (not clipboard::copy_range()).
|
||||||
if (srcRange.layers() == dstRange.layers())
|
if (srcRange.layers() == dstRange.layers())
|
||||||
app::copy_range(srcDoc, srcRange, dstRange, kDocumentRangeBefore);
|
app::copy_range(srcDoc, srcRange, dstRange, kDocRangeBefore);
|
||||||
editor->invalidate();
|
editor->invalidate();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -485,16 +485,16 @@ void paste()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case DocumentRange::kFrames: {
|
case DocRange::kFrames: {
|
||||||
frame_t dstFrame = editor->frame();
|
frame_t dstFrame = editor->frame();
|
||||||
|
|
||||||
// We use a DocumentRange operation to copy frames inside
|
// We use a DocRange operation to copy frames inside
|
||||||
// the same sprite.
|
// the same sprite.
|
||||||
if (srcSpr == dstSpr) {
|
if (srcSpr == dstSpr) {
|
||||||
DocumentRange dstRange;
|
DocRange dstRange;
|
||||||
dstRange.startRange(nullptr, dstFrame, DocumentRange::kFrames);
|
dstRange.startRange(nullptr, dstFrame, DocRange::kFrames);
|
||||||
dstRange.endRange(nullptr, dstFrame);
|
dstRange.endRange(nullptr, dstFrame);
|
||||||
app::copy_range(srcDoc, srcRange, dstRange, kDocumentRangeBefore);
|
app::copy_range(srcDoc, srcRange, dstRange, kDocRangeBefore);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -537,7 +537,7 @@ void paste()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case DocumentRange::kLayers: {
|
case DocRange::kLayers: {
|
||||||
if (srcDoc->colorMode() != dstDoc->colorMode())
|
if (srcDoc->colorMode() != dstDoc->colorMode())
|
||||||
throw std::runtime_error("You cannot copy layers of document with different color modes");
|
throw std::runtime_error("You cannot copy layers of document with different color modes");
|
||||||
|
|
||||||
|
@ -24,7 +24,7 @@ namespace app {
|
|||||||
class Document;
|
class Document;
|
||||||
class ContextReader;
|
class ContextReader;
|
||||||
class ContextWriter;
|
class ContextWriter;
|
||||||
class DocumentRange;
|
class DocRange;
|
||||||
|
|
||||||
namespace clipboard {
|
namespace clipboard {
|
||||||
using namespace doc;
|
using namespace doc;
|
||||||
@ -32,7 +32,7 @@ namespace app {
|
|||||||
enum ClipboardFormat {
|
enum ClipboardFormat {
|
||||||
ClipboardNone,
|
ClipboardNone,
|
||||||
ClipboardImage,
|
ClipboardImage,
|
||||||
ClipboardDocumentRange,
|
ClipboardDocRange,
|
||||||
ClipboardPaletteEntries,
|
ClipboardPaletteEntries,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -52,13 +52,13 @@ namespace app {
|
|||||||
};
|
};
|
||||||
|
|
||||||
ClipboardFormat get_current_format();
|
ClipboardFormat get_current_format();
|
||||||
void get_document_range_info(Document** document, DocumentRange* range);
|
void get_document_range_info(Document** document, DocRange* range);
|
||||||
|
|
||||||
void clear_content();
|
void clear_content();
|
||||||
void cut(ContextWriter& context);
|
void cut(ContextWriter& context);
|
||||||
void copy(const ContextReader& context);
|
void copy(const ContextReader& context);
|
||||||
void copy_merged(const ContextReader& context);
|
void copy_merged(const ContextReader& context);
|
||||||
void copy_range(const ContextReader& context, const DocumentRange& range);
|
void copy_range(const ContextReader& context, const DocRange& range);
|
||||||
void copy_image(const Image* image, const Mask* mask, const Palette* palette);
|
void copy_image(const Image* image, const Mask* mask, const Palette* palette);
|
||||||
void copy_palette(const Palette* palette, const PalettePicks& picks);
|
void copy_palette(const Palette* palette, const PalettePicks& picks);
|
||||||
void paste();
|
void paste();
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
// Aseprite
|
// Aseprite
|
||||||
// Copyright (C) 2001-2017 David Capello
|
// Copyright (C) 2001-2018 David Capello
|
||||||
//
|
//
|
||||||
// This program is distributed under the terms of
|
// This program is distributed under the terms of
|
||||||
// the End-User License Agreement for Aseprite.
|
// the End-User License Agreement for Aseprite.
|
||||||
@ -12,7 +12,7 @@
|
|||||||
|
|
||||||
#include "app/context_access.h"
|
#include "app/context_access.h"
|
||||||
#include "app/document.h"
|
#include "app/document.h"
|
||||||
#include "app/document_range.h"
|
#include "app/doc_range.h"
|
||||||
#include "doc/cel.h"
|
#include "doc/cel.h"
|
||||||
#include "doc/layer.h"
|
#include "doc/layer.h"
|
||||||
#include "doc/sprite.h"
|
#include "doc/sprite.h"
|
||||||
@ -23,10 +23,10 @@ namespace app {
|
|||||||
|
|
||||||
using namespace doc;
|
using namespace doc;
|
||||||
|
|
||||||
// TODO the DocumentRange should be "iteratable" to replace this function
|
// TODO the DocRange should be "iteratable" to replace this function
|
||||||
CelList get_unlocked_unique_cels(Sprite* sprite, const DocumentRange& inrange)
|
CelList get_unlocked_unique_cels(Sprite* sprite, const DocRange& inrange)
|
||||||
{
|
{
|
||||||
DocumentRange range = inrange;
|
DocRange range = inrange;
|
||||||
CelList cels;
|
CelList cels;
|
||||||
if (!range.convertToCels(sprite))
|
if (!range.convertToCels(sprite))
|
||||||
return cels;
|
return cels;
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
// Aseprite
|
// Aseprite
|
||||||
// Copyright (C) 2001-2017 David Capello
|
// Copyright (C) 2001-2018 David Capello
|
||||||
//
|
//
|
||||||
// This program is distributed under the terms of
|
// This program is distributed under the terms of
|
||||||
// the End-User License Agreement for Aseprite.
|
// the End-User License Agreement for Aseprite.
|
||||||
@ -19,9 +19,9 @@ namespace doc {
|
|||||||
namespace app {
|
namespace app {
|
||||||
using namespace doc;
|
using namespace doc;
|
||||||
|
|
||||||
class DocumentRange;
|
class DocRange;
|
||||||
|
|
||||||
doc::CelList get_unlocked_unique_cels(doc::Sprite* sprite, const DocumentRange& range);
|
doc::CelList get_unlocked_unique_cels(doc::Sprite* sprite, const DocRange& range);
|
||||||
|
|
||||||
} // namespace app
|
} // namespace app
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user