1// Aseprite
2// Copyright (C) 2001-2018 David Capello
3//
4// This program is distributed under the terms of
5// the End-User License Agreement for Aseprite.
6
7#ifndef APP_DOC_RANGE_OPS_H_INCLUDED
8#define APP_DOC_RANGE_OPS_H_INCLUDED
9#pragma once
10
11#include "app/tags_handling.h"
12
13#include <vector>
14
15namespace app {
16 class Doc;
17 class DocRange;
18
19 enum DocRangePlace {
20 kDocRangeBefore,
21 kDocRangeAfter,
22 kDocRangeFirstChild,
23 };
24
25 // These functions returns the new location of the "from" range or
26 // throws an std::runtime_error() in case that the operation cannot
27 // be done. (E.g. the background layer cannot be moved.)
28 DocRange move_range(Doc* doc,
29 const DocRange& from,
30 const DocRange& to,
31 const DocRangePlace place,
32 const TagsHandling tagsHandling = kDefaultTagsAdjustment);
33 DocRange copy_range(Doc* doc,
34 const DocRange& from,
35 const DocRange& to,
36 const DocRangePlace place,
37 const TagsHandling tagsHandling = kDefaultTagsAdjustment);
38
39 void reverse_frames(Doc* doc, const DocRange& range);
40
41} // namespace app
42
43#endif
44