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