Pencil2D Animation
Download Community News Docs Contribute
  • Overview
  • Articles
  • Code
  •  
  • Class List
  • Class Index
  • Class Hierarchy
  • Class Members
  • File List
Loading...
Searching...
No Matches
  • core_lib
  • src
  • util
pencildef.h
1/*
2
3Pencil2D - Traditional Animation Software
4Copyright (C) 2005-2007 Patrick Corrieri & Pascal Naidon
5Copyright (C) 2012-2020 Matthew Chiawen Chang
6
7This program is free software; you can redistribute it and/or
8modify it under the terms of the GNU General Public License
9as published by the Free Software Foundation; version 2 of the License.
10
11This program is distributed in the hope that it will be useful,
12but WITHOUT ANY WARRANTY; without even the implied warranty of
13MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14GNU 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
30enum ToolCategory: int
31{
32 BASETOOL = 0,
33 STROKETOOL = 1,
34 TRANSFORMTOOL = 2
35};
36
37enum ToolType : int
38{
39 INVALID_TOOL = -1,
40 PENCIL = 0,
41 ERASER,
42 SELECT,
43 MOVE,
44 HAND,
45 SMUDGE,
46 CAMERA,
47 PEN,
48 POLYLINE,
49 BUCKET,
50 EYEDROPPER,
51 BRUSH,
52 TOOL_TYPE_COUNT
53};
54
55enum class DotColorType {
56 RED,
57 BLUE,
58 GREEN,
59 BLACK,
60 WHITE
61};
62
63enum BackgroundStyle
64{
65
66};
67
68enum StabilizationLevel
69{
70 NONE,
71 SIMPLE,
72 STRONG
73};
74
75enum TimecodeTextLevel
76{
77 NOTEXT,
78 FRAMES, // FF
79 SMPTE, // HH:MM:SS:FF
80 SFF // S:FF
81};
82
83enum 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
91inline LayerVisibility& operator++(LayerVisibility& vis)
92{
93 return vis = (vis == LayerVisibility::ALL) ? LayerVisibility::CURRENTONLY : static_cast<LayerVisibility>(static_cast<int>(vis)+1);
94}
95
96inline 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
102const 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_IMAGE_PREDEFINED_SET "CmdImportImagePredefinedSet"
112#define CMD_IMPORT_MOVIE_VIDEO "CmdImportMovieVideo"
113#define CMD_IMPORT_ANIMATED_IMAGE "CmdImportAnimatedImage"
114#define CMD_IMPORT_LAYERS "CmdImportLayers"
115#define CMD_IMPORT_SOUND "CmdImportSound"
116#define CMD_IMPORT_MOVIE_AUDIO "CmdImportMovieAudio"
117#define CMD_IMPORT_PALETTE "CmdImportPalette"
118#define CMD_IMPORT_PALETTE_REPLACE "CmdImportPaletteReplace"
119#define CMD_EXPORT_IMAGE_SEQ "CmdExportImageSequence"
120#define CMD_EXPORT_IMAGE "CmdExportImage"
121#define CMD_EXPORT_MOVIE "CmdExportMovie"
122#define CMD_EXPORT_GIF "CmdExportGIF"
123#define CMD_EXPORT_PALETTE "CmdExportPalette"
124#define CMD_UNDO "CmdUndo"
125#define CMD_REDO "CmdRedo"
126#define CMD_CUT "CmdCut"
127#define CMD_COPY "CmdCopy"
128#define CMD_PASTE "CmdPaste"
129#define CMD_PASTE_FROM_PREVIOUS "CmdPasteFromPrevious"
130#define CMD_SELECT_ALL "CmdSelectAll"
131#define CMD_DESELECT_ALL "CmdDeselectAll"
132#define CMD_CLEAR_FRAME "CmdClearFrame"
133#define CMD_PEGBAR_ALIGNMENT "CmdPegBarAlignment"
134#define CMD_PREFERENCE "CmdPreferences"
135#define CMD_RESET_WINDOWS "CmdResetWindows"
136#define CMD_LOCK_WINDOWS "CmdLockWindows"
137#define CMD_ZOOM_IN "CmdZoomIn"
138#define CMD_ZOOM_OUT "CmdZoomOut"
139#define CMD_ROTATE_CLOCK "CmdRotateClockwise"
140#define CMD_ROTATE_ANTI_CLOCK "CmdRotateAntiClockwise"
141#define CMD_RESET_ROTATION "CmdResetRotation"
142#define CMD_RESET_ZOOM_ROTATE "CmdResetZoomRotate"
143#define CMD_CENTER_VIEW "CmdCenterView"
144#define CMD_ZOOM_400 "CmdZoom400"
145#define CMD_ZOOM_300 "CmdZoom300"
146#define CMD_ZOOM_200 "CmdZoom200"
147#define CMD_ZOOM_100 "CmdZoom100"
148#define CMD_ZOOM_50 "CmdZoom50"
149#define CMD_ZOOM_33 "CmdZoom33"
150#define CMD_ZOOM_25 "CmdZoom25"
151#define CMD_FLIP_HORIZONTAL "CmdFlipHorizontal"
152#define CMD_FLIP_VERTICAL "CmdFlipVertical"
153#define CMD_GRID "CmdGrid"
154#define CMD_OVERLAY_CENTER "CmdOverlayCenter"
155#define CMD_OVERLAY_THIRDS "CmdOverlayThirds"
156#define CMD_OVERLAY_GOLDEN_RATIO "CmdOverlayGoldenRatio"
157#define CMD_OVERLAY_SAFE_AREAS "CmdOverlaySafeAreas"
158#define CMD_OVERLAY_ONE_POINT_PERSPECTIVE "CmdOverlayOnePointPerspective"
159#define CMD_OVERLAY_TWO_POINT_PERSPECTIVE "CmdOverlayTwoPointPerspective"
160#define CMD_OVERLAY_THREE_POINT_PERSPECTIVE "CmdOverlayThreePointPerspective"
161#define CMD_ONIONSKIN_PREV "CmdOnionSkinPrevious"
162#define CMD_ONIONSKIN_NEXT "CmdOnionSkinNext"
163#define CMD_TOGGLE_STATUS_BAR "CmdToggleStatusBar"
164#define CMD_PLAY "CmdPlay"
165#define CMD_LOOP "CmdLoop"
166#define CMD_LOOP_CONTROL "CmdLoopControl"
167#define CMD_FLIP_INBETWEEN "CmdFlipInBetween"
168#define CMD_FLIP_ROLLING "CmdFlipRolling"
169#define CMD_GOTO_NEXT_FRAME "CmdGotoNextFrame"
170#define CMD_GOTO_PREV_FRAME "CmdGotoPreviousFrame"
171#define CMD_GOTO_NEXT_KEY_FRAME "CmdGotoNextKeyFrame"
172#define CMD_GOTO_PREV_KEY_FRAME "CmdGotoPreviousKeyFrame"
173#define CMD_ADD_FRAME "CmdAddFrame"
174#define CMD_DUPLICATE_FRAME "CmdDuplicateFrame"
175#define CMD_REMOVE_FRAME "CmdRemoveFrame"
176#define CMD_REVERSE_SELECTED_FRAMES "CmdReverseSelectedFrames"
177#define CMD_REMOVE_SELECTED_FRAMES "CmdRemoveSelectedFrames"
178#define CMD_SELECTION_REPOSITION_FRAMES "CmdSelectionRepositionFrames"
179#define CMD_SELECTION_ADD_FRAME_EXPOSURE "CmdSelectionAddFrameExposure"
180#define CMD_SELECTION_SUBTRACT_FRAME_EXPOSURE "CmdSelectionSubtractFrameExposure"
181#define CMD_SELECTION_FLIP_HORIZONTAL "CmdSelectionFlipHorizontal"
182#define CMD_SELECTION_FLIP_VERTICAL "CmdSelectionFlipVertical"
183#define CMD_MOVE_FRAME_BACKWARD "CmdMoveFrameBackward"
184#define CMD_MOVE_FRAME_FORWARD "CmdMoveFrameForward"
185#define CMD_TOOL_MOVE "CmdToolMove"
186#define CMD_TOOL_SELECT "CmdToolSelect"
187#define CMD_TOOL_BRUSH "CmdToolBrush"
188#define CMD_TOOL_POLYLINE "CmdToolPolyline"
189#define CMD_TOOL_SMUDGE "CmdToolSmudge"
190#define CMD_TOOL_PEN "CmdToolPen"
191#define CMD_TOOL_HAND "CmdToolHand"
192#define CMD_TOOL_PENCIL "CmdToolPencil"
193#define CMD_TOOL_BUCKET "CmdToolBucket"
194#define CMD_TOOL_EYEDROPPER "CmdToolEyedropper"
195#define CMD_TOOL_ERASER "CmdToolEraser"
196#define CMD_RESET_ALL_TOOLS "CmdResetAllTools"
197#define CMD_NEW_BITMAP_LAYER "CmdNewBitmapLayer"
198#define CMD_NEW_VECTOR_LAYER "CmdNewVectorLayer"
199#define CMD_NEW_SOUND_LAYER "CmdNewSoundLayer"
200#define CMD_NEW_CAMERA_LAYER "CmdNewCameraLayer"
201#define CMD_DELETE_CUR_LAYER "CmdDeleteCurrentLayer"
202#define CMD_CHANGE_LINE_COLOR_KEYFRAME "CmdChangeLineColorKeyframe"
203#define CMD_CHANGE_LINE_COLOR_LAYER "CmdChangeLineColorLayer"
204#define CMD_CHANGE_LAYER_OPACITY "CmdChangeLayerOpacity"
205#define CMD_CURRENT_LAYER_VISIBILITY "CmdLayerVisibilityCurrentOnly"
206#define CMD_RELATIVE_LAYER_VISIBILITY "CmdLayerVisibilityRelative"
207#define CMD_ALL_LAYER_VISIBILITY "CmdLayerVisibilityAll"
208#define CMD_HELP "CmdHelp"
209#define CMD_TOGGLE_TOOLBOX "CmdToggleToolBox"
210#define CMD_TOGGLE_TOOL_OPTIONS "CmdToggleToolOptions"
211#define CMD_TOGGLE_COLOR_WHEEL "CmdToggleColorWheel"
212#define CMD_TOGGLE_COLOR_INSPECTOR "CmdToggleColorInspector"
213#define CMD_TOGGLE_COLOR_LIBRARY "CmdToggleColorLibrary"
214#define CMD_TOGGLE_ONION_SKIN "CmdToggleOnionSkin"
215#define CMD_TOGGLE_TIMELINE "CmdToggleTimeline"
216#define CMD_INCREASE_SIZE "CmdIncreaseSize"
217#define CMD_DECREASE_SIZE "CmdDecreaseSize"
218#define CMD_EXIT "CmdExit"
219
220// Save / Export
221#define LAST_PCLX_PATH "LastFilePath"
222
223// Import
224#define IMPORT_REPOSITION_TYPE "ImportRepositionType"
225
226// Settings Group/Key Name
227#define PENCIL2D "Pencil"
228#define SHORTCUTS_GROUP "Shortcuts"
229#define SETTING_AUTO_SAVE "AutoSave"
230#define SETTING_AUTO_SAVE_NUMBER "AutosaveNumber"
231#define SETTING_TOOL_CURSOR "ToolCursors"
232#define SETTING_CANVAS_CURSOR "DottedCursors"
233#define SETTING_HIGH_RESOLUTION "HighResPosition"
234#define SETTING_BACKGROUND_STYLE "Background"
235#define SETTING_WINDOW_OPACITY "WindowOpacity"
236#define SETTING_WINDOW_GEOMETRY "WindowGeometry"
237#define SETTING_WINDOW_STATE "WindowState"
238#define SETTING_SHOW_STATUS_BAR "ShowStatusBar"
239#define SETTING_CURVE_SMOOTHING "CurveSmoothing"
240#define SETTING_DISPLAY_EFFECT "RenderEffect"
241#define SETTING_SHORT_SCRUB "ShortScrub"
242#define SETTING_FPS "Fps"
243#define SETTING_FIELD_W "FieldW"
244#define SETTING_FIELD_H "FieldH"
245#define SETTING_FRAME_SIZE "FrameSize"
246#define SETTING_TIMELINE_SIZE "TimelineSize"
247#define SETTING_LABEL_FONT_SIZE "LabelFontSize"
248#define SETTING_DRAW_LABEL "DrawLabel"
249#define SETTING_QUICK_SIZING "QuickSizing"
250#define SETTING_LAYOUT_LOCK "LayoutLock"
251#define SETTING_ROTATION_INCREMENT "RotationIncrement"
252#define SETTING_SHOW_SELECTION_INFO "ShowSelectionInfo"
253#define SETTING_ASK_FOR_PRESET "AskForPreset"
254#define SETTING_LOAD_MOST_RECENT "LoadMostRecent"
255#define SETTING_LOAD_DEFAULT_PRESET "LoadDefaultPreset"
256#define SETTING_DEFAULT_PRESET "DefaultPreset"
257
258#define SETTING_INVERT_DRAG_ZOOM_DIRECTION "InvertDragZoomDirection"
259#define SETTING_INVERT_SCROLL_ZOOM_DIRECTION "InvertScrollZoomDirection"
260
261#define SETTING_ANTIALIAS "Antialiasing"
262#define SETTING_SHOW_GRID "ShowGrid"
263#define SETTING_COUNT "Count"
264#define SETTING_SHADOW "Shadow"
265#define SETTING_PREV_ONION "PrevOnion"
266#define SETTING_NEXT_ONION "NextOnion"
267#define SETTING_MULTILAYER_ONION "MultilayerOnion"
268#define SETTING_AXIS "Axis"
269#define SETTING_CAMERABORDER "CameraBorder"
270#define SETTING_INVISIBLE_LINES "InvisibleLines"
271#define SETTING_OUTLINES "Outlines"
272#define SETTING_ONION_BLUE "OnionBlue"
273#define SETTING_ONION_RED "OnionRed"
274
275#define SETTING_FRAME_POOL_SIZE "FramePoolSizeInMB"
276#define SETTING_GRID_SIZE_W "GridSizeW"
277#define SETTING_GRID_SIZE_H "GridSizeH"
278#define SETTING_OVERLAY_CENTER "OverlayCenter"
279#define SETTING_OVERLAY_THIRDS "OverlayThirds"
280#define SETTING_OVERLAY_GOLDEN "OverlayGolden"
281#define SETTING_OVERLAY_SAFE "OverlaySafe"
282#define SETTING_OVERLAY_PERSPECTIVE1 "OverlayPerspective1"
283#define SETTING_OVERLAY_PERSPECTIVE2 "OverlayPerspective2"
284#define SETTING_OVERLAY_PERSPECTIVE3 "OverlayPerspective3"
285#define SETTING_OVERLAY_ANGLE "OverlayAngle"
286#define SETTING_TITLE_SAFE_ON "TitleSafeOn"
287#define SETTING_TITLE_SAFE "TitleSafe"
288#define SETTING_ACTION_SAFE_ON "ActionSafeOn"
289#define SETTING_ACTION_SAFE "ActionSafe"
290#define SETTING_OVERLAY_SAFE_HELPER_TEXT_ON "OverlaySafeHelperTextOn"
291#define SETTING_TIMECODE_TEXT "TimecodeText"
292
293#define SETTING_ONION_MAX_OPACITY "OnionMaxOpacity"
294#define SETTING_ONION_MIN_OPACITY "OnionMinOpacity"
295#define SETTING_ONION_PREV_FRAMES_NUM "OnionPrevFramesNum"
296#define SETTING_ONION_NEXT_FRAMES_NUM "OnionNextFramesNum"
297#define SETTING_ONION_WHILE_PLAYBACK "OnionWhilePlayback"
298#define SETTING_ONION_TYPE "OnionType"
299#define SETTING_FLIP_ROLL_MSEC "FlipRoll"
300#define SETTING_FLIP_ROLL_DRAWINGS "FlipRollDrawings"
301#define SETTING_FLIP_INBETWEEN_MSEC "FlipInbetween"
302#define SETTING_SOUND_SCRUB_ACTIVE "SoundScrubActive"
303#define SETTING_SOUND_SCRUB_MSEC "SoundScrubMsec"
304#define SETTING_NEW_UNDO_REDO_ON "NewUndoRedoOn"
305#define SETTING_UNDO_REDO_MAX_STEPS "UndoRedoMaxSteps"
306
307#define SETTING_LAYER_VISIBILITY "LayerVisibility"
308#define SETTING_LAYER_VISIBILITY_THRESHOLD "LayerVisibilityThreshold"
309
310#define SETTING_DRAW_ON_EMPTY_FRAME_ACTION "DrawOnEmptyFrameAction"
311
312#define SETTING_LANGUAGE "Language"
313
314#endif // PENCILDEF_H
Generated on Wed Dec 24 2025 23:46:02 for Pencil2D by doxygen 1.9.6 based on revision 1be63043db1f7fc0545528fc3b6d5098a552755b