Rename DocumentRange -> DocRange

This commit is contained in:
David Capello 2018-07-07 10:07:21 -03:00
parent 432094f432
commit d00fc99138
31 changed files with 386 additions and 386 deletions

View File

@ -497,13 +497,13 @@ add_library(app-lib
context.cpp
context_flags.cpp
doc_api.cpp
doc_range.cpp
doc_range_ops.cpp
doc_undo.cpp
docs.cpp
document.cpp
document_diff.cpp
document_exporter.cpp
document_range.cpp
document_range_ops.cpp
extensions.cpp
extra_cel.cpp
file/file.cpp

View File

@ -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
if (m_ranges)
@ -47,7 +47,7 @@ void CmdTransaction::commit()
// commit/command (on Timeline::onAfterCommandExecution).
//
// So m_ranges->m_after is captured explicitly in
// setNewDocumentRange().
// setNewDocRange().
}
std::istream* CmdTransaction::documentRangeBeforeExecute() const
@ -78,9 +78,9 @@ void CmdTransaction::onExecute()
// very beginning, just to save the current sprite position.
m_spritePositionBefore = calcSpritePosition();
#ifdef ENABLE_UI
if (isDocumentRangeEnabled()) {
if (isDocRangeEnabled()) {
m_ranges.reset(new Ranges);
calcDocumentRange().write(m_ranges->m_before);
calcDocRange().write(m_ranges->m_before);
}
#endif
@ -125,7 +125,7 @@ SpritePosition CmdTransaction::calcSpritePosition() const
return SpritePosition(site.layer(), site.frame());
}
bool CmdTransaction::isDocumentRangeEnabled() const
bool CmdTransaction::isDocRangeEnabled() const
{
#ifdef ENABLE_UI
if (App::instance()) {
@ -137,11 +137,11 @@ bool CmdTransaction::isDocumentRangeEnabled() const
return false;
}
DocumentRange CmdTransaction::calcDocumentRange() const
DocRange CmdTransaction::calcDocRange() const
{
#ifdef ENABLE_UI
// TODO We cannot use Context::activeSite() because it losts
// important information about the DocumentRange() (type and
// important information about the DocRange() (type and
// flags).
if (App::instance()) {
Timeline* timeline = App::instance()->timeline();
@ -149,7 +149,7 @@ DocumentRange CmdTransaction::calcDocumentRange() const
return timeline->range();
}
#endif
return DocumentRange();
return DocRange();
}
} // namespace app

View File

@ -9,7 +9,7 @@
#pragma once
#include "app/cmd_sequence.h"
#include "app/document_range.h"
#include "app/doc_range.h"
#include "app/sprite_position.h"
#include <memory>
@ -24,7 +24,7 @@ namespace app {
CmdTransaction(const std::string& label,
bool changeSavedState, int* savedCounter);
void setNewDocumentRange(const DocumentRange& range);
void setNewDocRange(const DocRange& range);
void commit();
SpritePosition spritePositionBeforeExecute() const { return m_spritePositionBefore; }
@ -42,8 +42,8 @@ namespace app {
private:
SpritePosition calcSpritePosition() const;
bool isDocumentRangeEnabled() const;
DocumentRange calcDocumentRange() const;
bool isDocRangeEnabled() const;
DocRange calcDocRange() const;
struct Ranges {
std::stringstream m_before;

View File

@ -15,7 +15,7 @@
#include "app/console.h"
#include "app/context_access.h"
#include "app/doc_event.h"
#include "app/document_range.h"
#include "app/doc_range.h"
#include "app/modules/gui.h"
#include "app/transaction.h"
#include "app/ui/timeline/timeline.h"
@ -169,11 +169,11 @@ private:
ContextWriter writer(UIContext::instance());
Transaction transaction(writer.context(), "Set Cel Properties");
DocumentRange range;
DocRange range;
if (m_range.enabled())
range = m_range;
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());
}
@ -264,7 +264,7 @@ private:
Timer m_timer;
Document* m_document;
Cel* m_cel;
DocumentRange m_range;
DocRange m_range;
bool m_selfUpdate;
UserData m_userData;
bool m_newUserData;

View File

@ -1,5 +1,5 @@
// Aseprite
// Copyright (C) 2001-2017 David Capello
// Copyright (C) 2001-2018 David Capello
//
// This program is distributed under the terms of
// the End-User License Agreement for Aseprite.
@ -19,7 +19,7 @@
#include "app/commands/params.h"
#include "app/context_access.h"
#include "app/doc_api.h"
#include "app/document_range.h"
#include "app/doc_range.h"
#include "app/i18n/strings.h"
#include "app/modules/gui.h"
#include "app/transaction.h"

View File

@ -225,11 +225,11 @@ private:
ContextWriter writer(UIContext::instance());
Transaction transaction(writer.context(), "Set Layer Properties");
DocumentRange range;
DocRange range;
if (m_range.enabled())
range = m_range;
else {
range.startRange(m_layer, -1, DocumentRange::kLayers);
range.startRange(m_layer, -1, DocRange::kLayers);
range.endRange(m_layer, -1);
}
@ -347,7 +347,7 @@ private:
Timer m_timer;
Document* m_document;
Layer* m_layer;
DocumentRange m_range;
DocRange m_range;
bool m_selfUpdate;
UserData m_userData;
};

View File

@ -1,5 +1,5 @@
// Aseprite
// Copyright (C) 2001-2017 David Capello
// Copyright (C) 2001-2018 David Capello
//
// This program is distributed under the terms of
// the End-User License Agreement for Aseprite.
@ -113,7 +113,7 @@ void NewFrameCommand::onExecute(Context* context)
auto timeline = App::instance()->timeline();
timeline->prepareToMoveRange();
DocumentRange range = timeline->range();
DocRange range = timeline->range();
SelectedLayers selLayers;
if (site->inFrames())

View File

@ -1,5 +1,5 @@
// Aseprite
// Copyright (C) 2001-2017 David Capello
// Copyright (C) 2001-2018 David Capello
//
// This program is distributed under the terms of
// the End-User License Agreement for Aseprite.
@ -54,8 +54,8 @@ void NewFrameTagCommand::onExecute(Context* context)
auto range = App::instance()->timeline()->range();
if (range.enabled() &&
(range.type() == DocumentRange::kFrames ||
range.type() == DocumentRange::kCels)) {
(range.type() == DocRange::kFrames ||
range.type() == DocRange::kCels)) {
from = range.selectedFrames().firstFrame();
to = range.selectedFrames().lastFrame();
}

View File

