/* vim:expandtab:ts=2 sw=2: */ /* Grafx2 - The Ultimate 256-color bitmap paint program Copyright 2014 Sergii Pylypenko Copyright 2008 Yves Rizoud Copyright 2007-2017 Adrien Destugues Copyright 1996-2001 Sunset Design (Guillaume Dorme & Karl Maritaud) Grafx2 is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License. Grafx2 is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Grafx2; if not, see */ ////////////////////////////////////////////////////////////////////////////// ///@file const.h /// Constants (preprocessor defines) and enumerations used anywhere. ////////////////////////////////////////////////////////////////////////////// #ifndef _CONST_H_ #define _CONST_H_ #if defined(__GP2X__) || defined(__WIZ__) || defined(__CAANOO__) || defined(__amigaos__) // These platforms don't seem to have PATH_MAX #undef PATH_MAX #define PATH_MAX 260 #elif defined(__ANDROID__) #include // for PATH_MAX #else #include // for PATH_MAX #endif #ifndef PATH_MAX #ifdef _MSC_VER #include #endif #ifdef MAX_PATH #define PATH_MAX MAX_PATH #else #define PATH_MAX 4096 #endif #endif #ifndef M_2PI #define M_2PI 6.28318530717958647692528676656 ///< Hmm, pie... #endif #define VERSION1 2 ///< Version number for gfx2.cfg (1/4) #define VERSION2 0 ///< Version number for gfx2.cfg (2/4) #define BETA1 98 ///< Version number for gfx2.cfg (3/4) #define BETA2 0 ///< Version number for gfx2.cfg (4/4) #define MAX_VIDEO_MODES 200 ///< Maximum number of video modes Grafx2 can propose. #define NB_ZOOM_FACTORS 15 ///< Number of zoom levels available in the magnifier. #define MENU_WIDTH 254 ///< Width of the menu (not counting the palette) #define MENU_HEIGHT 44 ///< Height of the menu. #define NB_CURSOR_SPRITES 9 ///< Number of available mouse cursor sprites. #define CURSOR_SPRITE_WIDTH 16 ///< Width of a mouse cursor sprite. #define CURSOR_SPRITE_HEIGHT 16 ///< Height of a mouse cursor sprite. #define MENU_SPRITE_WIDTH 16 ///< Width of a menu sprite in pixels #define MENU_SPRITE_HEIGHT 16 ///< Height of a menu sprite in pixels #define EFFECT_SPRITE_WIDTH 14 ///< Width of an effect sprite in pixels #define EFFECT_SPRITE_HEIGHT 14 ///< Height of an effect sprite in pixels #define LAYER_SPRITE_WIDTH 14 ///< Width of a layer button in pixels #define LAYER_SPRITE_HEIGHT 10 ///< Height of a layer button in pixels #define PAINTBRUSH_WIDTH 16 ///< Width of a preset paintbrush sprite #define PAINTBRUSH_HEIGHT 16 ///< Height of a preset paintbrush sprite #define MAX_PAINTBRUSH_SIZE 127 ///< Max size for a resizable paintbrush #define ICON_SPRITE_WIDTH 8 ///< Width of an icon in pixels #define ICON_SPRITE_HEIGHT 8 ///< Height of an icon in pixels #define NB_PAINTBRUSH_SPRITES 48 ///< Number of preset paintbrushes #define NB_PRESET_SIEVE 12 ///< Number of preset sieve patterns #define OPERATION_STACK_SIZE 16 ///< Max number of parameters in the operation stack. #define MAX_DISPLAYABLE_PATH 37 ///< Max number of characters to display directory name, in Save/Load screens. #define COMMENT_SIZE 32 ///< Max number of characters for a comment in PKM or PNG file. #define NB_MAX_PAGES_UNDO 99 ///< Max number of undo pages #define DEFAULT_ZOOM_FACTOR 4 ///< Initial zoom factor for the magnifier. #define MAX_PATH_CHARACTERS PATH_MAX ///< Number of characters for a file+complete path. Adapt to your OS... #define NB_BOOKMARKS 4 ///< Number of bookmark buttons in Save/Load screen. // Character to show a right arrow, used when editing long strings. It's present in ::Gfx->System_font #define RIGHT_TRIANGLE_CHARACTER 16 // Character to show a left arrow, used when editing long strings. It's present in ::Gfx->System_font #define LEFT_TRIANGLE_CHARACTER 17 /// Character to display in menus for an ellipsis. #define ELLIPSIS_CHARACTER '\x85' // 3 dots : … / HTML entity : … #define NB_LAYERS 1 ///< Initial number of layers for a new image #define MAX_NB_FRAMES 999 ///< Maximum number of frames that can be used in a grafx2 animation. #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. #define BRUSH_CONTAINER_PREVIEW_WIDTH 16 ///< Size for preview of a brush in Brush container #define BRUSH_CONTAINER_PREVIEW_HEIGHT 16 ///< Size for preview of a brush in Brush container #define BRUSH_CONTAINER_COLUMNS 4 ///< Number of columns in the Brush container #define BRUSH_CONTAINER_ROWS 3 ///< Number of rows in the Brush container /// /// We force the dynamic backup page allocation to leave a minimum of /// 256Kb of free memory, to allow the rest of the program to work safely. /// Note: This is a remainder of the DOS version. This system might not work /// so well on other OSes, where the "available memory" changes due to external /// factors. #define MINIMAL_MEMORY_TO_RESERVE (256*1024) #define LEFT_SIDE 1 ///< Indicates a left side or left-click #define RIGHT_SIDE 2 ///< Indicates a right side or right-click #define SEPARATOR_WIDTH 6 ///< Width of the separator between the normal and the zoomed view #define INITIAL_SEPARATOR_PROPORTION 0.3f ///< Proportion of the normal view width, relative to the whole screen width. #define NB_ZOOMED_PIXELS_MIN 4 ///< Minimal number of pixel shown (in width) by the zoomed view. (Note: below 4, you can't scroll!) #if defined(__MORPHOS__) || defined(__amigaos4__) || defined(__amigaos__) || defined(__AROS__) #define PARENT_DIR "/" #else /// Filename that means "parent directory" for your operating system. #define PARENT_DIR ".." #endif /// List of file formats recognized by grafx2 enum FILE_FORMATS { FORMAT_ALL_IMAGES=0, ///< This is not really a file format, it's reserverd for a compilation of all image file extensions FORMAT_ALL_PALETTES=1, ///< This is not really a file format, it's reserverd for a compilation of all palette file extensions FORMAT_ALL_FILES=2, ///< This is not really a file format, it's reserverd for the "*.*" filter option. FORMAT_PNG, ///< Portable Network Graphics FORMAT_GIF, ///< Graphics Interchange Format FORMAT_BMP, ///< Windows or OS/2 bitmap FORMAT_PCX, ///< Paintbrush FORMAT_PKM, ///< GrafX2 own format (Karl Maritaud) FORMAT_LBM, ///< IFF ILBM : InterLeaved BitMap FORMAT_PBM, ///< IFF PBM : Packet BitMap FORMAT_ACBM, ///< IFF ACBM : Amiga Contiguous BitMap FORMAT_IMG, ///< from PV (c)W.Wiedmann FORMAT_SCx, ///< ColoRIX FORMAT_PI1, ///< Atari ST Degas FORMAT_PC1, ///< Atari ST Degas Elite FORMAT_CEL, ///< Atari ST Cyber Paint Cell FORMAT_NEO, ///< Atari ST NeoChrome FORMAT_C64, ///< Several C64 formats : Koala, FLI, BML, etc. FORMAT_GPX, ///< pixcen C64 format : .gpx FORMAT_KCF, ///< KiSS Color File FORMAT_PAL, ///< raw 6bit palette or Jasc Paint Shop Pro palette FORMAT_GPL, ///< Gimp palette FORMAT_SCR, ///< Amstrad CPC FORMAT_CM5, ///< Amstrad CPC Mode 5 FORMAT_PPH, ///< Amastad CPC Perfect Pix FORMAT_XPM, ///< X PixMap FORMAT_ICO, ///< Windows icons FORMAT_INFO, ///< Amiga OS icons FORMAT_FLI, ///< Autodesk Animator FLI/FLC FORMAT_MOTO, ///< Thomson MO/TO computers pictures FORMAT_HGR, ///< Apple II HGR and DHGR FORMAT_TIFF, ///< Tagged Image File Format FORMAT_MISC, ///< Must be last of enum: others formats recognized by SDL_image (or recoil) FORMAT_CLIPBOARD ///< To load/save from/to Clipboard }; /// Default format for 'save as' #define DEFAULT_FILEFORMAT FORMAT_GIF /// Error codes for ::Error() enum ERROR_CODES { ERROR_WARNING=0, ///< Red flash on screen, non-fatal error ERROR_GUI_MISSING, ///< The graphics file is missing ERROR_GUI_CORRUPTED, ///< The graphics file cannot be parsed for GUI elements ERROR_INI_MISSING, ///< File gfx2def.ini is missing ERROR_CFG_MISSING, ///< File gfx2.cfg is missing (non-fatal) ERROR_CFG_CORRUPTED, ///< File gfx2.cfg couldn't be parsed (non-fatal) ERROR_CFG_OLD, ///< Unknown version of gfx2.cfg : either VERY old or wrong file (non-fatal) ERROR_MEMORY, ///< Out of memory ERROR_COMMAND_LINE, ///< Error in command-line arguments (syntax, or couldn't find the file to open) ERROR_FORBIDDEN_MODE, ///< Graphics mode requested is not supported ERROR_FORBIDDEN_SIZE, ///< Image size requested is not supported ERROR_SAVING_CFG, ///< Error while writing gfx2.cfg ERROR_MISSING_DIRECTORY, ///< Unable to return to the original "current directory" on program exit ERROR_INI_CORRUPTED, ///< File gfx2.ini couldn't be parsed ERROR_SAVING_INI, ///< Error while writing gfx2.ini ERROR_INIT, ///< Program initialization error ERROR_SORRY_SORRY_SORRY ///< (Page allocation error that shouldn't ever happen, now) }; /// Available pixel scalers enum PIXEL_RATIO { PIXEL_SIMPLE=0, ///< Use real pixels PIXEL_WIDE, ///< Use wide pixels (2x1) like on Amstrad CPC mode 0 PIXEL_TALL, ///< Use tall pixels (1x2) like on Amstrad CPC mode 2 PIXEL_DOUBLE, ///< Use big pixels (2x2) if your LCD screen can't do lowres by itself PIXEL_TRIPLE, ///< Use really big pixels (3x3) PIXEL_WIDE2, ///< Use big wide pixels (4x2) PIXEL_TALL2, ///< Use big tall pixels (2x4) PIXEL_TALL3, ///< Use big tall pixels (3x4) PIXEL_QUAD, ///< Use really giant pixels (4x4). You need to have a screen resolution at least 1280x800 to use this one PIXEL_MAX ///< Number of elements in enum }; /// Different kinds of menu button behavior. enum FAMILY_OF_BUTTONS { FAMILY_TOOL=1, ///< Drawing tools (example : Freehand draw) FAMILY_INTERRUPTION, ///< Temporary operation (example : choosing paintbrush) > Interrupts the current operation to do something, then come back. FAMILY_INSTANT, ///< Single-click action (example : choose a color in palette) > It will be over as soon as we exit the called function. FAMILY_TOOLBAR, ///< Hide/show the menu FAMILY_EFFECTS ///< Effects }; /// The different kinds of buttons in menus or windows. enum BUTTON_SHAPES { BUTTON_SHAPE_NO_FRAME, ///< Ex: the palette BUTTON_SHAPE_RECTANGLE, ///< Ex: Most buttons. BUTTON_SHAPE_TRIANGLE_TOP_LEFT, ///< Ex: Empty rectangles. BUTTON_SHAPE_TRIANGLE_BOTTOM_RIGHT ///< Ex: Filled rectangles. }; /// The different "mouse cursor" shapes enum CURSOR_SHAPES { // Sprite based cursors first (also used as index in cursor sprite array) CURSOR_SHAPE_ARROW, CURSOR_SHAPE_TARGET, ///< This one uses the paintbrush CURSOR_SHAPE_COLORPICKER, CURSOR_SHAPE_HOURGLASS, CURSOR_SHAPE_MULTIDIRECTIONAL, CURSOR_SHAPE_HORIZONTAL, CURSOR_SHAPE_THIN_TARGET, ///< This one uses the paintbrush CURSOR_SHAPE_THIN_COLORPICKER, ///< This one uses the paintbrush CURSOR_SHAPE_BUCKET, // XOR/runtime-generated cursors last CURSOR_SHAPE_XOR_TARGET, CURSOR_SHAPE_XOR_RECTANGLE, CURSOR_SHAPE_XOR_ROTATION, }; /// The different shapes that can be used as a paintbrush (paintbrush types go in the beginning) enum PAINTBRUSH_SHAPES { PAINTBRUSH_SHAPE_ROUND, PAINTBRUSH_SHAPE_SQUARE, PAINTBRUSH_SHAPE_HORIZONTAL_BAR, PAINTBRUSH_SHAPE_VERTICAL_BAR, PAINTBRUSH_SHAPE_SLASH, PAINTBRUSH_SHAPE_ANTISLASH, PAINTBRUSH_SHAPE_RANDOM, ///< Random pixels in a circle shape, like an airbrush. PAINTBRUSH_SHAPE_CROSS, PAINTBRUSH_SHAPE_PLUS, PAINTBRUSH_SHAPE_DIAMOND, PAINTBRUSH_SHAPE_SIEVE_ROUND, PAINTBRUSH_SHAPE_SIEVE_SQUARE, PAINTBRUSH_SHAPE_RESERVED1, ///< Reserved for future use PAINTBRUSH_SHAPE_RESERVED2, ///< Reserved for future use PAINTBRUSH_SHAPE_RESERVED3, ///< Reserved for future use PAINTBRUSH_SHAPE_RESERVED4, ///< Reserved for future use PAINTBRUSH_SHAPE_RESERVED5, ///< Reserved for future use PAINTBRUSH_SHAPE_RESERVED6, ///< Reserved for future use PAINTBRUSH_SHAPE_RESERVED7, ///< Reserved for future use PAINTBRUSH_SHAPE_RESERVED8, ///< Reserved for future use PAINTBRUSH_SHAPE_MISC, ///< A raw monochrome bitmap, can't be resized. This must be the last of the preset paintbrush types. PAINTBRUSH_SHAPE_POINT, ///< Used to reduce the paintbrush to a single pixel, during operations like floodfill. PAINTBRUSH_SHAPE_NONE, ///< Used to display no cursor at all (colorpicker) PAINTBRUSH_SHAPE_COLOR_BRUSH, ///< User's brush, in color mode PAINTBRUSH_SHAPE_MONO_BRUSH, ///< User's brush, in mono mode PAINTBRUSH_SHAPE_MAX ///< Upper limit. }; /// Normal resting state for a menu button. #define BUTTON_RELEASED 0 /// State of a menu button that is being pressed. #define BUTTON_PRESSED 1 /// State of a button temporarily highligted #define BUTTON_HIGHLIGHTED 2 /// The different modes of the Shade enum SHADE_MODES { SHADE_MODE_NORMAL, SHADE_MODE_LOOP, SHADE_MODE_NOSAT }; /// Identifiers for the chunks (data blocks) of gfx2.cfg enum CHUNKS_CFG { CHUNK_KEYS = 0, ///< Shortcut keys definitions CHUNK_VIDEO_MODES = 1, ///< List of video modes CHUNK_SHADE = 2, ///< Shade settings CHUNK_MASK = 3, ///< Mask settings CHUNK_STENCIL = 4, ///< Stencil settings CHUNK_GRADIENTS = 5, ///< Gradients CHUNK_SMOOTH = 6, ///< Smooth effect settings CHUNK_EXCLUDE_COLORS = 7, ///< List of excluded colors CHUNK_QUICK_SHADE = 8, ///< QShade effect settings CHUNK_GRID = 9, ///< Grid settings CHUNK_BRUSH =10, ///< Paintbrushes CHUNK_SCRIPTS =11, ///< Callable scripts CHUNK_MAX }; /// Identifiers for the 8x8 icons of ::Gfx->Icon_sprite (most are unused now) enum ICON_TYPES { ICON_FLOPPY_3_5=0, ///< 3.5 Floppy disk ICON_FLOPPY_5_25, ///< 5.25 Floppy disk ICON_HDD, ///< Hard disk drive ICON_CDROM, ///< CD-ROM ICON_NETWORK, ///< "Network" drive ICON_STAR, ///< Star (favorite) ICON_DROPDOWN, ///< Dropdown arrow NB_ICON_SPRITES, ///< Number of 8x8 icons ICON_NONE ///< None of the above }; enum EFFECT_SPRITES { EFFECTS_SPRITE_SHADE, EFFECTS_SPRITE_TRANSP, EFFECTS_SPRITE_SMOOTH, EFFECTS_SPRITE_TILING, EFFECTS_SPRITE_STENCIL, EFFECTS_SPRITE_SIEVE, EFFECTS_SPRITE_GRID, EFFECTS_SPRITE_MASK, EFFECTS_SPRITE_SMEAR, EFFECTS_SPRITE_8BIT, NB_EFFECTS_SPRITES ///< Number of effect sprites. }; /// Identifiers for the buttons in the menu. enum BUTTON_NUMBERS { // Status bar BUTTON_HIDE = 0, // Anim bar BUTTON_LAYER_MENU2, BUTTON_ANIM_TIME, BUTTON_ANIM_FIRST_FRAME, BUTTON_ANIM_PREV_FRAME, BUTTON_ANIM_NEXT_FRAME, BUTTON_ANIM_LAST_FRAME, BUTTON_ANIM_ADD_FRAME, BUTTON_ANIM_REMOVE_FRAME, BUTTON_ANIM_UP_FRAME, BUTTON_ANIM_DOWN_FRAME, BUTTON_ANIM_PLAY, // unused at this time // Layer bar BUTTON_LAYER_MENU, BUTTON_LAYER_COLOR, BUTTON_LAYER_MERGE, BUTTON_LAYER_ADD, BUTTON_LAYER_REMOVE, BUTTON_LAYER_UP, BUTTON_LAYER_DOWN, BUTTON_LAYER_SELECT, // Main menu BUTTON_PAINTBRUSHES, BUTTON_ADJUST, BUTTON_DRAW, BUTTON_CURVES, BUTTON_LINES, BUTTON_AIRBRUSH, BUTTON_FLOODFILL, BUTTON_POLYGONS, BUTTON_POLYFILL, BUTTON_RECTANGLES, BUTTON_FILLRECT, BUTTON_CIRCLES, BUTTON_FILLCIRC, BUTTON_GRADRECT, BUTTON_SPHERES, BUTTON_BRUSH, BUTTON_POLYBRUSH, BUTTON_BRUSH_EFFECTS, BUTTON_EFFECTS, BUTTON_TEXT, BUTTON_MAGNIFIER, BUTTON_COLORPICKER, BUTTON_RESOL, BUTTON_PAGE, BUTTON_SAVE, BUTTON_LOAD, BUTTON_SETTINGS, BUTTON_CLEAR, BUTTON_HELP, BUTTON_UNDO, BUTTON_KILL, BUTTON_QUIT, BUTTON_PALETTE, BUTTON_PAL_LEFT, BUTTON_PAL_RIGHT, BUTTON_CHOOSE_COL, NB_BUTTONS ///< Number of buttons in the menu bar. }; enum MENU_SPRITE { MENU_SPRITE_COLOR_BRUSH=0, MENU_SPRITE_MONO_BRUSH, MENU_SPRITE_DISCONTINUOUS_DRAW, MENU_SPRITE_POINT_DRAW, MENU_SPRITE_CONTOUR_DRAW, MENU_SPRITE_4_POINTS_CURVE, MENU_SPRITE_K_LINE, MENU_SPRITE_CENTERED_LINES, MENU_SPRITE_ELLIPSES, MENU_SPRITE_POLYFORM, MENU_SPRITE_REPLACE, MENU_SPRITE_GRAD_ELLIPSE, MENU_SPRITE_VERTICAL_PALETTE_SCROLL, NB_MENU_SPRITES ///< Number of menu sprites. }; /// /// Identifiers of special actions that can have a keyboard shortcut. /// They are special in the sense that there's no button in the menu for them, /// so it requires a specific handling. enum SPECIAL_ACTIONS { SPECIAL_MOUSE_UP=0, SPECIAL_MOUSE_DOWN, SPECIAL_MOUSE_LEFT, SPECIAL_MOUSE_RIGHT, SPECIAL_CLICK_LEFT, SPECIAL_CLICK_RIGHT, SPECIAL_NEXT_FORECOLOR, SPECIAL_PREVIOUS_FORECOLOR, SPECIAL_NEXT_BACKCOLOR, SPECIAL_PREVIOUS_BACKCOLOR, SPECIAL_SMALLER_PAINTBRUSH, SPECIAL_BIGGER_PAINTBRUSH, SPECIAL_NEXT_USER_FORECOLOR, SPECIAL_PREVIOUS_USER_FORECOLOR, SPECIAL_NEXT_USER_BACKCOLOR, SPECIAL_PREVIOUS_USER_BACKCOLOR, SPECIAL_SCROLL_UP, SPECIAL_SCROLL_DOWN, SPECIAL_SCROLL_LEFT, SPECIAL_SCROLL_RIGHT, SPECIAL_SCROLL_UP_FAST, SPECIAL_SCROLL_DOWN_FAST, SPECIAL_SCROLL_LEFT_FAST, SPECIAL_SCROLL_RIGHT_FAST, SPECIAL_SCROLL_UP_SLOW, SPECIAL_SCROLL_DOWN_SLOW, SPECIAL_SCROLL_LEFT_SLOW, SPECIAL_SCROLL_RIGHT_SLOW, SPECIAL_SHOW_HIDE_CURSOR, SPECIAL_DOT_PAINTBRUSH, SPECIAL_CONTINUOUS_DRAW, SPECIAL_FLIP_X, SPECIAL_FLIP_Y, SPECIAL_ROTATE_90, SPECIAL_ROTATE_180, SPECIAL_STRETCH, SPECIAL_DISTORT, SPECIAL_OUTLINE, SPECIAL_NIBBLE, SPECIAL_GET_BRUSH_COLORS, SPECIAL_RECOLORIZE_BRUSH, SPECIAL_ROTATE_ANY_ANGLE, SPECIAL_BRUSH_DOUBLE, SPECIAL_BRUSH_DOUBLE_WIDTH, SPECIAL_BRUSH_DOUBLE_HEIGHT, SPECIAL_BRUSH_HALVE, SPECIAL_LOAD_BRUSH, SPECIAL_SAVE_BRUSH, SPECIAL_INVERT_SIEVE, SPECIAL_ZOOM_IN, SPECIAL_ZOOM_OUT, SPECIAL_CENTER_ATTACHMENT, SPECIAL_TOP_LEFT_ATTACHMENT, SPECIAL_TOP_RIGHT_ATTACHMENT, SPECIAL_BOTTOM_LEFT_ATTACHMENT, SPECIAL_BOTTOM_RIGHT_ATTACHMENT, SPECIAL_EXCLUDE_COLORS_MENU, SPECIAL_SHADE_MODE, SPECIAL_SHADE_MENU, SPECIAL_QUICK_SHADE_MODE, ///< This must be the first of the "effects" family SPECIAL_QUICK_SHADE_MENU, SPECIAL_STENCIL_MODE, SPECIAL_STENCIL_MENU, SPECIAL_MASK_MODE, SPECIAL_MASK_MENU, SPECIAL_GRID_MODE, SPECIAL_GRID_MENU, SPECIAL_SIEVE_MODE, SPECIAL_SIEVE_MENU, SPECIAL_COLORIZE_MODE, SPECIAL_COLORIZE_MENU, SPECIAL_SMOOTH_MODE, SPECIAL_SMOOTH_MENU, SPECIAL_SMEAR_MODE, SPECIAL_EFFECTS_OFF, SPECIAL_TILING_MODE, SPECIAL_TRANSPARENCY_1, SPECIAL_TRANSPARENCY_2, SPECIAL_TRANSPARENCY_3, SPECIAL_TRANSPARENCY_4, SPECIAL_TRANSPARENCY_5, SPECIAL_TRANSPARENCY_6, SPECIAL_TRANSPARENCY_7, SPECIAL_TRANSPARENCY_8, SPECIAL_TRANSPARENCY_9, SPECIAL_TRANSPARENCY_0, SPECIAL_TILEMAP_MODE, SPECIAL_TILEMAP_MENU, SPECIAL_TILING_MENU, ///< This must be the last of the "effects" family SPECIAL_ZOOM_1, SPECIAL_ZOOM_2, SPECIAL_ZOOM_3, SPECIAL_ZOOM_4, SPECIAL_ZOOM_5, SPECIAL_ZOOM_6, SPECIAL_ZOOM_8, SPECIAL_ZOOM_10, SPECIAL_ZOOM_12, SPECIAL_ZOOM_14, SPECIAL_ZOOM_16, SPECIAL_ZOOM_18, SPECIAL_ZOOM_20, SPECIAL_SHOW_GRID, SPECIAL_LAYER1_SELECT, SPECIAL_LAYER1_TOGGLE, SPECIAL_LAYER2_SELECT, SPECIAL_LAYER2_TOGGLE, SPECIAL_LAYER3_SELECT, SPECIAL_LAYER3_TOGGLE, SPECIAL_LAYER4_SELECT, SPECIAL_LAYER4_TOGGLE, SPECIAL_LAYER5_SELECT, SPECIAL_LAYER5_TOGGLE, SPECIAL_LAYER6_SELECT, SPECIAL_LAYER6_TOGGLE, SPECIAL_LAYER7_SELECT, SPECIAL_LAYER7_TOGGLE, SPECIAL_LAYER8_SELECT, SPECIAL_LAYER8_TOGGLE, SPECIAL_REPEAT_SCRIPT, SPECIAL_RUN_SCRIPT_1, SPECIAL_RUN_SCRIPT_2, SPECIAL_RUN_SCRIPT_3, SPECIAL_RUN_SCRIPT_4, SPECIAL_RUN_SCRIPT_5, SPECIAL_RUN_SCRIPT_6, SPECIAL_RUN_SCRIPT_7, SPECIAL_RUN_SCRIPT_8, SPECIAL_RUN_SCRIPT_9, SPECIAL_RUN_SCRIPT_10, SPECIAL_CYCLE_MODE, SPECIAL_FORMAT_CHECKER, SPECIAL_FORMAT_CHECKER_MENU, SPECIAL_HOLD_PAN, SPECIAL_ZOOM_IN_MORE, SPECIAL_ZOOM_OUT_MORE, NB_SPECIAL_SHORTCUTS ///< Number of special shortcuts }; /// Identifiers of the operations, ie tools you use on the image. enum OPERATIONS { OPERATION_CONTINUOUS_DRAW=0, ///< Freehand continuous draw OPERATION_DISCONTINUOUS_DRAW,///< Freehand discontinuous draw OPERATION_POINT_DRAW, ///< Freehand point-by-point draw OPERATION_FILLED_CONTOUR, ///< Filled contour OPERATION_LINE, ///< Lines OPERATION_K_LINE, ///< Linked lines OPERATION_CENTERED_LINES, ///< Centered lines OPERATION_EMPTY_RECTANGLE, ///< Empty rectangle OPERATION_FILLED_RECTANGLE, ///< Filled rectangle OPERATION_EMPTY_CIRCLE_CTR, ///< Empty circle (center radius) OPERATION_EMPTY_CIRCLE_CRN, ///< Empty circle (corners) OPERATION_EMPTY_ELLIPSE_CTR, ///< Empty ellipse (center radius) OPERATION_EMPTY_ELLIPSE_CRN, ///< Empty ellipse (corners) OPERATION_FILLED_CIRCLE_CTR, ///< Filled circle (center radius) OPERATION_FILLED_CIRCLE_CRN, ///< Filled circle (corners) OPERATION_FILLED_ELLIPSE_CTR,///< Filled ellipse (center radius) OPERATION_FILLED_ELLIPSE_CRN,///< Filled ellipse (corners) OPERATION_FILL, ///< Fill OPERATION_REPLACE, ///< Color replacer OPERATION_GRAB_BRUSH, ///< Rectangular brush grabbing OPERATION_POLYBRUSH, ///< Polygonal brush grabbing OPERATION_COLORPICK, ///< Colorpicker OPERATION_MAGNIFY, ///< Position the magnify window OPERATION_3_POINTS_CURVE, ///< Curve with 3 control points OPERATION_4_POINTS_CURVE, ///< Curve with 4 control points OPERATION_AIRBRUSH, ///< Airbrush OPERATION_POLYGON, ///< Polygon OPERATION_POLYFORM, ///< Polyform OPERATION_POLYFILL, ///< Filled polygon OPERATION_FILLED_POLYFORM, ///< Filled polyform OPERATION_SCROLL, ///< Scroll (pan) OPERATION_GRAD_CIRCLE_CTR, ///< Gradient-filled circle (center radius) OPERATION_GRAD_CIRCLE_CRN, ///< Gradient-filled circle (corners) OPERATION_GRAD_ELLIPSE_CTR, ///< Gradient-filled ellipse (center radius) OPERATION_GRAD_ELLIPSE_CRN, ///< Gradient-filled ellipse (corners) OPERATION_ROTATE_BRUSH, ///< Rotate brush OPERATION_STRETCH_BRUSH, ///< Stretch brush OPERATION_DISTORT_BRUSH, ///< Distort brush OPERATION_GRAD_RECTANGLE, ///< Gradient-filled rectangle OPERATION_RMB_COLORPICK, ///< Colorpick on right mouse button OPERATION_PAN_VIEW, ///< Pan view NB_OPERATIONS ///< Number of operations handled by the engine }; /// Image drawing modes. enum IMAGE_MODES { IMAGE_MODE_LAYERED=0, ///< Layered image IMAGE_MODE_ANIMATION, ///< Animation IMAGE_MODE_ZX, ///< ZX Spectrum (note "SPECTRUM" is kept for later... Spectrum 512 anyone?) IMAGE_MODE_GBC, ///< Game Boy Color IMAGE_MODE_THOMSON, ///< "40 columns" mode on Thomson machines IMAGE_MODE_EGX, ///< CPC EGX IMAGE_MODE_EGX2, ///< CPC EGX2 IMAGE_MODE_MODE5, ///< CPC mode 5 IMAGE_MODE_RASTER, ///< CPC generic rasters IMAGE_MODE_C64HIRES, ///< C64 HiRes IMAGE_MODE_C64MULTI, ///< C64 Multicolor IMAGE_MODE_C64FLI, ///< C64 Flexible Line Interpretation IMAGE_MODE_HGR, ///< Apple 2 HGR IMAGE_MODE_DHGR, ///< Apple 2 DHGR }; /// Circle / Ellipse Modes #define MASK_CIRCLE_ELLIPSE (2) #define MASK_CENTER_CORNERS (1) #define MODE_CIRCLE (0) #define MODE_ELLIPSE (2) #define MODE_CENTER (0) #define MODE_CORNERS (1) #define MODE_CIRCLE_CTR (MODE_CIRCLE|MODE_CENTER) #define MODE_CIRCLE_CRN (MODE_CIRCLE|MODE_CORNERS) #define MODE_ELLIPSE_CTR (MODE_ELLIPSE|MODE_CENTER) #define MODE_ELLIPSE_CRN (MODE_ELLIPSE|MODE_CORNERS) enum FSOBJECT_TYPE { FSOBJECT_FILE = 0, FSOBJECT_DIR = 1, FSOBJECT_DRIVE = 2 }; enum GFX2_WINDOW_STATES { GFX2_WINDOW_STANDARD = 0, GFX2_WINDOW_MAXIMIZED, GFX2_WINDOW_MINIMIZED }; #endif