Doxygen documentation of global.h and const.h (in English)
Some small changes in code that don't change the generated executable: - 4 constants that were #defined are now enums, so they automatically get the right value: NB_ICON_SPRITES, NB_BUTTONS, NB_SPECIAL_SHORTCUTS, NB_OPERATIONS. - Some numeric constants replaced by their symbolic value. git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@750 416bcca6-2ee7-4201-b75f-2eb2f807beb1
This commit is contained in:
		
							parent
							
								
									70a3b22afb
								
							
						
					
					
						commit
						0495eed913
					
				
							
								
								
									
										435
									
								
								const.h
									
									
									
									
									
								
							
							
						
						
									
										435
									
								
								const.h
									
									
									
									
									
								
							@ -26,170 +26,170 @@
 | 
			
		||||
 | 
			
		||||
// Déclaration des constantes ////////////////////////////////////////////////
 | 
			
		||||
 | 
			
		||||
#define M_2PI 6.28318530717958647692528676656
 | 
			
		||||
#define M_2PI 6.28318530717958647692528676656 ///< Hmm, pie...
 | 
			
		||||
 | 
			
		||||
#define PERCENTAGE_VERSION     "99.0%" // Libellé du pourcentage de la version ß
 | 
			
		||||
#define VERSION1                  2     // |
 | 
			
		||||
#define VERSION2                  0     // |_ Numéro de version découpé en
 | 
			
		||||
#define BETA1                     98    // |  plusieurs parties => 2.0 ß95.5%
 | 
			
		||||
#define BETA2                     0     // |  (utilisé pour le fichier de config)
 | 
			
		||||
#define ALPHA_BETA                "ß"   // Type de la version "Þ" ou "ß"
 | 
			
		||||
#define MAX_VIDEO_MODES           100   // Nombre de modes vidéo maxi
 | 
			
		||||
#define NB_BUTTONS                38    // Nombre de boutons à gérer
 | 
			
		||||
#define NB_SHORTCUTS              134   // Nombre de combinaisons de touches
 | 
			
		||||
#define NB_SPECIAL_SHORTCUTS      72    // Nombre de touches spéciales
 | 
			
		||||
#define NB_OPERATIONS             33    // Nombre d'opérations gérées par le moteur
 | 
			
		||||
#define NB_ZOOM_FACTORS           12    // Nombre de facteurs de zoom
 | 
			
		||||
#define MENU_WIDTH                254   // Largeur du menu en taille réelle
 | 
			
		||||
#define MENU_HEIGHT               44    // Hauteur du menu en taille réelle
 | 
			
		||||
#define NB_CURSOR_SPRITES         8     // Nombre de sprites de curseur
 | 
			
		||||
#define CURSOR_SPRITE_WIDTH       15    // Largeur d'un sprite de curseur en pixels
 | 
			
		||||
#define CURSOR_SPRITE_HEIGHT      15    // Hauteur d'un sprite de curseur en pixels
 | 
			
		||||
#define NB_EFFECTS_SPRITES        9     // Nombre de sprites d'effets
 | 
			
		||||
#define NB_MENU_SPRITES           20    // Nombre de sprites de menu
 | 
			
		||||
#define MENU_SPRITE_WIDTH         14    // Largeur d'un sprite de menu en pixels
 | 
			
		||||
#define MENU_SPRITE_HEIGHT        14    // Hauteur d'un sprite de menu en pixels
 | 
			
		||||
#define PAINTBRUSH_WIDTH          16    // Largeur d'un sprite de pinceau prédéfini
 | 
			
		||||
#define PAINTBRUSH_HEIGHT         16    // Hauteur d'un sprite de pinceau prédéfini
 | 
			
		||||
#define MAX_PAINTBRUSH_SIZE       127   // Taille maxi des pinceaux
 | 
			
		||||
#define NB_ICON_SPRITES           7     // Nombre de sprites de drives
 | 
			
		||||
#define ICON_SPRITE_WIDTH         8     // Largeur d'un sprite de drive en pixels
 | 
			
		||||
#define ICON_SPRITE_HEIGHT        8     // Hauteur d'un sprite de drive en pixels
 | 
			
		||||
#define NB_PAINTBRUSH_SPRITES     48    // Nombre de sprites de pinceau
 | 
			
		||||
#define NB_PRESET_SIEVE           12    // Nombre de trames prédéfinies
 | 
			
		||||
#define OPERATION_STACK_SIZE      16    // Nombre maximum d'éléments utilisés par les opérations
 | 
			
		||||
#define MAX_DISPLAYABLE_PATH      37    // Taille maximum affichable du répertoire courant dans les fenêtres du fileselect
 | 
			
		||||
#define COMMENT_SIZE              32    // Taille maxi des commentaires pour le PKM
 | 
			
		||||
#define NB_MAX_PAGES_UNDO         99    // Nombre maximal de pages d'undo
 | 
			
		||||
#define DEFAULT_ZOOM_FACTOR        4    // Facteur de zoom initial
 | 
			
		||||
#define MAX_PATH_CHARACTERS      260    // Le nombre de caractères maxi pour un nom de fichier avec chemin complet
 | 
			
		||||
#define NB_BOOKMARKS               4    // Nombre de boutons "signet" dans l'ecran Save/Load
 | 
			
		||||
// Caractères présents dans les deux fontes
 | 
			
		||||
#define PERCENTAGE_VERSION     "99.0%"  ///< Version label, for display purpose
 | 
			
		||||
#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 ALPHA_BETA                "ß"   ///< Status of Grafx2...
 | 
			
		||||
#define MAX_VIDEO_MODES           100   ///< Maximum number of video modes Grafx2 can propose.
 | 
			
		||||
#define NB_SHORTCUTS              134   ///< Number of actions that can have a key combination associated to it.
 | 
			
		||||
#define NB_ZOOM_FACTORS           12    ///< 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         8     ///< Number of available mouse cursor sprites.
 | 
			
		||||
#define CURSOR_SPRITE_WIDTH       15    ///< Width of a mouse cursor sprite.
 | 
			
		||||
#define CURSOR_SPRITE_HEIGHT      15    ///< Height of a mouse cursor sprite.
 | 
			
		||||
#define NB_EFFECTS_SPRITES        9     ///< Number of effect sprites.
 | 
			
		||||
#define NB_MENU_SPRITES           20    ///< Number of menu sprites.
 | 
			
		||||
#define MENU_SPRITE_WIDTH         14    ///< Width of a menu sprite in pixels
 | 
			
		||||
#define MENU_SPRITE_HEIGHT        14    ///< Height of a menu sprite 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      260    ///< 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       '…'
 | 
			
		||||
 | 
			
		||||
// On impose à l'allocation dynamique des pages de backups de conserver un
 | 
			
		||||
// minimum de 256 Ko pour que le reste du programme puisse continuer à
 | 
			
		||||
// fonctionner.
 | 
			
		||||
///
 | 
			
		||||
/// 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     // Indique une direction (ou click) à gauche
 | 
			
		||||
#define RIGHT_SIDE                   2     // Indique une direction (ou click) à droite
 | 
			
		||||
#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     // [ Û±±° ]
 | 
			
		||||
#define INITIAL_SEPARATOR_PROPORTION 0.3   // proportion de la zone non-zoomée en largeur par rapport à l'écran
 | 
			
		||||
#define NB_ZOOMED_PIXELS_MIN         4     // Nombre minimal de pixels zoomés en largeur (Note: En dessous de 4, on ne peut plus scroller!)
 | 
			
		||||
#define SEPARATOR_WIDTH              6     ///< Width of the separator between the normal and the zoomed view
 | 
			
		||||
#define INITIAL_SEPARATOR_PROPORTION 0.3   ///< 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__)
 | 
			
		||||
   #define PARENT_DIR "/"
 | 
			
		||||
#else
 | 
			
		||||
   /// Filename that means "parent directory" for your operating system.
 | 
			
		||||
   #define PARENT_DIR ".."
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
  // Les différents formats de fichiers:
 | 
			
		||||
// -- File formats
 | 
			
		||||
 | 
			
		||||
#ifndef __no_pnglib__
 | 
			
		||||
#define NB_KNOWN_FORMATS         13    // Nombre de formats connus (devrait être la valeur maximale de NB_FORMATS_LOAD et NB_FORMATS_SAVE, mais plus généralement: Card({NB_FORMATS_LOAD} UNION {NB_FORMATS_SAVE}))
 | 
			
		||||
#define NB_FORMATS_LOAD          13    // Nombre de formats que l'on sait charger
 | 
			
		||||
#define NB_FORMATS_SAVE          13    // Nombre de formats que l'on sait sauver
 | 
			
		||||
#define NB_KNOWN_FORMATS         13    ///< Total number of known file formats.
 | 
			
		||||
#define NB_FORMATS_LOAD          13    ///< Number of file formats that grafx2 can load.
 | 
			
		||||
#define NB_FORMATS_SAVE          13    ///< Number of file formats that grafx2 can save.
 | 
			
		||||
#else
 | 
			
		||||
// Without pnglib
 | 
			
		||||
#define NB_KNOWN_FORMATS         12    // Nombre de formats connus (devrait être la valeur maximale de NB_FORMATS_LOAD et NB_FORMATS_SAVE, mais plus généralement: Card({NB_FORMATS_LOAD} UNION {NB_FORMATS_SAVE}))
 | 
			
		||||
#define NB_FORMATS_LOAD          12    // Nombre de formats que l'on sait charger
 | 
			
		||||
#define NB_FORMATS_SAVE          12    // Nombre de formats que l'on sait sauver
 | 
			
		||||
#define NB_KNOWN_FORMATS         12    ///< Total number of known file formats.
 | 
			
		||||
#define NB_FORMATS_LOAD          12    ///< Number of file formats that grafx2 can load.
 | 
			
		||||
#define NB_FORMATS_SAVE          12    ///< Number of file formats that grafx2 can save.
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/// List of file formats recognized by grafx2
 | 
			
		||||
