Makefile: README.txt and a new COMPILING.txt are now added in win32 and src packages. Updated NSIS script to 99.0 version. Cleaned up the list of error codes and error messages. Removed a debug print. git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@724 416bcca6-2ee7-4201-b75f-2eb2f807beb1
421 lines
15 KiB
C
421 lines
15 KiB
C
/* Grafx2 - The Ultimate 256-color bitmap paint program
|
|
|
|
Copyright 2008 Yves Rizoud
|
|
Copyright 2007 Adrien Destugues
|
|
Copyright 1996-2001 Sunset Design (Guillaume Dorme & Karl Maritaud)
|
|
|
|
Grafx2 is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU General Public License
|
|
as published by the Free Software Foundation; version 2
|
|
of the License.
|
|
|
|
Grafx2 is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with Grafx2; if not, see <http://www.gnu.org/licenses/> or
|
|
write to the Free Software Foundation, Inc.,
|
|
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
*/
|
|
#ifndef _CONST_H_
|
|
#define _CONST_H_
|
|
|
|
|
|
|
|
// Déclaration des constantes ////////////////////////////////////////////////
|
|
|
|
#define M_2PI 6.28318530717958647692528676656
|
|
|
|
#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 RIGHT_TRIANGLE_CHARACTER 16
|
|
#define LEFT_TRIANGLE_CHARACTER 17
|
|
#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.
|
|
#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 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!)
|
|
|
|
#if defined(__MORPHOS__) || defined(__amigaos4__) || defined(__amigaos__)
|
|
#define PARENT_DIR "/"
|
|
#else
|
|
#define PARENT_DIR ".."
|
|
#endif
|
|
|
|
// Les différents formats de fichiers:
|
|
|
|
#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
|
|
#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
|
|
#endif
|
|
|
|
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 // |
|
|
};
|
|
|
|
#define DEFAULT_FILEFORMAT FORMAT_GIF // Format par défaut (ah bon? oh!)
|
|
|
|
// Les différentes erreurs:
|
|
|
|
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)
|
|
};
|
|
|
|
// Les différents types de pixels
|
|
|
|
enum PIXEL_RATIO
|
|
{
|
|
PIXEL_SIMPLE,
|
|
PIXEL_WIDE,
|
|
PIXEL_TALL,
|
|
PIXEL_DOUBLE
|
|
};
|
|
|
|
// Les différentes catégories de bouton:
|
|
|
|
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
|
|
};
|
|
|
|
// Les différentes formes de bouton:
|
|
|
|
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
|
|
};
|
|
|
|
// Les différentes formes de curseur:
|
|
|
|
enum CURSOR_SHAPES
|
|
{
|
|
CURSOR_SHAPE_ARROW,
|
|
CURSOR_SHAPE_TARGET, // Utilise le pinceau
|
|
CURSOR_SHAPE_COLORPICKER, // Utilise le pinceau
|
|
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_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)
|
|
|
|
enum PAINTBRUSH_SHAPES
|
|
{
|
|
PAINTBRUSH_SHAPE_ROUND,
|
|
PAINTBRUSH_SHAPE_SQUARE,
|
|
PAINTBRUSH_SHAPE_HORIZONTAL_BAR,
|
|
PAINTBRUSH_SHAPE_VERTICAL_BAR,
|
|
PAINTBRUSH_SHAPE_SLASH,
|
|
PAINTBRUSH_SHAPE_ANTISLASH,
|
|
PAINTBRUSH_SHAPE_RANDOM,
|
|
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
|
|
};
|
|
|
|
// Les différents états de bouton:
|
|
|
|
#define BUTTON_RELEASED 0
|
|
#define BUTTON_PRESSED 1
|
|
|
|
// Les différents modes de Shade
|
|
|
|
enum SHADE_MODES
|
|
{
|
|
SHADE_MODE_NORMAL,
|
|
SHADE_MODE_LOOP,
|
|
SHADE_MODE_NOSAT
|
|
};
|
|
|
|
// Les différents chunks du fichier .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
|
|
};
|
|
|
|
// Les différents types de lecteurs:
|
|
|
|
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?)
|
|
};
|
|
|
|
// Les différents boutons:
|
|
|
|
enum BUTTON_NUMBERS
|
|
{
|
|
BUTTON_PAINTBRUSHES,
|
|
BUTTON_ADJUST,
|
|
BUTTON_DRAW,
|
|
BUTTON_CURVES,
|
|
BUTTON_LINES,
|
|
BUTTON_AIRBRUSH,
|
|
BUTTON_FLOODFILL,
|
|
BUTTON_POLYGONS,
|
|
BUTTON_POLYFILL,
|
|
BUTTON_RECTANGLES,
|
|
BUTTON_FILLRECT,
|
|
BUTTON_CIRCLES,
|
|
BUTTON_FILLCIRC,
|
|
BUTTON_GRADRECT,
|
|
BUTTON_GRADMENU,
|
|
BUTTON_SPHERES,
|
|
BUTTON_BRUSH,
|
|
BUTTON_POLYBRUSH,
|
|
BUTTON_BRUSH_EFFECTS,
|
|
BUTTON_EFFECTS,
|
|
BUTTON_TEXT,
|
|
BUTTON_MAGNIFIER,
|
|
BUTTON_COLORPICKER,
|
|
BUTTON_RESOL,
|
|
BUTTON_PAGE,
|
|
BUTTON_SAVE,
|
|
BUTTON_LOAD,
|
|
BUTTON_SETTINGS,
|
|
BUTTON_CLEAR,
|
|
BUTTON_HELP,
|
|
BUTTON_UNDO,
|
|
BUTTON_KILL,
|
|
BUTTON_QUIT,
|
|
BUTTON_PALETTE,
|
|
BUTTON_PAL_LEFT,
|
|
BUTTON_PAL_RIGHT,
|
|
BUTTON_CHOOSE_COL,
|
|
BUTTON_HIDE
|
|
};
|
|
|
|
// Les actions des touches spéciales
|
|
|
|
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_SCROLL_UP,
|
|
SPECIAL_SCROLL_DOWN,
|
|
SPECIAL_SCROLL_LEFT,
|
|
SPECIAL_SCROLL_RIGHT,
|
|
SPECIAL_SCROLL_UP_FAST,
|
|
SPECIAL_SCROLL_DOWN_FAST,
|
|
SPECIAL_SCROLL_LEFT_FAST,
|
|
SPECIAL_SCROLL_RIGHT_FAST,
|
|
SPECIAL_SCROLL_UP_SLOW,
|
|
SPECIAL_SCROLL_DOWN_SLOW,
|
|
SPECIAL_SCROLL_LEFT_SLOW,
|
|
SPECIAL_SCROLL_RIGHT_SLOW,
|
|
SPECIAL_SHOW_HIDE_CURSOR,
|
|
SPECIAL_DOT_PAINTBRUSH,
|
|
SPECIAL_CONTINUOUS_DRAW,
|
|
SPECIAL_FLIP_X,
|
|
SPECIAL_FLIP_Y,
|
|
SPECIAL_ROTATE_90,
|
|
SPECIAL_ROTATE_180,
|
|
SPECIAL_STRETCH,
|
|
SPECIAL_DISTORT,
|
|
SPECIAL_OUTLINE,
|
|
SPECIAL_NIBBLE,
|
|
SPECIAL_GET_BRUSH_COLORS,
|
|
SPECIAL_RECOLORIZE_BRUSH,
|
|
SPECIAL_ROTATE_ANY_ANGLE,
|
|
SPECIAL_LOAD_BRUSH,
|
|
SPECIAL_SAVE_BRUSH,
|
|
SPECIAL_INVERT_SIEVE,
|
|
SPECIAL_ZOOM_IN,
|
|
SPECIAL_ZOOM_OUT,
|
|
SPECIAL_CENTER_ATTACHMENT,
|
|
SPECIAL_TOP_LEFT_ATTACHMENT,
|
|
SPECIAL_TOP_RIGHT_ATTACHMENT,
|
|
SPECIAL_BOTTOM_LEFT_ATTACHMENT,
|
|
SPECIAL_BOTTOM_RIGHT_ATTACHMENT,
|
|
SPECIAL_EXCLUDE_COLORS_MENU,
|
|
SPECIAL_SHADE_MODE, // |
|
|
SPECIAL_SHADE_MENU, // |
|
|
SPECIAL_QUICK_SHADE_MODE, // |
|
|
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 // |
|
|
};
|
|
|
|
// Définition des opérations:
|
|
|
|
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
|
|
};
|
|
|
|
|
|
|
|
#endif
|