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 ToolType : int
31{
32 INVALID_TOOL = -1,
33 PENCIL = 0,
34 ERASER,
35 SELECT,
36 MOVE,
37 HAND,
38 SMUDGE,
39 CAMERA,
40 PEN,
41 POLYLINE,
42 BUCKET,
43 EYEDROPPER,
44 BRUSH,
45 TOOL_TYPE_COUNT
46};
47
48enum ToolPropertyType
49{
50 WIDTH,
51 FEATHER,
52 PRESSURE,
53 INVISIBILITY,
54 PRESERVEALPHA,
55 BEZIER,
56 CLOSEDPATH,
57 USEFEATHER,
58 VECTORMERGE,
59 ANTI_ALIASING,
60 FILL_MODE,
61 STABILIZATION,
62 TOLERANCE,
63 FILLCONTOUR,
64 SHOWSELECTIONINFO,
65 USETOLERANCE,
66 BUCKETFILLEXPAND,
67 USEBUCKETFILLEXPAND,
68 BUCKETFILLLAYERREFERENCEMODE,
69 CAMERAPATH,
70};
71
72enum class DotColorType {
73 RED,
74 BLUE,
75 GREEN,
76 BLACK,
77 WHITE
78};
79
80enum BackgroundStyle
81{
82
83};
84
85enum StabilizationLevel
86{
87 NONE,
88 SIMPLE,
89 STRONG
90};
91
92enum TimecodeTextLevel
93{
94 NOTEXT,
95 FRAMES, // FF
96 SMPTE, // HH:MM:SS:FF
97 SFF // S:FF
98};
99
100enum class LayerVisibility
101{
102 CURRENTONLY = 0,
103 RELATED = 1,
104 ALL = 2,
105 // If you are adding new enum values here, be sure to update the ++/-- operators below
106};
107
108inline LayerVisibility& operator++(LayerVisibility& vis)
109{
110 return vis = (vis == LayerVisibility::ALL) ? LayerVisibility::CURRENTONLY : static_cast<LayerVisibility>(static_cast<int>(vis)+1);
111}
112
113inline LayerVisibility& operator--(LayerVisibility& vis)
114{
115 return vis = (vis == LayerVisibility::CURRENTONLY) ? LayerVisibility::ALL : static_cast<LayerVisibility>(static_cast<int>(vis)-1);
116}
117
118// Max frames that can be imported and loaded onto the timeline
119const static int MaxFramesBound = 9999;
120
121// shortcuts command code
122#define CMD_NEW_FILE "CmdNewFile"
123#define CMD_OPEN_FILE "CmdOpenFile"
124#define CMD_SAVE_FILE "CmdSaveFile"
125#define CMD_SAVE_AS "CmdSaveAs"
126#define CMD_IMPORT_IMAGE "CmdImportImage"
127#define CMD_IMPORT_IMAGE_SEQ "CmdImportImageSequence"
128#define CMD_IMPORT_IMAGE_PREDEFINED_SET "CmdImportImagePredefinedSet"
129#define CMD_IMPORT_MOVIE_VIDEO "CmdImportMovieVideo"
130#define CMD_IMPORT_ANIMATED_IMAGE "CmdImportAnimatedImage"
131#define CMD_IMPORT_LAYERS "CmdImportLayers"
132#define CMD_IMPORT_SOUND "CmdImportSound"
133#define CMD_IMPORT_MOVIE_AUDIO "CmdImportMovieAudio"
134#define CMD_IMPORT_PALETTE "CmdImportPalette"
135#define CMD_IMPORT_PALETTE_REPLACE "CmdImportPaletteReplace"
136#define CMD_EXPORT_IMAGE_SEQ "CmdExportImageSequence"
137#define CMD_EXPORT_IMAGE "CmdExportImage"
138#define CMD_EXPORT_MOVIE "CmdExportMovie"
139#define CMD_EXPORT_GIF "CmdExportGIF"
140#define CMD_EXPORT_PALETTE "CmdExportPalette"
141#define CMD_UNDO "CmdUndo"
142#define CMD_REDO "CmdRedo"
143#define CMD_CUT "CmdCut"
144#define CMD_COPY "CmdCopy"
145#define CMD_PASTE "CmdPaste"
146#define CMD_PASTE_FROM_PREVIOUS "CmdPasteFromPrevious"
147#define CMD_SELECT_ALL "CmdSelectAll"
148#define CMD_DESELECT_ALL "CmdDeselectAll"
149#define CMD_CLEAR_FRAME "CmdClearFrame"
150#define CMD_PEGBAR_ALIGNMENT "CmdPegBarAlignment"
151#define CMD_PREFERENCE "CmdPreferences"
152#define CMD_RESET_WINDOWS "CmdResetWindows"
153#define CMD_LOCK_WINDOWS "CmdLockWindows"
154#define CMD_ZOOM_IN "CmdZoomIn"
155#define CMD_ZOOM_OUT "CmdZoomOut"
156#define CMD_ROTATE_CLOCK "CmdRotateClockwise"
157#define CMD_ROTATE_ANTI_CLOCK "CmdRotateAntiClockwise"
158#define CMD_RESET_ROTATION "CmdResetRotation"
159#define CMD_RESET_ZOOM_ROTATE "CmdResetZoomRotate"
160#define CMD_CENTER_VIEW "CmdCenterView"
161#define CMD_ZOOM_400 "CmdZoom400"
162#define CMD_ZOOM_300 "CmdZoom300"
163#define CMD_ZOOM_200 "CmdZoom200"
164#define CMD_ZOOM_100 "CmdZoom100"
165#define CMD_ZOOM_50 "CmdZoom50"
166#define CMD_ZOOM_33 "CmdZoom33"
167#define CMD_ZOOM_25 "CmdZoom25"
168#define CMD_FLIP_HORIZONTAL "CmdFlipHorizontal"
169#define CMD_FLIP_VERTICAL "CmdFlipVertical"
170#define CMD_GRID "CmdGrid"
171#define CMD_OVERLAY_CENTER "CmdOverlayCenter"
172#define CMD_OVERLAY_THIRDS "CmdOverlayThirds"
173#define CMD_OVERLAY_GOLDEN_RATIO "CmdOverlayGoldenRatio"
174#define CMD_OVERLAY_SAFE_AREAS "CmdOverlaySafeAreas"
175#define CMD_OVERLAY_ONE_POINT_PERSPECTIVE "CmdOverlayOnePointPerspective"
176#define CMD_OVERLAY_TWO_POINT_PERSPECTIVE "CmdOverlayTwoPointPerspective"
177#define CMD_OVERLAY_THREE_POINT_PERSPECTIVE "CmdOverlayThreePointPerspective"
178#define CMD_ONIONSKIN_PREV "CmdOnionSkinPrevious"
179#define CMD_ONIONSKIN_NEXT "CmdOnionSkinNext"
180#define CMD_TOGGLE_STATUS_BAR "CmdToggleStatusBar"
181#define CMD_PLAY "CmdPlay"
182#define CMD_LOOP "CmdLoop"
183#define CMD_LOOP_CONTROL "CmdLoopControl"
184#define CMD_FLIP_INBETWEEN "CmdFlipInBetween"
185#define CMD_FLIP_ROLLING "CmdFlipRolling"
186#define CMD_GOTO_NEXT_FRAME "CmdGotoNextFrame"
187#define CMD_GOTO_PREV_FRAME "CmdGotoPreviousFrame"
188#define CMD_GOTO_NEXT_KEY_FRAME "CmdGotoNextKeyFrame"
189#define CMD_GOTO_PREV_KEY_FRAME "CmdGotoPreviousKeyFrame"
190#define CMD_ADD_FRAME "CmdAddFrame"
191#define CMD_DUPLICATE_FRAME "CmdDuplicateFrame"
192#define CMD_REMOVE_FRAME "CmdRemoveFrame"
193#define CMD_REVERSE_SELECTED_FRAMES "CmdReverseSelectedFrames"
194#define CMD_REMOVE_SELECTED_FRAMES "CmdRemoveSelectedFrames"
195#define CMD_SELECTION_REPOSITION_FRAMES "CmdSelectionRepositionFrames"
196#define CMD_SELECTION_ADD_FRAME_EXPOSURE "CmdSelectionAddFrameExposure"
197#define CMD_SELECTION_SUBTRACT_FRAME_EXPOSURE "CmdSelectionSubtractFrameExposure"
198#define CMD_SELECTION_FLIP_HORIZONTAL "CmdSelectionFlipHorizontal"
199#define CMD_SELECTION_FLIP_VERTICAL "CmdSelectionFlipVertical"
200#define CMD_MOVE_FRAME_BACKWARD "CmdMoveFrameBackward"
201#define CMD_MOVE_FRAME_FORWARD "CmdMoveFrameForward"
202#define CMD_TOOL_MOVE "CmdToolMove"
203#define CMD_TOOL_SELECT "CmdToolSelect"
204#define CMD_TOOL_BRUSH "CmdToolBrush"
205#define CMD_TOOL_POLYLINE "CmdToolPolyline"
206#define CMD_TOOL_SMUDGE "CmdToolSmudge"
207#define CMD_TOOL_PEN "CmdToolPen"
208#define CMD_TOOL_HAND "CmdToolHand"
209#define CMD_TOOL_PENCIL "CmdToolPencil"
210#define CMD_TOOL_BUCKET "CmdToolBucket"
211#define CMD_TOOL_EYEDROPPER "CmdToolEyedropper"
212#define CMD_TOOL_ERASER "CmdToolEraser"
213#define CMD_RESET_ALL_TOOLS "CmdResetAllTools"
214#define CMD_NEW_BITMAP_LAYER "CmdNewBitmapLayer"
215#define CMD_NEW_VECTOR_LAYER "CmdNewVectorLayer"
216#define CMD_NEW_SOUND_LAYER "CmdNewSoundLayer"
217#define CMD_NEW_CAMERA_LAYER "CmdNewCameraLayer"
218#define CMD_DELETE_CUR_LAYER "CmdDeleteCurrentLayer"
219#define CMD_CHANGE_LINE_COLOR_KEYFRAME "CmdChangeLineColorKeyframe"
220#define CMD_CHANGE_LINE_COLOR_LAYER "CmdChangeLineColorLayer"
221#define CMD_CHANGE_LAYER_OPACITY "CmdChangeLayerOpacity"
222#define CMD_CURRENT_LAYER_VISIBILITY "CmdLayerVisibilityCurrentOnly"
223#define CMD_RELATIVE_LAYER_VISIBILITY "CmdLayerVisibilityRelative"
224#define CMD_ALL_LAYER_VISIBILITY "CmdLayerVisibilityAll"
225#define CMD_HELP "CmdHelp"
226#define CMD_TOGGLE_TOOLBOX "CmdToggleToolBox"
227#define CMD_TOGGLE_TOOL_OPTIONS "CmdToggleToolOptions"
228#define CMD_TOGGLE_COLOR_WHEEL "CmdToggleColorWheel"
229#define CMD_TOGGLE_COLOR_INSPECTOR "CmdToggleColorInspector"
230#define CMD_TOGGLE_COLOR_LIBRARY "CmdToggleColorLibrary"
231#define CMD_TOGGLE_ONION_SKIN "CmdToggleOnionSkin"
232#define CMD_TOGGLE_TIMELINE "CmdToggleTimeline"
233#define CMD_INCREASE_SIZE "CmdIncreaseSize"
234#define CMD_DECREASE_SIZE "CmdDecreaseSize"
235#define CMD_EXIT "CmdExit"
236
237// Save / Export
238#define LAST_PCLX_PATH "LastFilePath"
239
240// Import
241#define IMPORT_REPOSITION_TYPE "ImportRepositionType"
242
243// Settings Group/Key Name
244#define PENCIL2D "Pencil"
245#define SHORTCUTS_GROUP "Shortcuts"
246#define SETTING_AUTO_SAVE "AutoSave"
247#define SETTING_AUTO_SAVE_NUMBER "AutosaveNumber"
248#define SETTING_TOOL_CURSOR "ToolCursors"
249#define SETTING_CANVAS_CURSOR "DottedCursors"
250#define SETTING_HIGH_RESOLUTION "HighResPosition"
251#define SETTING_BACKGROUND_STYLE "Background"
252#define SETTING_WINDOW_OPACITY "WindowOpacity"
253#define SETTING_WINDOW_GEOMETRY "WindowGeometry"
254#define SETTING_WINDOW_STATE "WindowState"
255#define SETTING_SHOW_STATUS_BAR "ShowStatusBar"
256#define SETTING_CURVE_SMOOTHING "CurveSmoothing"
257#define SETTING_DISPLAY_EFFECT "RenderEffect"
258#define SETTING_SHORT_SCRUB "ShortScrub"
259#define SETTING_FPS "Fps"
260#define SETTING_FIELD_W "FieldW"
261#define SETTING_FIELD_H "FieldH"
262#define SETTING_FRAME_SIZE "FrameSize"
263#define SETTING_TIMELINE_SIZE "TimelineSize"
264#define SETTING_LABEL_FONT_SIZE "LabelFontSize"
265#define SETTING_DRAW_LABEL "DrawLabel"
266#define SETTING_QUICK_SIZING "QuickSizing"
267#define SETTING_LAYOUT_LOCK "LayoutLock"
268#define SETTING_ROTATION_INCREMENT "RotationIncrement"
269#define SETTING_SHOW_SELECTION_INFO "ShowSelectionInfo"
270#define SETTING_ASK_FOR_PRESET "AskForPreset"
271#define SETTING_LOAD_MOST_RECENT "LoadMostRecent"
272#define SETTING_LOAD_DEFAULT_PRESET "LoadDefaultPreset"
273#define SETTING_DEFAULT_PRESET "DefaultPreset"
274
275#define SETTING_INVERT_DRAG_ZOOM_DIRECTION "InvertDragZoomDirection"
276#define SETTING_INVERT_SCROLL_ZOOM_DIRECTION "InvertScrollZoomDirection"
277
278#define SETTING_ANTIALIAS "Antialiasing"
279#define SETTING_SHOW_GRID "ShowGrid"
280#define SETTING_COUNT "Count"
281#define SETTING_SHADOW "Shadow"
282#define SETTING_PREV_ONION "PrevOnion"
283#define SETTING_NEXT_ONION "NextOnion"
284#define SETTING_MULTILAYER_ONION "MultilayerOnion"
285#define SETTING_AXIS "Axis"
286#define SETTING_CAMERABORDER "CameraBorder"
287#define SETTING_INVISIBLE_LINES "InvisibleLines"
288#define SETTING_OUTLINES "Outlines"
289#define SETTING_ONION_BLUE "OnionBlue"
290#define SETTING_ONION_RED "OnionRed"
291
292#define SETTING_FRAME_POOL_SIZE "FramePoolSizeInMB"
293#define SETTING_GRID_SIZE_W "GridSizeW"
294#define SETTING_GRID_SIZE_H "GridSizeH"
295#define SETTING_OVERLAY_CENTER "OverlayCenter"
296#define SETTING_OVERLAY_THIRDS "OverlayThirds"
297#define SETTING_OVERLAY_GOLDEN "OverlayGolden"
298#define SETTING_OVERLAY_SAFE "OverlaySafe"
299#define SETTING_OVERLAY_PERSPECTIVE1 "OverlayPerspective1"
300#define SETTING_OVERLAY_PERSPECTIVE2 "OverlayPerspective2"
301#define SETTING_OVERLAY_PERSPECTIVE3 "OverlayPerspective3"
302#define SETTING_OVERLAY_ANGLE "OverlayAngle"
303#define SETTING_TITLE_SAFE_ON "TitleSafeOn"
304#define SETTING_TITLE_SAFE "TitleSafe"
305#define SETTING_ACTION_SAFE_ON "ActionSafeOn"
306#define SETTING_ACTION_SAFE "ActionSafe"
307#define SETTING_OVERLAY_SAFE_HELPER_TEXT_ON "OverlaySafeHelperTextOn"
308#define SETTING_TIMECODE_TEXT "TimecodeText"
309
310#define SETTING_ONION_MAX_OPACITY "OnionMaxOpacity"
311#define SETTING_ONION_MIN_OPACITY "OnionMinOpacity"
312#define SETTING_ONION_PREV_FRAMES_NUM "OnionPrevFramesNum"
313#define SETTING_ONION_NEXT_FRAMES_NUM "OnionNextFramesNum"
314#define SETTING_ONION_WHILE_PLAYBACK "OnionWhilePlayback"
315#define SETTING_ONION_TYPE "OnionType"
316#define SETTING_FLIP_ROLL_MSEC "FlipRoll"
317#define SETTING_FLIP_ROLL_DRAWINGS "FlipRollDrawings"
318#define SETTING_FLIP_INBETWEEN_MSEC "FlipInbetween"
319#define SETTING_SOUND_SCRUB_ACTIVE "SoundScrubActive"
320#define SETTING_SOUND_SCRUB_MSEC "SoundScrubMsec"
321#define SETTING_NEW_UNDO_REDO_ON "NewUndoRedoOn"
322#define SETTING_UNDO_REDO_MAX_STEPS "UndoRedoMaxSteps"
323
324#define SETTING_BUCKET_TOLERANCE "Tolerance"
325#define SETTING_BUCKET_TOLERANCE_ON "BucketToleranceEnabled"
326#define SETTING_BUCKET_FILL_EXPAND "BucketFillExpand"
327#define SETTING_BUCKET_FILL_EXPAND_ON "BucketFillExpandEnabled"
328#define SETTING_BUCKET_FILL_REFERENCE_MODE "BucketFillReferenceMode"
329
330#define SETTING_FILL_MODE "FillMode"
331
332#define SETTING_LAYER_VISIBILITY "LayerVisibility"
333#define SETTING_LAYER_VISIBILITY_THRESHOLD "LayerVisibilityThreshold"
334
335#define SETTING_DRAW_ON_EMPTY_FRAME_ACTION "DrawOnEmptyFrameAction"
336
337#define SETTING_LANGUAGE "Language"
338
339#endif // PENCILDEF_H
Generated on Thu May 8 2025 04:47:53 for Pencil2D by doxygen 1.9.6 based on revision 4513250b1d5b1a3676ec0e67b06b7a885ceaae39