1// Aseprite
2// Copyright (C) 2019-2022 Igara Studio S.A.
3// Copyright (C) 2016-2017 David Capello
4//
5// This program is distributed under the terms of
6// the End-User License Agreement for Aseprite.
7
8#ifndef APP_CLI_CLI_OPEN_FILE_H_INCLUDED
9#define APP_CLI_CLI_OPEN_FILE_H_INCLUDED
10#pragma once
11
12#include "doc/frame.h"
13#include "gfx/rect.h"
14
15#include <string>
16#include <vector>
17
18namespace app {
19
20 class Doc;
21 class FileOpROI;
22
23 struct CliOpenFile {
24 Doc* document = nullptr;
25 std::string filename;
26 std::string filenameFormat;
27 std::string tag;
28 std::string slice;
29 std::vector<std::string> includeLayers;
30 std::vector<std::string> excludeLayers;
31 doc::frame_t fromFrame = -1;
32 doc::frame_t toFrame = -1;
33 bool splitLayers = false;
34 bool splitTags = false;
35 bool splitSlices = false;
36 bool splitGrid = false;
37 bool allLayers = false;
38 bool listLayers = false;
39 bool listTags = false;
40 bool listSlices = false;
41 bool ignoreEmpty = false;
42 bool trim = false;
43 bool trimByGrid = false;
44 bool oneFrame = false;
45 bool exportTileset = false;
46 gfx::Rect crop;
47
48 bool hasTag() const {
49 return (!tag.empty());
50 }
51
52 bool hasSlice() const {
53 return (!slice.empty());
54 }
55
56 bool hasFrameRange() const {
57 return (fromFrame >= 0 && toFrame >= 0);
58 }
59
60 bool hasLayersFilter() const {
61 return (!includeLayers.empty() ||
62 !excludeLayers.empty());
63 }
64
65 FileOpROI roi() const;
66 };
67
68} // namespace app
69
70#endif
71