1 /* vim:expandtab:ts=2 sw=2: 2 */ 3 /* Grafx2 - The Ultimate 256-color bitmap paint program 4 5 Copyright owned by various GrafX2 authors, see COPYRIGHT.txt for details. 6 7 Grafx2 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 10 of the License. 11 12 Grafx2 is distributed in the hope that it will be useful, 13 but WITHOUT ANY WARRANTY; without even the implied warranty of 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 GNU General Public License for more details. 16 17 You should have received a copy of the GNU General Public License 18 along with Grafx2; if not, see <http://www.gnu.org/licenses/> 19 */ 20 21 ////////////////////////////////////////////////////////////////////////////// 22 ///@file const.h 23 /// Constants (preprocessor defines) and enumerations used anywhere. 24 ////////////////////////////////////////////////////////////////////////////// 25 26 #ifndef _CONST_H_ 27 #define _CONST_H_ 28 29 #ifndef M_2PI 30 #define M_2PI 6.28318530717958647692528676656 ///< Hmm, pie... 31 #endif 32 33 #define VERSION1 2 ///< Version number for gfx2.cfg (1/4) 34 #define VERSION2 0 ///< Version number for gfx2.cfg (2/4) 35 #define BETA1 98 ///< Version number for gfx2.cfg (3/4) 36 #define BETA2 0 ///< Version number for gfx2.cfg (4/4) 37 #define MAX_VIDEO_MODES 200 ///< Maximum number of video modes Grafx2 can propose. 38 #define NB_ZOOM_FACTORS 15 ///< Number of zoom levels available in the magnifier. 39 #define MENU_WIDTH 254 ///< Width of the menu (not counting the palette) 40 #define MENU_HEIGHT 44 ///< Height of the menu. 41 #define NB_CURSOR_SPRITES 9 ///< Number of available mouse cursor sprites. 42 #define CURSOR_SPRITE_WIDTH 16 ///< Width of a mouse cursor sprite. 43 #define CURSOR_SPRITE_HEIGHT 16 ///< Height of a mouse cursor sprite. 44 #define MENU_SPRITE_WIDTH 16 ///< Width of a menu sprite in pixels 45 #define MENU_SPRITE_HEIGHT 16 ///< Height of a menu sprite in pixels 46 #define EFFECT_SPRITE_WIDTH 14 ///< Width of an effect sprite in pixels 47 #define EFFECT_SPRITE_HEIGHT 14 ///< Height of an effect sprite in pixels 48 #define LAYER_SPRITE_WIDTH 14 ///< Width of a layer button in pixels 49 #define LAYER_SPRITE_HEIGHT 10 ///< Height of a layer button in pixels 50 #define PAINTBRUSH_WIDTH 16 ///< Width of a preset paintbrush sprite 51 #define PAINTBRUSH_HEIGHT 16 ///< Height of a preset paintbrush sprite 52 #define MAX_PAINTBRUSH_SIZE 127 ///< Max size for a resizable paintbrush 53 #define ICON_SPRITE_WIDTH 8 ///< Width of an icon in pixels 54 #define ICON_SPRITE_HEIGHT 8 ///< Height of an icon in pixels 55 #define NB_PAINTBRUSH_SPRITES 48 ///< Number of preset paintbrushes 56 #define NB_PRESET_SIEVE 12 ///< Number of preset sieve patterns 57 #define OPERATION_STACK_SIZE 16 ///< Max number of parameters in the operation stack. 58 #define MAX_DISPLAYABLE_PATH 37 ///< Max number of characters to display directory name, in Save/Load screens. 59 #define COMMENT_SIZE 32 ///< Max number of characters for a comment in PKM or PNG file. 60 #define NB_MAX_PAGES_UNDO 99 ///< Max number of undo pages 61 #define DEFAULT_ZOOM_FACTOR 4 ///< Initial zoom factor for the magnifier. 62 #define MAX_PATH_CHARACTERS PATH_MAX ///< Number of characters for a file+complete path. Adapt to your OS... 63 #define NB_BOOKMARKS 4 ///< Number of bookmark buttons in Save/Load screen. 64 // Character to show a right arrow, used when editing long strings. It's present in ::Gfx->System_font 65 #define RIGHT_TRIANGLE_CHARACTER 16 66 // Character to show a left arrow, used when editing long strings. It's present in ::Gfx->System_font 67 #define LEFT_TRIANGLE_CHARACTER 17 68 /// Character to display in menus for an ellipsis. 69 #define ELLIPSIS_CHARACTER '\x85' // 3 dots : … / HTML entity : … 70 #define NB_LAYERS 1 ///< Initial number of layers for a new image 71 #define MAX_NB_FRAMES 999 ///< Maximum number of frames that can be used in a grafx2 animation. 72 #define MAX_NB_LAYERS 16 ///< Maximum number of layers that can be used in grafx2. Note that 32 is upper limit because of a few bit fields. 73 #define BRUSH_CONTAINER_PREVIEW_WIDTH 16 ///< Size for preview of a brush in Brush container 74 #define BRUSH_CONTAINER_PREVIEW_HEIGHT 16 ///< Size for preview of a brush in Brush container 75 #define BRUSH_CONTAINER_COLUMNS 4 ///< Number of columns in the Brush container 76 #define BRUSH_CONTAINER_ROWS 3 ///< Number of rows in the Brush container 77 78 /// 79 /// We force the dynamic backup page allocation to leave a minimum of 80 /// 256Kb of free memory, to allow the rest of the program to work safely. 81 /// Note: This is a remainder of the DOS version. This system might not work 82 /// so well on other OSes, where the "available memory" changes due to external 83 /// factors. 84 #define MINIMAL_MEMORY_TO_RESERVE (256*1024) 85 86 #define LEFT_SIDE 1 ///< Indicates a left side or left-click 87 #define RIGHT_SIDE 2 ///< Indicates a right side or right-click 88 89 #define SEPARATOR_WIDTH 6 ///< Width of the separator between the normal and the zoomed view 90 #define INITIAL_SEPARATOR_PROPORTION 0.3f ///< Proportion of the normal view width, relative to the whole screen width. 91 #define NB_ZOOMED_PIXELS_MIN 4 ///< Minimal number of pixel shown (in width) by the zoomed view. (Note: below 4, you can't scroll!) 92 93 #if defined(__MORPHOS__) || defined(__amigaos4__) || defined(__amigaos__) || defined(__AROS__) 94 #define PARENT_DIR "/" 95 #else 96 /// Filename that means "parent directory" for your operating system. 97 #define PARENT_DIR ".." 98 #endif 99 100 /// List of file formats recognized by grafx2 101 enum FILE_FORMATS 102 { 103 FORMAT_ALL_IMAGES=0, ///< This is not really a file format, it's reserverd for a compilation of all image file extensions 104 FORMAT_ALL_PALETTES=1, ///< This is not really a file format, it's reserverd for a compilation of all palette file extensions 105 FORMAT_ALL_FILES=2, ///< This is not really a file format, it's reserverd for the "*.*" filter option. 106 FORMAT_PNG, ///< Portable Network Graphics 107 FORMAT_GIF, ///< Graphics Interchange Format 108 FORMAT_BMP, ///< Windows or OS/2 bitmap 109 FORMAT_PCX, ///< Paintbrush 110 FORMAT_PKM, ///< GrafX2 own format (Karl Maritaud) 111 FORMAT_LBM, ///< IFF ILBM : InterLeaved BitMap 112 FORMAT_PBM, ///< IFF PBM : Packet BitMap 113 FORMAT_ACBM, ///< IFF ACBM : Amiga Contiguous BitMap 114 FORMAT_IMG, ///< from PV (c)W.Wiedmann 115 FORMAT_SCx, ///< ColoRIX 116 FORMAT_PI1, ///< Atari ST Degas 117 FORMAT_PC1, ///< Atari ST Degas Elite 118 FORMAT_CA1, ///< Atari ST CrackArt 119 FORMAT_CEL, ///< Atari ST Cyber Paint Cell 120 FORMAT_NEO, ///< Atari ST NeoChrome 121 FORMAT_TNY, ///< Atari ST Tiny Stuff 122 FORMAT_C64, ///< Several C64 formats : Koala, FLI, BML, etc. 123 FORMAT_PRG, ///< C64 autoload picture 124 FORMAT_GPX, ///< pixcen C64 format : .gpx 125 FORMAT_KCF, ///< KiSS Color File 126 FORMAT_PAL, ///< raw 6bit palette or Jasc Paint Shop Pro palette 127 FORMAT_GPL, ///< Gimp palette 128 FORMAT_SCR, ///< Amstrad CPC 129 FORMAT_CM5, ///< Amstrad CPC Mode 5 130 FORMAT_PPH, ///< Amstrad CPC Perfect Pix 131 FORMAT_GOS, ///< Amstrad Plus Graphos 132 FORMAT_SGX, ///< SymbOS graphic files 133 FORMAT_XPM, ///< X PixMap 134 FORMAT_ICO, ///< Windows icons 135 FORMAT_INFO, ///< Amiga OS icons 136 FORMAT_FLI, ///< Autodesk Animator FLI/FLC 137 FORMAT_MOTO, ///< Thomson MO/TO computers pictures 138 FORMAT_HGR, ///< Apple II HGR and DHGR 139 FORMAT_TIFF, ///< Tagged Image File Format 140 FORMAT_GRB, ///< HP-48 Grob 141 FORMAT_MSX, ///< MSX formats 142 FORMAT_MISC, ///< Must be last of enum: others formats recognized by SDL_image (or recoil) 143 FORMAT_CLIPBOARD ///< To load/save from/to Clipboard 144 }; 145 146 /// Default format for 'save as' 147 #define DEFAULT_FILEFORMAT FORMAT_GIF 148 149 /// Error codes for ::Error() 150 enum ERROR_CODES 151 { 152 ERROR_WARNING=0, ///< Red flash on screen, non-fatal error 153 ERROR_GUI_MISSING, ///< The graphics file is missing 154 ERROR_GUI_CORRUPTED, ///< The graphics file cannot be parsed for GUI elements 155 ERROR_INI_MISSING, ///< File gfx2def.ini is missing 156 ERROR_CFG_MISSING, ///< File gfx2.cfg is missing (non-fatal) 157 ERROR_CFG_CORRUPTED, ///< File gfx2.cfg couldn't be parsed (non-fatal) 158 ERROR_CFG_OLD, ///< Unknown version of gfx2.cfg : either VERY old or wrong file (non-fatal) 159 ERROR_MEMORY, ///< Out of memory 160 ERROR_COMMAND_LINE, ///< Error in command-line arguments (syntax, or couldn't find the file to open) 161 ERROR_FORBIDDEN_MODE, ///< Graphics mode requested is not supported 162 ERROR_FORBIDDEN_SIZE, ///< Image size requested is not supported 163 ERROR_SAVING_CFG, ///< Error while writing gfx2.cfg 164 ERROR_MISSING_DIRECTORY, ///< Unable to return to the original "current directory" on program exit 165 ERROR_INI_CORRUPTED, ///< File gfx2.ini couldn't be parsed 166 ERROR_SAVING_INI, ///< Error while writing gfx2.ini 167 ERROR_INIT, ///< Program initialization error 168 ERROR_SORRY_SORRY_SORRY ///< (Page allocation error that shouldn't ever happen, now) 169 }; 170 171 /// Available pixel scalers 172 enum PIXEL_RATIO 173 { 174 PIXEL_SIMPLE=0, ///< Use real pixels 175 PIXEL_WIDE, ///< Use wide pixels (2x1) like on Amstrad CPC mode 0 176 PIXEL_TALL, ///< Use tall pixels (1x2) like on Amstrad CPC mode 2 177 PIXEL_DOUBLE, ///< Use big pixels (2x2) if your LCD screen can't do lowres by itself 178 PIXEL_TRIPLE, ///< Use really big pixels (3x3) 179 PIXEL_WIDE2, ///< Use big wide pixels (4x2) 180 PIXEL_TALL2, ///< Use big tall pixels (2x4) 181 PIXEL_TALL3, ///< Use big tall pixels (3x4) 182 PIXEL_QUAD, ///< Use really giant pixels (4x4). You need to have a screen resolution at least 1280x800 to use this one 183 PIXEL_MAX ///< Number of elements in enum 184 }; 185 186 /// Different kinds of menu button behavior. 187 enum FAMILY_OF_BUTTONS 188 { 189 FAMILY_TOOL=1, ///< Drawing tools (example : Freehand draw) 190 FAMILY_INTERRUPTION, ///< Temporary operation (example : choosing paintbrush) > Interrupts the current operation to do something, then come back. 191 FAMILY_INSTANT, ///< Single-click action (example : choose a color in palette) > It will be over as soon as we exit the called function. 192 FAMILY_TOOLBAR, ///< Hide/show the menu 193 FAMILY_EFFECTS ///< Effects 194 }; 195 196 /// The different kinds of buttons in menus or windows. 197 enum BUTTON_SHAPES 198 { 199 BUTTON_SHAPE_NO_FRAME, ///< Ex: the palette 200 BUTTON_SHAPE_RECTANGLE, ///< Ex: Most buttons. 201 BUTTON_SHAPE_TRIANGLE_TOP_LEFT, ///< Ex: Empty rectangles. 202 BUTTON_SHAPE_TRIANGLE_BOTTOM_RIGHT ///< Ex: Filled rectangles. 203 }; 204 205 /// The different "mouse cursor" shapes 206 enum CURSOR_SHAPES 207 { 208 // Sprite based cursors first (also used as index in cursor sprite array) 209 CURSOR_SHAPE_ARROW, 210 CURSOR_SHAPE_TARGET, ///< This one uses the paintbrush 211 CURSOR_SHAPE_COLORPICKER, 212 CURSOR_SHAPE_HOURGLASS, 213 CURSOR_SHAPE_MULTIDIRECTIONAL, 214 CURSOR_SHAPE_HORIZONTAL, 215 CURSOR_SHAPE_THIN_TARGET, ///< This one uses the paintbrush 216 CURSOR_SHAPE_THIN_COLORPICKER, ///< This one uses the paintbrush 217 CURSOR_SHAPE_BUCKET, 218 219 // XOR/runtime-generated cursors last 220 CURSOR_SHAPE_XOR_TARGET, 221 CURSOR_SHAPE_XOR_RECTANGLE, 222 CURSOR_SHAPE_XOR_ROTATION, 223 }; 224 225 /// The different shapes that can be used as a paintbrush (paintbrush types go in the beginning) 226 enum PAINTBRUSH_SHAPES 227 { 228 PAINTBRUSH_SHAPE_ROUND, 229 PAINTBRUSH_SHAPE_SQUARE, 230 PAINTBRUSH_SHAPE_HORIZONTAL_BAR, 231 PAINTBRUSH_SHAPE_VERTICAL_BAR, 232 PAINTBRUSH_SHAPE_SLASH, 233 PAINTBRUSH_SHAPE_ANTISLASH, 234 PAINTBRUSH_SHAPE_RANDOM, ///< Random pixels in a circle shape, like an airbrush. 235 PAINTBRUSH_SHAPE_CROSS, 236 PAINTBRUSH_SHAPE_PLUS, 237 PAINTBRUSH_SHAPE_DIAMOND, 238 PAINTBRUSH_SHAPE_SIEVE_ROUND, 239 PAINTBRUSH_SHAPE_SIEVE_SQUARE, 240 PAINTBRUSH_SHAPE_RESERVED1, ///< Reserved for future use 241 PAINTBRUSH_SHAPE_RESERVED2, ///< Reserved for future use 242 PAINTBRUSH_SHAPE_RESERVED3, ///< Reserved for future use 243 PAINTBRUSH_SHAPE_RESERVED4, ///< Reserved for future use 244 PAINTBRUSH_SHAPE_RESERVED5, ///< Reserved for future use 245 PAINTBRUSH_SHAPE_RESERVED6, ///< Reserved for future use 246 PAINTBRUSH_SHAPE_RESERVED7, ///< Reserved for future use 247 PAINTBRUSH_SHAPE_RESERVED8, ///< Reserved for future use 248 PAINTBRUSH_SHAPE_MISC, ///< A raw monochrome bitmap, can't be resized. This must be the last of the preset paintbrush types. 249 PAINTBRUSH_SHAPE_POINT, ///< Used to reduce the paintbrush to a single pixel, during operations like floodfill. 250 PAINTBRUSH_SHAPE_NONE, ///< Used to display no cursor at all (colorpicker) 251 PAINTBRUSH_SHAPE_COLOR_BRUSH, ///< User's brush, in color mode 252 PAINTBRUSH_SHAPE_MONO_BRUSH, ///< User's brush, in mono mode 253 PAINTBRUSH_SHAPE_MAX ///< Upper limit. 254 }; 255 256 /// Normal resting state for a menu button. 257 #define BUTTON_RELEASED 0 258 /// State of a menu button that is being pressed. 259 #define BUTTON_PRESSED 1 260 /// State of a button temporarily highligted 261 #define BUTTON_HIGHLIGHTED 2 262 263 /// The different modes of the Shade 264 enum SHADE_MODES 265 { 266 SHADE_MODE_NORMAL, 267 SHADE_MODE_LOOP, 268 SHADE_MODE_NOSAT 269 }; 270 271 /// Identifiers for the chunks (data blocks) of gfx2.cfg 272 enum CHUNKS_CFG 273 { 274 CHUNK_KEYS = 0, ///< Shortcut keys definitions 275 CHUNK_VIDEO_MODES = 1, ///< List of video modes 276 CHUNK_SHADE = 2, ///< Shade settings 277 CHUNK_MASK = 3, ///< Mask settings 278 CHUNK_STENCIL = 4, ///< Stencil settings 279 CHUNK_GRADIENTS = 5, ///< Gradients 280 CHUNK_SMOOTH = 6, ///< Smooth effect settings 281 CHUNK_EXCLUDE_COLORS = 7, ///< List of excluded colors 282 CHUNK_QUICK_SHADE = 8, ///< QShade effect settings 283 CHUNK_GRID = 9, ///< Grid settings 284 CHUNK_BRUSH =10, ///< Paintbrushes 285 CHUNK_SCRIPTS =11, ///< Callable scripts 286 CHUNK_MAX 287 }; 288 289 /// Identifiers for the 8x8 icons of ::Gfx->Icon_sprite (most are unused now) 290 enum ICON_TYPES 291 { 292 ICON_FLOPPY_3_5=0, ///< 3.5 Floppy disk 293 ICON_FLOPPY_5_25, ///< 5.25 Floppy disk 294 ICON_HDD, ///< Hard disk drive 295 ICON_CDROM, ///< CD-ROM 296 ICON_NETWORK, ///< "Network" drive 297 ICON_STAR, ///< Star (favorite) 298 ICON_DROPDOWN, ///< Dropdown arrow 299 NB_ICON_SPRITES, ///< Number of 8x8 icons 300 ICON_NONE ///< None of the above 301 }; 302 303 enum EFFECT_SPRITES 304 { 305 EFFECTS_SPRITE_SHADE, 306 EFFECTS_SPRITE_TRANSP, 307 EFFECTS_SPRITE_SMOOTH, 308 EFFECTS_SPRITE_TILING, 309 EFFECTS_SPRITE_STENCIL, 310 EFFECTS_SPRITE_SIEVE, 311 EFFECTS_SPRITE_GRID, 312 EFFECTS_SPRITE_MASK, 313 EFFECTS_SPRITE_SMEAR, 314 EFFECTS_SPRITE_8BIT, 315 NB_EFFECTS_SPRITES ///< Number of effect sprites. 316 }; 317 318 /// Identifiers for the buttons in the menu. 319 enum BUTTON_NUMBERS 320 { 321 // Status bar 322 BUTTON_HIDE = 0, 323 324 // Anim bar 325 BUTTON_LAYER_MENU2, 326 BUTTON_ANIM_TIME, 327 BUTTON_ANIM_FIRST_FRAME, 328 BUTTON_ANIM_PREV_FRAME, 329 BUTTON_ANIM_NEXT_FRAME, 330 BUTTON_ANIM_LAST_FRAME, 331 BUTTON_ANIM_ADD_FRAME, 332 BUTTON_ANIM_REMOVE_FRAME, 333 BUTTON_ANIM_UP_FRAME, 334 BUTTON_ANIM_DOWN_FRAME, 335 336 BUTTON_ANIM_PLAY, // unused at this time 337 338 // Layer bar 339 BUTTON_LAYER_MENU, 340 BUTTON_LAYER_COLOR, 341 BUTTON_LAYER_MERGE, 342 BUTTON_LAYER_ADD, 343 BUTTON_LAYER_REMOVE, 344 BUTTON_LAYER_UP, 345 BUTTON_LAYER_DOWN, 346 BUTTON_LAYER_SELECT, 347 348 // Main menu 349 BUTTON_PAINTBRUSHES, 350 BUTTON_ADJUST, 351 BUTTON_DRAW, 352 BUTTON_CURVES, 353 BUTTON_LINES, 354 BUTTON_AIRBRUSH, 355 BUTTON_FLOODFILL, 356 BUTTON_POLYGONS, 357 BUTTON_POLYFILL, 358 BUTTON_RECTANGLES, 359 BUTTON_FILLRECT, 360 BUTTON_CIRCLES, 361 BUTTON_FILLCIRC, 362 BUTTON_GRADRECT, 363 BUTTON_SPHERES, 364 BUTTON_BRUSH, 365 BUTTON_POLYBRUSH, 366 BUTTON_BRUSH_EFFECTS, 367 BUTTON_EFFECTS, 368 BUTTON_TEXT, 369 BUTTON_MAGNIFIER, 370 BUTTON_COLORPICKER, 371 BUTTON_RESOL, 372 BUTTON_PAGE, 373 BUTTON_SAVE, 374 BUTTON_LOAD, 375 BUTTON_SETTINGS, 376 BUTTON_CLEAR, 377 BUTTON_HELP, 378 BUTTON_UNDO, 379 BUTTON_KILL, 380 BUTTON_QUIT, 381 BUTTON_PALETTE, 382 BUTTON_PAL_LEFT, 383 BUTTON_PAL_RIGHT, 384 BUTTON_CHOOSE_COL, 385 NB_BUTTONS ///< Number of buttons in the menu bar. 386 }; 387 388 enum MENU_SPRITE 389 { 390 MENU_SPRITE_COLOR_BRUSH=0, 391 MENU_SPRITE_MONO_BRUSH, 392 MENU_SPRITE_DISCONTINUOUS_DRAW, 393 MENU_SPRITE_POINT_DRAW, 394 MENU_SPRITE_CONTOUR_DRAW, 395 MENU_SPRITE_4_POINTS_CURVE, 396 MENU_SPRITE_K_LINE, 397 MENU_SPRITE_CENTERED_LINES, 398 MENU_SPRITE_ELLIPSES, 399 MENU_SPRITE_POLYFORM, 400 MENU_SPRITE_REPLACE, 401 MENU_SPRITE_GRAD_ELLIPSE, 402 MENU_SPRITE_VERTICAL_PALETTE_SCROLL, 403 NB_MENU_SPRITES ///< Number of menu sprites. 404 }; 405 406 /// 407 /// Identifiers of special actions that can have a keyboard shortcut. 408 /// They are special in the sense that there's no button in the menu for them, 409 /// so it requires a specific handling. 410 enum SPECIAL_ACTIONS 411 { 412 SPECIAL_MOUSE_UP=0, 413 SPECIAL_MOUSE_DOWN, 414 SPECIAL_MOUSE_LEFT, 415 SPECIAL_MOUSE_RIGHT, 416 SPECIAL_CLICK_LEFT, 417 SPECIAL_CLICK_RIGHT, 418 SPECIAL_NEXT_FORECOLOR, 419 SPECIAL_PREVIOUS_FORECOLOR, 420 SPECIAL_NEXT_BACKCOLOR, 421 SPECIAL_PREVIOUS_BACKCOLOR, 422 SPECIAL_SMALLER_PAINTBRUSH, 423 SPECIAL_BIGGER_PAINTBRUSH, 424 SPECIAL_NEXT_USER_FORECOLOR, 425 SPECIAL_PREVIOUS_USER_FORECOLOR, 426 SPECIAL_NEXT_USER_BACKCOLOR, 427 SPECIAL_PREVIOUS_USER_BACKCOLOR, 428 SPECIAL_SCROLL_UP, 429 SPECIAL_SCROLL_DOWN, 430 SPECIAL_SCROLL_LEFT, 431 SPECIAL_SCROLL_RIGHT, 432 SPECIAL_SCROLL_UP_FAST, 433 SPECIAL_SCROLL_DOWN_FAST, 434 SPECIAL_SCROLL_LEFT_FAST, 435 SPECIAL_SCROLL_RIGHT_FAST, 436 SPECIAL_SCROLL_UP_SLOW, 437 SPECIAL_SCROLL_DOWN_SLOW, 438 SPECIAL_SCROLL_LEFT_SLOW, 439 SPECIAL_SCROLL_RIGHT_SLOW, 440 SPECIAL_SHOW_HIDE_CURSOR, 441 SPECIAL_DOT_PAINTBRUSH, 442 SPECIAL_CONTINUOUS_DRAW, 443 SPECIAL_FLIP_X, 444 SPECIAL_FLIP_Y, 445 SPECIAL_ROTATE_90, 446 SPECIAL_ROTATE_180, 447 SPECIAL_STRETCH, 448 SPECIAL_DISTORT, 449 SPECIAL_OUTLINE, 450 SPECIAL_NIBBLE, 451 SPECIAL_GET_BRUSH_COLORS, 452 SPECIAL_RECOLORIZE_BRUSH, 453 SPECIAL_ROTATE_ANY_ANGLE, 454 SPECIAL_BRUSH_DOUBLE, 455 SPECIAL_BRUSH_DOUBLE_WIDTH, 456 SPECIAL_BRUSH_DOUBLE_HEIGHT, 457 SPECIAL_BRUSH_HALVE, 458 SPECIAL_LOAD_BRUSH, 459 SPECIAL_SAVE_BRUSH, 460 SPECIAL_INVERT_SIEVE, 461 SPECIAL_ZOOM_IN, 462 SPECIAL_ZOOM_OUT, 463 SPECIAL_CENTER_ATTACHMENT, 464 SPECIAL_TOP_LEFT_ATTACHMENT, 465 SPECIAL_TOP_RIGHT_ATTACHMENT, 466 SPECIAL_BOTTOM_LEFT_ATTACHMENT, 467 SPECIAL_BOTTOM_RIGHT_ATTACHMENT, 468 SPECIAL_EXCLUDE_COLORS_MENU, 469 SPECIAL_SHADE_MODE, 470 SPECIAL_SHADE_MENU, 471 SPECIAL_QUICK_SHADE_MODE, ///< This must be the first of the "effects" family 472 SPECIAL_QUICK_SHADE_MENU, 473 SPECIAL_STENCIL_MODE, 474 SPECIAL_STENCIL_MENU, 475 SPECIAL_MASK_MODE, 476 SPECIAL_MASK_MENU, 477 SPECIAL_GRID_MODE, 478 SPECIAL_GRID_MENU, 479 SPECIAL_SIEVE_MODE, 480 SPECIAL_SIEVE_MENU, 481 SPECIAL_COLORIZE_MODE, 482 SPECIAL_COLORIZE_MENU, 483 SPECIAL_SMOOTH_MODE, 484 SPECIAL_SMOOTH_MENU, 485 SPECIAL_SMEAR_MODE, 486 SPECIAL_EFFECTS_OFF, 487 SPECIAL_TILING_MODE, 488 SPECIAL_TRANSPARENCY_1, 489 SPECIAL_TRANSPARENCY_2, 490 SPECIAL_TRANSPARENCY_3, 491 SPECIAL_TRANSPARENCY_4, 492 SPECIAL_TRANSPARENCY_5, 493 SPECIAL_TRANSPARENCY_6, 494 SPECIAL_TRANSPARENCY_7, 495 SPECIAL_TRANSPARENCY_8, 496 SPECIAL_TRANSPARENCY_9, 497 SPECIAL_TRANSPARENCY_0, 498 SPECIAL_TILEMAP_MODE, 499 SPECIAL_TILEMAP_MENU, 500 SPECIAL_TILING_MENU, ///< This must be the last of the "effects" family 501 SPECIAL_ZOOM_1, 502 SPECIAL_ZOOM_2, 503 SPECIAL_ZOOM_3, 504 SPECIAL_ZOOM_4, 505 SPECIAL_ZOOM_5, 506 SPECIAL_ZOOM_6, 507 SPECIAL_ZOOM_8, 508 SPECIAL_ZOOM_10, 509 SPECIAL_ZOOM_12, 510 SPECIAL_ZOOM_14, 511 SPECIAL_ZOOM_16, 512 SPECIAL_ZOOM_18, 513 SPECIAL_ZOOM_20, 514 SPECIAL_SHOW_GRID, 515 SPECIAL_LAYER1_SELECT, 516 SPECIAL_LAYER1_TOGGLE, 517 SPECIAL_LAYER2_SELECT, 518 SPECIAL_LAYER2_TOGGLE, 519 SPECIAL_LAYER3_SELECT, 520 SPECIAL_LAYER3_TOGGLE, 521 SPECIAL_LAYER4_SELECT, 522 SPECIAL_LAYER4_TOGGLE, 523 SPECIAL_LAYER5_SELECT, 524 SPECIAL_LAYER5_TOGGLE, 525 SPECIAL_LAYER6_SELECT, 526 SPECIAL_LAYER6_TOGGLE, 527 SPECIAL_LAYER7_SELECT, 528 SPECIAL_LAYER7_TOGGLE, 529 SPECIAL_LAYER8_SELECT, 530 SPECIAL_LAYER8_TOGGLE, 531 SPECIAL_REPEAT_SCRIPT, 532 SPECIAL_RUN_SCRIPT_1, 533 SPECIAL_RUN_SCRIPT_2, 534 SPECIAL_RUN_SCRIPT_3, 535 SPECIAL_RUN_SCRIPT_4, 536 SPECIAL_RUN_SCRIPT_5, 537 SPECIAL_RUN_SCRIPT_6, 538 SPECIAL_RUN_SCRIPT_7, 539 SPECIAL_RUN_SCRIPT_8, 540 SPECIAL_RUN_SCRIPT_9, 541 SPECIAL_RUN_SCRIPT_10, 542 SPECIAL_CYCLE_MODE, 543 544 SPECIAL_FORMAT_CHECKER, 545 SPECIAL_FORMAT_CHECKER_MENU, 546 547 SPECIAL_HOLD_PAN, 548 SPECIAL_ZOOM_IN_MORE, 549 SPECIAL_ZOOM_OUT_MORE, 550 551 NB_SPECIAL_SHORTCUTS ///< Number of special shortcuts 552 }; 553 554 /// Identifiers of the operations, ie tools you use on the image. 555 enum OPERATIONS 556 { 557 OPERATION_CONTINUOUS_DRAW=0, ///< Freehand continuous draw 558 OPERATION_DISCONTINUOUS_DRAW,///< Freehand discontinuous draw 559 OPERATION_POINT_DRAW, ///< Freehand point-by-point draw 560 OPERATION_FILLED_CONTOUR, ///< Filled contour 561 OPERATION_LINE, ///< Lines 562 OPERATION_K_LINE, ///< Linked lines 563 OPERATION_CENTERED_LINES, ///< Centered lines 564 OPERATION_EMPTY_RECTANGLE, ///< Empty rectangle 565 OPERATION_FILLED_RECTANGLE, ///< Filled rectangle 566 OPERATION_EMPTY_CIRCLE_CTR, ///< Empty circle (center radius) 567 OPERATION_EMPTY_CIRCLE_CRN, ///< Empty circle (corners) 568 OPERATION_EMPTY_ELLIPSE_CTR, ///< Empty ellipse (center radius) 569 OPERATION_EMPTY_ELLIPSE_CRN, ///< Empty ellipse (corners) 570 OPERATION_FILLED_CIRCLE_CTR, ///< Filled circle (center radius) 571 OPERATION_FILLED_CIRCLE_CRN, ///< Filled circle (corners) 572 OPERATION_FILLED_ELLIPSE_CTR,///< Filled ellipse (center radius) 573 OPERATION_FILLED_ELLIPSE_CRN,///< Filled ellipse (corners) 574 OPERATION_FILL, ///< Fill 575 OPERATION_REPLACE, ///< Color replacer 576 OPERATION_GRAB_BRUSH, ///< Rectangular brush grabbing 577 OPERATION_POLYBRUSH, ///< Polygonal brush grabbing 578 OPERATION_COLORPICK, ///< Colorpicker 579 OPERATION_MAGNIFY, ///< Position the magnify window 580 OPERATION_3_POINTS_CURVE, ///< Curve with 3 control points 581 OPERATION_4_POINTS_CURVE, ///< Curve with 4 control points 582 OPERATION_AIRBRUSH, ///< Airbrush 583 OPERATION_POLYGON, ///< Polygon 584 OPERATION_POLYFORM, ///< Polyform 585 OPERATION_POLYFILL, ///< Filled polygon 586 OPERATION_FILLED_POLYFORM, ///< Filled polyform 587 OPERATION_SCROLL, ///< Scroll (pan) 588 OPERATION_GRAD_CIRCLE_CTR, ///< Gradient-filled circle (center radius) 589 OPERATION_GRAD_CIRCLE_CRN, ///< Gradient-filled circle (corners) 590 OPERATION_GRAD_ELLIPSE_CTR, ///< Gradient-filled ellipse (center radius) 591 OPERATION_GRAD_ELLIPSE_CRN, ///< Gradient-filled ellipse (corners) 592 OPERATION_ROTATE_BRUSH, ///< Rotate brush 593 OPERATION_STRETCH_BRUSH, ///< Stretch brush 594 OPERATION_DISTORT_BRUSH, ///< Distort brush 595 OPERATION_GRAD_RECTANGLE, ///< Gradient-filled rectangle 596 OPERATION_RMB_COLORPICK, ///< Colorpick on right mouse button 597 OPERATION_PAN_VIEW, ///< Pan view 598 NB_OPERATIONS ///< Number of operations handled by the engine 599 }; 600 601 /// Image drawing modes. 602 enum IMAGE_MODES 603 { 604 IMAGE_MODE_LAYERED=0, ///< Layered image 605 IMAGE_MODE_ANIMATION, ///< Animation 606 IMAGE_MODE_ZX, ///< ZX Spectrum (note "SPECTRUM" is kept for later... Spectrum 512 anyone?) 607 IMAGE_MODE_GBC, ///< Game Boy Color 608 IMAGE_MODE_THOMSON, ///< "40 columns" mode on Thomson machines 609 IMAGE_MODE_EGX, ///< CPC EGX 610 IMAGE_MODE_EGX2, ///< CPC EGX2 611 IMAGE_MODE_MODE5, ///< CPC mode 5 612 IMAGE_MODE_RASTER, ///< CPC generic rasters 613 IMAGE_MODE_C64HIRES, ///< C64 HiRes 614 IMAGE_MODE_C64MULTI, ///< C64 Multicolor 615 IMAGE_MODE_C64FLI, ///< C64 Flexible Line Interpretation 616 IMAGE_MODE_HGR, ///< Apple 2 HGR 617 IMAGE_MODE_DHGR, ///< Apple 2 DHGR 618 IMAGE_MODE_MEGADRIVE, ///< Sega Mega Drive / Genesis 619 IMAGE_MODE_TMS9918G2, ///< TMS9918 Mode 2 (MSX, ColecoVision, SC-3000, etc.) 620 }; 621 622 /// Circle / Ellipse Modes 623 #define MASK_CIRCLE_ELLIPSE (2) 624 #define MASK_CENTER_CORNERS (1) 625 #define MODE_CIRCLE (0) 626 #define MODE_ELLIPSE (2) 627 #define MODE_CENTER (0) 628 #define MODE_CORNERS (1) 629 #define MODE_CIRCLE_CTR (MODE_CIRCLE|MODE_CENTER) 630 #define MODE_CIRCLE_CRN (MODE_CIRCLE|MODE_CORNERS) 631 #define MODE_ELLIPSE_CTR (MODE_ELLIPSE|MODE_CENTER) 632 #define MODE_ELLIPSE_CRN (MODE_ELLIPSE|MODE_CORNERS) 633 634 enum FSOBJECT_TYPE 635 { 636 FSOBJECT_FILE = 0, 637 FSOBJECT_DIR = 1, 638 FSOBJECT_DRIVE = 2 639 }; 640 641 enum GFX2_WINDOW_STATES 642 { 643 GFX2_WINDOW_STANDARD = 0, 644 GFX2_WINDOW_MAXIMIZED, 645 GFX2_WINDOW_MINIMIZED 646 }; 647 648 #endif 649