1 | // Aseprite |
---|---|
2 | // Copyright (C) 2018-2022 Igara Studio S.A. |
3 | // Copyright (C) 2001-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_APP_OPTIONS_H_INCLUDED |
9 | #define APP_CLI_APP_OPTIONS_H_INCLUDED |
10 | #pragma once |
11 | |
12 | #include <stdexcept> |
13 | #include <string> |
14 | #include <vector> |
15 | |
16 | #include "base/program_options.h" |
17 | |
18 | namespace app { |
19 | |
20 | class AppOptions { |
21 | public: |
22 | enum VerboseLevel { |
23 | kNoVerbose, |
24 | kVerbose, |
25 | kHighlyVerbose, |
26 | }; |
27 | |
28 | typedef base::ProgramOptions PO; |
29 | typedef PO::Option Option; |
30 | typedef PO::ValueList ValueList; |
31 | |
32 | AppOptions(int argc, const char* argv[]); |
33 | |
34 | const std::string& exeName() const { return m_exeName; } |
35 | const base::ProgramOptions& programOptions() const { return m_po; } |
36 | |
37 | bool startUI() const { return m_startUI; } |
38 | bool startShell() const { return m_startShell; } |
39 | bool previewCLI() const { return m_previewCLI; } |
40 | bool showHelp() const { return m_showHelp; } |
41 | bool showVersion() const { return m_showVersion; } |
42 | VerboseLevel verboseLevel() const { return m_verboseLevel; } |
43 | |
44 | const ValueList& values() const { |
45 | return m_po.values(); |
46 | } |
47 | |
48 | // Export options |
49 | const Option& saveAs() const { return m_saveAs; } |
50 | const Option& palette() const { return m_palette; } |
51 | const Option& scale() const { return m_scale; } |
52 | const Option& ditheringAlgorithm() const { return m_ditheringAlgorithm; } |
53 | const Option& ditheringMatrix() const { return m_ditheringMatrix; } |
54 | const Option& colorMode() const { return m_colorMode; } |
55 | const Option& shrinkTo() const { return m_shrinkTo; } |
56 | const Option& data() const { return m_data; } |
57 | const Option& format() const { return m_format; } |
58 | const Option& sheet() const { return m_sheet; } |
59 | const Option& sheetType() const { return m_sheetType; } |
60 | const Option& sheetPack() const { return m_sheetPack; } |
61 | const Option& sheetWidth() const { return m_sheetWidth; } |
62 | const Option& sheetHeight() const { return m_sheetHeight; } |
63 | const Option& sheetColumns() const { return m_sheetColumns; } |
64 | const Option& sheetRows() const { return m_sheetRows; } |
65 | const Option& splitLayers() const { return m_splitLayers; } |
66 | const Option& splitTags() const { return m_splitTags; } |
67 | const Option& splitSlices() const { return m_splitSlices; } |
68 | const Option& splitGrid() const { return m_splitGrid; } |
69 | const Option& layer() const { return m_layer; } |
70 | const Option& allLayers() const { return m_allLayers; } |
71 | const Option& ignoreLayer() const { return m_ignoreLayer; } |
72 | const Option& tag() const { return m_tag; } |
73 | const Option& frameRange() const { return m_frameRange; } |
74 | const Option& ignoreEmpty() const { return m_ignoreEmpty; } |
75 | const Option& mergeDuplicates() const { return m_mergeDuplicates; } |
76 | const Option& borderPadding() const { return m_borderPadding; } |
77 | const Option& shapePadding() const { return m_shapePadding; } |
78 | const Option& innerPadding() const { return m_innerPadding; } |
79 | const Option& trim() const { return m_trim; } |
80 | const Option& trimSprite() const { return m_trimSprite; } |
81 | const Option& trimByGrid() const { return m_trimByGrid; } |
82 | const Option& extrude() const { return m_extrude; } |
83 | const Option& crop() const { return m_crop; } |
84 | const Option& slice() const { return m_slice; } |
85 | const Option& filenameFormat() const { return m_filenameFormat; } |
86 | #ifdef ENABLE_SCRIPTING |
87 | const Option& script() const { return m_script; } |
88 | const Option& scriptParam() const { return m_scriptParam; } |
89 | #endif |
90 | const Option& listLayers() const { return m_listLayers; } |
91 | const Option& listTags() const { return m_listTags; } |
92 | const Option& listSlices() const { return m_listSlices; } |
93 | const Option& oneFrame() const { return m_oneFrame; } |
94 | const Option& exportTileset() const { return m_exportTileset; } |
95 | |
96 | bool hasExporterParams() const; |
97 | #ifdef _WIN32 |
98 | bool disableWintab() const; |
99 | #endif |
100 | |
101 | private: |
102 | AppOptions(const AppOptions& that); |
103 | |
104 | std::string m_exeName; |
105 | base::ProgramOptions m_po; |
106 | bool m_startUI; |
107 | bool m_startShell; |
108 | bool m_previewCLI; |
109 | bool m_showHelp; |
110 | bool m_showVersion; |
111 | VerboseLevel m_verboseLevel; |
112 | |
113 | #ifdef ENABLE_SCRIPTING |
114 | Option& m_shell; |
115 | #endif |
116 | Option& m_batch; |
117 | Option& m_preview; |
118 | Option& m_saveAs; |
119 | Option& m_palette; |
120 | Option& m_scale; |
121 | Option& m_ditheringAlgorithm; |
122 | Option& m_ditheringMatrix; |
123 | Option& m_colorMode; |
124 | Option& m_shrinkTo; |
125 | Option& m_data; |
126 | Option& m_format; |
127 | Option& m_sheet; |
128 | Option& m_sheetType; |
129 | Option& m_sheetPack; |
130 | Option& m_sheetWidth; |
131 | Option& m_sheetHeight; |
132 | Option& m_sheetColumns; |
133 | Option& m_sheetRows; |
134 | Option& m_splitLayers; |
135 | Option& m_splitTags; |
136 | Option& m_splitSlices; |
137 | Option& m_splitGrid; |
138 | Option& m_layer; |
139 | Option& m_allLayers; |
140 | Option& m_ignoreLayer; |
141 | Option& m_tag; |
142 | Option& m_frameRange; |
143 | Option& m_ignoreEmpty; |
144 | Option& m_mergeDuplicates; |
145 | Option& m_borderPadding; |
146 | Option& m_shapePadding; |
147 | Option& m_innerPadding; |
148 | Option& m_trim; |
149 | Option& m_trimSprite; |
150 | Option& m_trimByGrid; |
151 | Option& m_extrude; |
152 | Option& m_crop; |
153 | Option& m_slice; |
154 | Option& m_filenameFormat; |
155 | #ifdef ENABLE_SCRIPTING |
156 | Option& m_script; |
157 | Option& m_scriptParam; |
158 | #endif |
159 | Option& m_listLayers; |
160 | Option& m_listTags; |
161 | Option& m_listSlices; |
162 | Option& m_oneFrame; |
163 | Option& m_exportTileset; |
164 | |
165 | Option& m_verbose; |
166 | Option& m_debug; |
167 | #ifdef _WIN32 |
168 | Option& m_disableWintab; |
169 | #endif |
170 | Option& m_help; |
171 | Option& m_version; |
172 | |
173 | }; |
174 | |
175 | } // namespace app |
176 | |
177 | #endif |
178 |