@ -1,5 +1,5 @@
// Aseprite
// Copyright (C) 2001-2017 David Capello
// Copyright (C) 2001-2018 David Capello
//
// This program is distributed under the terms of
// the End-User License Agreement for Aseprite.
@ -11,9 +11,9 @@
#include "app/app.h"
#include "app/commands/command.h"
#include "app/context_access.h"
#include "app/doc_range_ops.h"
#include "app/modules/gui.h"
#include "app/ui/timeline/timeline.h"
#include "app/document_range_ops.h"
namespace app {

View File

@ -1,5 +1,5 @@
// Aseprite
// Copyright (C) 2001-2017 David Capello
// Copyright (C) 2001-2018 David Capello
//
// This program is distributed under the terms of
// the End-User License Agreement for Aseprite.
@ -14,7 +14,7 @@
#include "app/commands/params.h"
#include "app/context_access.h"
#include "app/doc_api.h"
#include "app/document_range.h"
#include "app/doc_range.h"
#include "app/i18n/strings.h"
#include "app/modules/editors.h"
#include "app/modules/gui.h"

View File

@ -102,9 +102,9 @@ void UndoCommand::onExecute(Context* context)
// range because there could be inexistent layers.
std::istream* docRangeStream;
if (m_type == Undo)
docRangeStream = undo->nextUndoDocumentRange();
docRangeStream = undo->nextUndoDocRange();
else
docRangeStream = undo->nextRedoDocumentRange();
docRangeStream = undo->nextRedoDocRange();
StatusBar* statusbar = StatusBar::instance();
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
// the undo and we can deserialize them.
if (docRangeStream) {
Timeline* timeline = App::instance()->timeline();
if (timeline) {
DocumentRange docRange;
DocRange docRange;
if (docRange.read(*docRangeStream))
timeline->setRange(docRange);
}

View File

@ -8,7 +8,7 @@
#include "config.h"
#endif
#include "app/document_range.h"
#include "app/doc_range.h"
#include "base/serialization.h"
#include "doc/cel.h"
@ -24,7 +24,7 @@ using namespace base::serialization;
using namespace base::serialization::little_endian;
using namespace doc;
DocumentRange::DocumentRange()
DocRange::DocRange()
: m_type(kNone)
, m_flags(m_type)
, m_selectingFromLayer(nullptr)
@ -32,7 +32,7 @@ DocumentRange::DocumentRange()
{
}
DocumentRange::DocumentRange(Cel* cel)
DocRange::DocRange(Cel* cel)
: m_type(kCels)
, m_flags(m_type)
, m_selectingFromLayer(nullptr)
@ -42,7 +42,7 @@ DocumentRange::DocumentRange(Cel* cel)
m_selectedFrames.insert(cel->frame());
}
void DocumentRange::clearRange()
void DocRange::clearRange()
{
m_type = kNone;
m_flags = kNone;
@ -50,7 +50,7 @@ void DocumentRange::clearRange()
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_flags |= type;
@ -63,7 +63,7 @@ void DocumentRange::startRange(Layer* fromLayer, frame_t fromFrame, Type type)
m_selectedFrames.insert(fromFrame);
}
void DocumentRange::endRange(Layer* toLayer, frame_t toFrame)
void DocRange::endRange(Layer* toLayer, frame_t toFrame)
{
ASSERT(enabled());
@ -74,7 +74,7 @@ void DocumentRange::endRange(Layer* toLayer, frame_t toFrame)
selectFrameRange(m_selectingFromFrame, toFrame);
}
void DocumentRange::selectLayer(Layer* layer)
void DocRange::selectLayer(Layer* layer)
{
if (m_type == kNone)
m_type = kLayers;
@ -83,7 +83,7 @@ void DocumentRange::selectLayer(Layer* layer)
m_selectedLayers.insert(layer);
}
void DocumentRange::selectLayers(const SelectedLayers& selLayers)
void DocRange::selectLayers(const SelectedLayers& selLayers)
{
if (m_type == kNone)
m_type = kLayers;
@ -93,7 +93,7 @@ void DocumentRange::selectLayers(const SelectedLayers& selLayers)
m_selectedLayers.insert(layer);
}
bool DocumentRange::contains(const Layer* layer) const
bool DocRange::contains(const Layer* layer) const
{
if (enabled())
return m_selectedLayers.contains(const_cast<Layer*>(layer));
@ -101,15 +101,15 @@ bool DocumentRange::contains(const Layer* layer) const
return false;
}
bool DocumentRange::contains(const Layer* layer,
const frame_t frame) const
bool DocRange::contains(const Layer* layer,
const frame_t frame) const
{
switch (m_type) {
case DocumentRange::kNone:
case DocRange::kNone:
return false;
case DocumentRange::kCels:
case DocRange::kCels:
return contains(layer) && contains(frame);
case DocumentRange::kFrames:
case DocRange::kFrames:
if (contains(frame)) {
if ((m_flags & (kCels | kLayers)) != 0)
return contains(layer);
@ -117,7 +117,7 @@ bool DocumentRange::contains(const Layer* layer,
return true;
}
break;
case DocumentRange::kLayers:
case DocRange::kLayers:
if (contains(layer)) {
if ((m_flags & (kCels | kFrames)) != 0)
return contains(frame);
@ -129,37 +129,37 @@ bool DocumentRange::contains(const Layer* layer,
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_selectedFrames.displace(frameDelta);
}
bool DocumentRange::convertToCels(const Sprite* sprite)
bool DocRange::convertToCels(const Sprite* sprite)
{
switch (m_type) {
case DocumentRange::kNone:
case DocRange::kNone:
return false;
case DocumentRange::kCels:
case DocRange::kCels:
break;
case DocumentRange::kFrames: {
case DocRange::kFrames: {
if ((m_flags & (kCels | kLayers)) == 0) {
for (auto layer : sprite->allBrowsableLayers())
m_selectedLayers.insert(layer);
}
m_type = DocumentRange::kCels;
m_type = DocRange::kCels;
break;
}
case DocumentRange::kLayers:
case DocRange::kLayers:
if ((m_flags & (kCels | kFrames)) == 0)
selectFrameRange(0, sprite->lastFrame());
m_type = DocumentRange::kCels;
m_type = DocRange::kCels;
break;
}
return true;
}
bool DocumentRange::write(std::ostream& os) const
bool DocRange::write(std::ostream& os) const
{
write32(os, m_type);
write32(os, m_flags);
@ -172,7 +172,7 @@ bool DocumentRange::write(std::ostream& os) const
return os.good();
}
bool DocumentRange::read(std::istream& is)
bool DocRange::read(std::istream& is)
{
clearRange();
@ -188,7 +188,7 @@ bool DocumentRange::read(std::istream& is)
return is.good();
}
void DocumentRange::selectLayerRange(Layer* fromLayer, Layer* toLayer)
void DocRange::selectLayerRange(Layer* fromLayer, Layer* toLayer)
{
ASSERT(fromLayer);
ASSERT(toLayer);
@ -234,7 +234,7 @@ void DocumentRange::selectLayerRange(Layer* fromLayer, Layer* toLayer)
} 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);
}

View File

@ -4,8 +4,8 @@
// This program is distributed under the terms of
// the End-User License Agreement for Aseprite.
#ifndef APP_DOCUMENT_RANGE_H_INCLUDED
#define APP_DOCUMENT_RANGE_H_INCLUDED
#ifndef APP_DOC_RANGE_H_INCLUDED
#define APP_DOC_RANGE_H_INCLUDED
#pragma once
#include "doc/frame.h"
@ -22,15 +22,15 @@ namespace doc {
namespace app {
using namespace doc;
class DocumentRange {
class DocRange {
public:
enum Type { kNone = 0,
kCels = 1,
kFrames = 2,
kLayers = 4 };
DocumentRange();
DocumentRange(Cel* cel);
DocRange();
DocRange(Cel* cel);
Type type() const { return m_type; }
bool enabled() const { return m_type != kNone; }
@ -58,7 +58,7 @@ namespace app {
frame_t firstFrame() const { return m_selectedFrames.firstFrame(); }
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 &&
m_selectedLayers == o.m_selectedLayers &&
m_selectedFrames == o.m_selectedFrames);

View File

@ -11,12 +11,12 @@
#include "config.h"
#endif
#include "app/document_range_ops.h"
#include "app/doc_range_ops.h"
#include "app/app.h"
#include "app/context_access.h"
#include "app/doc_api.h"
#include "app/document_range.h"
#include "app/doc_range.h"
#include "app/transaction.h"
#include "app/ui/timeline/timeline.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,
Sprite* sprite,
const DocumentRange& srcRange,
const DocRange& srcRange,
frame_t dstFrame,
const DocumentRangePlace place,
const DocRangePlace place,
const TagsHandling tagsHandling)
{
const SelectedFrames& srcFrames = srcRange.selectedFrames();
@ -91,9 +91,9 @@ static DocumentRange move_or_copy_frames(
std::clog << srcFrame << ", ";
}
std::clog << "] "
<< (place == kDocumentRangeBefore ? "before":
place == kDocumentRangeAfter ? "after":
"as first child")
<< (place == kDocRangeBefore ? "before":
place == kDocRangeAfter ? "after":
"as first child")
<< " " << dstFrame << "\n";
#endif
@ -102,8 +102,8 @@ static DocumentRange move_or_copy_frames(
frame_t srcDelta = 0;
frame_t firstCopiedBlock = 0;
frame_t dstBeforeFrame =
(place == kDocumentRangeBefore ? dstFrame:
dstFrame+1);
(place == kDocRangeBefore ? dstFrame:
dstFrame+1);
for (; srcFrame != srcFrameEnd; ++srcFrame) {
frame_t fromFrame = (*srcFrame)+srcDelta;
@ -134,7 +134,7 @@ static DocumentRange move_or_copy_frames(
std::clog << "] => "
<< (op == Move ? "Move": "Copy")
<< " " << (*srcFrame) << "+" << (srcDelta)
<< (place == kDocumentRangeBefore ? " before ": " after ")
<< (place == kDocRangeBefore ? " before ": " after ")
<< dstFrame << " => ";
#endif
@ -142,8 +142,8 @@ static DocumentRange move_or_copy_frames(
case Move:
api.moveFrame(sprite, fromFrame, dstFrame,
(place == kDocumentRangeBefore ? kDropBeforeFrame:
kDropAfterFrame),
(place == kDocRangeBefore ? kDropBeforeFrame:
kDropAfterFrame),
tagsHandling);
if (fromFrame < dstBeforeFrame-1) {
@ -157,8 +157,8 @@ static DocumentRange move_or_copy_frames(
case Copy:
api.copyFrame(sprite, fromFrame, dstFrame,
(place == kDocumentRangeBefore ? kDropBeforeFrame:
kDropAfterFrame),
(place == kDocRangeBefore ? kDropBeforeFrame:
kDropAfterFrame),
tagsHandling);
if (fromFrame < dstBeforeFrame-1) {
@ -181,10 +181,10 @@ static DocumentRange move_or_copy_frames(
#endif
}
DocumentRange result;
DocRange result;
if (!srcRange.selectedLayers().empty())
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);
return result;
}
@ -201,25 +201,25 @@ static bool has_child(LayerGroup* parent, Layer* child)
return false;
}
static DocumentRange drop_range_op(
static DocRange drop_range_op(
Document* doc,
const Op op,
const DocumentRange& from,
DocumentRangePlace place,
const DocRange& from,
DocRangePlace place,
const TagsHandling tagsHandling,
DocumentRange to)
DocRange to)
{
// Convert "first child" operation into a insert after last child.
LayerGroup* parent = nullptr;
if (to.type() == DocumentRange::kLayers &&
if (to.type() == DocRange::kLayers &&
!to.selectedLayers().empty()) {
if (place == kDocumentRangeFirstChild &&
if (place == kDocRangeFirstChild &&
(*to.selectedLayers().begin())->isGroup()) {
place = kDocumentRangeAfter;
place = kDocRangeAfter;
parent = static_cast<LayerGroup*>((*to.selectedLayers().begin()));
to.clearRange();
to.startRange(parent->lastLayer(), -1, DocumentRange::kLayers);
to.startRange(parent->lastLayer(), -1, DocRange::kLayers);
to.endRange(parent->lastLayer(), -1);
}
else {
@ -235,8 +235,8 @@ static DocumentRange drop_range_op(
}
}
if (place != kDocumentRangeBefore &&
place != kDocumentRangeAfter) {
if (place != kDocRangeBefore &&
place != kDocRangeAfter) {
ASSERT(false);
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.
switch (from.type()) {
case DocumentRange::kCels:
case DocRange::kCels:
if (from == to)
return from;
break;
case DocumentRange::kFrames:
case DocRange::kFrames:
if (op == Move) {
// Simple cases with one continuos range of frames that are a
// no-op.
if ((from.selectedFrames().ranges() == 1) &&
((to.firstFrame() >= from.firstFrame() &&
to.lastFrame() <= from.lastFrame()) ||
(place == kDocumentRangeBefore && to.firstFrame() == from.lastFrame()+1) ||
(place == kDocumentRangeAfter && to.lastFrame() == from.firstFrame()-1)) &&
(place == kDocRangeBefore && to.firstFrame() == from.lastFrame()+1) ||
(place == kDocRangeAfter && to.lastFrame() == from.firstFrame()-1)) &&
// If there are tags, this might not be a no-op
(sprite->frameTags().empty() ||
tagsHandling == kDontAdjustTags)) {
@ -269,7 +269,7 @@ static DocumentRange drop_range_op(
}
break;
case DocumentRange::kLayers:
case DocRange::kLayers:
if (op == Move) {
SelectedLayers srcSelLayers = from.selectedLayers();
SelectedLayers dstSelLayers = to.selectedLayers();
@ -294,9 +294,9 @@ static DocumentRange drop_range_op(
if (dstSelLayers.contains(srcLayer))
return from;
if ((place == kDocumentRangeBefore
if ((place == kDocRangeBefore
&& dstLayers.front() == srcLayers.back()->getNext()) ||
(place == kDocumentRangeAfter
(place == kDocRangeAfter
&& dstLayers.back() == srcLayers.front()->getPrevious()))
return from;
}
@ -308,7 +308,7 @@ static DocumentRange drop_range_op(
}
// Before background
if (place == kDocumentRangeBefore) {
if (place == kDocRangeBefore) {
for (Layer* background : to.selectedLayers()) {
if (background && background->isBackground())
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);
throw std::invalid_argument("Invalid 'op' argument");
}
DocumentRange resultRange;
DocRange resultRange;
{
const app::Context* context = static_cast<app::Context*>(doc->context());
@ -340,7 +340,7 @@ static DocumentRange drop_range_op(
switch (from.type()) {
case DocumentRange::kCels: {
case DocRange::kCels: {
LayerList allLayers = sprite->allBrowsableLayers();
if (allLayers.empty())
break;
@ -374,9 +374,9 @@ static DocumentRange drop_range_op(
break;
}
case DocumentRange::kFrames: {
case DocRange::kFrames: {
frame_t dstFrame;
if (place == kDocumentRangeBefore)
if (place == kDocRangeBefore)
dstFrame = to.firstFrame();
else
dstFrame = to.lastFrame();
@ -387,7 +387,7 @@ static DocumentRange drop_range_op(
break;
}
case DocumentRange::kLayers: {
case DocRange::kLayers: {
LayerList allLayers = sprite->allBrowsableLayers();
if (allLayers.empty())
break;
@ -399,7 +399,7 @@ static DocumentRange drop_range_op(
switch (op) {
case Move:
if (place == kDocumentRangeBefore) {
if (place == kDocRangeBefore) {
Layer* beforeThis = (!dstLayers.empty() ? dstLayers.front(): nullptr);
Layer* afterThis = nullptr;
@ -412,7 +412,7 @@ static DocumentRange drop_range_op(
afterThis = srcLayer;
}
}
else if (place == kDocumentRangeAfter) {
else if (place == kDocRangeAfter) {
Layer* afterThis = (!dstLayers.empty() ? dstLayers.back(): nullptr);
for (Layer* srcLayer : srcLayers) {
api.restackLayerAfter(srcLayer, parent, afterThis);
@ -425,17 +425,17 @@ static DocumentRange drop_range_op(
break;
case Copy: {
if (place == kDocumentRangeBefore) {
if (place == kDocRangeBefore) {
Layer* beforeThis = (!dstLayers.empty() ? dstLayers.front(): nullptr);
for (Layer* srcLayer : srcLayers) {
Layer* copiedLayer = api.duplicateLayerBefore(
srcLayer, parent, beforeThis);
resultRange.startRange(copiedLayer, -1, DocumentRange::kLayers);
resultRange.startRange(copiedLayer, -1, DocRange::kLayers);
resultRange.endRange(copiedLayer, -1);
}
}
else if (place == kDocumentRangeAfter) {
else if (place == kDocRangeAfter) {
std::reverse(srcLayers.begin(), srcLayers.end());
Layer* afterThis = (!dstLayers.empty() ? dstLayers.back(): nullptr);
@ -443,7 +443,7 @@ static DocumentRange drop_range_op(
Layer* copiedLayer = api.duplicateLayerAfter(
srcLayer, parent, afterThis);
resultRange.startRange(copiedLayer, -1, DocumentRange::kLayers);
resultRange.startRange(copiedLayer, -1, DocRange::kLayers);
resultRange.endRange(copiedLayer, -1);
}
}
@ -454,8 +454,8 @@ static DocumentRange drop_range_op(
}
}
if (resultRange.type() != DocumentRange::kNone)
transaction.setNewDocumentRange(resultRange);
if (resultRange.type() != DocRange::kNone)
transaction.setNewDocRange(resultRange);
transaction.commit();
}
@ -463,27 +463,27 @@ static DocumentRange drop_range_op(
return resultRange;
}
DocumentRange move_range(Document* doc,
const DocumentRange& from,
const DocumentRange& to,
const DocumentRangePlace place,
DocRange move_range(Document* doc,
const DocRange& from,
const DocRange& to,
const DocRangePlace place,
const TagsHandling tagsHandling)
{
return drop_range_op(doc, Move, from, place,
tagsHandling, DocumentRange(to));
tagsHandling, DocRange(to));
}
DocumentRange copy_range(Document* doc,
const DocumentRange& from,
const DocumentRange& to,
const DocumentRangePlace place,
DocRange copy_range(Document* doc,
const DocRange& from,
const DocRange& to,
const DocRangePlace place,
const TagsHandling tagsHandling)
{
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 ContextReader reader(context);
@ -497,19 +497,19 @@ void reverse_frames(Document* doc, const DocumentRange& range)
bool swapCels = false;
switch (range.type()) {
case DocumentRange::kCels:
case DocRange::kCels:
frameBegin = range.firstFrame();
frameEnd = range.lastFrame();
layers = range.selectedLayers().toLayerList();
swapCels = true;
break;
case DocumentRange::kFrames:
case DocRange::kFrames:
frameBegin = range.firstFrame();
frameEnd = range.lastFrame();
layers = sprite->allLayers();
moveFrames = true;
break;
case DocumentRange::kLayers:
case DocRange::kLayers:
frameBegin = frame_t(0);
frameEnd = sprite->totalFrames()-1;
layers = range.selectedLayers().toLayerList();
@ -544,7 +544,7 @@ void reverse_frames(Document* doc, const DocumentRange& range)
}
}
transaction.setNewDocumentRange(range);
transaction.setNewDocRange(range);
transaction.commit();
}

43
src/app/doc_range_ops.h Normal file
View 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

View File

@ -7,11 +7,11 @@
#include "tests/test.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/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/transaction.h"
#include "base/unique_ptr.h"
@ -30,7 +30,7 @@ std::ostream& operator<<(std::ostream& os, const doc::Layer* layer) {
return os;
}
std::ostream& operator<<(std::ostream& os, const app::DocumentRange& range) {
std::ostream& operator<<(std::ostream& os, const app::DocRange& range) {
os << "{ layers: [";
bool first = true;
@ -244,48 +244,48 @@ protected:
return (cel == NULL);
}
DocumentRange range(Layer* fromLayer, frame_t fromFrNum, Layer* toLayer, frame_t toFrNum, DocumentRange::Type type) {
DocumentRange r;
DocRange range(Layer* fromLayer, frame_t fromFrNum, Layer* toLayer, frame_t toFrNum, DocRange::Type type) {
DocRange r;
r.startRange(fromLayer, fromFrNum, type);
r.endRange(toLayer, toFrNum);
return r;
}
DocumentRange range(layer_t fromLayer, frame_t fromFrNum,
layer_t toLayer, frame_t toFrNum, DocumentRange::Type type) {
DocRange range(layer_t fromLayer, frame_t fromFrNum,
layer_t toLayer, frame_t toFrNum, DocRange::Type type) {
LayerList layers = sprite->allLayers();
return range(layers[fromLayer], fromFrNum, layers[toLayer], toFrNum, type);
}
DocumentRange layers_range(Layer* fromLayer, Layer* toLayer) {
return range(fromLayer, -1, toLayer, -1, DocumentRange::kLayers);
DocRange layers_range(Layer* fromLayer, Layer* toLayer) {
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();
return layers_range(layers[fromLayer], layers[toLayer]);
}
DocumentRange layers_range(Layer* layer) {
return range(layer, -1, layer, -1, DocumentRange::kLayers);
DocRange layers_range(Layer* layer) {
return range(layer, -1, layer, -1, DocRange::kLayers);
}
DocumentRange layers_range(layer_t layer) {
DocRange layers_range(layer_t layer) {
LayerList layers = sprite->allLayers();
return layers_range(layers[layer]);
}
DocumentRange frames_range(frame_t fromFrame, frame_t toFrame) {
return range(nullptr, fromFrame, nullptr, toFrame, DocumentRange::kFrames);
DocRange frames_range(frame_t fromFrame, frame_t toFrame) {
return range(nullptr, fromFrame, nullptr, toFrame, DocRange::kFrames);
}
DocumentRange frames_range(frame_t frame) {
return range(nullptr, frame, nullptr, frame, DocumentRange::kFrames);
DocRange frames_range(frame_t frame) {
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) {
return range(fromLayer, fromFrNum, toLayer, toFrNum, DocumentRange::kCels);
return range(fromLayer, fromFrNum, toLayer, toFrNum, DocRange::kCels);
}
TestContextT<app::Context> ctx;
@ -304,35 +304,35 @@ TEST_F(DocRangeOps, MoveLayersNoOp) {
EXPECT_EQ(layers_range(layer1),
move_range(doc,
layers_range(layer1),
layers_range(layer1), kDocumentRangeAfter));
layers_range(layer1), kDocRangeAfter));
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
EXPECT_FALSE(doc->undoHistory()->canUndo());
EXPECT_EQ(layers_range(layer1),
move_range(doc,
layers_range(layer1),
layers_range(layer2), kDocumentRangeBefore));
layers_range(layer2), kDocRangeBefore));
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
EXPECT_FALSE(doc->undoHistory()->canUndo());
EXPECT_EQ(layers_range(layer4),
move_range(doc,
layers_range(layer4),
layers_range(layer4), kDocumentRangeAfter));
layers_range(layer4), kDocRangeAfter));
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
EXPECT_FALSE(doc->undoHistory()->canUndo());
EXPECT_EQ(layers_range(layer4),
move_range(doc,
layers_range(layer4),
layers_range(layer4), kDocumentRangeBefore));
layers_range(layer4), kDocRangeBefore));
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
EXPECT_FALSE(doc->undoHistory()->canUndo());
EXPECT_EQ(layers_range(layer4),
move_range(doc,
layers_range(layer4),
layers_range(layer3), kDocumentRangeAfter));
layers_range(layer3), kDocRangeAfter));
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
EXPECT_FALSE(doc->undoHistory()->canUndo());
@ -341,76 +341,76 @@ TEST_F(DocRangeOps, MoveLayersNoOp) {
EXPECT_EQ(layers_range(layer1, layer2),
move_range(doc,
layers_range(layer1, layer2),
layers_range(layer1), kDocumentRangeBefore));
layers_range(layer1), kDocRangeBefore));
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
EXPECT_FALSE(doc->undoHistory()->canUndo());
EXPECT_EQ(layers_range(layer1, layer2),
move_range(doc,
layers_range(layer1, layer2),
layers_range(layer1), kDocumentRangeAfter));
layers_range(layer1), kDocRangeAfter));
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
EXPECT_FALSE(doc->undoHistory()->canUndo());
EXPECT_EQ(layers_range(layer1, layer2),
move_range(doc,
layers_range(layer1, layer2),
layers_range(layer2), kDocumentRangeBefore));
layers_range(layer2), kDocRangeBefore));
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
EXPECT_FALSE(doc->undoHistory()->canUndo());
EXPECT_EQ(layers_range(layer1, layer2),
move_range(doc,
layers_range(layer1, layer2),
layers_range(layer2), kDocumentRangeAfter));
layers_range(layer2), kDocRangeAfter));
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
EXPECT_FALSE(doc->undoHistory()->canUndo());
EXPECT_EQ(layers_range(layer1, layer2),
move_range(doc,
layers_range(layer1, layer2),
layers_range(layer3), kDocumentRangeBefore));
layers_range(layer3), kDocRangeBefore));
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
EXPECT_FALSE(doc->undoHistory()->canUndo());
EXPECT_EQ(layers_range(layer3, layer4),
move_range(doc,
layers_range(layer3, layer4),
layers_range(layer2), kDocumentRangeAfter));
layers_range(layer2), kDocRangeAfter));
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
EXPECT_FALSE(doc->undoHistory()->canUndo());
EXPECT_EQ(layers_range(layer3, layer4),
move_range(doc,
layers_range(layer3, layer4),
layers_range(layer3), kDocumentRangeBefore));
layers_range(layer3), kDocRangeBefore));
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
EXPECT_FALSE(doc->undoHistory()->canUndo());
EXPECT_EQ(layers_range(layer3, layer4),
move_range(doc,
layers_range(layer3, layer4),
layers_range(layer3), kDocumentRangeAfter));
layers_range(layer3), kDocRangeAfter));
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
EXPECT_FALSE(doc->undoHistory()->canUndo());
EXPECT_EQ(layers_range(layer3, layer4),
move_range(doc,
layers_range(layer3, layer4),
layers_range(layer4), kDocumentRangeBefore));
layers_range(layer4), kDocRangeBefore));
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
EXPECT_FALSE(doc->undoHistory()->canUndo());
EXPECT_EQ(layers_range(layer3, layer4),
move_range(doc,
layers_range(layer3, layer4),
layers_range(layer4), kDocumentRangeAfter));
layers_range(layer4), kDocRangeAfter));
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
EXPECT_FALSE(doc->undoHistory()->canUndo());
// Move four layers
DocumentRangePlace places[] = { kDocumentRangeBefore, kDocumentRangeAfter };
DocRangePlace places[] = { kDocRangeBefore, kDocRangeAfter };
for (int i=0; i<2; ++i) {
for (int layer=0; layer<4; ++layer) {
EXPECT_EQ(layers_range(layer1, layer4),
@ -454,35 +454,35 @@ TEST_F(DocRangeOps, MoveFramesNoOp) {
EXPECT_EQ(frames_range(0),
move_range(doc,
frames_range(0),
frames_range(0), kDocumentRangeAfter));
frames_range(0), kDocRangeAfter));
EXPECT_FRAME_ORDER(0, 1, 2, 3);
EXPECT_FALSE(doc->undoHistory()->canUndo());
EXPECT_EQ(frames_range(0),
move_range(doc,
frames_range(0),
frames_range(1), kDocumentRangeBefore));
frames_range(1), kDocRangeBefore));
EXPECT_FRAME_ORDER(0, 1, 2, 3);
EXPECT_FALSE(doc->undoHistory()->canUndo());
EXPECT_EQ(frames_range(3),
move_range(doc,
frames_range(3),
frames_range(3), kDocumentRangeAfter));
frames_range(3), kDocRangeAfter));
EXPECT_FRAME_ORDER(0, 1, 2, 3);
EXPECT_FALSE(doc->undoHistory()->canUndo());
EXPECT_EQ(frames_range(3),
move_range(doc,
frames_range(3),
frames_range(3), kDocumentRangeBefore));
frames_range(3), kDocRangeBefore));
EXPECT_FRAME_ORDER(0, 1, 2, 3);
EXPECT_FALSE(doc->undoHistory()->canUndo());
EXPECT_EQ(frames_range(3),
move_range(doc,
frames_range(3),
frames_range(2), kDocumentRangeAfter));
frames_range(2), kDocRangeAfter));
EXPECT_FRAME_ORDER(0, 1, 2, 3);
EXPECT_FALSE(doc->undoHistory()->canUndo());
@ -491,76 +491,76 @@ TEST_F(DocRangeOps, MoveFramesNoOp) {
EXPECT_EQ(frames_range(0, 1),
move_range(doc,
frames_range(0, 1),
frames_range(0), kDocumentRangeBefore));
frames_range(0), kDocRangeBefore));
EXPECT_FRAME_ORDER(0, 1, 2, 3);
EXPECT_FALSE(doc->undoHistory()->canUndo());
EXPECT_EQ(frames_range(0, 1),
move_range(doc,
frames_range(0, 1),
frames_range(0), kDocumentRangeAfter));
frames_range(0), kDocRangeAfter));
EXPECT_FRAME_ORDER(0, 1, 2, 3);
EXPECT_FALSE(doc->undoHistory()->canUndo());
EXPECT_EQ(frames_range(0, 1),
move_range(doc,
frames_range(0, 1),
frames_range(1), kDocumentRangeBefore));
frames_range(1), kDocRangeBefore));
EXPECT_FRAME_ORDER(0, 1, 2, 3);
EXPECT_FALSE(doc->undoHistory()->canUndo());
EXPECT_EQ(frames_range(0, 1),
move_range(doc,
frames_range(0, 1),
frames_range(1), kDocumentRangeAfter));
frames_range(1), kDocRangeAfter));
EXPECT_FRAME_ORDER(0, 1, 2, 3);
EXPECT_FALSE(doc->undoHistory()->canUndo());
EXPECT_EQ(frames_range(0, 1),
move_range(doc,
frames_range(0, 1),
frames_range(2), kDocumentRangeBefore));
frames_range(2), kDocRangeBefore));
EXPECT_FRAME_ORDER(0, 1, 2, 3);
EXPECT_FALSE(doc->undoHistory()->canUndo());
EXPECT_EQ(frames_range(2, 3),
move_range(doc,
frames_range(2, 3),
frames_range(1), kDocumentRangeAfter));
frames_range(1), kDocRangeAfter));
EXPECT_FRAME_ORDER(0, 1, 2, 3);
EXPECT_FALSE(doc->undoHistory()->canUndo());
EXPECT_EQ(frames_range(2, 3),
move_range(doc,
frames_range(2, 3),
frames_range(2), kDocumentRangeBefore));
frames_range(2), kDocRangeBefore));
EXPECT_FRAME_ORDER(0, 1, 2, 3);
EXPECT_FALSE(doc->undoHistory()->canUndo());
EXPECT_EQ(frames_range(2, 3),
move_range(doc,
frames_range(2, 3),
frames_range(2), kDocumentRangeAfter));
frames_range(2), kDocRangeAfter));
EXPECT_FRAME_ORDER(0, 1, 2, 3);
EXPECT_FALSE(doc->undoHistory()->canUndo());
EXPECT_EQ(frames_range(2, 3),
move_range(doc,
frames_range(2, 3),
frames_range(3), kDocumentRangeBefore));
frames_range(3), kDocRangeBefore));
EXPECT_FRAME_ORDER(0, 1, 2, 3);
EXPECT_FALSE(doc->undoHistory()->canUndo());
EXPECT_EQ(frames_range(2, 3),
move_range(doc,
frames_range(2, 3),
frames_range(3), kDocumentRangeAfter));
frames_range(3), kDocRangeAfter));
EXPECT_FRAME_ORDER(0, 1, 2, 3);
EXPECT_FALSE(doc->undoHistory()->canUndo());
// Move four frames
DocumentRangePlace places[] = { kDocumentRangeBefore, kDocumentRangeAfter };
DocRangePlace places[] = { kDocRangeBefore, kDocRangeAfter };
for (int i=0; i<2; ++i) {
for (int frame=0; frame<4; ++frame) {
EXPECT_EQ(frames_range(0, 3),
@ -602,7 +602,7 @@ TEST_F(DocRangeOps, MoveCelsNoOp) {
EXPECT_EQ(cels_range(0, 0, 1, 1),
move_range(doc,
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, 1, 0, 1);
EXPECT_CEL(1, 0, 1, 0);
@ -619,7 +619,7 @@ TEST_F(DocRangeOps, MoveLayers) {
EXPECT_EQ(layers_range(layer1),
move_range(doc,
layers_range(layer1),
layers_range(layer2), kDocumentRangeAfter));
layers_range(layer2), kDocRangeAfter));
EXPECT_LAYER_ORDER(layer2, layer1, layer3, layer4);
doc->undoHistory()->undo();
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
@ -628,7 +628,7 @@ TEST_F(DocRangeOps, MoveLayers) {
EXPECT_EQ(layers_range(layer2),
move_range(doc,
layers_range(layer2),
layers_range(layer1), kDocumentRangeBefore));
layers_range(layer1), kDocRangeBefore));
EXPECT_LAYER_ORDER(layer2, layer1, layer3, layer4);
doc->undoHistory()->undo();
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
@ -638,7 +638,7 @@ TEST_F(DocRangeOps, MoveLayers) {
EXPECT_THROW({
move_range(doc,
layers_range(layer1),
layers_range(layer2), kDocumentRangeAfter);
layers_range(layer2), kDocRangeAfter);
}, std::exception);
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
layer1->setBackground(false);
@ -647,7 +647,7 @@ TEST_F(DocRangeOps, MoveLayers) {
EXPECT_EQ(layers_range(layer2),
move_range(doc,
layers_range(layer2),
layers_range(layer4), kDocumentRangeAfter));
layers_range(layer4), kDocRangeAfter));
EXPECT_LAYER_ORDER(layer1, layer3, layer4, layer2);
doc->undoHistory()->undo();
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
@ -656,7 +656,7 @@ TEST_F(DocRangeOps, MoveLayers) {
EXPECT_EQ(layers_range(layer2),
move_range(doc,
layers_range(layer2),
layers_range(layer4), kDocumentRangeBefore));
layers_range(layer4), kDocRangeBefore));
EXPECT_LAYER_ORDER(layer1, layer3, layer2, layer4);
doc->undoHistory()->undo();
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
@ -664,7 +664,7 @@ TEST_F(DocRangeOps, MoveLayers) {
EXPECT_EQ(layers_range(layer1),
move_range(doc,
layers_range(layer1),
layers_range(layer3, layer4), kDocumentRangeBefore));
layers_range(layer3, layer4), kDocRangeBefore));
EXPECT_LAYER_ORDER(layer2, layer1, layer3, layer4);
doc->undoHistory()->undo();
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
@ -673,13 +673,13 @@ TEST_F(DocRangeOps, MoveLayers) {
EXPECT_EQ(layers_range(layer2, layer3),
move_range(doc,
layers_range(layer2, layer3),
layers_range(layer4), kDocumentRangeAfter));
layers_range(layer4), kDocRangeAfter));
EXPECT_LAYER_ORDER(layer1, layer4, layer2, layer3);
EXPECT_EQ(layers_range(layer2, layer3),
move_range(doc,
layers_range(layer2, layer3),
layers_range(layer1), kDocumentRangeAfter));
layers_range(layer1), kDocRangeAfter));
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
// 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({
move_range(doc,
layers_range(layer2, layer4),
layers_range(layer1), kDocumentRangeBefore);
layers_range(layer1), kDocRangeBefore);
}, std::exception);
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
layer1->setBackground(false);
@ -696,7 +696,7 @@ TEST_F(DocRangeOps, MoveLayers) {
EXPECT_EQ(layers_range(layer1, layer3),
move_range(doc,
layers_range(layer1, layer3),
layers_range(layer4), kDocumentRangeAfter));
layers_range(layer4), kDocRangeAfter));
EXPECT_LAYER_ORDER(layer4, layer1, layer2, layer3);
doc->undoHistory()->undo();
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
@ -705,7 +705,7 @@ TEST_F(DocRangeOps, MoveLayers) {
EXPECT_EQ(layers_range(layer2, layer4),
move_range(doc,
layers_range(layer2, layer4),
layers_range(layer1), kDocumentRangeBefore));
layers_range(layer1), kDocRangeBefore));
EXPECT_LAYER_ORDER(layer2, layer3, layer4, layer1);
doc->undoHistory()->undo();
EXPECT_LAYER_ORDER(layer1, layer2, layer3, layer4);
@ -716,7 +716,7 @@ TEST_F(DocRangeOps, MoveFrames) {
EXPECT_EQ(frames_range(1),
move_range(doc,
frames_range(0),
frames_range(1), kDocumentRangeAfter));
frames_range(1), kDocRangeAfter));
EXPECT_FRAME_ORDER(1, 0, 2, 3);
doc->undoHistory()->undo();
EXPECT_FRAME_ORDER(0, 1, 2, 3);
@ -726,7 +726,7 @@ TEST_F(DocRangeOps, MoveFrames) {
EXPECT_EQ(frames_range(5),
move_range(doc,
frames_range(1),
frames_range(5), kDocumentRangeAfter));
frames_range(5), kDocRangeAfter));
EXPECT_FRAME_ORDER6(0, 2, 3, 4, 5, 1);
doc->undoHistory()->undo();
EXPECT_FRAME_ORDER6(0, 1, 2, 3, 4, 5);
@ -736,7 +736,7 @@ TEST_F(DocRangeOps, MoveFrames) {
move_range(
doc,
frames_range(1, 2),
frames_range(5), kDocumentRangeAfter));
frames_range(5), kDocRangeAfter));
EXPECT_FRAME_ORDER6(0, 3, 4, 5, 1, 2);
doc->undoHistory()->undo();
EXPECT_FRAME_ORDER6(0, 1, 2, 3, 4, 5);
@ -745,7 +745,7 @@ TEST_F(DocRangeOps, MoveFrames) {
EXPECT_EQ(frames_range(1, 2),
move_range(doc,
frames_range(2, 3),
frames_range(0), kDocumentRangeAfter));
frames_range(0), kDocRangeAfter));
EXPECT_FRAME_ORDER(0, 2, 3, 1);
doc->undoHistory()->undo();
EXPECT_FRAME_ORDER(0, 1, 2, 3);
@ -754,7 +754,7 @@ TEST_F(DocRangeOps, MoveFrames) {
EXPECT_EQ(frames_range(0, 2),
move_range(doc,
frames_range(1, 3),
frames_range(0), kDocumentRangeBefore));
frames_range(0), kDocRangeBefore));
EXPECT_FRAME_ORDER(1, 2, 3, 0);
doc->undoHistory()->undo();
EXPECT_FRAME_ORDER(0, 1, 2, 3);
@ -763,7 +763,7 @@ TEST_F(DocRangeOps, MoveFrames) {
EXPECT_EQ(frames_range(1, 3),
move_range(doc,
frames_range(0, 2),
frames_range(3), kDocumentRangeAfter));
frames_range(3), kDocRangeAfter));
EXPECT_FRAME_ORDER(3, 0, 1, 2);
doc->undoHistory()->undo();
EXPECT_FRAME_ORDER(0, 1, 2, 3);
@ -772,14 +772,14 @@ TEST_F(DocRangeOps, MoveFrames) {
TEST_F(DocRangeOps, MoveFramesNonAdjacent) {
// Move frames 0,2...
DocumentRange from;
from.startRange(nullptr, 0, DocumentRange::kFrames); from.endRange(nullptr, 0);
from.startRange(nullptr, 2, DocumentRange::kFrames); from.endRange(nullptr, 2);
DocRange from;
from.startRange(nullptr, 0, DocRange::kFrames); from.endRange(nullptr, 0);
from.startRange(nullptr, 2, DocRange::kFrames); from.endRange(nullptr, 2);
// Move frames 0,2 after 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);
doc->undoHistory()->undo();
EXPECT_FRAME_ORDER(0, 1, 2, 3);
@ -787,7 +787,7 @@ TEST_F(DocRangeOps, MoveFramesNonAdjacent) {
// Move frames 0,2 before 3...
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);
doc->undoHistory()->undo();
EXPECT_FRAME_ORDER(0, 1, 2, 3);
@ -795,7 +795,7 @@ TEST_F(DocRangeOps, MoveFramesNonAdjacent) {
// Move frames 0,2 before 0...
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);
doc->undoHistory()->undo();
EXPECT_FRAME_ORDER(0, 1, 2, 3);
@ -803,7 +803,7 @@ TEST_F(DocRangeOps, MoveFramesNonAdjacent) {
// Move frames 0,2 after 0...
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);
doc->undoHistory()->undo();
EXPECT_FRAME_ORDER(0, 1, 2, 3);
@ -811,7 +811,7 @@ TEST_F(DocRangeOps, MoveFramesNonAdjacent) {
// Move frames 0,2 before 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);
doc->undoHistory()->undo();
EXPECT_FRAME_ORDER(0, 1, 2, 3);
@ -819,7 +819,7 @@ TEST_F(DocRangeOps, MoveFramesNonAdjacent) {
// Move frames 0,2 after 1...
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);
doc->undoHistory()->undo();
EXPECT_FRAME_ORDER(0, 1, 2, 3);
@ -827,16 +827,16 @@ TEST_F(DocRangeOps, MoveFramesNonAdjacent) {
// Move 1,2,5...
from.clearRange();
from.startRange(nullptr, 1, DocumentRange::kFrames);
from.startRange(nullptr, 1, DocRange::kFrames);
from.endRange(nullptr, 2);
from.startRange(nullptr, 5, DocumentRange::kFrames);
from.startRange(nullptr, 5, DocRange::kFrames);
from.endRange(nullptr, 5);
// Move 1,2,5 before 4...
EXPECT_FRAME_ORDER6(0, 1, 2, 3, 4, 5);
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);
doc->undoHistory()->undo();
EXPECT_FRAME_ORDER6(0, 1, 2, 3, 4, 5);
@ -844,7 +844,7 @@ TEST_F(DocRangeOps, MoveFramesNonAdjacent) {
// Move 1,2,5 after 4...
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);
doc->undoHistory()->undo();
EXPECT_FRAME_ORDER6(0, 1, 2, 3, 4, 5);
@ -852,7 +852,7 @@ TEST_F(DocRangeOps, MoveFramesNonAdjacent) {
// Move 1,2,5 before 2...
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);
doc->undoHistory()->undo();
EXPECT_FRAME_ORDER6(0, 1, 2, 3, 4, 5);
@ -860,7 +860,7 @@ TEST_F(DocRangeOps, MoveFramesNonAdjacent) {
// Move 1,2,5 after 2...
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);
doc->undoHistory()->undo();
EXPECT_FRAME_ORDER6(0, 1, 2, 3, 4, 5);
@ -868,7 +868,7 @@ TEST_F(DocRangeOps, MoveFramesNonAdjacent) {
// Move 1,2,5 before 1...
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);
doc->undoHistory()->undo();
EXPECT_FRAME_ORDER6(0, 1, 2, 3, 4, 5);
@ -876,17 +876,17 @@ TEST_F(DocRangeOps, MoveFramesNonAdjacent) {
// Move 1,3,5...
from.clearRange();
from.startRange(nullptr, 1, DocumentRange::kFrames);
from.startRange(nullptr, 1, DocRange::kFrames);
from.endRange(nullptr, 1);
from.startRange(nullptr, 3, DocumentRange::kFrames);
from.startRange(nullptr, 3, DocRange::kFrames);
from.endRange(nullptr, 3);
from.startRange(nullptr, 5, DocumentRange::kFrames);
from.startRange(nullptr, 5, DocRange::kFrames);
from.endRange(nullptr, 5);
// Move 1,3,5 before 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);
doc->undoHistory()->undo();
EXPECT_FRAME_ORDER6(0, 1, 2, 3, 4, 5);
@ -894,7 +894,7 @@ TEST_F(DocRangeOps, MoveFramesNonAdjacent) {
// Move 1,3,5 after 4...
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);
doc->undoHistory()->undo();
EXPECT_FRAME_ORDER6(0, 1, 2, 3, 4, 5);
@ -902,7 +902,7 @@ TEST_F(DocRangeOps, MoveFramesNonAdjacent) {
// Move 1,3,5 before 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);
doc->undoHistory()->undo();
EXPECT_FRAME_ORDER6(0, 1, 2, 3, 4, 5);
@ -910,14 +910,14 @@ TEST_F(DocRangeOps, MoveFramesNonAdjacent) {
// Move 1,3,5 after 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);
doc->undoHistory()->undo();
EXPECT_FRAME_ORDER6(0, 1, 2, 3, 4, 5);
}
TEST_F(DocRangeOps, MoveCels) {
DocumentRangePlace ignore = kDocumentRangeBefore;
DocRangePlace ignore = kDocRangeBefore;
move_range(doc,
cels_range(0, 0, 0, 0),
@ -982,7 +982,7 @@ TEST_F(DocRangeOps, CopyFrames) {
EXPECT_EQ(frames_range(2),
copy_range(doc,
frames_range(0),
frames_range(2, 3), kDocumentRangeBefore));
frames_range(2, 3), kDocRangeBefore));
EXPECT_FRAME_COPY1(0, 1, 0, 2, 3);
doc->undoHistory()->undo();
EXPECT_FRAME_ORDER(0, 1, 2, 3);
@ -990,7 +990,7 @@ TEST_F(DocRangeOps, CopyFrames) {
EXPECT_EQ(frames_range(4),
copy_range(doc,
frames_range(0),
frames_range(2, 3), kDocumentRangeAfter));
frames_range(2, 3), kDocRangeAfter));
EXPECT_FRAME_COPY1(0, 1, 2, 3, 0);
doc->undoHistory()->undo();
EXPECT_FRAME_ORDER(0, 1, 2, 3);
@ -998,7 +998,7 @@ TEST_F(DocRangeOps, CopyFrames) {
EXPECT_EQ(frames_range(0),
copy_range(doc,
frames_range(3),
frames_range(0, 1), kDocumentRangeBefore));
frames_range(0, 1), kDocRangeBefore));
EXPECT_FRAME_COPY1(3, 0, 1, 2, 3);
doc->undoHistory()->undo();
EXPECT_FRAME_ORDER(0, 1, 2, 3);
@ -1006,7 +1006,7 @@ TEST_F(DocRangeOps, CopyFrames) {
EXPECT_EQ(frames_range(2),
copy_range(doc,
frames_range(3),
frames_range(0, 1), kDocumentRangeAfter));
frames_range(0, 1), kDocRangeAfter));
EXPECT_FRAME_COPY1(0, 1, 3, 2, 3);
doc->undoHistory()->undo();
EXPECT_FRAME_ORDER(0, 1, 2, 3);
@ -1016,7 +1016,7 @@ TEST_F(DocRangeOps, CopyFrames) {
EXPECT_EQ(frames_range(3, 5),
copy_range(doc,
frames_range(0, 2),
frames_range(3), kDocumentRangeBefore));
frames_range(3), kDocRangeBefore));
EXPECT_FRAME_COPY3(0, 1, 2, 0, 1, 2, 3);
doc->undoHistory()->undo();
EXPECT_FRAME_ORDER(0, 1, 2, 3);
@ -1024,7 +1024,7 @@ TEST_F(DocRangeOps, CopyFrames) {
EXPECT_EQ(frames_range(4, 6),
copy_range(doc,
frames_range(0, 2),
frames_range(3), kDocumentRangeAfter));
frames_range(3), kDocRangeAfter));
EXPECT_FRAME_COPY3(0, 1, 2, 3, 0, 1, 2);
doc->undoHistory()->undo();
EXPECT_FRAME_ORDER(0, 1, 2, 3);
@ -1032,7 +1032,7 @@ TEST_F(DocRangeOps, CopyFrames) {
EXPECT_EQ(frames_range(0, 2),
copy_range(doc,
frames_range(1, 3),
frames_range(0), kDocumentRangeBefore));
frames_range(0), kDocRangeBefore));
EXPECT_FRAME_COPY3(1, 2, 3, 0, 1, 2, 3);
doc->undoHistory()->undo();
EXPECT_FRAME_ORDER(0, 1, 2, 3);
@ -1040,7 +1040,7 @@ TEST_F(DocRangeOps, CopyFrames) {
EXPECT_EQ(frames_range(1, 3),
copy_range(doc,
frames_range(1, 3),
frames_range(0), kDocumentRangeAfter));
frames_range(0), kDocRangeAfter));
EXPECT_FRAME_COPY3(0, 1, 2, 3, 1, 2, 3);
doc->undoHistory()->undo();
EXPECT_FRAME_ORDER(0, 1, 2, 3);
@ -1048,7 +1048,7 @@ TEST_F(DocRangeOps, CopyFrames) {
EXPECT_EQ(frames_range(0, 2),
copy_range(doc,
frames_range(0, 2),
frames_range(0, 2), kDocumentRangeBefore));
frames_range(0, 2), kDocRangeBefore));
EXPECT_FRAME_COPY3(0, 1, 2, 0, 1, 2, 3);
doc->undoHistory()->undo();
EXPECT_FRAME_ORDER(0, 1, 2, 3);
@ -1056,7 +1056,7 @@ TEST_F(DocRangeOps, CopyFrames) {
EXPECT_EQ(frames_range(3, 5),
copy_range(doc,
frames_range(0, 2),
frames_range(0, 2), kDocumentRangeAfter));
frames_range(0, 2), kDocRangeAfter));
EXPECT_FRAME_COPY3(0, 1, 2, 0, 1, 2, 3);
doc->undoHistory()->undo();
EXPECT_FRAME_ORDER(0, 1, 2, 3);
@ -1065,30 +1065,30 @@ TEST_F(DocRangeOps, CopyFrames) {
TEST_F(DocRangeOps, CopyFramesNonAdjacent) {
// Copy frames 0 and 2...
DocumentRange from;
from.startRange(nullptr, 0, DocumentRange::kFrames); from.endRange(nullptr, 0);
from.startRange(nullptr, 2, DocumentRange::kFrames); from.endRange(nullptr, 2);
DocRange from;
from.startRange(nullptr, 0, DocRange::kFrames); from.endRange(nullptr, 0);
from.startRange(nullptr, 2, DocRange::kFrames); from.endRange(nullptr, 2);
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);
doc->undoHistory()->undo();
EXPECT_FRAME_ORDER(0, 1, 2, 3);
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);
doc->undoHistory()->undo();
EXPECT_FRAME_ORDER(0, 1, 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);
doc->undoHistory()->undo();
EXPECT_FRAME_ORDER(0, 1, 2, 3);
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);
doc->undoHistory()->undo();
EXPECT_FRAME_ORDER(0, 1, 2, 3);
@ -1096,17 +1096,17 @@ TEST_F(DocRangeOps, CopyFramesNonAdjacent) {
// Copy frames 1 and 3...
from.clearRange();
from.startRange(nullptr, 1, DocumentRange::kFrames); from.endRange(nullptr, 1);
from.startRange(nullptr, 3, DocumentRange::kFrames); from.endRange(nullptr, 3);
from.startRange(nullptr, 1, DocRange::kFrames); from.endRange(nullptr, 1);
from.startRange(nullptr, 3, DocRange::kFrames); from.endRange(nullptr, 3);
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);
doc->undoHistory()->undo();
EXPECT_FRAME_ORDER(0, 1, 2, 3);
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);
doc->undoHistory()->undo();
EXPECT_FRAME_ORDER(0, 1, 2, 3);
@ -1169,10 +1169,10 @@ TEST(DocRangeOps2, DropInsideBugs) {
// layer3 --> layer1
// layer2 layer3
// layer1 layer2
DocumentRange from, to;
DocRange from, to;
from.selectLayer(layer1);
to.selectLayer(layer4);
move_range(doc, from, to, kDocumentRangeFirstChild);
move_range(doc, from, to, kDocRangeFirstChild);
EXPECT_EQ(layer2, sprite->root()->layers()[0]);
EXPECT_EQ(layer3, sprite->root()->layers()[1]);
EXPECT_EQ(layer4, sprite->root()->layers()[2]);
@ -1184,7 +1184,7 @@ TEST(DocRangeOps2, DropInsideBugs) {
// layer2 layer2
from.clearRange(); from.selectLayer(layer3);
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(layer4, sprite->root()->layers()[1]);
EXPECT_EQ(layer3, layer4->layers()[0]);
@ -1196,7 +1196,7 @@ TEST(DocRangeOps2, DropInsideBugs) {
// layer2 layer2
from.clearRange(); from.selectLayer(layer1);
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(layer4, sprite->root()->layers()[1]);
EXPECT_EQ(layer3, layer4->layers()[0]);
@ -1205,7 +1205,7 @@ TEST(DocRangeOps2, DropInsideBugs) {
// move layer4 as first child of layer4 (invalid operation)
from.clearRange(); from.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)
EXPECT_EQ(layer2, sprite->root()->layers()[0]);
EXPECT_EQ(layer4, sprite->root()->layers()[1]);
@ -1215,7 +1215,7 @@ TEST(DocRangeOps2, DropInsideBugs) {
// move layer4 as first child of layer3 (invalid operation)
from.clearRange(); from.selectLayer(layer4);
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)
EXPECT_EQ(layer2, sprite->root()->layers()[0]);
EXPECT_EQ(layer4, sprite->root()->layers()[1]);
@ -1225,7 +1225,7 @@ TEST(DocRangeOps2, DropInsideBugs) {
// move layer4 after layer1 (invalid operation)
from.clearRange(); from.selectLayer(layer4);
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)
EXPECT_EQ(layer2, sprite->root()->layers()[0]);
EXPECT_EQ(layer4, sprite->root()->layers()[1]);
@ -1235,7 +1235,7 @@ TEST(DocRangeOps2, DropInsideBugs) {
// move layer4 after layer1 (invalid operation)
from.clearRange(); from.selectLayer(layer4);
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)
EXPECT_EQ(layer2, sprite->root()->layers()[0]);
EXPECT_EQ(layer4, sprite->root()->layers()[1]);
@ -1245,7 +1245,7 @@ TEST(DocRangeOps2, DropInsideBugs) {
// move layer2 inside layer2 (invalid operation)
from.clearRange(); from.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)
EXPECT_EQ(layer2, sprite->root()->layers()[0]);
EXPECT_EQ(layer4, sprite->root()->layers()[1]);
@ -1301,7 +1301,7 @@ TEST_F(DocRangeOps, MoveRangeWithTags) {
move_range(doc,
frames_range(1, 2),
frames_range(0),
kDocumentRangeBefore,
kDocRangeBefore,
kFitOutsideTags));
EXPECT_FRAME_ORDER6(1, 2, 0, 3, 4, 5);
EXPECT_EQ(2, a->fromFrame());
@ -1321,7 +1321,7 @@ TEST_F(DocRangeOps, MoveRangeWithTags) {
move_range(doc,
frames_range(1, 2),
frames_range(0),
kDocumentRangeBefore,
kDocRangeBefore,
kFitInsideTags));
EXPECT_FRAME_ORDER6(1, 2, 0, 3, 4, 5);
EXPECT_EQ(0, a->fromFrame());
@ -1336,7 +1336,7 @@ TEST_F(DocRangeOps, MoveRangeWithTags) {
move_range(doc,
frames_range(0, 1),
frames_range(2),
kDocumentRangeAfter,
kDocRangeAfter,
kFitInsideTags));
EXPECT_FRAME_ORDER6(2, 0, 1, 3, 4, 5);
EXPECT_EQ(0, a->fromFrame());
@ -1351,7 +1351,7 @@ TEST_F(DocRangeOps, MoveRangeWithTags) {
move_range(doc,
frames_range(0, 1),
frames_range(2),
kDocumentRangeAfter,
kDocRangeAfter,
kFitOutsideTags));
EXPECT_FRAME_ORDER6(2, 0, 1, 3, 4, 5);
EXPECT_EQ(0, a->fromFrame());
@ -1365,7 +1365,7 @@ TEST_F(DocRangeOps, MoveRangeWithTags) {
move_range(doc,
frames_range(0, 1),
frames_range(3),
kDocumentRangeBefore,
kDocRangeBefore,
kFitOutsideTags));
EXPECT_FRAME_ORDER6(2, 0, 1, 3, 4, 5);
EXPECT_EQ(0, a->fromFrame());
@ -1379,7 +1379,7 @@ TEST_F(DocRangeOps, MoveRangeWithTags) {
move_range(doc,
frames_range(2, 3),
frames_range(2),
kDocumentRangeAfter,
kDocRangeAfter,
kFitOutsideTags));
EXPECT_FRAME_ORDER6(0, 1, 2, 3, 4, 5);
EXPECT_EQ(0, a->fromFrame());
@ -1393,7 +1393,7 @@ TEST_F(DocRangeOps, MoveRangeWithTags) {
move_range(doc,
frames_range(2, 3),
frames_range(3),
kDocumentRangeBefore,
kDocRangeBefore,
kFitOutsideTags));
EXPECT_FRAME_ORDER6(0, 1, 2, 3, 4, 5);
EXPECT_EQ(0, a->fromFrame());
@ -1408,7 +1408,7 @@ TEST_F(DocRangeOps, MoveRangeWithTags) {
move_range(doc,
frames_range(0, 1),
frames_range(5),
kDocumentRangeAfter,
kDocRangeAfter,
kFitInsideTags));
EXPECT_FRAME_ORDER6(2, 3, 4, 5, 0, 1);
EXPECT_EQ(0, a->fromFrame());
@ -1423,7 +1423,7 @@ TEST_F(DocRangeOps, MoveRangeWithTags) {
move_range(doc,
frames_range(0, 1),
frames_range(5),
kDocumentRangeAfter,
kDocRangeAfter,
kFitOutsideTags));
EXPECT_FRAME_ORDER6(2, 3, 4, 5, 0, 1);
EXPECT_EQ(0, a->fromFrame());
@ -1434,14 +1434,14 @@ TEST_F(DocRangeOps, MoveRangeWithTags) {
doc->undoHistory()->undo();
// Put frame 1 and 4 in the middle of both tags (outside)
DocumentRange from;
from.startRange(nullptr, 1, DocumentRange::kFrames); from.endRange(nullptr, 1);
from.startRange(nullptr, 4, DocumentRange::kFrames); from.endRange(nullptr, 4);
DocRange from;
from.startRange(nullptr, 1, DocRange::kFrames); from.endRange(nullptr, 1);
from.startRange(nullptr, 4, DocRange::kFrames); from.endRange(nullptr, 4);
EXPECT_EQ(frames_range(2, 3),
move_range(doc,
from,
frames_range(2),
kDocumentRangeAfter,
kDocRangeAfter,
kFitOutsideTags));
EXPECT_FRAME_ORDER6(0, 2, 1, 4, 3, 5);
EXPECT_EQ(0, a->fromFrame());
@ -1456,7 +1456,7 @@ TEST_F(DocRangeOps, MoveRangeWithTags) {
move_range(doc,
from,
frames_range(3),
kDocumentRangeBefore,
kDocRangeBefore,
kFitInsideTags));
EXPECT_FRAME_ORDER6(0, 2, 1, 4, 3, 5);
EXPECT_EQ(0, a->fromFrame());
@ -1483,7 +1483,7 @@ TEST_F(DocRangeOps, CopyRangeWithTags) {
copy_range(doc,
frames_range(1),
frames_range(0),
kDocumentRangeBefore,
kDocRangeBefore,
kFitOutsideTags));
EXPECT_FRAME_COPY3(1, 0, 1, 2, 3, 4, 5);
EXPECT_EQ(1, a->fromFrame());
@ -1498,7 +1498,7 @@ TEST_F(DocRangeOps, CopyRangeWithTags) {
copy_range(doc,
frames_range(1),
frames_range(0),
kDocumentRangeBefore,
kDocRangeBefore,
kFitInsideTags));
EXPECT_FRAME_COPY3(1, 0, 1, 2, 3, 4, 5);
EXPECT_EQ(0, a->fromFrame());
@ -1513,7 +1513,7 @@ TEST_F(DocRangeOps, CopyRangeWithTags) {
copy_range(doc,
frames_range(1),
frames_range(2),
kDocumentRangeAfter,
kDocRangeAfter,
kFitOutsideTags));
EXPECT_FRAME_COPY3(0, 1, 2, 1, 3, 4, 5);
EXPECT_EQ(0, a->fromFrame());

View File

@ -187,7 +187,7 @@ SpritePosition DocUndo::nextRedoSpritePosition() const
return SpritePosition();
}
std::istream* DocUndo::nextUndoDocumentRange() const
std::istream* DocUndo::nextUndoDocRange() const
{
const undo::UndoState* state = nextUndo();
if (state)
@ -196,7 +196,7 @@ std::istream* DocUndo::nextUndoDocumentRange() const
return nullptr;
}
std::istream* DocUndo::nextRedoDocumentRange() const
std::istream* DocUndo::nextRedoDocRange() const
{
const undo::UndoState* state = nextRedo();
if (state)

View File

@ -8,7 +8,7 @@
#define APP_DOCUMENT_UNDO_H_INCLUDED
#pragma once
#include "app/document_range.h"
#include "app/doc_range.h"
#include "app/sprite_position.h"
#include "base/disable_copying.h"
#include "base/unique_ptr.h"
@ -53,8 +53,8 @@ namespace app {
SpritePosition nextUndoSpritePosition() const;
SpritePosition nextRedoSpritePosition() const;
std::istream* nextUndoDocumentRange() const;
std::istream* nextRedoDocumentRange() const;
std::istream* nextUndoDocRange() const;
std::istream* nextRedoDocRange() const;
Cmd* lastExecutedCmd() const;

View File

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

View File

@ -60,10 +60,10 @@ Transaction::~Transaction()
// Used to set the document range after all the transaction is
// executed and before the commit. This range is stored in
// CmdTransaction to recover it on Edit > Redo.
void Transaction::setNewDocumentRange(const DocumentRange& range)
void Transaction::setNewDocRange(const DocRange& range)
{
ASSERT(m_cmds);
m_cmds->setNewDocumentRange(range);
m_cmds->setNewDocRange(range);
}
void Transaction::commit()

View File

@ -15,7 +15,7 @@ namespace app {
class Cmd;
class CmdTransaction;
class Context;
class DocumentRange;
class DocRange;
class DocUndo;
enum Modification {
@ -49,7 +49,7 @@ namespace app {
// Can be used to change the new document range resulting from
// executing this transaction. This range can be used then in
// 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
// be finally added in the sprite.

View File

@ -1,5 +1,5 @@
// Aseprite
// Copyright (C) 2001-2017 David Capello
// Copyright (C) 2001-2018 David Capello
//
// This program is distributed under the terms of
// the End-User License Agreement for Aseprite.
@ -14,7 +14,7 @@
#include "app/cmd/set_cel_bounds.h"
#include "app/context_access.h"
#include "app/doc_api.h"
#include "app/document_range.h"
#include "app/doc_range.h"
#include "app/transaction.h"
#include "app/ui/editor/editor.h"
#include "app/ui/editor/editor_customization_delegate.h"
@ -43,13 +43,13 @@ MovingCelCollect::MovingCelCollect(Editor* editor, Layer* layer)
if (layer && layer->isImage())
m_mainCel = layer->cel(editor->frame());
DocumentRange range = App::instance()->timeline()->range();
DocRange range = App::instance()->timeline()->range();
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());
}
DocumentRange range2 = range;
DocRange range2 = range;
for (Layer* layer : range.selectedLayers()) {
if (layer && layer->isGroup()) {
LayerList childrenList;

View File

@ -16,7 +16,7 @@
#include "app/commands/cmd_eyedropper.h"
#include "app/commands/commands.h"
#include "app/commands/params.h"
#include "app/document_range.h"
#include "app/doc_range.h"
#include "app/ini_file.h"
#include "app/pref/preferences.h"
#include "app/tools/active_tool.h"

View File

@ -14,7 +14,7 @@
#include "app/context_access.h"
#include "app/doc_event.h"
#include "app/document_access.h"
#include "app/document_range.h"
#include "app/doc_range.h"
#include "app/modules/editors.h"
#include "app/modules/gfx.h"
#include "app/modules/gui.h"

View File

@ -18,11 +18,11 @@
#include "app/commands/params.h"
#include "app/console.h"
#include "app/context_access.h"
#include "app/doc_api.h"
#include "app/doc_event.h"
#include "app/doc_range_ops.h"
#include "app/doc_undo.h"
#include "app/document.h"
#include "app/doc_api.h"
#include "app/document_range_ops.h"
#include "app/loop_tag.h"
#include "app/modules/editors.h"
#include "app/modules/gfx.h"
@ -593,7 +593,7 @@ bool Timeline::onProcessMessage(Message* msg)
case kTimerMessage:
if (static_cast<TimerMessage*>(msg)->timer() == &m_clipboard_timer) {
Document* clipboard_document;
DocumentRange clipboard_range;
DocRange clipboard_range;
clipboard::get_document_range_info(
&clipboard_document,
&clipboard_range);
@ -1880,7 +1880,7 @@ void Timeline::drawPart(ui::Graphics* g, const gfx::Rect& bounds,
void Timeline::drawClipboardRange(ui::Graphics* g)
{
Document* clipboard_document;
DocumentRange clipboard_range;
DocRange clipboard_range;
clipboard::get_document_range_info(
&clipboard_document,
&clipboard_range);
@ -2386,7 +2386,7 @@ void Timeline::drawFrameTags(ui::Graphics* g)
int dx = 0, dw = 0;
if (m_dropTarget.outside &&
m_dropTarget.hhit != DropTarget::HNone &&
m_dropRange.type() == DocumentRange::kFrames) {
m_dropRange.type() == DocRange::kFrames) {
switch (m_dropTarget.hhit) {
case DropTarget::Before:
if (m_dropRange.firstFrame() == frameTag->fromFrame()) {
@ -3613,7 +3613,7 @@ void Timeline::dropRange(DropOp op)
{
bool copy = (op == Timeline::kCopy);
Range newFromRange;
DocumentRangePlace place = kDocumentRangeAfter;
DocRangePlace place = kDocRangeAfter;
Range dropRange = m_dropRange;
bool outside = m_dropTarget.outside;
@ -3621,19 +3621,19 @@ void Timeline::dropRange(DropOp op)
case Range::kFrames:
if (m_dropTarget.hhit == DropTarget::Before)
place = kDocumentRangeBefore;
place = kDocRangeBefore;
break;
case Range::kLayers:
switch (m_dropTarget.vhit) {
case DropTarget::Bottom:
place = kDocumentRangeBefore;
place = kDocRangeBefore;
break;
case DropTarget::FirstChild:
place = kDocumentRangeFirstChild;
place = kDocRangeFirstChild;
break;
case DropTarget::VeryBottom:
place = kDocumentRangeBefore;
place = kDocRangeBefore;
{
Layer* layer = m_sprite->root()->firstLayer();
dropRange.clearRange();
@ -3792,7 +3792,7 @@ void Timeline::updateDropRange(const gfx::Point& pt)
void Timeline::clearClipboardRange()
{
Document* clipboard_document;
DocumentRange clipboard_range;
DocRange clipboard_range;
clipboard::get_document_range_info(
&clipboard_document,
&clipboard_range);
@ -3940,7 +3940,7 @@ bool Timeline::onCanCopy(Context* ctx)
bool Timeline::onCanPaste(Context* ctx)
{
return
(clipboard::get_current_format() == clipboard::ClipboardDocumentRange &&
(clipboard::get_current_format() == clipboard::ClipboardDocRange &&
ctx->checkFlags(ContextFlags::ActiveDocumentIsWritable));
}
@ -3968,7 +3968,7 @@ bool Timeline::onCopy(Context* ctx)
bool Timeline::onPaste(Context* ctx)
{
if (clipboard::get_current_format() == clipboard::ClipboardDocumentRange) {
if (clipboard::get_current_format() == clipboard::ClipboardDocRange) {
clipboard::paste();
return true;
}
@ -3984,13 +3984,13 @@ bool Timeline::onClear(Context* ctx)
Command* cmd = nullptr;
switch (m_range.type()) {
case DocumentRange::kCels:
case DocRange::kCels:
cmd = Commands::instance()->byId(CommandId::ClearCel());
break;
case DocumentRange::kFrames:
case DocRange::kFrames:
cmd = Commands::instance()->byId(CommandId::RemoveFrame());
break;
case DocumentRange::kLayers:
case DocRange::kLayers:
cmd = Commands::instance()->byId(CommandId::RemoveLayer());
break;
}

View File

@ -10,7 +10,7 @@
#include "app/doc_observer.h"
#include "app/docs_observer.h"
#include "app/document_range.h"
#include "app/doc_range.h"
#include "app/loop_tag.h"
#include "app/pref/preferences.h"
#include "app/ui/editor/editor_observer.h"
@ -62,7 +62,7 @@ namespace app {
public InputChainElement,
public FrameTagProvider {
public:
typedef DocumentRange Range;
typedef DocRange Range;
enum State {
STATE_STANDBY,

View File

@ -225,9 +225,9 @@ void UIContext::onGetActiveSite(Site* site) const
if (timeline &&
timeline->range().enabled()) {
switch (timeline->range().type()) {
case DocumentRange::kCels: site->focus(Site::InCels); break;
case DocumentRange::kFrames: site->focus(Site::InFrames); break;
case DocumentRange::kLayers: site->focus(Site::InLayers); break;
case DocRange::kCels: site->focus(Site::InCels); break;
case DocRange::kFrames: site->focus(Site::InFrames); break;
case DocRange::kLayers: site->focus(Site::InLayers); break;
}
site->selectedLayers(timeline->selectedLayers());
site->selectedFrames(timeline->selectedFrames());

View File

@ -14,10 +14,10 @@
#include "app/cmd/trim_cel.h"
#include "app/console.h"
#include "app/context_access.h"
#include "app/document.h"
#include "app/doc_api.h"
#include "app/document_range.h"
#include "app/document_range_ops.h"
#include "app/doc_range.h"
#include "app/doc_range_ops.h"
#include "app/document.h"
#include "app/modules/editors.h"
#include "app/modules/gfx.h"
#include "app/modules/gui.h"
@ -68,13 +68,13 @@ namespace {
m_doc = nullptr;
}
void setRange(Document* doc, const DocumentRange& range) {
void setRange(Document* doc, const DocRange& range) {
m_doc = doc;
m_range = range;
}
Document* document() const { return m_doc; }
DocumentRange range() const { return m_range; }
DocRange range() const { return m_range; }
// DocsObserver impl
void onRemoveDocument(Document* doc) override {
@ -84,7 +84,7 @@ namespace {
private:
Document* m_doc;
DocumentRange m_range;
DocRange m_range;
};
}
@ -216,14 +216,14 @@ ClipboardFormat get_current_format()
else if (clipboard_image)
return ClipboardImage;
else if (clipboard_range.valid())
return ClipboardDocumentRange;
return ClipboardDocRange;
else if (clipboard_palette && clipboard_picks.picks())
return ClipboardPaletteEntries;
else
return ClipboardNone;
}
void get_document_range_info(Document** document, DocumentRange* range)
void get_document_range_info(Document** document, DocRange* range)
{
if (clipboard_range.valid()) {
*document = clipboard_range.document();
@ -285,7 +285,7 @@ void copy_merged(const ContextReader& reader)
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);
@ -376,19 +376,19 @@ void paste()
break;
}
case clipboard::ClipboardDocumentRange: {
DocumentRange srcRange = clipboard_range.range();
case clipboard::ClipboardDocRange: {
DocRange srcRange = clipboard_range.range();
Document* srcDoc = clipboard_range.document();
Sprite* srcSpr = srcDoc->sprite();
switch (srcRange.type()) {
case DocumentRange::kCels: {
case DocRange::kCels: {
Layer* dstLayer = editor->layer();
frame_t dstFrameFirst = editor->frame();
DocumentRange dstRange;
dstRange.startRange(dstLayer, dstFrameFirst, DocumentRange::kCels);
DocRange dstRange;
dstRange.startRange(dstLayer, dstFrameFirst, DocRange::kCels);
for (layer_t i=1; i<srcRange.layers(); ++i) {
dstLayer = dstLayer->getPreviousBrowsable();
if (dstLayer == nullptr)
@ -401,7 +401,7 @@ void paste()
if (srcDoc == dstDoc) {
// This is the app::copy_range (not clipboard::copy_range()).
if (srcRange.layers() == dstRange.layers())
app::copy_range(srcDoc, srcRange, dstRange, kDocumentRangeBefore);
app::copy_range(srcDoc, srcRange, dstRange, kDocRangeBefore);
editor->invalidate();
return;
}
@ -485,16 +485,16 @@ void paste()
break;
}
case DocumentRange::kFrames: {
case DocRange::kFrames: {
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.
if (srcSpr == dstSpr) {
DocumentRange dstRange;
dstRange.startRange(nullptr, dstFrame, DocumentRange::kFrames);
DocRange dstRange;
dstRange.startRange(nullptr, dstFrame, DocRange::kFrames);
dstRange.endRange(nullptr, dstFrame);
app::copy_range(srcDoc, srcRange, dstRange, kDocumentRangeBefore);
app::copy_range(srcDoc, srcRange, dstRange, kDocRangeBefore);
break;
}
@ -537,7 +537,7 @@ void paste()
break;
}
case DocumentRange::kLayers: {
case DocRange::kLayers: {
if (srcDoc->colorMode() != dstDoc->colorMode())
throw std::runtime_error("You cannot copy layers of document with different color modes");

View File

@ -24,7 +24,7 @@ namespace app {
class Document;
class ContextReader;
class ContextWriter;
class DocumentRange;
class DocRange;
namespace clipboard {
using namespace doc;
@ -32,7 +32,7 @@ namespace app {
enum ClipboardFormat {
ClipboardNone,
ClipboardImage,
ClipboardDocumentRange,
ClipboardDocRange,
ClipboardPaletteEntries,
};
@ -52,13 +52,13 @@ namespace app {
};
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 cut(ContextWriter& context);
void copy(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_palette(const Palette* palette, const PalettePicks& picks);
void paste();

View File

@ -1,5 +1,5 @@
// Aseprite
// Copyright (C) 2001-2017 David Capello
// Copyright (C) 2001-2018 David Capello
//
// This program is distributed under the terms of
// the End-User License Agreement for Aseprite.
@ -12,7 +12,7 @@
#include "app/context_access.h"
#include "app/document.h"
#include "app/document_range.h"
#include "app/doc_range.h"
#include "doc/cel.h"
#include "doc/layer.h"
#include "doc/sprite.h"
@ -23,10 +23,10 @@ namespace app {
using namespace doc;
// TODO the DocumentRange should be "iteratable" to replace this function
CelList get_unlocked_unique_cels(Sprite* sprite, const DocumentRange& inrange)
// TODO the DocRange should be "iteratable" to replace this function
CelList get_unlocked_unique_cels(Sprite* sprite, const DocRange& inrange)
{
DocumentRange range = inrange;
DocRange range = inrange;
CelList cels;
if (!range.convertToCels(sprite))
return cels;

View File

@ -1,5 +1,5 @@
// Aseprite
// Copyright (C) 2001-2017 David Capello
// Copyright (C) 2001-2018 David Capello
//
// This program is distributed under the terms of
// the End-User License Agreement for Aseprite.
@ -19,9 +19,9 @@ namespace doc {
namespace app {
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