1 /*
2 
3 Pencil2D - Traditional Animation Software
4 Copyright (C) 2005-2007 Patrick Corrieri & Pascal Naidon
5 Copyright (C) 2012-2020 Matthew Chiawen Chang
6 
7 This program is free software; you can redistribute it and/or
8 modify it under the terms of the GNU General Public License
9 as published by the Free Software Foundation; version 2 of the License.
10 
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 GNU General Public License for more details.
15 
16 */
17 
18 #ifndef PENCILDEF_H
19 #define PENCILDEF_H
20 
21 #ifndef M_PI
22 #define M_PI 3.14159265358979323846
23 #endif
24 
25 #define STRINGIFY(x) #x
26 #define TOSTRING(x) STRINGIFY(x)
27 #define S__GIT_TIMESTAMP TOSTRING(GIT_TIMESTAMP)
28 #define S__GIT_COMMIT_HASH TOSTRING(GIT_CURRENT_SHA1)
29 
30 enum ToolType : int
31 {
32     INVALID_TOOL = -1,
33     PENCIL = 0,
34     ERASER,
35     SELECT,
36     MOVE,
37     HAND,
38     SMUDGE,
39     PEN,
40     POLYLINE,
41     BUCKET,
42     EYEDROPPER,
43     BRUSH,
44     TOOL_TYPE_COUNT
45 };
46 
47 enum ToolPropertyType
48 {
49     WIDTH,
50     FEATHER,
51     PRESSURE,
52     INVISIBILITY,
53     PRESERVEALPHA,
54     BEZIER,
55     USEFEATHER,
56     VECTORMERGE,
57     ANTI_ALIASING,
58     STABILIZATION,
59     TOLERANCE,
60     FILLCONTOUR
61 };
62 
63 enum BackgroundStyle
64 {
65 
66 };
67 
68 enum StabilizationLevel
69 {
70     NONE,
71     SIMPLE,
72     STRONG
73 };
74 
75 enum TimecodeTextLevel
76 {
77     NOTEXT,
78     FRAMES, // FF
79     SMPTE,  // HH:MM:SS:FF
80     SFF     // S:FF
81 };
82 
83 enum class LayerVisibility
84 {
85     CURRENTONLY = 0,
86     RELATED = 1,
87     ALL = 2,
88     // If you are adding new enum values here, be sure to update the ++/-- operators below
89 };
90 
91 inline LayerVisibility& operator++(LayerVisibility& vis)
92 {
93     return vis = (vis == LayerVisibility::ALL) ? LayerVisibility::CURRENTONLY : static_cast<LayerVisibility>(static_cast<int>(vis)+1);
94 }
95 
96 inline LayerVisibility& operator--(LayerVisibility& vis)
97 {
98     return vis = (vis == LayerVisibility::CURRENTONLY) ? LayerVisibility::ALL : static_cast<LayerVisibility>(static_cast<int>(vis)-1);
99 }
100 
101 // Max frames that can be imported and loaded onto the timeline
102 const static int MaxFramesBound = 9999;
103 
104 // shortcuts command code
105 #define CMD_NEW_FILE  "CmdNewFile"
106 #define CMD_OPEN_FILE "CmdOpenFile"
107 #define CMD_SAVE_FILE "CmdSaveFile"
108 #define CMD_SAVE_AS "CmdSaveAs"
109 #define CMD_IMPORT_IMAGE "CmdImportImage"
110 #define CMD_IMPORT_IMAGE_SEQ "CmdImportImageSequence"
111 #define CMD_IMPORT_MOVIE_VIDEO "CmdImportMovieVideo"
112 #define CMD_IMPORT_MOVIE_AUDIO "CmdImportMovieAudio"
113 #define CMD_IMPORT_PALETTE "CmdImportPalette"
114 #define CMD_IMPORT_SOUND "CmdImportSound"
115 #define CMD_EXPORT_IMAGE_SEQ "CmdExportImageSequence"
116 #define CMD_EXPORT_IMAGE "CmdExportImage"
117 #define CMD_EXPORT_MOVIE "CmdExportMovie"
118 #define CMD_EXPORT_PALETTE "CmdExportPalette"
119 #define CMD_EXPORT_SOUND "CmdExportSound"
120 #define CMD_UNDO "CmdUndo"
121 #define CMD_REDO "CmdRedo"
122 #define CMD_CUT "CmdCut"
123 #define CMD_COPY "CmdCopy"
124 #define CMD_PASTE "CmdPaste"
125 #define CMD_SELECT_ALL "CmdSelectAll"
126 #define CMD_DESELECT_ALL "CmdDeselectAll"
127 #define CMD_CLEAR_FRAME "CmdClearFrame"
128 #define CMD_PREFERENCE "CmdPreferences"
129 #define CMD_RESET_WINDOWS "CmdResetWindows"
130 #define CMD_ZOOM_IN "CmdZoomIn"
131 #define CMD_ZOOM_OUT "CmdZoomOut"
132 #define CMD_ROTATE_CLOCK "CmdRotateClockwise"
133 #define CMD_ROTATE_ANTI_CLOCK "CmdRotateAntiClockwise"
134 #define CMD_RESET_ROTATION "CmdResetRotation"
135 #define CMD_RESET_ZOOM_ROTATE "CmdResetZoomRotate"
136 #define CMD_CENTER_VIEW "CmdCenterView"
137 #define CMD_ZOOM_400 "CmdZoom400"
138 #define CMD_ZOOM_300 "CmdZoom300"
139 #define CMD_ZOOM_200 "CmdZoom200"
140 #define CMD_ZOOM_100 "CmdZoom100"
141 #define CMD_ZOOM_50 "CmdZoom50"
142 #define CMD_ZOOM_33 "CmdZoom33"
143 #define CMD_ZOOM_25 "CmdZoom25"
144 #define CMD_FLIP_HORIZONTAL "CmdFlipHorizontal"
145 #define CMD_FLIP_VERTICAL "CmdFlipVertical"
146 #define CMD_PREVIEW "CmdPreview"
147 #define CMD_GRID "CmdGrid"
148 #define CMD_ONIONSKIN_PREV "CmdOnionSkinPrevious"
149 #define CMD_ONIONSKIN_NEXT "CmdOnionSkinNext"
150 #define CMD_PLAY "CmdPlay"
151 #define CMD_LOOP "CmdLoop"
152 #define CMD_FLIP_INBETWEEN "CmdFlipInBetween"
153 #define CMD_FLIP_ROLLING "CmdFlipRolling"
154 #define CMD_GOTO_NEXT_FRAME "CmdGotoNextFrame"
155 #define CMD_GOTO_PREV_FRAME "CmdGotoPreviousFrame"
156 #define CMD_GOTO_NEXT_KEY_FRAME "CmdGotoNextKeyFrame"
157 #define CMD_GOTO_PREV_KEY_FRAME "CmdGotoPreviousKeyFrame"
158 #define CMD_ADD_FRAME "CmdAddFrame"
159 #define CMD_DUPLICATE_FRAME "CmdDuplicateFrame"
160 #define CMD_REMOVE_FRAME "CmdRemoveFrame"
161 #define CMD_MOVE_FRAME_BACKWARD "CmdMoveFrameBackward"
162 #define CMD_MOVE_FRAME_FORWARD "CmdMoveFrameForward"
163 #define CMD_TOOL_MOVE "CmdToolMove"
164 #define CMD_TOOL_SELECT "CmdToolSelect"
165 #define CMD_TOOL_BRUSH "CmdToolBrush"
166 #define CMD_TOOL_POLYLINE "CmdToolPolyline"
167 #define CMD_TOOL_SMUDGE "CmdToolSmudge"
168 #define CMD_TOOL_PEN "CmdToolPen"
169 #define CMD_TOOL_HAND "CmdToolHand"
170 #define CMD_TOOL_PENCIL "CmdToolPencil"
171 #define CMD_TOOL_BUCKET "CmdToolBucket"
172 #define CMD_TOOL_EYEDROPPER "CmdToolEyedropper"
173 #define CMD_TOOL_ERASER "CmdToolEraser"
174 #define CMD_NEW_BITMAP_LAYER "CmdNewBitmapLayer"
175 #define CMD_NEW_VECTOR_LAYER "CmdNewVectorLayer"
176 #define CMD_NEW_SOUND_LAYER "CmdNewSoundLayer"
177 #define CMD_NEW_CAMERA_LAYER "CmdNewCameraLayer"
178 #define CMD_DELETE_CUR_LAYER "CmdDeleteCurrentLayer"
179 #define CMD_CURRENT_LAYER_VISIBILITY "CmdLayerVisibilityCurrentOnly"
180 #define CMD_RELATIVE_LAYER_VISIBILITY "CmdLayerVisibilityRelative"
181 #define CMD_ALL_LAYER_VISIBILITY "CmdLayerVisibilityAll"
182 #define CMD_HELP "CmdHelp"
183 #define CMD_TOGGLE_TOOLBOX "CmdToggleToolBox"
184 #define CMD_TOGGLE_TOOL_OPTIONS "CmdToggleToolOptions"
185 #define CMD_TOGGLE_COLOR_WHEEL "CmdToggleColorWheel"
186 #define CMD_TOGGLE_COLOR_INSPECTOR "CmdToggleColorInspector"
187 #define CMD_TOGGLE_COLOR_LIBRARY "CmdToggleColorLibrary"
188 #define CMD_TOGGLE_DISPLAY_OPTIONS "CmdToggleDisplayOptions"
189 #define CMD_TOGGLE_ONION_SKIN "CmdToggleOnionSkin"
190 #define CMD_TOGGLE_TIMELINE "CmdToggleTimeline"
191 #define CMD_INCREASE_SIZE "CmdIncreaseSize"
192 #define CMD_DECREASE_SIZE "CmdDecreaseSize"
193 #define CMD_EXIT "CmdExit"
194 
195 // Save / Export
196 #define LAST_PCLX_PATH          "LastFilePath"
197 
198 // Import
199 #define IMPORT_REPOSITION_TYPE      "ImportRepositionType"
200 
201 // Settings Group/Key Name
202 #define PENCIL2D "Pencil"
203 #define SHORTCUTS_GROUP             "Shortcuts"
204 #define SETTING_AUTO_SAVE           "AutoSave"
205 #define SETTING_AUTO_SAVE_NUMBER    "AutosaveNumber"
206 #define SETTING_TOOL_CURSOR         "ToolCursors"
207 #define SETTING_DOTTED_CURSOR       "DottedCursors"
208 #define SETTING_HIGH_RESOLUTION     "HighResPosition"
209 #define SETTING_BACKGROUND_STYLE    "Background"
210 #define SETTING_WINDOW_OPACITY      "WindowOpacity"
211 #define SETTING_WINDOW_GEOMETRY     "WindowGeometry"
212 #define SETTING_WINDOW_STATE        "WindowState"
213 #define SETTING_CURVE_SMOOTHING     "CurveSmoothing"
214 #define SETTING_DISPLAY_EFFECT      "RenderEffect"
215 #define SETTING_SHORT_SCRUB         "ShortScrub"
216 #define SETTING_FPS                 "Fps"
217 #define SETTING_FIELD_W             "FieldW"
218 #define SETTING_FIELD_H             "FieldH"
219 #define SETTING_FRAME_SIZE          "FrameSize"
220 #define SETTING_TIMELINE_SIZE       "TimelineSize"
221 #define SETTING_LABEL_FONT_SIZE     "LabelFontSize"
222 #define SETTING_DRAW_LABEL          "DrawLabel"
223 #define SETTING_QUICK_SIZING        "QuickSizing"
224 #define SETTING_LAYOUT_LOCK         "LayoutLock"
225 #define SETTING_ROTATION_INCREMENT  "RotationIncrement"
226 #define SETTING_ASK_FOR_PRESET      "AskForPreset"
227 #define SETTING_LOAD_MOST_RECENT    "LoadMostRecent"
228 #define SETTING_LOAD_DEFAULT_PRESET "LoadDefaultPreset"
229 #define SETTING_DEFAULT_PRESET      "DefaultPreset"
230 
231 #define SETTING_ANTIALIAS        "Antialiasing"
232 #define SETTING_SHOW_GRID        "ShowGrid"
233 #define SETTING_COUNT            "Count"
234 #define SETTING_SHADOW           "Shadow"
235 #define SETTING_PREV_ONION       "PrevOnion"
236 #define SETTING_NEXT_ONION       "NextOnion"
237 #define SETTING_MULTILAYER_ONION "MultilayerOnion"
238 #define SETTING_AXIS             "Axis"
239 #define SETTING_CAMERABORDER     "CameraBorder"
240 #define SETTING_INVISIBLE_LINES  "InvisibleLines"
241 #define SETTING_OUTLINES         "Outlines"
242 #define SETTING_ONION_BLUE       "OnionBlue"
243 #define SETTING_ONION_RED        "OnionRed"
244 
245 #define SETTING_FRAME_POOL_SIZE  "FramePoolSizeInMB"
246 #define SETTING_GRID_SIZE_W      "GridSizeW"
247 #define SETTING_GRID_SIZE_H      "GridSizeH"
248 #define SETTING_OVERLAY_CENTER   "OverlayCenter"
249 #define SETTING_OVERLAY_THIRDS   "OverlayThirds"
250 #define SETTING_OVERLAY_GOLDEN   "OverlayGolden"
251 #define SETTING_OVERLAY_SAFE     "OverlaySafe"
252 #define SETTING_TITLE_SAFE_ON    "TitleSafeOn"
253 #define SETTING_TITLE_SAFE       "TitleSafe"
254 #define SETTING_ACTION_SAFE_ON   "ActionSafeOn"
255 #define SETTING_ACTION_SAFE      "ActionSafe"
256 #define SETTING_OVERLAY_SAFE_HELPER_TEXT_ON "OverlaySafeHelperTextOn"
257 #define SETTING_TIMECODE_TEXT    "TimecodeText"
258 
259 #define SETTING_ONION_MAX_OPACITY       "OnionMaxOpacity"
260 #define SETTING_ONION_MIN_OPACITY       "OnionMinOpacity"
261 #define SETTING_ONION_PREV_FRAMES_NUM   "OnionPrevFramesNum"
262 #define SETTING_ONION_NEXT_FRAMES_NUM   "OnionNextFramesNum"
263 #define SETTING_ONION_WHILE_PLAYBACK    "OnionWhilePlayback"
264 #define SETTING_ONION_TYPE              "OnionType"
265 #define SETTING_FLIP_ROLL_MSEC          "FlipRoll"
266 #define SETTING_FLIP_ROLL_DRAWINGS      "FlipRollDrawings"
267 #define SETTING_FLIP_INBETWEEN_MSEC     "FlipInbetween"
268 #define SETTING_SOUND_SCRUB_ACTIVE      "SoundScrubActive"
269 #define SETTING_SOUND_SCRUB_MSEC        "SoundScrubMsec"
270 
271 #define SETTING_LAYER_VISIBILITY "LayerVisibility"
272 #define SETTING_LAYER_VISIBILITY_THRESHOLD "LayerVisibilityThreshold"
273 
274 #define SETTING_DRAW_ON_EMPTY_FRAME_ACTION  "DrawOnEmptyFrameAction"
275 
276 #define SETTING_LANGUAGE        "Language"
277 
278 #endif // PENCILDEF_H
279