- Main Page
- Data Structures
- Files

- File List

# const.h

    00001 /*  Grafx2 - The Ultimate 256-color bitmap paint program
    00002
    00003     Copyright 2008 Yves Rizoud
    00004     Copyright 2007 Adrien Destugues
    00005     Copyright 1996-2001 Sunset Design (Guillaume Dorme & Karl Maritaud)
    00006
    00007     Grafx2 is free software; you can redistribute it and/or
    00008     modify it under the terms of the GNU General Public License
    00009     as published by the Free Software Foundation; version 2
    00010     of the License.
    00011
    00012     Grafx2 is distributed in the hope that it will be useful,
    00013     but WITHOUT ANY WARRANTY; without even the implied warranty of
    00014     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    00015     GNU General Public License for more details.
    00016
    00017     You should have received a copy of the GNU General Public License
    00018     along with Grafx2; if not, see <http://www.gnu.org/licenses/> or
    00019     write to the Free Software Foundation, Inc.,
    00020     59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
    00021 */
    00022 #ifndef _CONST_H_
    00023 #define _CONST_H_
    00024
    00025
    00026
    00027 // Déclaration des constantes ////////////////////////////////////////////////
    00028
    00029 #define M_2PI 6.28318530717958647692528676656
    00030
    00031 #define POURCENTAGE_VERSION     "98.0%" // Libellé du pourcentage de la version ß
    00032 #define VERSION1                  2     // |
    00033 #define VERSION2                  0     // |_ Numéro de version découpé en
    00034 #define BETA1                     98    // |  plusieurs parties => 2.0 ß95.5%
    00035 #define BETA2                     0     // |  (utilisé pour le fichier de config)
    00036 #define ALPHA_BETA                "ß"   // Type de la version "Þ" ou "ß"
    00037 #define MAX_MODES_VIDEO           100   // Nombre de modes vidéo maxi
    00038 #define NB_BOUTONS                38    // Nombre de boutons à gérer
    00039 #define NB_TOUCHES                134   // Nombre de combinaisons de touches
    00040 #define NB_TOUCHES_SPECIALES      72    // Nombre de touches spéciales
    00041 #define NB_OPERATIONS             33    // Nombre d'opérations gérées par le moteur
    00042 #define NB_FACTEURS_DE_ZOOM       12    // Nombre de facteurs de zoom
    00043 #define LARGEUR_MENU              254   // Largeur du menu en taille réelle
    00044 #define HAUTEUR_MENU              44    // Hauteur du menu en taille réelle
    00045 #define NB_SPRITES_CURSEUR        8     // Nombre de sprites de curseur
    00046 #define LARGEUR_SPRITE_CURSEUR    15    // Largeur d'un sprite de curseur en pixels
    00047 #define HAUTEUR_SPRITE_CURSEUR    15    // Hauteur d'un sprite de curseur en pixels
    00048 #define NB_SPRITES_EFFETS         9     // Nombre de sprites d'effets
    00049 #define NB_SPRITES_MENU           18    // Nombre de sprites de menu
    00050 #define LARGEUR_SPRITE_MENU       14    // Largeur d'un sprite de menu en pixels
    00051 #define HAUTEUR_SPRITE_MENU       14    // Hauteur d'un sprite de menu en pixels
    00052 #define LARGEUR_PINCEAU           16    // Largeur d'un sprite de pinceau prédéfini
    00053 #define HAUTEUR_PINCEAU           16    // Hauteur d'un sprite de pinceau prédéfini
    00054 #define TAILLE_MAXI_PINCEAU       127   // Taille maxi des pinceaux
    00055 #define NB_SPRITES_DRIVES         7     // Nombre de sprites de drives
    00056 #define LARGEUR_SPRITE_DRIVE      8     // Largeur d'un sprite de drive en pixels
    00057 #define HAUTEUR_SPRITE_DRIVE      8     // Hauteur d'un sprite de drive en pixels
    00058 #define NB_SPRITES_PINCEAU        48    // Nombre de sprites de pinceau
    00059 #define NB_TRAMES_PREDEFINIES     12    // Nombre de trames prédéfinies
    00060 #define TAILLE_PILE_OPERATIONS    16    // Nombre maximum d'éléments utilisés par les opérations
    00061 #define TAILLE_MAXI_PATH          37    // Taille maximum affichable du répertoire courant dans les fenêtres du fileselect
    00062 #define TAILLE_COMMENTAIRE        32    // Taille maxi des commentaires pour le PKM
    00063 #define NB_PAGES_UNDO_MAX         99    // Nombre maximal de pages d'undo
    00064 #define FACTEUR_DE_ZOOM_PAR_DEFAUT 4    // Facteur de zoom initial
    00065 #define TAILLE_CHEMIN_FICHIER     260   // Le nombre de caractères maxi pour un nom de fichier avec chemin complet
    00066 #define NB_BOOKMARKS               4    // Nombre de boutons "signet" dans l'ecran Save/Load
    00067 // Caractères présents dans les deux fontes
    00068 #define CARACTERE_TRIANGLE_DROIT  16
    00069 #define CARACTERE_TRIANGLE_GAUCHE 17
    00070 #define CARACTERE_SUSPENSION      '…'
    00071
    00072 // On impose à l'allocation dynamique des pages de backups de conserver un
    00073 // minimum de 256 Ko pour que le reste du programme puisse continuer à
    00074 // fonctionner.
    00075 #define QUANTITE_MINIMALE_DE_MEMOIRE_A_CONSERVER (256*1024)
    00076
    00077 #define A_GAUCHE                  1     // Indique une direction (ou click) à gauche
    00078 #define A_DROITE                  2     // Indique une direction (ou click) à droite
    00079
    00080 #define LARGEUR_BARRE_SPLIT       6     // [ Û±±° ]
    00081 #define PROPORTION_SPLIT          0.3   // proportion de la zone non-zoomée en largeur par rapport à l'écran
    00082 #define NB_PIXELS_ZOOMES_MIN      4     // Nombre minimal de pixels zoomés en largeur (Note: En dessous de 4, on ne peut plus scroller!)
    00083
    00084 #if defined(__MORPHOS__) || defined(__amigaos4__) || defined(__amigaos__)
    00085    #define PARENT_DIR "/"
    00086 #else
    00087    #define PARENT_DIR ".."
    00088 #endif
    00089
    00090   // Les différents formats de fichiers:
    00091
    00092 #ifndef __no_pnglib__
    00093 #define NB_FORMATS_CONNUS         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}))
    00094 #define NB_FORMATS_LOAD           13    // Nombre de formats que l'on sait charger
    00095 #define NB_FORMATS_SAVE           13    // Nombre de formats que l'on sait sauver
    00096 #else
    00097 // Without pnglib
    00098 #define NB_FORMATS_CONNUS         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}))
    00099 #define NB_FORMATS_LOAD           12    // Nombre de formats que l'on sait charger
    00100 #define NB_FORMATS_SAVE           12    // Nombre de formats que l'on sait sauver
    00101 #endif
    00102
    00103 enum FORMATS_RECONNUS
    00104 {
    00105   FORMAT_PKM=1,      // |
    00106   FORMAT_LBM,        // |
    00107   FORMAT_GIF,        // |    Il faudra penser à réordonner
    00108   FORMAT_BMP,        // |  les données sur les formats dans
    00109   FORMAT_PCX,        // |  GLOBAL.H si on modifie ces cons-
    00110   FORMAT_IMG,        // |_ tantes.
    00111   FORMAT_SCx,        // |
    00112   FORMAT_PI1,        // |    Elles représentent l'indice où
    00113   FORMAT_PC1,        // |  l'on doit aller piocher ces
    00114   FORMAT_CEL,        // |  données.
    00115   FORMAT_KCF,        // |
    00116   FORMAT_PAL,        // |
    00117   FORMAT_PNG         // |
    00118 };
    00119
    00120 #define FORMAT_PAR_DEFAUT    FORMAT_GIF // Format par défaut (ah bon? oh!)
    00121
    00122   // Les différentes erreurs:
    00123
    00124 enum CODES_D_ERREURS
    00125 {
    00126   // 0 = Flash rouge de l'écran, erreur non critique
    00127   ERREUR_GUI_ABSENT=1,          // Le fichier gfx2gui.gif est absent
    00128   ERREUR_GUI_CORROMPU,          // Mauvais fichier gfx2gui.gif
    00129   ERREUR_INI_ABSENT,            // Le fichier gfx2def.ini est absent
    00130   ERREUR_CFG_ABSENT,            // Le fichier GFX2.CFG est absent
    00131   ERREUR_CFG_CORROMPU,          // Mauvais fichier GFX2.CFG
    00132   ERREUR_CFG_ANCIEN,            // Ancienne version du fichier GFX2.CFG
    00133   ERREUR_MEMOIRE,               // Plus de mémoire
    00134   ERREUR_LIGNE_COMMANDE,        // Erreur sur la ligne de commande
    00135   ERREUR_DRIVER_SOURIS,         // Pas de driver souris installé
    00136   ERREUR_MODE_INTERDIT,         // Mode demandé sur la ligne de commande interdit (coché en noir)
    00137   ERREUR_SAUVEGARDE_CFG,        // Erreur en écriture pour GFX2.CFG
    00138   ERREUR_REPERTOIRE_DISPARU,    // Le répertoire de lancement n'existe plus
    00139   ERREUR_INI_CORROMPU,          // Le fichier GFX2.INI est corrompu
    00140   ERREUR_SAUVEGARDE_INI,        // Le fichier GFX2.INI n'est pas inscriptible
    00141   ERREUR_SORRY_SORRY_SORRY      // On le refera plus, promis (erreur d'allocation de page qui ne devrait JAMAIS se produire)
    00142 };
    00143
    00144   // Les différents types de pixels
    00145
    00146 enum PIXEL_RATIO
    00147 {
    00148     PIXEL_SIMPLE,
    00149     PIXEL_WIDE,
    00150     PIXEL_TALL,
    00151     PIXEL_DOUBLE
    00152 };
    00153
    00154   // Les différentes catégories de bouton:
    00155
    00156 enum FAMILLES_DE_BOUTONS
    00157 {
    00158   FAMILLE_OUTIL=1,          // Outils de dessin (exemple : Freehand draw)
    00159   FAMILLE_INTERRUPTION,     // Opération éphémère (exemple : changement de brosse) > Interruption de l'opération courante pour faire autre chose, puis on revient
    00160   FAMILLE_INSTANTANE,       // 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
    00161   FAMILLE_TOOLBAR,          // Cache/Montre la barre d'outils
    00162   FAMILLE_EFFETS            // Effets
    00163 };
    00164
    00165   // Les différentes formes de bouton:
    00166
    00167 enum FORMES_DE_BOUTONS
    00168 {
    00169   FORME_BOUTON_SANS_CADRE,            // Ex: la palette
    00170   FORME_BOUTON_RECTANGLE,             // Ex: la plupart
    00171   FORME_BOUTON_TRIANGLE_HAUT_GAUCHE,  // Ex: Rectangles vides
    00172   FORME_BOUTON_TRIANGLE_BAS_DROITE    // Ex: Rectangles pleins
    00173 };
    00174
    00175   // Les différentes formes de curseur:
    00176
    00177 enum FORMES_DE_CURSEUR
    00178 {
    00179   FORME_CURSEUR_FLECHE,
    00180   FORME_CURSEUR_CIBLE,              // Utilise le pinceau
    00181   FORME_CURSEUR_CIBLE_PIPETTE,      // Utilise le pinceau
    00182   FORME_CURSEUR_SABLIER,
    00183   FORME_CURSEUR_MULTIDIRECTIONNEL,
    00184   FORME_CURSEUR_HORIZONTAL,
    00185   FORME_CURSEUR_CIBLE_FINE,         // Utilise le pinceau
    00186   FORME_CURSEUR_CIBLE_PIPETTE_FINE, // Utilise le pinceau
    00187   FORME_CURSEUR_CIBLE_XOR,
    00188   FORME_CURSEUR_RECTANGLE_XOR,
    00189   FORME_CURSEUR_ROTATE_XOR
    00190 };
    00191
    00192   // Les différentes formes de pinceaux (les types de pinceaux doivent être au début)
    00193
    00194 enum FORMES_DE_PINCEAUX
    00195 {
    00196   FORME_PINCEAU_ROND,
    00197   FORME_PINCEAU_CARRE,
    00198   FORME_PINCEAU_BARRE_HORIZONTALE,
    00199   FORME_PINCEAU_BARRE_VERTICALE,
    00200   FORME_PINCEAU_SLASH,
    00201   FORME_PINCEAU_ANTISLASH,
    00202   FORME_PINCEAU_ALEATOIRE,
    00203   FORME_PINCEAU_X,
    00204   FORME_PINCEAU_PLUS,
    00205   FORME_PINCEAU_LOSANGE,
    00206   FORME_PINCEAU_ROND_TRAME,
    00207   FORME_PINCEAU_CARRE_TRAME,
    00208   FORME_PINCEAU_DIVERS,// Ce doit être le dernier des types de pinceaux, comme ça il indique le nombre de types de pinceaux (-1)
    00209   FORME_PINCEAU_POINT, // Utilisé pour réduire de pinceau à 1 point dans certaines opérations
    00210   FORME_PINCEAU_BROSSE_COULEUR,
    00211   FORME_PINCEAU_BROSSE_MONOCHROME
    00212 };
    00213
    00214   // Les différents états de bouton:
    00215
    00216 #define BOUTON_RELACHE 0
    00217 #define BOUTON_ENFONCE 1
    00218
    00219   // Les différents modes de Shade
    00220
    00221 enum MODES_DE_SHADE
    00222 {
    00223   MODE_SHADE_NORMAL,
    00224   MODE_SHADE_BOUCLE,
    00225   MODE_SHADE_NOSAT
    00226 };
    00227
    00228   // Les différents chunks du fichier .CFG
    00229
    00230 enum CHUNKS_CFG
    00231 {
    00232   CHUNK_TOUCHES            = 0,
    00233   CHUNK_MODES_VIDEO        = 1,
    00234   CHUNK_SHADE              = 2,
    00235   CHUNK_MASQUE             = 3,
    00236   CHUNK_STENCIL            = 4,
    00237   CHUNK_DEGRADES           = 5,
    00238   CHUNK_SMOOTH             = 6,
    00239   CHUNK_EXCLUDE_COLORS     = 7,
    00240   CHUNK_QUICK_SHADE        = 8,
    00241   CHUNK_GRILLE             = 9,
    00242   CHUNK_MAX
    00243 };
    00244
    00245   // Les différents types de lecteurs:
    00246
    00247 enum TYPES_DE_LECTEURS
    00248 {
    00249   LECTEUR_FLOPPY_3_5,   // 0: Diskette 3"«
    00250   LECTEUR_FLOPPY_5_25,  // 1: Diskette 5"¬
    00251   LECTEUR_HDD,          // 2: HDD
    00252   LECTEUR_CDROM,        // 3: CD-ROM
    00253   LECTEUR_NETWORK       // 4: Logique (réseau?)
    00254 };
    00255
    00256   // Les différents boutons:
    00257
    00258 enum NUMEROS_DE_BOUTONS
    00259 {
    00260   BOUTON_PINCEAUX,
    00261   BOUTON_AJUSTER,
    00262   BOUTON_DESSIN,
    00263   BOUTON_COURBES,
    00264   BOUTON_LIGNES,
    00265   BOUTON_SPRAY,
    00266   BOUTON_FLOODFILL,
    00267   BOUTON_POLYGONES,
    00268   BOUTON_POLYFILL,
    00269   BOUTON_RECTANGLES,
    00270   BOUTON_FILLRECT,
    00271   BOUTON_CERCLES,
    00272   BOUTON_FILLCERC,
    00273   BOUTON_GRADRECT,
    00274   BOUTON_GRADMENU,
    00275   BOUTON_SPHERES,
    00276   BOUTON_BROSSE,
    00277   BOUTON_POLYBROSSE,
    00278   BOUTON_EFFETS_BROSSE,
    00279   BOUTON_EFFETS,
    00280   BOUTON_TEXTE,
    00281   BOUTON_LOUPE,
    00282   BOUTON_PIPETTE,
    00283   BOUTON_RESOL,
    00284   BOUTON_PAGE,
    00285   BOUTON_SAUVER,
    00286   BOUTON_CHARGER,
    00287   BOUTON_PARAMETRES,
    00288   BOUTON_CLEAR,
    00289   BOUTON_AIDE,
    00290   BOUTON_UNDO,
    00291   BOUTON_KILL,
    00292   BOUTON_QUIT,
    00293   BOUTON_PALETTE,
    00294   BOUTON_PAL_LEFT,
    00295   BOUTON_PAL_RIGHT,
    00296   BOUTON_CHOIX_COL,
    00297   BOUTON_CACHER
    00298 };
    00299
    00300   // Les actions des touches spéciales
    00301
    00302 enum ACTIONS_SPECIALES
    00303 {
    00304   SPECIAL_MOUSE_UP,
    00305   SPECIAL_MOUSE_DOWN,
    00306   SPECIAL_MOUSE_LEFT,
    00307   SPECIAL_MOUSE_RIGHT,
    00308   SPECIAL_CLICK_LEFT,
    00309   SPECIAL_CLICK_RIGHT,
    00310   SPECIAL_NEXT_FORECOLOR,
    00311   SPECIAL_PREVIOUS_FORECOLOR,
    00312   SPECIAL_NEXT_BACKCOLOR,
    00313   SPECIAL_PREVIOUS_BACKCOLOR,
    00314   SPECIAL_RETRECIR_PINCEAU,
    00315   SPECIAL_GROSSIR_PINCEAU,
    00316   SPECIAL_NEXT_USER_FORECOLOR,
    00317   SPECIAL_PREVIOUS_USER_FORECOLOR,
    00318   SPECIAL_NEXT_USER_BACKCOLOR,
    00319   SPECIAL_PREVIOUS_USER_BACKCOLOR,
    00320   SPECIAL_SCROLL_UP,
    00321   SPECIAL_SCROLL_DOWN,
    00322   SPECIAL_SCROLL_LEFT,
    00323   SPECIAL_SCROLL_RIGHT,
    00324   SPECIAL_SCROLL_UP_FAST,
    00325   SPECIAL_SCROLL_DOWN_FAST,
    00326   SPECIAL_SCROLL_LEFT_FAST,
    00327   SPECIAL_SCROLL_RIGHT_FAST,
    00328   SPECIAL_SCROLL_UP_SLOW,
    00329   SPECIAL_SCROLL_DOWN_SLOW,
    00330   SPECIAL_SCROLL_LEFT_SLOW,
    00331   SPECIAL_SCROLL_RIGHT_SLOW,
    00332   SPECIAL_SHOW_HIDE_CURSOR,
    00333   SPECIAL_PINCEAU_POINT,
    00334   SPECIAL_DESSIN_CONTINU,
    00335   SPECIAL_FLIP_X,
    00336   SPECIAL_FLIP_Y,
    00337   SPECIAL_ROTATE_90,
    00338   SPECIAL_ROTATE_180,
    00339   SPECIAL_STRETCH,
    00340   SPECIAL_DISTORT,
    00341   SPECIAL_OUTLINE,
    00342   SPECIAL_NIBBLE,
    00343   SPECIAL_GET_BRUSH_COLORS,
    00344   SPECIAL_RECOLORIZE_BRUSH,
    00345   SPECIAL_ROTATE_ANY_ANGLE,
    00346   SPECIAL_LOAD_BRUSH,
    00347   SPECIAL_SAVE_BRUSH,
    00348   SPECIAL_INVERT_SIEVE,
    00349   SPECIAL_ZOOM_IN,
    00350   SPECIAL_ZOOM_OUT,
    00351   SPECIAL_CENTER_ATTACHMENT,
    00352   SPECIAL_TOP_LEFT_ATTACHMENT,
    00353   SPECIAL_TOP_RIGHT_ATTACHMENT,
    00354   SPECIAL_BOTTOM_LEFT_ATTACHMENT,
    00355   SPECIAL_BOTTOM_RIGHT_ATTACHMENT,
    00356   SPECIAL_EXCLUDE_COLORS_MENU,
    00357   SPECIAL_SHADE_MODE,       // |
    00358   SPECIAL_SHADE_MENU,       // |
    00359   SPECIAL_QUICK_SHADE_MODE, // |
    00360   SPECIAL_QUICK_SHADE_MENU, // |
    00361   SPECIAL_STENCIL_MODE,     // |
    00362   SPECIAL_STENCIL_MENU,     // |
    00363   SPECIAL_MASK_MODE,        // |  Il faut que le premier effet soit
    00364   SPECIAL_MASK_MENU,        // |  SPECIAL_SHADE_MODE, et que le
    00365   SPECIAL_GRID_MODE,        // |  dernier soit SPECIAL_TILING_MENU,
    00366   SPECIAL_GRID_MENU,        // |_ et que seuls des effets soient
    00367   SPECIAL_SIEVE_MODE,       // |  définis entre ces deux là car
    00368   SPECIAL_SIEVE_MENU,       // |  des tests sur cet intervalle sont
    00369   SPECIAL_COLORIZE_MODE,    // |  faits dans le moteur.
    00370   SPECIAL_COLORIZE_MENU,    // |
    00371   SPECIAL_SMOOTH_MODE,      // |
    00372   SPECIAL_SMOOTH_MENU,      // |
    00373   SPECIAL_SMEAR_MODE,       // |
    00374   SPECIAL_TILING_MODE,      // |
    00375   SPECIAL_TILING_MENU       // |
    00376 };
    00377
    00378   // Définition des opérations:
    00379
    00380 enum OPERATIONS
    00381 {
    00382   OPERATION_DESSIN_CONTINU,     // Dessin à la main continu
    00383   OPERATION_DESSIN_DISCONTINU,  // Dessin à la main discontinu
    00384   OPERATION_DESSIN_POINT,       // Dessin à la main point par point
    00385   OPERATION_FILLED_CONTOUR,     // Contour rempli
    00386   OPERATION_LIGNE,              // Lignes
    00387   OPERATION_K_LIGNE,            // Lignes reliées
    00388   OPERATION_LIGNES_CENTREES,    // Lignes concentriques
    00389   OPERATION_RECTANGLE_VIDE,     // Rectangle vide
    00390   OPERATION_RECTANGLE_PLEIN,    // Rectangle plein
    00391   OPERATION_CERCLE_VIDE,        // Cercle vide
    00392   OPERATION_CERCLE_PLEIN,       // Cercle plein
    00393   OPERATION_ELLIPSE_VIDE,       // Ellipse vide
    00394   OPERATION_ELLIPSE_PLEINE,     // Ellipse pleine
    00395   OPERATION_FILL,               // Fill
    00396   OPERATION_REMPLACER,          // Remplacer couleur
    00397   OPERATION_PRISE_BROSSE,       // Prise de brosse rectangulaire
    00398   OPERATION_POLYBROSSE,         // Prise d'une brosse multiforme
    00399   OPERATION_PIPETTE,            // Récupération d'une couleur
    00400   OPERATION_LOUPE,              // Positionnement de la fenêtre de loupe
    00401   OPERATION_COURBE_3_POINTS,    // Courbe à 3 points
    00402   OPERATION_COURBE_4_POINTS,    // Courbe à 4 points
    00403   OPERATION_SPRAY,              // Spray
    00404   OPERATION_POLYGONE,           // Polygone
    00405   OPERATION_POLYFORM,           // Polyforme
    00406   OPERATION_POLYFILL,           // Polyfill
    00407   OPERATION_FILLED_POLYFORM,    // Polyforme rempli
    00408   OPERATION_SCROLL,             // Scroll
    00409   OPERATION_CERCLE_DEGRADE,     // Cercles dégradés
    00410   OPERATION_ELLIPSE_DEGRADEE,   // Ellipses dégradées
    00411   OPERATION_TOURNER_BROSSE,     // Faire tourner brosse
    00412   OPERATION_ETIRER_BROSSE,      // Etirer brosse
    00413   OPERATION_DEFORMER_BROSSE,    // Deformer brosse
    00414   OPERATION_RECTANGLE_DEGRADE,  // Rectangle dégradé
    00415
    00416   OPERATION_AUCUNE
    00417 };
    00418
    00419
    00420
    00421 #endif