enum FILE_FORMATS
 | 
			
		||||
{
 | 
			
		||||
  FORMAT_PKM=1,      // |
 | 
			
		||||
  FORMAT_LBM,        // |
 | 
			
		||||
  FORMAT_GIF,        // |    Il faudra penser à réordonner
 | 
			
		||||
  FORMAT_BMP,        // |  les données sur les formats dans
 | 
			
		||||
  FORMAT_PCX,        // |  GLOBAL.H si on modifie ces cons-
 | 
			
		||||
  FORMAT_IMG,        // |_ tantes.
 | 
			
		||||
  FORMAT_SCx,        // |
 | 
			
		||||
  FORMAT_PI1,        // |    Elles représentent l'indice où
 | 
			
		||||
  FORMAT_PC1,        // |  l'on doit aller piocher ces
 | 
			
		||||
  FORMAT_CEL,        // |  données.
 | 
			
		||||
  FORMAT_KCF,        // |
 | 
			
		||||
  FORMAT_PAL,        // |
 | 
			
		||||
  FORMAT_PNG         // |
 | 
			
		||||
  FORMAT_ANY=0, ///< This is not really a file format, it's reserverd for the "*.*" filter option.
 | 
			
		||||
  FORMAT_PKM=1,
 | 
			
		||||
  FORMAT_LBM,
 | 
			
		||||
  FORMAT_GIF,
 | 
			
		||||
  FORMAT_BMP,
 | 
			
		||||
  FORMAT_PCX,
 | 
			
		||||
  FORMAT_IMG,
 | 
			
		||||
  FORMAT_SCx,
 | 
			
		||||
  FORMAT_PI1,
 | 
			
		||||
  FORMAT_PC1,
 | 
			
		||||
  FORMAT_CEL,
 | 
			
		||||
  FORMAT_KCF,
 | 
			
		||||
  FORMAT_PAL,
 | 
			
		||||
  FORMAT_PNG
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#define DEFAULT_FILEFORMAT    FORMAT_GIF // Format par défaut (ah bon? oh!)
 | 
			
		||||
 | 
			
		||||
  // Les différentes erreurs:
 | 
			
		||||
/// Default format for 'save as'
 | 
			
		||||
#define DEFAULT_FILEFORMAT    FORMAT_GIF
 | 
			
		||||
 | 
			
		||||
/// Error codes for ::Error()
 | 
			
		||||
enum ERROR_CODES
 | 
			
		||||
{
 | 
			
		||||
  // 0 = Red flash on screen, non-fatal error
 | 
			
		||||
  ERROR_GUI_MISSING=1,     // 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_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_SORRY_SORRY_SORRY  // (Page allocation error that shouldn't ever happen, now)
 | 
			
		||||
  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_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_SORRY_SORRY_SORRY  ///< (Page allocation error that shouldn't ever happen, now)
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
  // Les différents types de pixels
 | 
			
		||||
 | 
			
		||||
// Available pixel scalers
 | 
			
		||||
enum PIXEL_RATIO
 | 
			
		||||
{
 | 
			
		||||
    PIXEL_SIMPLE,
 | 
			
		||||
    PIXEL_SIMPLE=0,
 | 
			
		||||
    PIXEL_WIDE,
 | 
			
		||||
    PIXEL_TALL,
 | 
			
		||||
    PIXEL_DOUBLE
 | 
			
		||||
    PIXEL_DOUBLE,
 | 
			
		||||
    PIXEL_MAX ///< Number of elements in enum
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
  // Les différentes catégories de bouton:
 | 
			
		||||
 | 
			
		||||
/// Different kinds of menu button behavior.
 | 
			
		||||
enum FAMILY_OF_BUTTONS
 | 
			
		||||
{
 | 
			
		||||
  FAMILY_TOOL=1,          // Outils de dessin (exemple : Freehand draw)
 | 
			
		||||
  FAMILY_INTERRUPTION,     // Opération éphémère (exemple : changement de brosse) > Interruption de l'opération courante pour faire autre chose, puis on revient
 | 
			
		||||
  FAMILY_INSTANT,       // Pif paf (exemple : changement de couleur) > ça sera fini dès qu'on lache le bouton, pas d'utilisation de la pile d'opérations
 | 
			
		||||
  FAMILY_TOOLBAR,          // Cache/Montre la barre d'outils
 | 
			
		||||
  FAMILY_EFFECTS            // Effets
 | 
			
		||||
  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
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
  // Les différentes formes de bouton:
 | 
			
		||||
 | 
			
		||||
// The different kinds of buttons in menus or windows.
 | 
			
		||||
enum BUTTON_SHAPES
 | 
			
		||||
{
 | 
			
		||||
  BUTTON_SHAPE_NO_FRAME,            // Ex: la palette
 | 
			
		||||
  BUTTON_SHAPE_RECTANGLE,             // Ex: la plupart
 | 
			
		||||
  BUTTON_SHAPE_TRIANGLE_TOP_LEFT,  // Ex: Rectangles vides
 | 
			
		||||
  BUTTON_SHAPE_TRIANGLE_BOTTOM_RIGHT    // Ex: Rectangles pleins
 | 
			
		||||
  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.
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
  // Les différentes formes de curseur:
 | 
			
		||||
 | 
			
		||||
/// The different "mouse cursor" shapes
 | 
			
		||||
enum CURSOR_SHAPES
 | 
			
		||||
{
 | 
			
		||||
  CURSOR_SHAPE_ARROW,
 | 
			
		||||
  CURSOR_SHAPE_TARGET,              // Utilise le pinceau
 | 
			
		||||
  CURSOR_SHAPE_COLORPICKER,      // Utilise le pinceau
 | 
			
		||||
  CURSOR_SHAPE_TARGET,           ///< This one uses the paintbrush
 | 
			
		||||
  CURSOR_SHAPE_COLORPICKER,      ///< This one uses the paintbrush
 | 
			
		||||
  CURSOR_SHAPE_HOURGLASS,
 | 
			
		||||
  CURSOR_SHAPE_MULTIDIRECTIONNAL,
 | 
			
		||||
  CURSOR_SHAPE_HORIZONTAL,
 | 
			
		||||
  CURSOR_SHAPE_THIN_TARGET,         // Utilise le pinceau
 | 
			
		||||
  CURSOR_SHAPE_THIN_COLORPICKER, // Utilise le pinceau
 | 
			
		||||
  CURSOR_SHAPE_THIN_TARGET,      ///< This one uses the paintbrush
 | 
			
		||||
  CURSOR_SHAPE_THIN_COLORPICKER, ///< This one uses the paintbrush
 | 
			
		||||
  CURSOR_SHAPE_XOR_TARGET,
 | 
			
		||||
  CURSOR_SHAPE_XOR_RECTANGLE,
 | 
			
		||||
  CURSOR_SHAPE_XOR_ROTATION
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
  // Les différentes formes de pinceaux (les types de pinceaux doivent être au début)
 | 
			
		||||
 | 
			
		||||
/// The different shapes that can be used as a paintbrush (paintbrush types go in the beginning)
 | 
			
		||||
enum PAINTBRUSH_SHAPES
 | 
			
		||||
{
 | 
			
		||||
  PAINTBRUSH_SHAPE_ROUND,
 | 
			
		||||
@ -198,25 +198,24 @@ enum PAINTBRUSH_SHAPES
 | 
			
		||||
  PAINTBRUSH_SHAPE_VERTICAL_BAR,
 | 
			
		||||
  PAINTBRUSH_SHAPE_SLASH,
 | 
			
		||||
  PAINTBRUSH_SHAPE_ANTISLASH,
 | 
			
		||||
  PAINTBRUSH_SHAPE_RANDOM,
 | 
			
		||||
  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_MISC,// Ce doit être le dernier des types de pinceaux, comme ça il indique le nombre de types de pinceaux (-1)
 | 
			
		||||
  PAINTBRUSH_SHAPE_POINT, // Utilisé pour réduire de pinceau à 1 point dans certaines opérations
 | 
			
		||||
  PAINTBRUSH_SHAPE_COLOR_BRUSH,
 | 
			
		||||
  PAINTBRUSH_SHAPE_MONO_BRUSH
 | 
			
		||||
  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 colorpicker.
 | 
			
		||||
  PAINTBRUSH_SHAPE_COLOR_BRUSH, ///< User's brush, in color mode
 | 
			
		||||
  PAINTBRUSH_SHAPE_MONO_BRUSH   ///< User's brush, in mono mode
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
  // Les différents états de bouton:
 | 
			
		||||
 | 
			
		||||
/// Normal resting state for a menu button.
 | 
			
		||||
#define BUTTON_RELEASED 0
 | 
			
		||||
#define BUTTON_PRESSED 1
 | 
			
		||||
 | 
			
		||||
  // Les différents modes de Shade
 | 
			
		||||
/// State of a menu button that is being pressed.
 | 
			
		||||
#define BUTTON_PRESSED  1
 | 
			
		||||
 | 
			
		||||
/// The different modes of the Shade
 | 
			
		||||
enum SHADE_MODES
 | 
			
		||||
{
 | 
			
		||||
  SHADE_MODE_NORMAL,
 | 
			
		||||
@ -224,39 +223,39 @@ enum SHADE_MODES
 | 
			
		||||
  SHADE_MODE_NOSAT
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
  // Les différents chunks du fichier .CFG
 | 
			
		||||
 | 
			
		||||
/// Identifiers for the chunks (data blocks) of gfx2.cfg
 | 
			
		||||
enum CHUNKS_CFG
 | 
			
		||||
{
 | 
			
		||||
  CHUNK_KEYS            = 0,
 | 
			
		||||
  CHUNK_VIDEO_MODES        = 1,
 | 
			
		||||
  CHUNK_SHADE              = 2,
 | 
			
		||||
  CHUNK_MASK             = 3,
 | 
			
		||||
  CHUNK_STENCIL            = 4,
 | 
			
		||||
  CHUNK_GRADIENTS           = 5,
 | 
			
		||||
  CHUNK_SMOOTH             = 6,
 | 
			
		||||
  CHUNK_EXCLUDE_COLORS     = 7,
 | 
			
		||||
  CHUNK_QUICK_SHADE        = 8,
 | 
			
		||||
  CHUNK_GRID             = 9,
 | 
			
		||||
  CHUNK_MAX 
 | 
			
		||||
  CHUNK_VIDEO_MODES     = 1,
 | 
			
		||||
  CHUNK_SHADE           = 2,
 | 
			
		||||
  CHUNK_MASK            = 3,
 | 
			
		||||
  CHUNK_STENCIL         = 4,
 | 
			
		||||
  CHUNK_GRADIENTS       = 5,
 | 
			
		||||
  CHUNK_SMOOTH          = 6,
 | 
			
		||||
  CHUNK_EXCLUDE_COLORS  = 7,
 | 
			
		||||
  CHUNK_QUICK_SHADE     = 8,
 | 
			
		||||
  CHUNK_GRID            = 9,
 | 
			
		||||
  CHUNK_MAX
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
  // Les différents types de lecteurs:
 | 
			
		||||
 | 
			
		||||
/// Identifiers for the 8x8 icons of ::GFX_icon_sprite
 | 
			
		||||
enum ICON_TYPES
 | 
			
		||||
{
 | 
			
		||||
  ICON_FLOPPY_3_5,   // 0: Diskette 3"«
 | 
			
		||||
  ICON_FLOPPY_5_25,  // 1: Diskette 5"¬
 | 
			
		||||
  ICON_HDD,          // 2: HDD
 | 
			
		||||
  ICON_CDROM,        // 3: CD-ROM
 | 
			
		||||
  ICON_NETWORK,      // 4: Logique (réseau?)
 | 
			
		||||
  ICON_FLOPPY_3_5=0, ///< 3½" Floppy disk
 | 
			
		||||
  ICON_FLOPPY_5_25,  ///< 5¼" 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
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
  // Les différents boutons:
 | 
			
		||||
 | 
			
		||||
/// Identifiers for the buttons in the menu.
 | 
			
		||||
enum BUTTON_NUMBERS
 | 
			
		||||
{
 | 
			
		||||
  BUTTON_PAINTBRUSHES,
 | 
			
		||||
  BUTTON_PAINTBRUSHES=0,
 | 
			
		||||
  BUTTON_ADJUST,
 | 
			
		||||
  BUTTON_DRAW,
 | 
			
		||||
  BUTTON_CURVES,
 | 
			
		||||
@ -293,29 +292,32 @@ enum BUTTON_NUMBERS
 | 
			
		||||
  BUTTON_PAL_LEFT,
 | 
			
		||||
  BUTTON_PAL_RIGHT,
 | 
			
		||||
  BUTTON_CHOOSE_COL,
 | 
			
		||||
  BUTTON_HIDE
 | 
			
		||||
  BUTTON_HIDE,
 | 
			
		||||
  NB_BUTTONS            ///< Number of buttons in the menu bar.
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
  // Les actions des touches spéciales
 | 
			
		||||
 | 
			
		||||
///
 | 
			
		||||
/// 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,                
 | 
			
		||||
  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_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,
 | 
			
		||||
@ -353,68 +355,65 @@ enum SPECIAL_ACTIONS
 | 
			
		||||
  SPECIAL_BOTTOM_LEFT_ATTACHMENT,
 | 
			
		||||
  SPECIAL_BOTTOM_RIGHT_ATTACHMENT,
 | 
			
		||||
  SPECIAL_EXCLUDE_COLORS_MENU,
 | 
			
		||||
  SPECIAL_SHADE_MODE,       // |
 | 
			
		||||
  SPECIAL_SHADE_MENU,       // |
 | 
			
		||||
  SPECIAL_QUICK_SHADE_MODE, // |
 | 
			
		||||
  SPECIAL_QUICK_SHADE_MENU, // |
 | 
			
		||||
  SPECIAL_STENCIL_MODE,     // |
 | 
			
		||||
  SPECIAL_STENCIL_MENU,     // |
 | 
			
		||||
  SPECIAL_MASK_MODE,        // |  Il faut que le premier effet soit
 | 
			
		||||
  SPECIAL_MASK_MENU,        // |  SPECIAL_SHADE_MODE, et que le
 | 
			
		||||
  SPECIAL_GRID_MODE,        // |  dernier soit SPECIAL_TILING_MENU,
 | 
			
		||||
  SPECIAL_GRID_MENU,        // |_ et que seuls des effets soient
 | 
			
		||||
  SPECIAL_SIEVE_MODE,       // |  définis entre ces deux là car
 | 
			
		||||
  SPECIAL_SIEVE_MENU,       // |  des tests sur cet intervalle sont
 | 
			
		||||
  SPECIAL_COLORIZE_MODE,    // |  faits dans le moteur.
 | 
			
		||||
  SPECIAL_COLORIZE_MENU,    // |
 | 
			
		||||
  SPECIAL_SMOOTH_MODE,      // |
 | 
			
		||||
  SPECIAL_SMOOTH_MENU,      // |
 | 
			
		||||
  SPECIAL_SMEAR_MODE,       // |
 | 
			
		||||
  SPECIAL_TILING_MODE,      // |
 | 
			
		||||
  SPECIAL_TILING_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_TILING_MODE,
 | 
			
		||||
  SPECIAL_TILING_MENU,            ///< This must be the last of the "effects" family
 | 
			
		||||
  NB_SPECIAL_SHORTCUTS            ///< Number of special shortcuts
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
  // Définition des opérations:
 | 
			
		||||
 | 
			
		||||
/// Identifiers of the operations, ie tools you use on the image.
 | 
			
		||||
enum OPERATIONS
 | 
			
		||||
{
 | 
			
		||||
  OPERATION_CONTINUOUS_DRAW,     // Dessin à la main continu
 | 
			
		||||
  OPERATION_DISCONTINUOUS_DRAW,  // Dessin à la main discontinu
 | 
			
		||||
  OPERATION_POINT_DRAW,       // Dessin à la main point par point
 | 
			
		||||
  OPERATION_FILLED_CONTOUR,     // Contour rempli
 | 
			
		||||
  OPERATION_LINE,              // Lignes
 | 
			
		||||
  OPERATION_K_LIGNE,            // Lignes reliées
 | 
			
		||||
  OPERATION_CENTERED_LINES,    // Lignes concentriques
 | 
			
		||||
  OPERATION_EMPTY_RECTANGLE,     // Rectangle vide
 | 
			
		||||
  OPERATION_FILLED_RECTANGLE,    // Rectangle plein
 | 
			
		||||
  OPERATION_EMPTY_CIRCLE,        // Cercle vide
 | 
			
		||||
  OPERATION_FILLED_CIRCLE,       // Cercle plein
 | 
			
		||||
  OPERATION_EMPTY_ELLIPSE,       // Ellipse vide
 | 
			
		||||
  OPERATION_FILLED_ELLIPSE,     // Ellipse pleine
 | 
			
		||||
  OPERATION_FILL,               // Fill
 | 
			
		||||
  OPERATION_REPLACE,          // Replace couleur
 | 
			
		||||
  OPERATION_GRAB_BRUSH,       // Prise de brosse rectangulaire
 | 
			
		||||
  OPERATION_POLYBRUSH,         // Prise d'une brosse multiforme
 | 
			
		||||
  OPERATION_COLORPICK,            // Récupération d'une couleur
 | 
			
		||||
  OPERATION_MAGNIFY,              // Positionnement de la fenêtre de loupe
 | 
			
		||||
  OPERATION_3_POINTS_CURVE,    // Courbe à 3 points
 | 
			
		||||
  OPERATION_4_POINTS_CURVE,    // Courbe à 4 points
 | 
			
		||||
  OPERATION_AIRBRUSH,              // Spray
 | 
			
		||||
  OPERATION_POLYGON,           // Polygone
 | 
			
		||||
  OPERATION_POLYFORM,           // Polyforme
 | 
			
		||||
  OPERATION_POLYFILL,           // Polyfill
 | 
			
		||||
  OPERATION_FILLED_POLYFORM,    // Polyforme rempli
 | 
			
		||||
  OPERATION_SCROLL,             // Scroll
 | 
			
		||||
  OPERATION_GRAD_CIRCLE,     // Cercles dégradés
 | 
			
		||||
  OPERATION_GRAD_ELLIPSE,   // Ellipses dégradées
 | 
			
		||||
  OPERATION_ROTATE_BRUSH,     // Faire tourner brosse
 | 
			
		||||
  OPERATION_STRETCH_BRUSH,      // Etirer brosse
 | 
			
		||||
  OPERATION_DISTORT_BRUSH,    // Deformer brosse
 | 
			
		||||
  OPERATION_GRAD_RECTANGLE,  // Rectangle dégradé
 | 
			
		||||
 | 
			
		||||
  OPERATION_NONE
 | 
			
		||||
  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_LIGNE,           ///< Linked lines
 | 
			
		||||
  OPERATION_CENTERED_LINES,    ///< Centered lines
 | 
			
		||||
  OPERATION_EMPTY_RECTANGLE,   ///< Empty rectangle
 | 
			
		||||
  OPERATION_FILLED_RECTANGLE,  ///< Filled rectangle
 | 
			
		||||
  OPERATION_EMPTY_CIRCLE,      ///< Empty circle
 | 
			
		||||
  OPERATION_FILLED_CIRCLE,     ///< Filled circle
 | 
			
		||||
  OPERATION_EMPTY_ELLIPSE,     ///< Empty ellipse
 | 
			
		||||
  OPERATION_FILLED_ELLIPSE,    ///< Filled ellipse
 | 
			
		||||
  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,       ///< Gradient-filled circle
 | 
			
		||||
  OPERATION_GRAD_ELLIPSE,      ///< Gradient-filled ellipse
 | 
			
		||||
  OPERATION_ROTATE_BRUSH,      ///< Rotate brush
 | 
			
		||||
  OPERATION_STRETCH_BRUSH,     ///< Stretch brush
 | 
			
		||||
  OPERATION_DISTORT_BRUSH,     ///< Distort brush
 | 
			
		||||
  OPERATION_GRAD_RECTANGLE,    ///< Gradient-filled rectangle
 | 
			
		||||
  NB_OPERATIONS                ///< Number of operations handled by the engine
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										2
									
								
								engine.c
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								engine.c
									
									
									
									
									
								
							@ -1597,7 +1597,7 @@ T_Dropdown_button * Window_set_dropdown_button(word x_pos,word y_pos,word width,
 | 
			
		||||
  if (label && label[0])
 | 
			
		||||
    Print_in_window(temp->Pos_X+2,temp->Pos_Y+(temp->Height-7)/2,label,MC_Black,MC_Light);
 | 
			
		||||
  if (display_arrow)
 | 
			
		||||
    Window_display_icon_sprite(temp->Pos_X+temp->Width-10,temp->Pos_Y+(temp->Height-7)/2,6);
 | 
			
		||||
    Window_display_icon_sprite(temp->Pos_X+temp->Width-10,temp->Pos_Y+(temp->Height-7)/2,ICON_DROPDOWN);
 | 
			
		||||
  
 | 
			
		||||
  return temp;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -967,7 +967,7 @@ byte Button_Load_or_Save(byte load, byte image)
 | 
			
		||||
    else
 | 
			
		||||
      Open_window(310,200,"Save brush");
 | 
			
		||||
    Window_set_normal_button(198,180,51,14,"Save",0,1,SDLK_RETURN); // 1
 | 
			
		||||
    if (Main_format==0) // Correction du *.*
 | 
			
		||||
    if (Main_format==FORMAT_ANY) // Correction du *.*
 | 
			
		||||
    {
 | 
			
		||||
      Main_format=Main_fileformat;
 | 
			
		||||
      Main_fileselector_position=0;
 | 
			
		||||
@ -1004,7 +1004,7 @@ byte Button_Load_or_Save(byte load, byte image)
 | 
			
		||||
  // Dropdown pour les formats de fichier
 | 
			
		||||
  formats_dropdown=
 | 
			
		||||
    Window_set_dropdown_button(69,28,49,11,0,
 | 
			
		||||
      (Main_format==0)?"*.*":File_formats[Main_format-1].Extension,
 | 
			
		||||
      (Main_format==FORMAT_ANY)?"*.*":File_formats[Main_format-1].Extension,
 | 
			
		||||
      1,0,1,RIGHT_SIDE|LEFT_SIDE); // 6
 | 
			
		||||
  if (load)
 | 
			
		||||
    Window_dropdown_add_item(formats_dropdown,0,"*.*");
 | 
			
		||||
@ -1259,7 +1259,7 @@ byte Button_Load_or_Save(byte load, byte image)
 | 
			
		||||
              dummy=1;
 | 
			
		||||
          if (!dummy)
 | 
			
		||||
          {
 | 
			
		||||
            if (Main_format)
 | 
			
		||||
            if (Main_format != FORMAT_ANY)
 | 
			
		||||
            {
 | 
			
		||||
              if(!Directory_exists(Main_filename))
 | 
			
		||||
              {
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										628
									
								
								global.h
									
									
									
									
									
								
							
							
						
						
									
										628
									
								
								global.h
									
									
									
									
									
								
							@ -50,11 +50,11 @@ GFX2_GLOBAL word Config_Key[NB_SPECIAL_SHORTCUTS][2];
 | 
			
		||||
/// A video mode (resolution) usable by Grafx2.
 | 
			
		||||
typedef struct
 | 
			
		||||
{
 | 
			
		||||
  short  Width; ///< Screen width
 | 
			
		||||
  short  Height; ///< Screen height
 | 
			
		||||
  byte   Mode; ///< Unused (used to be Mode-X, SVGA, etc)
 | 
			
		||||
  short  Width;      ///< Screen width
 | 
			
		||||
  short  Height;     ///< Screen height
 | 
			
		||||
  byte   Mode;       ///< Unused (used to be Mode-X, SVGA, etc)
 | 
			
		||||
  word   Fullscreen; ///< 0 for window, 1 for fullscreen
 | 
			
		||||
  byte   State; ///< How good is the mode supported. 0:Good (white) 1:OK (light) 2:So-so (dark) 4:User-disabled (black); +128 => System doesn't support it at all.
 | 
			
		||||
  byte   State;      ///< How good is the mode supported. 0:Good (white) 1:OK (light) 2:So-so (dark) 4:User-disabled (black); +128 => System doesn't support it at all.
 | 
			
		||||
} T_Video_mode;
 | 
			
		||||
 | 
			
		||||
/// Array of all video modes supported by your platform. Actually filled up to ::Nb_video_modes, excluded.
 | 
			
		||||
@ -66,10 +66,10 @@ GFX2_GLOBAL int  Nb_video_modes;
 | 
			
		||||
/// A default 256-color palette.
 | 
			
		||||
GFX2_GLOBAL T_Palette Default_palette;
 | 
			
		||||
 | 
			
		||||
// Menu colors
 | 
			
		||||
// -- Menu colors
 | 
			
		||||
 | 
			
		||||
GFX2_GLOBAL byte MC_Black; ///< Index of color to use as "black" in the GUI menus.
 | 
			
		||||
GFX2_GLOBAL byte MC_Dark; ///< Index of color to use as "dark grey" in the GUI menus.
 | 
			
		||||
GFX2_GLOBAL byte MC_Dark;  ///< Index of color to use as "dark grey" in the GUI menus.
 | 
			
		||||
GFX2_GLOBAL byte MC_Light; ///< Index of color to use as "light grey" in the GUI menus.
 | 
			
		||||
GFX2_GLOBAL byte MC_White; ///< Index of color to use as "white" in the GUI menus.
 | 
			
		||||
GFX2_GLOBAL byte MC_Trans; ///< Index of color to use as "transparent" while loading the GUI file.
 | 
			
		||||
@ -119,12 +119,12 @@ GFX2_GLOBAL byte Mouse_fix_factor_X;
 | 
			
		||||
/// Divisor for the mouse coordinates recieved. No target currently needs it, should be left at 1.
 | 
			
		||||
GFX2_GLOBAL byte Mouse_fix_factor_Y;
 | 
			
		||||
 | 
			
		||||
/// 
 | 
			
		||||
///
 | 
			
		||||
/// This boolean is true when the current operation allows changing the
 | 
			
		||||
/// foreground or background color.
 | 
			
		||||
GFX2_GLOBAL byte Allow_color_change_during_operation;
 | 
			
		||||
 | 
			
		||||
// Mouse cursor data
 | 
			
		||||
// -- Mouse cursor data
 | 
			
		||||
 | 
			
		||||
/// Current mouse cursor. Value is in enum ::CURSOR_SHAPES
 | 
			
		||||
GFX2_GLOBAL byte Cursor_shape;
 | 
			
		||||
@ -145,7 +145,7 @@ GFX2_GLOBAL byte GFX_cursor_sprite[NB_CURSOR_SPRITES][CURSOR_SPRITE_HEIGHT][CURS
 | 
			
		||||
/// Storage for the graphics under the mouse cursor. Used by ::Hide_cursor and ::Display_cursor
 | 
			
		||||
GFX2_GLOBAL byte CURSOR_BACKGROUND[CURSOR_SPRITE_HEIGHT][CURSOR_SPRITE_WIDTH];
 | 
			
		||||
 | 
			
		||||
// Paintbrush data
 | 
			
		||||
// -- Paintbrush data
 | 
			
		||||
 | 
			
		||||
/// Active paintbrush. It's an index in enum ::PAINTBRUSH_SHAPES
 | 
			
		||||
GFX2_GLOBAL byte  Paintbrush_shape;
 | 
			
		||||
@ -184,7 +184,7 @@ GFX2_GLOBAL short Paintbrush_offset_X;
 | 
			
		||||
/// Position of current paintbrush's handle
 | 
			
		||||
GFX2_GLOBAL short Paintbrush_offset_Y;
 | 
			
		||||
 | 
			
		||||
// Graphic commands
 | 
			
		||||
// -- Graphic commands
 | 
			
		||||
 | 
			
		||||
/// On the screen, draw a point.
 | 
			
		||||
GFX2_GLOBAL Func_pixel Pixel;
 | 
			
		||||
@ -231,7 +231,7 @@ GFX2_GLOBAL Func_display_brush_color_zoom Clear_brush_scaled;
 | 
			
		||||
/// Draw an arbitrary brush on screen (not the current brush)
 | 
			
		||||
GFX2_GLOBAL Func_draw_brush Display_brush;
 | 
			
		||||
 | 
			
		||||
// Screen data
 | 
			
		||||
// -- Screen data
 | 
			
		||||
 | 
			
		||||
/// Requested window width. This is set when the user resizes the window.
 | 
			
		||||
GFX2_GLOBAL int   Resize_width;
 | 
			
		||||
@ -303,7 +303,7 @@ GFX2_GLOBAL int Pixel_width;
 | 
			
		||||
GFX2_GLOBAL int Pixel_height;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// Current image data
 | 
			
		||||
// -- Current image data
 | 
			
		||||
 | 
			
		||||
/// Pointer to the pixel data of the main image
 | 
			
		||||
GFX2_GLOBAL byte *    Main_screen;
 | 
			
		||||
@ -348,7 +348,7 @@ GFX2_GLOBAL char  Main_comment[COMMENT_SIZE+1];
 | 
			
		||||
GFX2_GLOBAL short Main_separator_position;
 | 
			
		||||
/// X position (in screen coordinates) of the first pixel of the magnified view.
 | 
			
		||||
GFX2_GLOBAL short Main_X_zoom;
 | 
			
		||||
/// Proportion of the non-magnified part of the screen. 
 | 
			
		||||
/// Proportion of the non-magnified part of the screen.
 | 
			
		||||
GFX2_GLOBAL float Main_separator_proportion;
 | 
			
		||||
/// Boolean, true if the main image has the magnifier active.
 | 
			
		||||
GFX2_GLOBAL byte  Main_magnifier_mode;
 | 
			
		||||
@ -363,7 +363,7 @@ GFX2_GLOBAL short Main_magnifier_offset_X;
 | 
			
		||||
/// Y position (in image space) of the pixel to display in the top left corner of the magnified view.
 | 
			
		||||
GFX2_GLOBAL short Main_magnifier_offset_Y;
 | 
			
		||||
 | 
			
		||||
// Spare page data
 | 
			
		||||
// -- Spare page data
 | 
			
		||||
 | 
			
		||||
/// Pointer to the pixel data of the spare page
 | 
			
		||||
GFX2_GLOBAL byte *    Spare_screen;
 | 
			
		||||
@ -408,7 +408,7 @@ GFX2_GLOBAL char  Spare_comment[COMMENT_SIZE+1];
 | 
			
		||||
GFX2_GLOBAL short Spare_separator_position;
 | 
			
		||||
/// X position (in screen coordinates) of the first pixel of the magnified view.
 | 
			
		||||
GFX2_GLOBAL short Spare_X_zoom;
 | 
			
		||||
/// Proportion of the non-magnified part of the screen. 
 | 
			
		||||
/// Proportion of the non-magnified part of the screen.
 | 
			
		||||
GFX2_GLOBAL float Spare_separator_proportion;
 | 
			
		||||
/// Boolean, true if the main image has the magnifier active.
 | 
			
		||||
GFX2_GLOBAL byte  Spare_magnifier_mode;
 | 
			
		||||
@ -423,7 +423,7 @@ GFX2_GLOBAL short Spare_magnifier_offset_X;
 | 
			
		||||
/// Y position (in image space) of the pixel to display in the top left corner of the magnified view.
 | 
			
		||||
GFX2_GLOBAL short Spare_magnifier_offset_Y;
 | 
			
		||||
 | 
			
		||||
// Image backups
 | 
			
		||||
// -- Image backups
 | 
			
		||||
 | 
			
		||||
/// Backup of the current screen, used during drawing when FX feedback is OFF.
 | 
			
		||||
GFX2_GLOBAL byte * Screen_backup;
 | 
			
		||||
@ -432,202 +432,313 @@ GFX2_GLOBAL T_List_of_pages * Main_backups;
 | 
			
		||||
/// List of backup pages for the spare page.
 | 
			
		||||
GFX2_GLOBAL T_List_of_pages * Spare_backups;
 | 
			
		||||
 | 
			
		||||
// Brush data
 | 
			
		||||
// -- Brush data
 | 
			
		||||
 | 
			
		||||
/// Pixel data of the current brush.
 | 
			
		||||
GFX2_GLOBAL byte * Brush;
 | 
			
		||||
GFX2_GLOBAL word Brush_offset_X; // Centre horizontal de la brosse
 | 
			
		||||
GFX2_GLOBAL word Brush_offset_Y; // Centre vertical de la brosse
 | 
			
		||||
GFX2_GLOBAL word Brush_width;    // Largeur de la brosse
 | 
			
		||||
GFX2_GLOBAL word Brush_height;    // Hauteur de la brosse
 | 
			
		||||
/// X coordinate of the brush's "hot spot". It is < ::Brush_width
 | 
			
		||||
GFX2_GLOBAL word Brush_offset_X;
 | 
			
		||||
/// Y coordinate of the brush's "hot spot". It is < ::Brush_height
 | 
			
		||||
GFX2_GLOBAL word Brush_offset_Y;
 | 
			
		||||
/// Width of the current brush.
 | 
			
		||||
GFX2_GLOBAL word Brush_width;
 | 
			
		||||
/// Height of the current brush.
 | 
			
		||||
GFX2_GLOBAL word Brush_height;
 | 
			
		||||
/// Name of the directory that holds the brush fil (after loading or saving it).
 | 
			
		||||
GFX2_GLOBAL char  Brush_file_directory[MAX_PATH_CHARACTERS];
 | 
			
		||||
/// Filename (without directory) of the brush (after loading or saving it).
 | 
			
		||||
GFX2_GLOBAL char  Brush_filename[MAX_PATH_CHARACTERS];
 | 
			
		||||
/// File format of the brush. It's a value of enum ::FILE_FORMATS
 | 
			
		||||
GFX2_GLOBAL byte  Brush_fileformat;
 | 
			
		||||
///
 | 
			
		||||
/// Fileselector "filter" format, for the brush.
 | 
			
		||||
/// It's 0 for "*.*", or a value of enum ::FILE_FORMATS
 | 
			
		||||
GFX2_GLOBAL byte  Brush_format;
 | 
			
		||||
/// Index of the first file/entry to display in the brush's fileselector.
 | 
			
		||||
GFX2_GLOBAL short Brush_fileselector_position;
 | 
			
		||||
///
 | 
			
		||||
/// Position of the "highlight" bar in the brush's fileselector. 10 Files can
 | 
			
		||||
/// be visible, so it's a number in the [0-9] range.
 | 
			
		||||
GFX2_GLOBAL short Brush_fileselector_offset;
 | 
			
		||||
/// Current directory for the brush's fileselector.
 | 
			
		||||
GFX2_GLOBAL char  Brush_current_directory[256];
 | 
			
		||||
/// File comment in the brush's fileselector (some image formats support text strings).
 | 
			
		||||
GFX2_GLOBAL char  Brush_comment[COMMENT_SIZE+1];
 | 
			
		||||
/// Indicator used for the "Rotate brush" operation.
 | 
			
		||||
GFX2_GLOBAL byte  Brush_rotation_center_is_defined;
 | 
			
		||||
/// Position of the brush's rotation center, in screen coordinates.
 | 
			
		||||
GFX2_GLOBAL short Brush_rotation_center_X;
 | 
			
		||||
/// Position of the brush's rotation center, in screen coordinates.
 | 
			
		||||
GFX2_GLOBAL short Brush_rotation_center_Y;
 | 
			
		||||
 | 
			
		||||
GFX2_GLOBAL char  Brush_file_directory[MAX_PATH_CHARACTERS];// |
 | 
			
		||||
GFX2_GLOBAL char  Brush_filename[MAX_PATH_CHARACTERS];       // |
 | 
			
		||||
GFX2_GLOBAL byte  Brush_fileformat;                           // |  Infos sur le
 | 
			
		||||
GFX2_GLOBAL byte  Brush_format;                                   // |_ sélecteur de
 | 
			
		||||
GFX2_GLOBAL short Brush_fileselector_position;                       // |  fichiers de la
 | 
			
		||||
GFX2_GLOBAL short Brush_fileselector_offset;                       // |  brosse.
 | 
			
		||||
GFX2_GLOBAL char  Brush_current_directory[256];                  // |
 | 
			
		||||
GFX2_GLOBAL char  Brush_comment[COMMENT_SIZE+1];        // |
 | 
			
		||||
// -- Menu data (toolbox)
 | 
			
		||||
 | 
			
		||||
GFX2_GLOBAL byte  Brush_rotation_center_is_defined; // |  Infos sur le
 | 
			
		||||
GFX2_GLOBAL short Brush_rotation_center_X;      // |- centre de rotation
 | 
			
		||||
GFX2_GLOBAL short Brush_rotation_center_Y;      // |  de la brosse
 | 
			
		||||
 | 
			
		||||
  // Données sur le menu
 | 
			
		||||
 | 
			
		||||
GFX2_GLOBAL byte  Menu_is_visible;        // Le menu est actif à l'écran
 | 
			
		||||
GFX2_GLOBAL word  Menu_Y;       // Ordonnée où commence le menu
 | 
			
		||||
GFX2_GLOBAL word  Menu_status_Y; // Ordonnée où commence le texte dans le menu
 | 
			
		||||
GFX2_GLOBAL byte  Menu_factor_X;      // Facteur de grossissement du menu en X
 | 
			
		||||
GFX2_GLOBAL byte  Menu_factor_Y;      // Facteur de grossissement du menu en Y
 | 
			
		||||
GFX2_GLOBAL word  Menu_palette_cell_width; // Taille d'une couleur de la palette du menu
 | 
			
		||||
/// Boolean, true if the menu has to be displayed.
 | 
			
		||||
GFX2_GLOBAL byte  Menu_is_visible;
 | 
			
		||||
///
 | 
			
		||||
/// Y position (in screen coordinates) where the menu begins.
 | 
			
		||||
/// This is always either ::Screen_height (when menu is hidden) or (::Screen_height - ::MENU_HEIGHT)
 | 
			
		||||
/// As a result, the drawing algoritm always draws the image from 0 to ::Menu_Y-1
 | 
			
		||||
GFX2_GLOBAL word  Menu_Y;
 | 
			
		||||
/// Y position of the status bar (in screen coordinates)
 | 
			
		||||
GFX2_GLOBAL word  Menu_status_Y;
 | 
			
		||||
/// Scaling factor for the menu and all GUI elements
 | 
			
		||||
GFX2_GLOBAL byte  Menu_factor_X;
 | 
			
		||||
/// Scaling factor for the menu and all GUI elements
 | 
			
		||||
GFX2_GLOBAL byte  Menu_factor_Y;
 | 
			
		||||
/// Size of a color cell in the menu's palette.
 | 
			
		||||
GFX2_GLOBAL word  Menu_palette_cell_width;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  // Données sur la fenêtre de menu
 | 
			
		||||
// -- Window data
 | 
			
		||||
 | 
			
		||||
GFX2_GLOBAL byte Windows_open; // Nombre de fenetres empilées. 0 si pas de fenetre ouverte.
 | 
			
		||||
/// Number of stacked windows currently displayed. 0 when no window is present.
 | 
			
		||||
GFX2_GLOBAL byte Windows_open;
 | 
			
		||||
/// Backup of ::Menu_is_visible, used to store it while a window is open.
 | 
			
		||||
GFX2_GLOBAL byte Menu_is_visible_before_window;
 | 
			
		||||
/// Backup of ::Menu_Y, used to store it while a window is open.
 | 
			
		||||
GFX2_GLOBAL word Menu_Y_before_window;
 | 
			
		||||
/// Backup of ::Paintbrush_hidden, used to store it while a window is open.
 | 
			
		||||
GFX2_GLOBAL byte Paintbrush_hidden_before_window;
 | 
			
		||||
 | 
			
		||||
GFX2_GLOBAL byte Menu_is_visible_before_window;  // Le menu était visible avant d'ouvir une fenêtre
 | 
			
		||||
GFX2_GLOBAL word Menu_Y_before_window; // Ordonnée du menu avant d'ouvrir une fenêtre
 | 
			
		||||
GFX2_GLOBAL byte Paintbrush_hidden_before_window;// Le pinceau étatit déjà caché avant l'ouverture de la fenetre?
 | 
			
		||||
 | 
			
		||||
GFX2_GLOBAL word Window_stack_pos_X[8];   // Position du bord gauche de la fenêtre dans l'écran
 | 
			
		||||
GFX2_GLOBAL word Window_stack_pos_X[8];
 | 
			
		||||
/// Position of the left border of the topmost window (in screen coordinates)
 | 
			
		||||
#define Window_pos_X Window_stack_pos_X[Windows_open-1]
 | 
			
		||||
 | 
			
		||||
GFX2_GLOBAL word Window_stack_pos_Y[8];   // Position du bord haut   de la fenêtre dans l'écran
 | 
			
		||||
GFX2_GLOBAL word Window_stack_pos_Y[8];
 | 
			
		||||
/// Position of the top border of the topmost window (in screen coordinates)
 | 
			
		||||
#define Window_pos_Y Window_stack_pos_Y[Windows_open-1]
 | 
			
		||||
 | 
			
		||||
GFX2_GLOBAL word Window_stack_width[8]; // Largeur de la fenêtre
 | 
			
		||||
GFX2_GLOBAL word Window_stack_width[8];
 | 
			
		||||
///
 | 
			
		||||
/// Width of the topmost window, in "window pixels"
 | 
			
		||||
/// (multiply by ::Menu_factor_X to get screen pixels)
 | 
			
		||||
#define Window_width Window_stack_width[Windows_open-1]
 | 
			
		||||
 | 
			
		||||
GFX2_GLOBAL word Window_stack_height[8]; // Hauteur de la fenêtre
 | 
			
		||||
GFX2_GLOBAL word Window_stack_height[8];
 | 
			
		||||
///
 | 
			
		||||
/// Height of the topmost window, in "window pixels"
 | 
			
		||||
/// (multiply by ::Menu_factor_Y to get screen pixels)
 | 
			
		||||
#define Window_height Window_stack_height[Windows_open-1]
 | 
			
		||||
 | 
			
		||||
GFX2_GLOBAL word Window_stack_nb_buttons[8];
 | 
			
		||||
/// Total number of buttons/controls in the topmost window.
 | 
			
		||||
#define Window_nb_buttons Window_stack_nb_buttons[Windows_open-1]
 | 
			
		||||
 | 
			
		||||
GFX2_GLOBAL T_Normal_button   * Window_stack_normal_button_list[8];
 | 
			
		||||
/// List of normal buttons in the topmost window.
 | 
			
		||||
#define Window_normal_button_list Window_stack_normal_button_list[Windows_open-1]
 | 
			
		||||
 | 
			
		||||
GFX2_GLOBAL T_Palette_button  * Window_stack_palette_button_list[8];
 | 
			
		||||
/// List of "palette" buttons in the topmost window.
 | 
			
		||||
#define Window_palette_button_list Window_stack_palette_button_list[Windows_open-1]
 | 
			
		||||
 | 
			
		||||
GFX2_GLOBAL T_Scroller_button * Window_stack_scroller_button_list[8];
 | 
			
		||||
/// List of sliders (scrollers) in the topmost window.
 | 
			
		||||
#define Window_scroller_button_list Window_stack_scroller_button_list[Windows_open-1]
 | 
			
		||||
 | 
			
		||||
GFX2_GLOBAL T_Special_button  * Window_stack_special_button_list[8];
 | 
			
		||||
/// List of special buttons in the topmost window.
 | 
			
		||||
#define Window_special_button_list Window_stack_special_button_list[Windows_open-1]
 | 
			
		||||
 | 
			
		||||
GFX2_GLOBAL T_Dropdown_button  * Window_stack_dropdown_button_list[8];
 | 
			
		||||
/// List of dropdown buttons in the topmost window.
 | 
			
		||||
#define Window_dropdown_button_list Window_stack_dropdown_button_list[Windows_open-1]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
GFX2_GLOBAL int Window_stack_attribute1[8];
 | 
			
		||||
///
 | 
			
		||||
/// The function ::Window_clicked_button() set this to ::LEFT_SIDE or ::RIGHT_SIDE
 | 
			
		||||
/// after a button is activated through left or right mouse click.
 | 
			
		||||
#define Window_attribute1 Window_stack_attribute1[Windows_open-1]
 | 
			
		||||
 | 
			
		||||
// Cette variable sert à stocker 2 informations:
 | 
			
		||||
// - Sur le click d'un scroller, la position active (0-n)
 | 
			
		||||
// - Sur le click d'une palette, le numero de couleur (0-255).
 | 
			
		||||
GFX2_GLOBAL int Window_stack_attribute2[8];
 | 
			
		||||
///
 | 
			
		||||
/// The function ::Window_clicked_button() set this to return extra information:
 | 
			
		||||
/// - When a scroller was clicked: the scroller position (0-n)
 | 
			
		||||
/// - When a palette was clicked: the color index (0-255)
 | 
			
		||||
/// - When a dropdown was used: the selected item's number T_Dropdown_choice::Number
 | 
			
		||||
#define Window_attribute2 Window_stack_attribute2[Windows_open-1]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// Définition des boutons ////////////////////////////////////////////////////
 | 
			
		||||
/// Definition of the menu (toolbox)
 | 
			
		||||
GFX2_GLOBAL struct
 | 
			
		||||
{
 | 
			
		||||
  // Informations sur l'aspect du bouton (graphisme):
 | 
			
		||||
  word            X_offset;        // Décalage par rapport à la gauche du menu
 | 
			
		||||
  word            Y_offset;        // Décalage par rapport au haut du menu
 | 
			
		||||
  word            Width;           // Largeur du bouton
 | 
			
		||||
  word            Height;           // Hauteur du bouton
 | 
			
		||||
  byte            Pressed;           // Le bouton est enfoncé
 | 
			
		||||
  byte            Shape;             // Forme du bouton
 | 
			
		||||
  // Button aspect
 | 
			
		||||
  word            X_offset;         ///< Position relative to menu's left
 | 
			
		||||
  word            Y_offset;         ///< Position relative to menu's top
 | 
			
		||||
  word            Width;            ///< Button's active width
 | 
			
		||||
  word            Height;           ///< Button's active heigth
 | 
			
		||||
  byte            Pressed;          ///< Button is currently pressed
 | 
			
		||||
  byte            Shape;            ///< Shape, listed in enum ::BUTTON_SHAPES
 | 
			
		||||
 | 
			
		||||
  // Information sur les clicks de la souris:
 | 
			
		||||
  Func_action Gauche;            // Action déclenchée par un click gauche sur le bouton
 | 
			
		||||
  Func_action Droite;            // Action déclenchée par un click droit  sur le bouton
 | 
			
		||||
  word            Left_shortcut[2];  // Shortcut clavier équivalent à un click gauche sur le bouton
 | 
			
		||||
  word            Right_shortcut[2];  // Shortcut clavier équivalent à un click droit  sur le bouton
 | 
			
		||||
  // Triggers on mouse/keyboard
 | 
			
		||||
  Func_action     Gauche;           ///< Action triggered by a left mouseclick on the button
 | 
			
		||||
  Func_action     Droite;           ///< Action triggered by a right mouseclick on the button
 | 
			
		||||
  word            Left_shortcut[2]; ///< Keyboard shortcut for a left mouseclick
 | 
			
		||||
  word            Right_shortcut[2];///< Keyboard shortcut for a right mouseclick
 | 
			
		||||
 | 
			
		||||
  // Informations sur le désenclenchement du bouton géré par le moteur:
 | 
			
		||||
  Func_action Desenclencher;     // Action appelée lors du désenclenchement du bouton
 | 
			
		||||
  byte            Famille;           // Ensemble de boutons auquel celui-ci appartient
 | 
			
		||||
  // Data used when the button is unselected
 | 
			
		||||
  Func_action     Desenclencher;    ///< Action triggered by unselecting the button
 | 
			
		||||
  byte            Famille;          ///< enum ::FAMILY_OF_BUTTONS.
 | 
			
		||||
 | 
			
		||||
} Buttons_Pool[NB_BUTTONS];
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// Informations sur les différents modes de dessin
 | 
			
		||||
// -- Information about the different drawing modes (effects)
 | 
			
		||||
 | 
			
		||||
/// Current effecting function. When no effect is selected this is ::No_effect()
 | 
			
		||||
GFX2_GLOBAL Func_effect Effect_function;
 | 
			
		||||
 | 
			
		||||
///
 | 
			
		||||
/// Pointer to the image to read, while drawing. It's either ::Main_screen
 | 
			
		||||
/// (the image you draw) when FX feedback is ON, or ::Screen_backup (a backup
 | 
			
		||||
/// copy) when FX feedback is off.
 | 
			
		||||
GFX2_GLOBAL byte * FX_feedback_screen;
 | 
			
		||||
 | 
			
		||||
GFX2_GLOBAL byte Exclude_color[256]; // Couleurs à exclure pour Best_color
 | 
			
		||||
///
 | 
			
		||||
/// Array of booleans, indicates which colors should never be picked by
 | 
			
		||||
/// ::Best_color()
 | 
			
		||||
GFX2_GLOBAL byte Exclude_color[256];
 | 
			
		||||
 | 
			
		||||
  // Mode smear:
 | 
			
		||||
// -- Smear mode
 | 
			
		||||
 | 
			
		||||
GFX2_GLOBAL byte  Smear_mode;    // Le mode smear est enclenché
 | 
			
		||||
GFX2_GLOBAL byte  Smear_start;   // On vient juste de commencer une opération en Smear
 | 
			
		||||
GFX2_GLOBAL byte * Smear_brush; // Sprite de la brosse de Smear
 | 
			
		||||
GFX2_GLOBAL word  Smear_brush_width; // Largeur de la brosse de Smear
 | 
			
		||||
GFX2_GLOBAL word  Smear_brush_height; // Hauteur de la brosse de Smear
 | 
			
		||||
GFX2_GLOBAL short Smear_min_X,Smear_max_X,Smear_min_Y,Smear_max_Y; // Bornes de la Brush du smear
 | 
			
		||||
/// Smear mode is activated
 | 
			
		||||
GFX2_GLOBAL byte  Smear_mode;
 | 
			
		||||
/// Boolean, indicates that a smear is in progress.
 | 
			
		||||
GFX2_GLOBAL byte  Smear_start;
 | 
			
		||||
/// Pointer to the sprite to use for smear; it contains pixels from the image.
 | 
			
		||||
GFX2_GLOBAL byte * Smear_brush;
 | 
			
		||||
/// Width of the ::Smear_brush
 | 
			
		||||
GFX2_GLOBAL word  Smear_brush_width;
 | 
			
		||||
/// Height of the ::Smear_brush
 | 
			
		||||
GFX2_GLOBAL word  Smear_brush_height;
 | 
			
		||||
/// Limits of the smear.
 | 
			
		||||
GFX2_GLOBAL short Smear_min_X;
 | 
			
		||||
/// Limits of the smear.
 | 
			
		||||
GFX2_GLOBAL short Smear_max_X;
 | 
			
		||||
/// Limits of the smear.
 | 
			
		||||
GFX2_GLOBAL short Smear_min_Y;
 | 
			
		||||
/// Limits of the smear.
 | 
			
		||||
GFX2_GLOBAL short Smear_max_Y;
 | 
			
		||||
 | 
			
		||||
  // Mode shade:
 | 
			
		||||
// -- Shade mode
 | 
			
		||||
/// List of the shade tables
 | 
			
		||||
GFX2_GLOBAL T_Shade        Shade_list[8];
 | 
			
		||||
/// Shade currently selected (index in ::Shade_list)
 | 
			
		||||
GFX2_GLOBAL byte           Shade_current;
 | 
			
		||||
/// Conversion table in use
 | 
			
		||||
GFX2_GLOBAL byte *         Shade_table;
 | 
			
		||||
/// Conversion table for a left click
 | 
			
		||||
GFX2_GLOBAL byte           Shade_table_left[256];
 | 
			
		||||
/// Conversion table for a right click
 | 
			
		||||
GFX2_GLOBAL byte           Shade_table_right[256];
 | 
			
		||||
/// Boolean, true when the shade mode is active.
 | 
			
		||||
GFX2_GLOBAL byte           Shade_mode;
 | 
			
		||||
 | 
			
		||||
GFX2_GLOBAL T_Shade        Shade_list[8]; // Listes de shade
 | 
			
		||||
GFX2_GLOBAL byte           Shade_current;   // Numéro du shade en cours
 | 
			
		||||
GFX2_GLOBAL byte *         Shade_table;    // Table de conversion de shade en cours
 | 
			
		||||
GFX2_GLOBAL byte           Shade_table_left[256]; // Table de conversion de shade pour un clic gauche
 | 
			
		||||
GFX2_GLOBAL byte           Shade_table_right[256]; // Table de conversion de shade pour un clic droit
 | 
			
		||||
GFX2_GLOBAL byte           Shade_mode;     // Le mode shade est enclenché
 | 
			
		||||
/// Boolean, true when the quick-shade mode is active.
 | 
			
		||||
GFX2_GLOBAL byte           Quick_shade_mode;
 | 
			
		||||
/// Size of the step, in Quick-shade mode. It's the number of colors to "jump".
 | 
			
		||||
GFX2_GLOBAL byte           Quick_shade_step;
 | 
			
		||||
/// Determines how colors should loop in Quick-shade more. Value in enum ::SHADE_MODES
 | 
			
		||||
GFX2_GLOBAL byte           Quick_shade_loop;
 | 
			
		||||
 | 
			
		||||
GFX2_GLOBAL byte           Quick_shade_mode; // Le mode quick-shade est enclenché
 | 
			
		||||
GFX2_GLOBAL byte           Quick_shade_step; // Pas du mode quick-shade
 | 
			
		||||
GFX2_GLOBAL byte           Quick_shade_loop; // Normal / Loop / No sat.
 | 
			
		||||
// -- Stencil mode
 | 
			
		||||
 | 
			
		||||
  // Mode stencil:
 | 
			
		||||
/// Boolean, true when stencil mode is active.
 | 
			
		||||
GFX2_GLOBAL byte Stencil_mode;
 | 
			
		||||
/// Array of the protected colors by Stencil mode.
 | 
			
		||||
GFX2_GLOBAL byte Stencil[256];
 | 
			
		||||
 | 
			
		||||
GFX2_GLOBAL byte Stencil_mode;  // Le mode stencil est enclenché
 | 
			
		||||
GFX2_GLOBAL byte Stencil[256];  // Tableau des couleurs protégées
 | 
			
		||||
// -- Grid mode
 | 
			
		||||
 | 
			
		||||
  // Mode grille:
 | 
			
		||||
/// Boolean, true when the Grid mode is active.
 | 
			
		||||
GFX2_GLOBAL byte  Snap_mode;
 | 
			
		||||
/// Width of the grid in Grid mode.
 | 
			
		||||
GFX2_GLOBAL word Snap_width;
 | 
			
		||||
/// Height of the grid in Grid mode.
 | 
			
		||||
GFX2_GLOBAL word Snap_height;
 | 
			
		||||
/// Position of the starting pixel, in Grid mode.
 | 
			
		||||
GFX2_GLOBAL word Snap_offset_X;
 | 
			
		||||
/// Position of the starting pixel, in Grid mode.
 | 
			
		||||
GFX2_GLOBAL word Snap_offset_Y;
 | 
			
		||||
 | 
			
		||||
GFX2_GLOBAL byte  Snap_mode;       // Le mode grille est enclenché
 | 
			
		||||
GFX2_GLOBAL word Snap_width;    // Largeur entre 2 points de la grille
 | 
			
		||||
GFX2_GLOBAL word Snap_height;    // Hauteur entre 2 points de la grille
 | 
			
		||||
GFX2_GLOBAL word Snap_offset_X; // Position en X du point le + à gauche
 | 
			
		||||
GFX2_GLOBAL word Snap_offset_Y; // Position en Y du point le + en haut
 | 
			
		||||
// -- Sieve mode
 | 
			
		||||
 | 
			
		||||
  // Mode trame:
 | 
			
		||||
/// Boolean, true when the Sieve mode is active
 | 
			
		||||
GFX2_GLOBAL byte  Sieve_mode;
 | 
			
		||||
/// Sprite of the sieve pattern. It's actually an array of booleans.
 | 
			
		||||
GFX2_GLOBAL byte  Sieve[16][16];
 | 
			
		||||
/// Preset sieve patterns, stored as binary (one word per line)
 | 
			
		||||
GFX2_GLOBAL word  GFX_sieve_pattern[12][16];
 | 
			
		||||
/// Width of the sieve pattern, in Sieve mode.
 | 
			
		||||
GFX2_GLOBAL short Sieve_width;
 | 
			
		||||
/// Height of the sieve pattern, in Sieve mode.
 | 
			
		||||
GFX2_GLOBAL short Sieve_height;
 | 
			
		||||
 | 
			
		||||
GFX2_GLOBAL byte  Sieve_mode;    // Le mode Sieve est enclenché
 | 
			
		||||
GFX2_GLOBAL byte  Sieve[16][16]; // Sprite de la trame
 | 
			
		||||
GFX2_GLOBAL word  GFX_sieve_pattern[12][16]; // Trames préséfinies (compactées sur 16*16 bits)
 | 
			
		||||
GFX2_GLOBAL short Sieve_width; // Largeur de la trame
 | 
			
		||||
GFX2_GLOBAL short Sieve_height; // Hauteur de la trame
 | 
			
		||||
// -- Colorize mode
 | 
			
		||||
 | 
			
		||||
  // Mode colorize:
 | 
			
		||||
 | 
			
		||||
GFX2_GLOBAL byte Colorize_mode;          // Le mode Colorize est enclenché
 | 
			
		||||
GFX2_GLOBAL byte Colorize_opacity;       // Intensité du Colorize
 | 
			
		||||
GFX2_GLOBAL byte Colorize_current_mode; // Le type de Colorize en cours (0-2)
 | 
			
		||||
/// Boolean, true when the Colorize mode is active.
 | 
			
		||||
GFX2_GLOBAL byte Colorize_mode;
 | 
			
		||||
/// % of opacity of Colorize mode (for translucency)
 | 
			
		||||
GFX2_GLOBAL byte Colorize_opacity;
 | 
			
		||||
/// Sets the colorization mode: 0 transparency, 1 additive, 2 substractive
 | 
			
		||||
GFX2_GLOBAL byte Colorize_current_mode;
 | 
			
		||||
///
 | 
			
		||||
/// Table of precomputed factors used by Colorize mode. It hold 0 to 255 when
 | 
			
		||||
/// opacity is 100%, 0 to 128 when opacity is 50%, etc.
 | 
			
		||||
// FIXME: This only caches a multiplication and a division. Maybe we should scrap it
 | 
			
		||||
GFX2_GLOBAL word Facteur_A_table[256];
 | 
			
		||||
///
 | 
			
		||||
/// Table of precomputed factors used by Colorize mode. It hold 255 to 0 when
 | 
			
		||||
/// opacity is 100%, 128 to 0 when opacity is 50%, etc.
 | 
			
		||||
// FIXME: This only caches a multiplication, a division, a substraction. Maybe we should scrap it
 | 
			
		||||
GFX2_GLOBAL word Facteur_B_table[256];
 | 
			
		||||
 | 
			
		||||
  // Mode smooth:
 | 
			
		||||
// -- Smooth mode
 | 
			
		||||
 | 
			
		||||
GFX2_GLOBAL byte Smooth_mode;          // Le mode Smooth est enclenché
 | 
			
		||||
GFX2_GLOBAL byte Smooth_matrix[3][3]; // La matrice du Smooth actuel
 | 
			
		||||
/// Boolean, true when the Smooth mode is active
 | 
			
		||||
GFX2_GLOBAL byte Smooth_mode;
 | 
			
		||||
/// Matrix of "weights" used by the Smooth mode.
 | 
			
		||||
GFX2_GLOBAL byte Smooth_matrix[3][3];
 | 
			
		||||
 | 
			
		||||
  // Mode Tiling:
 | 
			
		||||
// -- Tiling mode
 | 
			
		||||
 | 
			
		||||
GFX2_GLOBAL byte  Tiling_mode;       // Le mode Tiling est enclenché
 | 
			
		||||
GFX2_GLOBAL short Tiling_offset_X; // Décalage du tiling en X
 | 
			
		||||
GFX2_GLOBAL short Tiling_offset_Y; // Décalage du tiling en Y
 | 
			
		||||
/// Boolean, true when the Tiling mode is active
 | 
			
		||||
GFX2_GLOBAL byte  Tiling_mode;
 | 
			
		||||
/// Position of the starting pixel in Tiling mode.
 | 
			
		||||
GFX2_GLOBAL short Tiling_offset_X;
 | 
			
		||||
/// Position of the starting pixel in Tiling mode.
 | 
			
		||||
GFX2_GLOBAL short Tiling_offset_Y;
 | 
			
		||||
 | 
			
		||||
  // Mode Mask
 | 
			
		||||
// -- Mask mode
 | 
			
		||||
 | 
			
		||||
GFX2_GLOBAL byte Mask_mode;  // Le mode Masque est enclenché
 | 
			
		||||
GFX2_GLOBAL byte Mask_table[256];  // Tableau des couleurs constituant le masque
 | 
			
		||||
/// Boolean, true when the Tiling mode is active
 | 
			
		||||
GFX2_GLOBAL byte Mask_mode;
 | 
			
		||||
/// Array of booleans. True if the indexed color is protected by the mask.
 | 
			
		||||
GFX2_GLOBAL byte Mask_table[256];
 | 
			
		||||
 | 
			
		||||
  // Mode loupe:
 | 
			
		||||
// -- Magnifier data
 | 
			
		||||
 | 
			
		||||
/// Pointer to ::Magnify_table[n] : table of multipliers used by the Magnifier.
 | 
			
		||||
// FIXME: This only caches a multiplication. Maybe we should scrap it
 | 
			
		||||
GFX2_GLOBAL word  * Zoom_factor_table;
 | 
			
		||||
/// Precomputed tables of multipliers used by the Magnifier.
 | 
			
		||||
// FIXME: This only caches a multiplication. Maybe we should scrap it
 | 
			
		||||
GFX2_GLOBAL word  Magnify_table[NB_ZOOM_FACTORS][512];
 | 
			
		||||
 | 
			
		||||
#ifdef GLOBAL_VARIABLES
 | 
			
		||||
  word ZOOM_FACTOR[NB_ZOOM_FACTORS]={2,3,4,5,6,8,10,12,14,16,18,20};
 | 
			
		||||
#else
 | 
			
		||||
/// Successive zoom factors, used by the Magnifier.
 | 
			
		||||
  extern word ZOOM_FACTOR[NB_ZOOM_FACTORS];
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
  // Données sur les ellipses et les cercles:
 | 
			
		||||
 | 
			
		||||
// -- Data for ellipses and circles
 | 
			
		||||
// FIXME: move most of these to graph.c
 | 
			
		||||
GFX2_GLOBAL long  Ellipse_cursor_X;
 | 
			
		||||
GFX2_GLOBAL long  Ellipse_cursor_Y;
 | 
			
		||||
GFX2_GLOBAL long  Ellipse_vertical_radius_squared;
 | 
			
		||||
@ -637,178 +748,253 @@ GFX2_GLOBAL long  Circle_cursor_X;
 | 
			
		||||
GFX2_GLOBAL long  Circle_cursor_Y;
 | 
			
		||||
GFX2_GLOBAL long  Circle_limit;
 | 
			
		||||
 | 
			
		||||
  // Données sur les dégradés:
 | 
			
		||||
// -- Data for gradients
 | 
			
		||||
 | 
			
		||||
GFX2_GLOBAL short Gradient_lower_bound;   // Plus petite couleur englobée par le dégradé
 | 
			
		||||
GFX2_GLOBAL short Gradient_upper_bound;   // Plus grande couleur englobée par le dégradé
 | 
			
		||||
GFX2_GLOBAL int   Gradient_is_inverted;            // Booléen "Le dégradé est en réalité inversé"
 | 
			
		||||
GFX2_GLOBAL long  Gradient_bounds_range;  // = Abs(Gradient_lower_bound-Gradient_upper_bound)+1
 | 
			
		||||
GFX2_GLOBAL long  Gradient_total_range;   // Valeur maximum des indices passés à la fonction de dégradé (!!! >0 !!!)
 | 
			
		||||
GFX2_GLOBAL long  Gradient_random_factor;  // Facteur de mélange (1-256+) du dégradé
 | 
			
		||||
GFX2_GLOBAL Func_gradient Gradient_function; // Fonction de traitement du dégradé, varie selon la méthode choisie par l'utilisateur.
 | 
			
		||||
GFX2_GLOBAL Func_pixel Gradient_pixel; // Redirection de l'affichage
 | 
			
		||||
/// First color of the gradient.
 | 
			
		||||
GFX2_GLOBAL short Gradient_lower_bound;
 | 
			
		||||
/// Last color of the gradient
 | 
			
		||||
GFX2_GLOBAL short Gradient_upper_bound;
 | 
			
		||||
/// Boolean, true if the gradient should use colors in descending order
 | 
			
		||||
GFX2_GLOBAL int   Gradient_is_inverted;
 | 
			
		||||
/// Number of colors in the range ::Gradient_lower_bound to ::Gradient_upper_bound (included)
 | 
			
		||||
GFX2_GLOBAL long  Gradient_bounds_range;
 | 
			
		||||
/// Maximum value passed to the gradient function. The pixels assigned this value should use last gradient color.
 | 
			
		||||
GFX2_GLOBAL long  Gradient_total_range;
 | 
			
		||||
/// Amount of randomness to use in gradient (1-256+)
 | 
			
		||||
GFX2_GLOBAL long  Gradient_random_factor;
 | 
			
		||||
/// Pointer to a gradient function, depending on the selected method.
 | 
			
		||||
GFX2_GLOBAL Func_gradient Gradient_function;
 | 
			
		||||
///
 | 
			
		||||
/// Pointer to the pixel-drawing function that gradients should use:
 | 
			
		||||
/// either ::Pixel (if the gradient must be drawn on menus only)
 | 
			
		||||
/// or ::Display_pixel (if the gradient must be drawn on the image)
 | 
			
		||||
GFX2_GLOBAL Func_pixel Gradient_pixel;
 | 
			
		||||
/// Settings for all gradients
 | 
			
		||||
GFX2_GLOBAL T_Gradient_array Gradient_array[16];
 | 
			
		||||
/// Index in ::Gradient_array of the currently selected gradient.
 | 
			
		||||
GFX2_GLOBAL byte Current_gradient;
 | 
			
		||||
 | 
			
		||||
GFX2_GLOBAL T_Gradient_array Gradient_array[16]; // Données de tous les dégradés
 | 
			
		||||
GFX2_GLOBAL byte Current_gradient;             // index du tableau correspondant au dégradé courant
 | 
			
		||||
// -- Airbrush data
 | 
			
		||||
 | 
			
		||||
/// Mode to use in airbrush: 0 for multicolor, 1 for mono.
 | 
			
		||||
GFX2_GLOBAL byte  Airbrush_mode;
 | 
			
		||||
/// Diameter of the airbrush, in pixels.
 | 
			
		||||
GFX2_GLOBAL short Airbrush_size;
 | 
			
		||||
/// Delay between two airbrush "shots", in 1/100s
 | 
			
		||||
GFX2_GLOBAL byte  Airbrush_delay;
 | 
			
		||||
/// Number of pixels that are emitted by the airbrush, in mono mode.
 | 
			
		||||
GFX2_GLOBAL byte  Airbrush_mono_flow;
 | 
			
		||||
/// Number of pixels that are emitted by the airbrush for each color (multi mode)
 | 
			
		||||
GFX2_GLOBAL byte  Airbrush_multi_flow[256];
 | 
			
		||||
 | 
			
		||||
/// -- Misc data about the program
 | 
			
		||||
 | 
			
		||||
  // Données sur le Spray:
 | 
			
		||||
 | 
			
		||||
GFX2_GLOBAL byte  Airbrush_mode;            // Mode Mono(1) ou Multicolore(0)
 | 
			
		||||
GFX2_GLOBAL short Airbrush_size;            // Diamètre du spray en pixels
 | 
			
		||||
GFX2_GLOBAL byte  Airbrush_delay;           // Délai en VBLs entre 2 "pschiitt"
 | 
			
		||||
GFX2_GLOBAL byte  Airbrush_mono_flow;       // Nombre de pixels qui sortent en même temps en mono
 | 
			
		||||
GFX2_GLOBAL byte  Airbrush_multi_flow[256]; // Idem pour chaque couleur
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  // Données diverses sur le programme:
 | 
			
		||||
 | 
			
		||||
/// Boolean, set to true to exit the program.
 | 
			
		||||
GFX2_GLOBAL byte Quitting;
 | 
			
		||||
GFX2_GLOBAL char Initial_directory[256];          // Répertoire à partir duquel à été lancé le programme
 | 
			
		||||
GFX2_GLOBAL char Repertoire_des_donnees[256];      // Répertoire contenant les fichiers lus (interface graphique, etc)
 | 
			
		||||
GFX2_GLOBAL char Config_directory[256]; // Répertoire contenant les fichiers .ini et .cfg
 | 
			
		||||
/// Name of the directory that was current when the program was run.
 | 
			
		||||
GFX2_GLOBAL char Initial_directory[256];
 | 
			
		||||
/// Name of the directory that holds the program's (read-only) data: skins, icon, etc.
 | 
			
		||||
GFX2_GLOBAL char Repertoire_des_donnees[256];
 | 
			
		||||
/// Name of the directory where grafx2 reads and writes configuration (gfx2.ini, gfx2.cfg)
 | 
			
		||||
GFX2_GLOBAL char Config_directory[256];
 | 
			
		||||
/// Current foreground color for drawing.
 | 
			
		||||
GFX2_GLOBAL byte Fore_color;
 | 
			
		||||
/// Current background color for drawing.
 | 
			
		||||
GFX2_GLOBAL byte Back_color;
 | 
			
		||||
/// For the "Freehand draw" tool, this determines which variant is selected, from ::OPERATION_CONTINUOUS_DRAW to ::OPERATION_FILLED_CONTOUR
 | 
			
		||||
GFX2_GLOBAL byte Selected_operation;
 | 
			
		||||
/// For the Curve tool, this determines which variant is selected, either ::OPERATION_3_POINTS_CURVE or ::OPERATION_4_POINTS_CURVE
 | 
			
		||||
GFX2_GLOBAL byte Selected_curve_mode;
 | 
			
		||||
/// For the Line tool, this determines which variant is selected, either ::OPERATION_LINE, ::OPERATION_K_LIGNE or ::OPERATION_CENTERED_LINES
 | 
			
		||||
GFX2_GLOBAL byte Selected_line_mode;
 | 
			
		||||
/// Determines which color appears in the first cell of the menu palette. Change this value to "scroll" the palette.
 | 
			
		||||
GFX2_GLOBAL byte First_color_in_palette;
 | 
			
		||||
/// Boolean, true if Grafx2 was run with a file as command-line argument, which must be open immediately.
 | 
			
		||||
GFX2_GLOBAL byte File_in_command_line;
 | 
			
		||||
GFX2_GLOBAL byte Resolution_in_command_line; // utilisée uniquement si la variable précédente est à 1
 | 
			
		||||
/// Boolean, true if Grafx2 was run with a command-line argument to set a resolution on startup (overrides config)
 | 
			
		||||
GFX2_GLOBAL byte Resolution_in_command_line;
 | 
			
		||||
 | 
			
		||||
// Les différents sprites:
 | 
			
		||||
// - Graphic skin data
 | 
			
		||||
 | 
			
		||||
/// Bitmap data for the menu, a single rectangle.
 | 
			
		||||
GFX2_GLOBAL byte GFX_menu_block[MENU_HEIGHT][MENU_WIDTH];
 | 
			
		||||
/// Bitmap data for the icons that are displayed over the menu.
 | 
			
		||||
GFX2_GLOBAL byte GFX_menu_sprite[NB_MENU_SPRITES][MENU_SPRITE_HEIGHT][MENU_SPRITE_WIDTH];
 | 
			
		||||
/// Bitmap data for the different "effects" icons.
 | 
			
		||||
GFX2_GLOBAL byte GFX_effect_sprite[NB_EFFECTS_SPRITES][MENU_SPRITE_HEIGHT][MENU_SPRITE_WIDTH];
 | 
			
		||||
 | 
			
		||||
/// Bitmap data for the Grafx2 logo that appears on splash screen. All 256 colors allowed.
 | 
			
		||||
GFX2_GLOBAL byte * GFX_logo_grafx2;
 | 
			
		||||
 | 
			
		||||
/// Bitmap data for the classic 8x8 font used in menus etc.
 | 
			
		||||
GFX2_GLOBAL byte GFX_system_font[256*8*8];
 | 
			
		||||
/// Bitmap data for the "fun" 8x8 font used in menus etc.
 | 
			
		||||
GFX2_GLOBAL byte GFX_fun_font    [256*8*8];
 | 
			
		||||
/// Bitmap data for the 6x8 font used in help screens.
 | 
			
		||||
GFX2_GLOBAL byte GFX_help_font_norm [256][6][8];
 | 
			
		||||
/// Bitmap data for the 6x8 font used in help screens ("bold" verstion).
 | 
			
		||||
GFX2_GLOBAL byte GFX_bold_font [256][6][8];
 | 
			
		||||
// 12
 | 
			
		||||
// 34
 | 
			
		||||
/// Bitmap data for the title font used in help screens. Top-left quarter.
 | 
			
		||||
GFX2_GLOBAL byte GFX_help_font_t1 [64][6][8];
 | 
			
		||||
/// Bitmap data for the title font used in help screens. Top-right quarter.
 | 
			
		||||
GFX2_GLOBAL byte GFX_help_font_t2 [64][6][8];
 | 
			
		||||
/// Bitmap data for the title font used in help screens. Bottom-left quarter.
 | 
			
		||||
GFX2_GLOBAL byte GFX_help_font_t3 [64][6][8];
 | 
			
		||||
/// Bitmap data for the title font used in help screens. Bottom-right quarter.
 | 
			
		||||
GFX2_GLOBAL byte GFX_help_font_t4 [64][6][8];
 | 
			
		||||
/// Bitmap data for the small 8x8 icons.
 | 
			
		||||
GFX2_GLOBAL byte GFX_icon_sprite[NB_ICON_SPRITES][ICON_SPRITE_HEIGHT][ICON_SPRITE_WIDTH];
 | 
			
		||||
 | 
			
		||||
/// Pointer to the font selected for menus. It's either ::GFX_system_font or ::GFX_fun_font
 | 
			
		||||
GFX2_GLOBAL byte * Menu_font;
 | 
			
		||||
 | 
			
		||||
  // Les données de l'aide:
 | 
			
		||||
// -- Help data
 | 
			
		||||
 | 
			
		||||
GFX2_GLOBAL byte Current_help_section;  // index de la table d'aide en cours de consultation
 | 
			
		||||
GFX2_GLOBAL word Help_position; // Numéro de la ligne d'aide en cours de consultation
 | 
			
		||||
/// Index of the ::Help_section shown by the Help screen.
 | 
			
		||||
GFX2_GLOBAL byte Current_help_section;
 | 
			
		||||
/// Line number of the help viewer, in current ::Help_section. 0 for top, increase value to scroll down.
 | 
			
		||||
GFX2_GLOBAL word Help_position;
 | 
			
		||||
 | 
			
		||||
  // Données sur les opérations
 | 
			
		||||
 | 
			
		||||
GFX2_GLOBAL word Operation_before_interrupt; // N° de l'opération en cours avant l'utilisation d'une interruption
 | 
			
		||||
GFX2_GLOBAL word Current_operation;           // N° de l'opération en cours
 | 
			
		||||
GFX2_GLOBAL word Operation_stack[OPERATION_STACK_SIZE]; // Pile simplifiée
 | 
			
		||||
GFX2_GLOBAL byte Operation_stack_size;    // Taille effective de la pile (0=vide)
 | 
			
		||||
GFX2_GLOBAL byte Operation_in_magnifier;     // Indique si l'opération a commencé dans la partie Zoomée ou non
 | 
			
		||||
// -- Operation data
 | 
			
		||||
 | 
			
		||||
/// Index of the operation which was selected (ex: drawing rectangle) before the current interruption (ex: colorpicking).
 | 
			
		||||
GFX2_GLOBAL word Operation_before_interrupt;
 | 
			
		||||
/// Index of the current operation. This is the active "tool".
 | 
			
		||||
GFX2_GLOBAL word Current_operation;
 | 
			
		||||
///
 | 
			
		||||
/// This stack is used to memorize all parameters needed during the course of
 | 
			
		||||
/// an operation. For example when drawing a rectangle: color, starting
 | 
			
		||||
/// coordinates, ending coordinates.
 | 
			
		||||
GFX2_GLOBAL word Operation_stack[OPERATION_STACK_SIZE];
 | 
			
		||||
/// Number of parameters stored in ::Operation_stack (0=empty)
 | 
			
		||||
GFX2_GLOBAL byte Operation_stack_size;
 | 
			
		||||
/// Boolean, true if the operation (drawing) started in the magnified area.
 | 
			
		||||
GFX2_GLOBAL byte Operation_in_magnifier;
 | 
			
		||||
/// Last color hovered by the colorpicker. -1 if it wasn't over the image.
 | 
			
		||||
GFX2_GLOBAL short Colorpicker_color;
 | 
			
		||||
/// Position of the colorpicker tool, in image coordinates.
 | 
			
		||||
GFX2_GLOBAL short Colorpicker_X;
 | 
			
		||||
/// Position of the colorpicker tool, in image coordinates.
 | 
			
		||||
GFX2_GLOBAL short Colorpicker_Y;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifdef GLOBAL_VARIABLES
 | 
			
		||||
  byte CURSOR_FOR_OPERATION[NB_OPERATIONS]=
 | 
			
		||||
  {
 | 
			
		||||
    CURSOR_SHAPE_TARGET            , // Dessin à la main continu
 | 
			
		||||
    CURSOR_SHAPE_TARGET            , // Dessin à la main discontinu
 | 
			
		||||
    CURSOR_SHAPE_TARGET            , // Dessin à la main point par point
 | 
			
		||||
    CURSOR_SHAPE_TARGET            , // Contour fill
 | 
			
		||||
    CURSOR_SHAPE_TARGET            , // Lignes
 | 
			
		||||
    CURSOR_SHAPE_TARGET            , // Lignes reliées
 | 
			
		||||
    CURSOR_SHAPE_TARGET            , // Lignes centrées
 | 
			
		||||
    CURSOR_SHAPE_XOR_TARGET        , // Rectangle vide
 | 
			
		||||
    CURSOR_SHAPE_XOR_TARGET        , // Rectangle plein
 | 
			
		||||
    CURSOR_SHAPE_TARGET            , // Cercles vides
 | 
			
		||||
    CURSOR_SHAPE_TARGET            , // Cercles pleins
 | 
			
		||||
    CURSOR_SHAPE_TARGET            , // Ellipses vides
 | 
			
		||||
    CURSOR_SHAPE_TARGET            , // Ellipses pleines
 | 
			
		||||
    CURSOR_SHAPE_TARGET            , // Freehand continuous draw
 | 
			
		||||
    CURSOR_SHAPE_TARGET            , // Freehand discontinuous draw
 | 
			
		||||
    CURSOR_SHAPE_TARGET            , // Freehand point-by-point draw
 | 
			
		||||
    CURSOR_SHAPE_TARGET            , // Filled contour
 | 
			
		||||
    CURSOR_SHAPE_TARGET            , // Lines
 | 
			
		||||
    CURSOR_SHAPE_TARGET            , // Linked lines
 | 
			
		||||
    CURSOR_SHAPE_TARGET            , // Centered lines
 | 
			
		||||
    CURSOR_SHAPE_XOR_TARGET        , // Empty rectangle
 | 
			
		||||
    CURSOR_SHAPE_XOR_TARGET        , // Filled rectangle
 | 
			
		||||
    CURSOR_SHAPE_TARGET            , // Empty circle
 | 
			
		||||
    CURSOR_SHAPE_TARGET            , // Filled circle
 | 
			
		||||
    CURSOR_SHAPE_TARGET            , // Empty ellipse
 | 
			
		||||
    CURSOR_SHAPE_TARGET            , // Filled ellipse
 | 
			
		||||
    CURSOR_SHAPE_TARGET            , // Fill
 | 
			
		||||
    CURSOR_SHAPE_TARGET            , // Replace
 | 
			
		||||
    CURSOR_SHAPE_XOR_TARGET        , // Prise de brosse rectangulaire
 | 
			
		||||
    CURSOR_SHAPE_TARGET            , // Prise d'une brosse multiforme
 | 
			
		||||
    CURSOR_SHAPE_COLORPICKER    , // Récupération d'une couleur
 | 
			
		||||
    CURSOR_SHAPE_XOR_RECTANGLE    , // Positionnement de la fenêtre de loupe
 | 
			
		||||
    CURSOR_SHAPE_TARGET            , // Courbe à 3 points
 | 
			
		||||
    CURSOR_SHAPE_TARGET            , // Courbe à 4 points
 | 
			
		||||
    CURSOR_SHAPE_TARGET            , // Spray
 | 
			
		||||
    CURSOR_SHAPE_TARGET            , // Polygone
 | 
			
		||||
    CURSOR_SHAPE_TARGET            , // Polyforme
 | 
			
		||||
    CURSOR_SHAPE_TARGET            , // Polyfill
 | 
			
		||||
    CURSOR_SHAPE_TARGET            , // Polyforme rempli
 | 
			
		||||
    CURSOR_SHAPE_MULTIDIRECTIONNAL, // Scroll
 | 
			
		||||
    CURSOR_SHAPE_TARGET            , // Cercles dégradés
 | 
			
		||||
    CURSOR_SHAPE_TARGET            , // Ellipses dégradées
 | 
			
		||||
    CURSOR_SHAPE_XOR_ROTATION       , // Faire tourner brosse
 | 
			
		||||
    CURSOR_SHAPE_XOR_TARGET        , // Etirer brosse
 | 
			
		||||
    CURSOR_SHAPE_TARGET            , // Deformer brosse
 | 
			
		||||
    CURSOR_SHAPE_XOR_TARGET        , // Rectangle degrade
 | 
			
		||||
    CURSOR_SHAPE_TARGET            , // Color replacer
 | 
			
		||||
    CURSOR_SHAPE_XOR_TARGET        , // Rectangular brush grabbing
 | 
			
		||||
    CURSOR_SHAPE_TARGET            , // Polygonal brush grabbing
 | 
			
		||||
    CURSOR_SHAPE_COLORPICKER       , // Colorpicker
 | 
			
		||||
    CURSOR_SHAPE_XOR_RECTANGLE     , // Position the magnify window
 | 
			
		||||
    CURSOR_SHAPE_TARGET            , // Curve with 3 control points
 | 
			
		||||
    CURSOR_SHAPE_TARGET            , // Curve with 4 control points
 | 
			
		||||
    CURSOR_SHAPE_TARGET            , // Airbrush
 | 
			
		||||
    CURSOR_SHAPE_TARGET            , // Polygon
 | 
			
		||||
    CURSOR_SHAPE_TARGET            , // Polyform
 | 
			
		||||
    CURSOR_SHAPE_TARGET            , // Filled polygon
 | 
			
		||||
    CURSOR_SHAPE_TARGET            , // Filled polyform
 | 
			
		||||
    CURSOR_SHAPE_MULTIDIRECTIONNAL , // Scroll (pan)
 | 
			
		||||
    CURSOR_SHAPE_TARGET            , // Gradient-filled circle
 | 
			
		||||
    CURSOR_SHAPE_TARGET            , // Gradient-filled ellipse
 | 
			
		||||
    CURSOR_SHAPE_XOR_ROTATION      , // Rotate brush
 | 
			
		||||
    CURSOR_SHAPE_XOR_TARGET        , // Stretch brush
 | 
			
		||||
    CURSOR_SHAPE_TARGET            , // Distort brush
 | 
			
		||||
    CURSOR_SHAPE_XOR_TARGET        , // Gradient-filled rectangle
 | 
			
		||||
  };
 | 
			
		||||
#else
 | 
			
		||||
  /// ::Cursor_shape to use for each operation.
 | 
			
		||||
  extern byte CURSOR_FOR_OPERATION[NB_OPERATIONS];
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  // Procédures à appeler: Opération,Mouse_K,State de la pile
 | 
			
		||||
 | 
			
		||||
///
 | 
			
		||||
/// Procedures to call for each state (determined by ::Operation_stack_size) of
 | 
			
		||||
/// each operation, and for each mouse state (no button,left button,right button)
 | 
			
		||||
GFX2_GLOBAL struct
 | 
			
		||||
{
 | 
			
		||||
  byte Hide_cursor; // Booléen "il faut effacer le curseur pour l'opéra."
 | 
			
		||||
  Func_action Action;                                   // Action appelée
 | 
			
		||||
  byte Hide_cursor;   ///< Boolean: Need to hide/unhide cursor during this step
 | 
			
		||||
  Func_action Action; ///< Function to call
 | 
			
		||||
} Operation[NB_OPERATIONS][3][OPERATION_STACK_SIZE];
 | 
			
		||||
 | 
			
		||||
// -- Fileselector data
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// Informations sur les lecteurs et autres images
 | 
			
		||||
GFX2_GLOBAL byte GFX_icon_sprite[NB_ICON_SPRITES][ICON_SPRITE_HEIGHT][ICON_SPRITE_WIDTH];
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// -- Section des informations sur les formats de fichiers ------------------
 | 
			
		||||
 | 
			
		||||
  // Comptage du nb d'éléments dans la liste:
 | 
			
		||||
/// Number of elements in the current fileselector's ::Filelist
 | 
			
		||||
GFX2_GLOBAL short Filelist_nb_elements;
 | 
			
		||||
/// Number of files in the current fileselector's ::Filelist
 | 
			
		||||
GFX2_GLOBAL short Filelist_nb_files;
 | 
			
		||||
/// Number of directories in the current fileselector's ::Filelist
 | 
			
		||||
GFX2_GLOBAL short Filelist_nb_directories;
 | 
			
		||||
  // Tête de la liste chaînée:
 | 
			
		||||
/// Head of the linked list for the fileselector.
 | 
			
		||||
GFX2_GLOBAL T_Fileselector_item * Filelist;
 | 
			
		||||
 | 
			
		||||
// ------------------- Inititialisation des formats connus -------------------
 | 
			
		||||
 | 
			
		||||
void Do_nothing(void);
 | 
			
		||||
 | 
			
		||||
GFX2_GLOBAL signed char File_error; // 0: opération I/O OK
 | 
			
		||||
                                   // 1: Error dès le début de l'opération
 | 
			
		||||
                                   // 2: Error durant l'opération => données modifiées
 | 
			
		||||
                                   //-1: Interruption du chargement d'une preview
 | 
			
		||||
// -- misc
 | 
			
		||||
 | 
			
		||||
///
 | 
			
		||||
/// Indicator of error in previous file operations.
 | 
			
		||||
/// -  0: OK
 | 
			
		||||
/// -  1: Error when beginning operation. Existing data should be ok.
 | 
			
		||||
/// -  2: Error while operation was in progress. Data is modified.
 | 
			
		||||
/// - -1: Interruption of a preview.
 | 
			
		||||
GFX2_GLOBAL signed char File_error;
 | 
			
		||||
/// Current line number when reading/writing gfx2.ini
 | 
			
		||||
GFX2_GLOBAL int Line_number_in_INI_file;
 | 
			
		||||
 | 
			
		||||
///
 | 
			
		||||
/// Pointer to a pixel-loading function. This is used by the generic loading
 | 
			
		||||
/// function to load a preview, a brush or an image.
 | 
			
		||||
GFX2_GLOBAL Func_pixel Pixel_load_function;
 | 
			
		||||
///
 | 
			
		||||
/// Pointer to a pixel-reading function. This is used by the generic saving
 | 
			
		||||
/// function to save a brush or an image.
 | 
			
		||||
GFX2_GLOBAL Func_read   Read_pixel_old;
 | 
			
		||||
 | 
			
		||||
/********************
 | 
			
		||||
 * Spécifique à SDL *
 | 
			
		||||
 ********************/
 | 
			
		||||
// -- Specific to SDL
 | 
			
		||||
 | 
			
		||||
/// Pointer to the program's screen.
 | 
			
		||||
GFX2_GLOBAL SDL_Surface * Screen_SDL;
 | 
			
		||||
/// Pointer to the current joystick controller.
 | 
			
		||||
GFX2_GLOBAL SDL_Joystick* Joystick;
 | 
			
		||||
 | 
			
		||||
#define KEY_NONE          0
 | 
			
		||||
/// Indicates "no keyboard shortcut".
 | 
			
		||||
#define KEY_NONE            0
 | 
			
		||||
///
 | 
			
		||||
/// This is the "key identifier" for the mouse 3rd button.
 | 
			
		||||
/// It was chosen to not conflict with any SDL key number.
 | 
			
		||||
#define KEY_MOUSEMIDDLE     (SDLK_LAST+1)
 | 
			
		||||
///
 | 
			
		||||
/// This is the "key identifier" for the mouse wheelup.
 | 
			
		||||
/// It was chosen to not conflict with any SDL key number.
 | 
			
		||||
#define KEY_MOUSEWHEELUP    (SDLK_LAST+2)
 | 
			
		||||
///
 | 
			
		||||
/// This is the "key identifier" for the mouse wheeldown.
 | 
			
		||||
/// It was chosen to not conflict with any SDL key number.
 | 
			
		||||
#define KEY_MOUSEWHEELDOWN  (SDLK_LAST+3)
 | 
			
		||||
#define KEY_JOYBUTTON          (SDLK_LAST+4)
 | 
			
		||||
///
 | 
			
		||||
/// This is the "key identifier" for joystick button number 0.
 | 
			
		||||
/// All numbers starting with this one are reserved for joystick buttons
 | 
			
		||||
/// (since their is an unknown number of them, and for example 18 on GP2X)
 | 
			
		||||
/// It was chosen to not conflict with any SDL key number.
 | 
			
		||||
#define KEY_JOYBUTTON       (SDLK_LAST+4)
 | 
			
		||||
 | 
			
		||||
#ifdef __gp2x__
 | 
			
		||||
  #define KEY_ESC (KEY_JOYBUTTON+GP2X_BUTTON_X)
 | 
			
		||||
#else
 | 
			
		||||
  ///
 | 
			
		||||
  /// This is the key identifier for ESC. When hard-coding keyboard shortcuts
 | 
			
		||||
  /// for buttons, etc. we use this instead of SDLK_ESCAPE,
 | 
			
		||||
  /// so the GP2X port can get a joybutton equivalent of it.
 | 
			
		||||
  #define KEY_ESC SDLK_ESCAPE
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										3
									
								
								misc.c
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								misc.c
									
									
									
									
									
								
							@ -224,6 +224,7 @@ void Replace_a_color(byte old_color, byte New_color)
 | 
			
		||||
  Update_rect(0,0,0,0); // On peut TOUT a jour
 | 
			
		||||
  // C'est pas un problème car il n'y a pas de preview
 | 
			
		||||
}
 | 
			
		||||
// FIXME: move to graph.c, it's the only caller
 | 
			
		||||
 | 
			
		||||
void Ellipse_compute_limites(short horizontal_radius,short vertical_radius)
 | 
			
		||||
{
 | 
			
		||||
@ -234,6 +235,7 @@ void Ellipse_compute_limites(short horizontal_radius,short vertical_radius)
 | 
			
		||||
  Ellipse_limit = Ellipse_horizontal_radius_squared * Ellipse_vertical_radius_squared;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// FIXME: move to graph.c, it's the only caller
 | 
			
		||||
byte Pixel_in_ellipse(void)
 | 
			
		||||
{
 | 
			
		||||
  qword ediesi = Ellipse_cursor_X * Ellipse_cursor_X * Ellipse_vertical_radius_squared +
 | 
			
		||||
@ -243,6 +245,7 @@ byte Pixel_in_ellipse(void)
 | 
			
		||||
        return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// FIXME: move to graph.c, it's the only caller
 | 
			
		||||
byte Pixel_in_circle(void)
 | 
			
		||||
{
 | 
			
		||||
        if(Circle_cursor_X * Circle_cursor_X +
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user