- Main Page
- Data Structures
- Files

- File List

# global.h

    00001 /*  Grafx2 - The Ultimate 256-color bitmap paint program
    00002
    00003     Copyright 2007 Adrien Destugues
    00004     Copyright 1996-2001 Sunset Design (Guillaume Dorme & Karl Maritaud)
    00005
    00006     Grafx2 is free software; you can redistribute it and/or
    00007     modify it under the terms of the GNU General Public License
    00008     as published by the Free Software Foundation; version 2
    00009     of the License.
    00010
    00011     Grafx2 is distributed in the hope that it will be useful,
    00012     but WITHOUT ANY WARRANTY; without even the implied warranty of
    00013     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    00014     GNU General Public License for more details.
    00015
    00016     You should have received a copy of the GNU General Public License
    00017     along with Grafx2; if not, see <http://www.gnu.org/licenses/> or
    00018     write to the Free Software Foundation, Inc.,
    00019     59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
    00020 */
    00021
    00022 // Dans MAIN on declare les variables
    00023 // Dans les autres fichiers, on ne fait que les référencer
    00024 #ifdef VARIABLES_GLOBALES
    00025   #define GFX2_GLOBAL
    00026 #else
    00027   #define GFX2_GLOBAL extern
    00028 #endif
    00029
    00031 //                                                                          //
    00032 //        Ce fichier contient les déclaration des variables globales        //
    00033 //                                                                          //
    00035
    00036
    00037 // -- Section des variables de CONFIGURATION ---------------------------------
    00038
    00039 #ifndef _GLOBAL_H_
    00040 #define _GLOBAL_H_
    00041
    00042 #include <SDL.h>
    00043 #include "struct.h"
    00044
    00045 GFX2_GLOBAL struct S_Config
    00046 {
    00047   byte Fonte;
    00048   int  Lire_les_fichiers_caches;
    00049   int  Lire_les_repertoires_caches;
    00050 //  int  Lire_les_repertoires_systemes;
    00051   byte Afficher_limites_image;
    00052   byte Curseur;
    00053   byte Maximize_preview;
    00054   byte Auto_set_res;
    00055   byte Coords_rel;
    00056   byte Backup;
    00057   byte Adjust_brush_pick;
    00058   byte Auto_save;
    00059   byte Nb_pages_Undo;
    00060   byte Indice_Sensibilite_souris_X;
    00061   byte Indice_Sensibilite_souris_Y;
    00062   byte Mouse_Facteur_de_correction_X;
    00063   byte Mouse_Facteur_de_correction_Y;
    00064   byte Mouse_Merge_movement;
    00065   byte Valeur_tempo_jauge_gauche;
    00066   byte Valeur_tempo_jauge_droite;
    00067   long Chrono_delay;
    00068   struct Composantes Coul_menu_pref[4];
    00069   int  Nb_max_de_vertex_par_polygon;
    00070   byte Clear_palette;
    00071   byte Set_resolution_according_to;
    00072   byte Ratio;
    00073   byte Fast_zoom;
    00074   byte Find_file_fast;
    00075   byte Couleurs_separees;
    00076   word Palette_Cells_X;
    00077   word Palette_Cells_Y;
    00078   byte FX_Feedback;
    00079   byte Safety_colors;
    00080   byte Opening_message;
    00081   byte Clear_with_stencil;
    00082   byte Auto_discontinuous;
    00083   byte Taille_ecran_dans_GIF;
    00084   byte Auto_nb_used;
    00085   byte Resolution_par_defaut;
    00086   char *Bookmark_directory[NB_BOOKMARKS]; // independant malloc of adaptive size
    00087   char Bookmark_label[NB_BOOKMARKS][8+1];
    00088 } Config;
    00089
    00090   // Tableau des touches spéciales
    00091 GFX2_GLOBAL word Config_Touche[NB_TOUCHES_SPECIALES][2];
    00092
    00093
    00094 struct S_Mode_video
    00095 {
    00096   short  Largeur;
    00097   short  Hauteur;
    00098   byte   Mode;
    00099   word   Fullscreen;
    00100   byte   Etat; // 0:Cool 1:OK ; 2:Bof ; 3:Naze ; si on rajoute +128 => incompatible
    00101 };
    00102 GFX2_GLOBAL struct S_Mode_video Mode_video[MAX_MODES_VIDEO];
    00103 GFX2_GLOBAL int  Nb_modes_video; // Nombre de modes réellement recensés dans Mode_video[]
    00104
    00105
    00106   // Palette par défaut
    00107
    00108 GFX2_GLOBAL T_Palette Palette_defaut;
    00109
    00110   // Couleurs du menu
    00111
    00112 GFX2_GLOBAL byte CM_Noir;
    00113 GFX2_GLOBAL byte CM_Fonce;
    00114 GFX2_GLOBAL byte CM_Clair;
    00115 GFX2_GLOBAL byte CM_Blanc;
    00116 GFX2_GLOBAL byte CM_Trans;
    00117 GFX2_GLOBAL struct Composantes Coul_menu_pref[4];
    00118
    00119   // Etat des entrées
    00120
    00121 GFX2_GLOBAL word Mouse_X; // Abscisse de la souris
    00122 GFX2_GLOBAL word Mouse_Y; // Ordonnée de la souris
    00123 GFX2_GLOBAL byte Mouse_K; // Etat des boutons de la souris (tient comte des boutons appuyés simultanéments
    00124
    00125 #define Mouse_K_Unique (Mouse_K==0?0:(Mouse_K&1?1:(Mouse_K&2?2:0))) // Etat des boutons de la souris (un seul bouton à la fois, on regarde d'abord le 1, puis le 2, ...)
    00126
    00127 GFX2_GLOBAL dword Touche; // Touche tapée
    00128 GFX2_GLOBAL dword Touche_ANSI; // Caractère tapé
    00129 GFX2_GLOBAL Uint8* Etat_Du_Clavier;  // Scancode de la touche en cours et etat des touches de ctrl
    00130 // Modificateurs pour Touche
    00131 // (Name conflict with windows.h)
    00132 #ifdef MOD_SHIFT
    00133   #undef MOD_SHIFT
    00134 #endif
    00135 #ifdef MOD_CTRL
    00136   #undef MOD_CTRL
    00137 #endif
    00138 #ifdef MOD_ALT
    00139   #undef MOD_ALT
    00140 #endif
    00141 #define MOD_SHIFT 0x1000
    00142 #define MOD_CTRL  0x2000
    00143 #define MOD_ALT   0x4000
    00144
    00145 GFX2_GLOBAL byte Quit_demande; // !=0 lorsque l'utilisateur demande la fermeture de fenêtre.
    00146
    00147 GFX2_GLOBAL byte Mouse_Facteur_de_correction_X;
    00148 GFX2_GLOBAL byte Mouse_Facteur_de_correction_Y;
    00149
    00150 GFX2_GLOBAL byte Autoriser_changement_de_couleur_pendant_operation;
    00151
    00152   // Données sur le curseur
    00153
    00154 GFX2_GLOBAL byte Forme_curseur;
    00155 GFX2_GLOBAL byte Forme_curseur_avant_fenetre; // Forme du curseur avant l'ouverture d'une fenêtre
    00156 GFX2_GLOBAL byte Forcer_affichage_curseur;    // Forcer l'affichage du curseur au prochain Get_input();
    00157 GFX2_GLOBAL byte Cacher_curseur;
    00158 GFX2_GLOBAL byte Curseur_dans_menu;           // Booléen "Le curseur se trouve dans le menu"
    00159 GFX2_GLOBAL byte Curseur_dans_menu_precedent; // Booléen "Le curseur se trouvait précédemment dans le menu"
    00160 GFX2_GLOBAL word Curseur_Decalage_X[NB_SPRITES_CURSEUR]; // Coordonnées X du point sensible de curseurs en sprite
    00161 GFX2_GLOBAL word Curseur_Decalage_Y[NB_SPRITES_CURSEUR]; // Coordonnées Y du point sensible de curseurs en sprite
    00162 GFX2_GLOBAL byte SPRITE_CURSEUR[NB_SPRITES_CURSEUR][HAUTEUR_SPRITE_CURSEUR][LARGEUR_SPRITE_CURSEUR]; // Dessins des sprites de curseur
    00163 GFX2_GLOBAL byte FOND_CURSEUR[HAUTEUR_SPRITE_CURSEUR][LARGEUR_SPRITE_CURSEUR]; // Contenu du dessous du curseur
    00164
    00165   // Données sur le pinceau
    00166
    00167 GFX2_GLOBAL byte  Pinceau_Forme;
    00168 GFX2_GLOBAL byte  Pinceau_Forme_avant_fill;
    00169 GFX2_GLOBAL byte  Pinceau_Forme_avant_pipette;
    00170 GFX2_GLOBAL byte  Pinceau_Forme_avant_lasso;
    00171 GFX2_GLOBAL byte  Cacher_pinceau;
    00172 GFX2_GLOBAL short Pinceau_X;
    00173 GFX2_GLOBAL short Pinceau_Y;
    00174 GFX2_GLOBAL byte  SPRITE_PINCEAU [NB_SPRITES_PINCEAU][HAUTEUR_PINCEAU][LARGEUR_PINCEAU];
    00175 GFX2_GLOBAL word  Pinceau_predefini_Largeur[NB_SPRITES_PINCEAU];
    00176 GFX2_GLOBAL word  Pinceau_predefini_Hauteur[NB_SPRITES_PINCEAU];
    00177 GFX2_GLOBAL byte  Pinceau_Type[NB_SPRITES_PINCEAU];
    00178 GFX2_GLOBAL word  Pinceau_predefini_Decalage_X[NB_SPRITES_PINCEAU];
    00179 GFX2_GLOBAL word  Pinceau_predefini_Decalage_Y[NB_SPRITES_PINCEAU];
    00180 GFX2_GLOBAL byte * Pinceau_Sprite;
    00181 GFX2_GLOBAL short Pinceau_Largeur;
    00182 GFX2_GLOBAL short Pinceau_Hauteur;
    00183 GFX2_GLOBAL short Pinceau_Decalage_X;
    00184 GFX2_GLOBAL short Pinceau_Decalage_Y;
    00185
    00186   // Commandes graphiques
    00187
    00188 GFX2_GLOBAL int Pixel_ratio;
    00189 GFX2_GLOBAL int Pixel_width;
    00190 GFX2_GLOBAL int Pixel_height;
    00191 GFX2_GLOBAL fonction_afficheur Pixel;          // Affiche un point à l'écran
    00192 GFX2_GLOBAL fonction_afficheur Pixel_dans_menu;// Affiche un point dans le menu (ou pas si le menu est invisible)
    00193 GFX2_GLOBAL fonction_lecteur   Lit_pixel;      // Teste la couleur d'un pixel dans l'écran
    00194 GFX2_GLOBAL fonction_display   Display_screen; // Affiche rapidement tout l'écran (en faisant attention de ne pas effacer le menu)
    00195 GFX2_GLOBAL fonction_block     Block;          // Affiche rapidement un bloc à l'écran
    00196 GFX2_GLOBAL fonction_afficheur Pixel_Preview_Normal; // Affiche un point de l'image à l'écran en mode normal (pas en mode loupe)
    00197 GFX2_GLOBAL fonction_afficheur Pixel_Preview_Loupe;  // Affiche un point de l'image à l'écran en mode loupe
    00198 GFX2_GLOBAL fonction_afficheur Pixel_Preview;        // Affiche un point de l'image à l'écran en fonction de l'état du mode loupe
    00199 GFX2_GLOBAL fonction_Ligne_XOR Ligne_horizontale_XOR;// Affiche une ligne horizontale en XOR (pour placer la loupe)
    00200 GFX2_GLOBAL fonction_Ligne_XOR Ligne_verticale_XOR;  // Affiche une ligne verticale en XOR (pour placer la loupe)
    00201 GFX2_GLOBAL fonction_display_brush_Color Display_brush_Color; // Affiche une partie de la brosse en couleur
    00202 GFX2_GLOBAL fonction_display_brush_Mono  Display_brush_Mono;  // Affiche une partie de la brosse en monochrome
    00203 GFX2_GLOBAL fonction_display_brush_Color Clear_brush;         // Efface la partie de la brosse affichée à l'écran
    00204 GFX2_GLOBAL fonction_remap     Remap_screen;   // Remappe une partie de l'écran avec les nouvelles couleurs du menu
    00205 GFX2_GLOBAL fonction_procsline Afficher_ligne;  // Afficher une ligne
    00206 GFX2_GLOBAL fonction_procsline Afficher_ligne_fast;  // Afficher une ligne talle quelle (sans la doubler en mode wide)
    00207 GFX2_GLOBAL fonction_procsline Lire_ligne;      // Afficher ou lire une ligne
    00208 GFX2_GLOBAL fonction_display_zoom Display_zoomed_screen; // Affiche rapidement toute la partie zoomée à l'écran (en faisant attention de ne pas effacer le menu)
    00209 GFX2_GLOBAL fonction_display_brush_Color_zoom Display_brush_Color_zoom;
    00210 GFX2_GLOBAL fonction_display_brush_Mono_zoom  Display_brush_Mono_zoom;
    00211 GFX2_GLOBAL fonction_display_brush_Color_zoom Clear_brush_zoom;
    00212 GFX2_GLOBAL fonction_affiche_brosse Affiche_brosse;
    00213   // Données sur les dimensions de l'écran
    00214
    00215 GFX2_GLOBAL int   Resize_Largeur;      // \__ Positionnées lorsque l'utilisateur tire
    00216 GFX2_GLOBAL int   Resize_Hauteur;      // /      un bord de la fenêtre.
    00217 GFX2_GLOBAL int   Resolution_actuelle; // Résolution graphique courante
    00218 GFX2_GLOBAL short Ecran_original_X;    // |_ Dimensions de l'écran d'origine de
    00219 GFX2_GLOBAL short Ecran_original_Y;    // |  l'image qui vient d'être chargée.
    00220 GFX2_GLOBAL short Largeur_ecran;       // Largeur de l'écran
    00221 GFX2_GLOBAL short Hauteur_ecran;       // Hauteur de l'écran
    00222 GFX2_GLOBAL short Limite_Haut;         // |
    00223 GFX2_GLOBAL short Limite_Bas;          // |_ Limites dans lesquelles
    00224 GFX2_GLOBAL short Limite_Gauche;       // |  on peut écrire
    00225 GFX2_GLOBAL short Limite_Droite;       // |
    00226 GFX2_GLOBAL short Limite_visible_Bas;    // |_ Derniers points visibles
    00227 GFX2_GLOBAL short Limite_visible_Droite; // |  "à l'image"
    00228
    00229 GFX2_GLOBAL short Limite_Haut_Zoom;         // |
    00230 GFX2_GLOBAL short Limite_Bas_Zoom;          // |_ Limites dans lesquelles on peut
    00231 GFX2_GLOBAL short Limite_Gauche_Zoom;       // |  écrire dans la partie zoomée
    00232 GFX2_GLOBAL short Limite_Droite_Zoom;       // |
    00233 GFX2_GLOBAL short Limite_visible_Bas_Zoom;    // |_ Derniers points visibles "à
    00234 GFX2_GLOBAL short Limite_visible_Droite_Zoom; // |  l'image" dans la partie zoomée
    00235
    00236 GFX2_GLOBAL byte * Buffer_de_ligne_horizontale; // Buffer d'affichage de lignes
    00237
    00238   // Données sur l'image actuelle:
    00239
    00240 GFX2_GLOBAL byte *    Principal_Ecran;   // Ecran virtuel courant
    00241 GFX2_GLOBAL T_Palette Principal_Palette; // Palette de l'écran en cours
    00242
    00243 GFX2_GLOBAL byte  Principal_Image_modifiee; // L'image courante a été modifiée
    00244 GFX2_GLOBAL short Principal_Largeur_image;  // Largeur de l'image dans laquelle l'utilisateur désire travailler
    00245 GFX2_GLOBAL short Principal_Hauteur_image;  // Hauteur de l'image dans laquelle l'utilisateur désire travailler
    00246 GFX2_GLOBAL short Principal_Decalage_X;     // Décalage en X de l'écran par rapport au début de l'image
    00247 GFX2_GLOBAL short Principal_Decalage_Y;     // Décalage en Y de l'écran par rapport au début de l'image
    00248 GFX2_GLOBAL short Ancien_Principal_Decalage_X;
    00249 GFX2_GLOBAL short Ancien_Principal_Decalage_Y;
    00250
    00251 GFX2_GLOBAL char  Principal_Repertoire_fichier[1024]; // |_ Nom complet =
    00252 GFX2_GLOBAL char  Principal_Nom_fichier[256];         // |  Repertoire_fichier+"\"+Nom_fichier
    00253 GFX2_GLOBAL byte  Principal_Format_fichier;          // Format auquel il faut lire et écrire le fichier
    00254 GFX2_GLOBAL byte  Principal_Format;               // Format du fileselect
    00255 GFX2_GLOBAL short Principal_File_list_Position; // Début de la partie affichée dans la liste de fichiers
    00256 GFX2_GLOBAL short Principal_File_list_Decalage; // Décalage de la barre de sélection dans le fileselector
    00257 GFX2_GLOBAL char  Principal_Repertoire_courant[1024]; // Répertoire actuel sur disque
    00258 GFX2_GLOBAL char  Principal_Commentaire[TAILLE_COMMENTAIRE+1]; // Commentaire de l'image
    00259
    00260 GFX2_GLOBAL short Principal_Split; // Position en X du bord gauche du split de la loupe
    00261 GFX2_GLOBAL short Principal_X_Zoom; // (Menu_Facteur_X) + Position en X du bord droit du split de la loupe
    00262 GFX2_GLOBAL float Principal_Proportion_split; // Proportion de la zone non-zoomée par rapport à l'écran
    00263
    00264   // Données sur le brouillon:
    00265
    00266 GFX2_GLOBAL byte *    Brouillon_Ecran;   // Ecran virtuel brouillon
    00267 GFX2_GLOBAL T_Palette Brouillon_Palette; // Palette de l'écran de brouillon
    00268
    00269 GFX2_GLOBAL byte  Brouillon_Image_modifiee; // Le brouillon a été modifié
    00270 GFX2_GLOBAL short Brouillon_Largeur_image;  // Largeur du brouillon dans laquelle l'utilisateur désire travailler
    00271 GFX2_GLOBAL short Brouillon_Hauteur_image;  // Hauteur du brouillon dans laquelle l'utilisateur désire travailler
    00272 GFX2_GLOBAL short Brouillon_Decalage_X;     // Décalage en X du brouillon par rapport au début de l'image
    00273 GFX2_GLOBAL short Brouillon_Decalage_Y;     // Décalage en Y du brouillon par rapport au début de l'image
    00274 GFX2_GLOBAL short Ancien_Brouillon_Decalage_X;
    00275 GFX2_GLOBAL short Ancien_Brouillon_Decalage_Y;
    00276
    00277 GFX2_GLOBAL char  Brouillon_Repertoire_fichier[TAILLE_CHEMIN_FICHIER]; // |_ Nom complet =
    00278 GFX2_GLOBAL char  Brouillon_Nom_fichier[TAILLE_CHEMIN_FICHIER];        // |  Repertoire_fichier+"\"+Nom_fichier
    00279 GFX2_GLOBAL byte  Brouillon_Format_fichier;          // Format auquel il faut lire et écrire le fichier
    00280 GFX2_GLOBAL byte  Brouillon_Format;               // Format du fileselect
    00281 GFX2_GLOBAL short Brouillon_File_list_Position; // Début de la partie affichée dans la liste de fichiers
    00282 GFX2_GLOBAL short Brouillon_File_list_Decalage; // Décalage de la barre de sélection dans le fileselector
    00283 GFX2_GLOBAL char  Brouillon_Repertoire_courant[TAILLE_CHEMIN_FICHIER]; // Répertoire actuel sur disque
    00284 GFX2_GLOBAL char  Brouillon_Commentaire[TAILLE_COMMENTAIRE+1]; // Commentaire de l'image
    00285
    00286 GFX2_GLOBAL short Brouillon_Split; // Position en X du bord gauche du split de la loupe
    00287 GFX2_GLOBAL short Brouillon_X_Zoom; // (Menu_Facteur_X) + Position en X du bord droit du split de la loupe
    00288 GFX2_GLOBAL float Brouillon_Proportion_split; // Proportion de la zone non-zoomée par rapport à l'écran
    00289
    00290 GFX2_GLOBAL byte  Brouillon_Loupe_Mode;      // On est en mode loupe dans le brouillon
    00291 GFX2_GLOBAL word  Brouillon_Loupe_Facteur;   // Facteur de zoom dans le brouillon
    00292 GFX2_GLOBAL word  Brouillon_Loupe_Hauteur;   // Largeur de la fenêtre de zoom dans le brouillon
    00293 GFX2_GLOBAL word  Brouillon_Loupe_Largeur;   // Hauteur de la fenêtre de zoom dans le brouillon
    00294 GFX2_GLOBAL short Brouillon_Loupe_Decalage_X;// Decalage horizontal de la fenêtre de zoom dans le brouillon
    00295 GFX2_GLOBAL short Brouillon_Loupe_Decalage_Y;// Decalage vertical   de la fenêtre de zoom dans le brouillon
    00296
    00297 GFX2_GLOBAL byte Masque_copie_couleurs[256]; // Tableau des couleurs à copier vers le brouillon
    00298
    00299   // Sauvegarde de l'image:
    00300
    00301 GFX2_GLOBAL byte * Ecran_backup;     // Sauvegarde de l'écran virtuel courant
    00302 GFX2_GLOBAL S_Liste_de_pages * Principal_Backups; // Liste des pages de backup de la page principale
    00303 GFX2_GLOBAL S_Liste_de_pages * Brouillon_Backups; // Liste des pages de backup de la page de brouillon
    00304
    00305
    00306   // Données sur la brosse:
    00307
    00308 GFX2_GLOBAL byte * Brosse;          // Sprite de la brosse
    00309 GFX2_GLOBAL word Brosse_Decalage_X; // Centre horizontal de la brosse
    00310 GFX2_GLOBAL word Brosse_Decalage_Y; // Centre vertical de la brosse
    00311 GFX2_GLOBAL word Brosse_Largeur;    // Largeur de la brosse
    00312 GFX2_GLOBAL word Brosse_Hauteur;    // Hauteur de la brosse
    00313
    00314 GFX2_GLOBAL char  Brosse_Repertoire_fichier[TAILLE_CHEMIN_FICHIER];// |
    00315 GFX2_GLOBAL char  Brosse_Nom_fichier[TAILLE_CHEMIN_FICHIER];       // |
    00316 GFX2_GLOBAL byte  Brosse_Format_fichier;                           // |  Infos sur le
    00317 GFX2_GLOBAL byte  Brosse_Format;                                   // |_ sélecteur de
    00318 GFX2_GLOBAL short Brosse_File_list_Position;                       // |  fichiers de la
    00319 GFX2_GLOBAL short Brosse_File_list_Decalage;                       // |  brosse.
    00320 GFX2_GLOBAL char  Brosse_Repertoire_courant[256];                  // |
    00321 GFX2_GLOBAL char  Brosse_Commentaire[TAILLE_COMMENTAIRE+1];        // |
    00322
    00323 GFX2_GLOBAL byte  Brosse_Centre_rotation_defini; // |  Infos sur le
    00324 GFX2_GLOBAL short Brosse_Centre_rotation_X;      // |- centre de rotation
    00325 GFX2_GLOBAL short Brosse_Centre_rotation_Y;      // |  de la brosse
    00326
    00327   // Données sur le menu
    00328
    00329 GFX2_GLOBAL byte  Menu_visible;        // Le menu est actif à l'écran
    00330 GFX2_GLOBAL word  Menu_Ordonnee;       // Ordonnée où commence le menu
    00331 GFX2_GLOBAL word  Menu_Ordonnee_Texte; // Ordonnée où commence le texte dans le menu
    00332 GFX2_GLOBAL byte  Menu_Facteur_X;      // Facteur de grossissement du menu en X
    00333 GFX2_GLOBAL byte  Menu_Facteur_Y;      // Facteur de grossissement du menu en Y
    00334 GFX2_GLOBAL word  Menu_Taille_couleur; // Taille d'une couleur de la palette du menu
    00335
    00336
    00337   // Données sur la fenêtre de menu
    00338
    00339 GFX2_GLOBAL byte Fenetre; // Nombre de fenetres empilées. 0 si pas de fenetre ouverte.
    00340
    00341 GFX2_GLOBAL byte Menu_visible_avant_fenetre;  // Le menu était visible avant d'ouvir une fenêtre
    00342 GFX2_GLOBAL word Menu_Ordonnee_avant_fenetre; // Ordonnée du menu avant d'ouvrir une fenêtre
    00343 GFX2_GLOBAL byte Cacher_pinceau_avant_fenetre;// Le pinceau étatit déjà caché avant l'ouverture de la fenetre?
    00344
    00345 GFX2_GLOBAL word Pile_Fenetre_Pos_X[8];   // Position du bord gauche de la fenêtre dans l'écran
    00346 #define Fenetre_Pos_X Pile_Fenetre_Pos_X[Fenetre-1]
    00347
    00348 GFX2_GLOBAL word Pile_Fenetre_Pos_Y[8];   // Position du bord haut   de la fenêtre dans l'écran
    00349 #define Fenetre_Pos_Y Pile_Fenetre_Pos_Y[Fenetre-1]
    00350
    00351 GFX2_GLOBAL word Pile_Fenetre_Largeur[8]; // Largeur de la fenêtre
    00352 #define Fenetre_Largeur Pile_Fenetre_Largeur[Fenetre-1]
    00353
    00354 GFX2_GLOBAL word Pile_Fenetre_Hauteur[8]; // Hauteur de la fenêtre
    00355 #define Fenetre_Hauteur Pile_Fenetre_Hauteur[Fenetre-1]
    00356
    00357 GFX2_GLOBAL word Pile_Nb_boutons_fenetre[8];
    00358 #define Nb_boutons_fenetre Pile_Nb_boutons_fenetre[Fenetre-1]
    00359
    00360 GFX2_GLOBAL struct Fenetre_Bouton_normal   * Pile_Fenetre_Liste_boutons_normal[8];
    00361 #define Fenetre_Liste_boutons_normal Pile_Fenetre_Liste_boutons_normal[Fenetre-1]
    00362
    00363 GFX2_GLOBAL struct Fenetre_Bouton_palette  * Pile_Fenetre_Liste_boutons_palette[8];
    00364 #define Fenetre_Liste_boutons_palette Pile_Fenetre_Liste_boutons_palette[Fenetre-1]
    00365
    00366 GFX2_GLOBAL struct Fenetre_Bouton_scroller * Pile_Fenetre_Liste_boutons_scroller[8];
    00367 #define Fenetre_Liste_boutons_scroller Pile_Fenetre_Liste_boutons_scroller[Fenetre-1]
    00368
    00369 GFX2_GLOBAL struct Fenetre_Bouton_special  * Pile_Fenetre_Liste_boutons_special[8];
    00370 #define Fenetre_Liste_boutons_special Pile_Fenetre_Liste_boutons_special[Fenetre-1]
    00371
    00372 GFX2_GLOBAL struct Fenetre_Bouton_dropdown  * Pile_Fenetre_Liste_boutons_dropdown[8];
    00373 #define Fenetre_Liste_boutons_dropdown Pile_Fenetre_Liste_boutons_dropdown[Fenetre-1]
    00374
    00375
    00376 GFX2_GLOBAL int Pile_Fenetre_Attribut1[8];
    00377 #define Fenetre_Attribut1 Pile_Fenetre_Attribut1[Fenetre-1]
    00378
    00379 // Cette variable sert à stocker 2 informations:
    00380 // - Sur le click d'un scroller, la position active (0-n)
    00381 // - Sur le click d'une palette, le numero de couleur (0-255).
    00382 GFX2_GLOBAL int Pile_Fenetre_Attribut2[8];
    00383 #define Fenetre_Attribut2 Pile_Fenetre_Attribut2[Fenetre-1]
    00384
    00385
    00386
    00387
    00388 // Définition des boutons ////////////////////////////////////////////////////
    00389
    00390 GFX2_GLOBAL struct
    00391 {
    00392   // Informations sur l'aspect du bouton (graphisme):
    00393   word            Decalage_X;        // Décalage par rapport à la gauche du menu
    00394   word            Decalage_Y;        // Décalage par rapport au haut du menu
    00395   word            Largeur;           // Largeur du bouton
    00396   word            Hauteur;           // Hauteur du bouton
    00397   byte            Enfonce;           // Le bouton est enfoncé
    00398   byte            Forme;             // Forme du bouton
    00399
    00400   // Information sur les clicks de la souris:
    00401   fonction_action Gauche;            // Action déclenchée par un click gauche sur le bouton
    00402   fonction_action Droite;            // Action déclenchée par un click droit  sur le bouton
    00403   word            Raccourci_gauche[2];  // Raccourci clavier équivalent à un click gauche sur le bouton
    00404   word            Raccourci_droite[2];  // Raccourci clavier équivalent à un click droit  sur le bouton
    00405
    00406   // Informations sur le désenclenchement du bouton géré par le moteur:
    00407   fonction_action Desenclencher;     // Action appelée lors du désenclenchement du bouton
    00408   byte            Famille;           // Ensemble de boutons auquel celui-ci appartient
    00409
    00410 } Bouton[NB_BOUTONS];
    00411
    00412
    00413
    00414 // Informations sur les différents modes de dessin
    00415
    00416 GFX2_GLOBAL fonction_effet Fonction_effet;
    00417
    00418 GFX2_GLOBAL byte * FX_Feedback_Ecran;
    00419
    00420 GFX2_GLOBAL byte Exclude_color[256]; // Couleurs à exclure pour Meilleure_couleur
    00421
    00422   // Mode smear:
    00423
    00424 GFX2_GLOBAL byte  Smear_Mode;    // Le mode smear est enclenché
    00425 GFX2_GLOBAL byte  Smear_Debut;   // On vient juste de commencer une opération en Smear
    00426 GFX2_GLOBAL byte * Smear_Brosse; // Sprite de la brosse de Smear
    00427 GFX2_GLOBAL word  Smear_Brosse_Largeur; // Largeur de la brosse de Smear
    00428 GFX2_GLOBAL word  Smear_Brosse_Hauteur; // Hauteur de la brosse de Smear
    00429 GFX2_GLOBAL short Smear_Min_X,Smear_Max_X,Smear_Min_Y,Smear_Max_Y; // Bornes de la Brosse du smear
    00430
    00431   // Mode shade:
    00432
    00433 GFX2_GLOBAL struct T_Shade Shade_Liste[8]; // Listes de shade
    00434 GFX2_GLOBAL byte           Shade_Actuel;   // Numéro du shade en cours
    00435 GFX2_GLOBAL byte *         Shade_Table;    // Table de conversion de shade en cours
    00436 GFX2_GLOBAL byte           Shade_Table_gauche[256]; // Table de conversion de shade pour un clic gauche
    00437 GFX2_GLOBAL byte           Shade_Table_droite[256]; // Table de conversion de shade pour un clic droit
    00438 GFX2_GLOBAL byte           Shade_Mode;     // Le mode shade est enclenché
    00439
    00440 GFX2_GLOBAL byte           Quick_shade_Mode; // Le mode quick-shade est enclenché
    00441 GFX2_GLOBAL byte           Quick_shade_Step; // Pas du mode quick-shade
    00442 GFX2_GLOBAL byte           Quick_shade_Loop; // Normal / Loop / No sat.
    00443
    00444   // Mode stencil:
    00445
    00446 GFX2_GLOBAL byte Stencil_Mode;  // Le mode stencil est enclenché
    00447 GFX2_GLOBAL byte Stencil[256];  // Tableau des couleurs protégées
    00448
    00449   // Mode grille:
    00450
    00451 GFX2_GLOBAL byte  Snap_Mode;       // Le mode grille est enclenché
    00452 GFX2_GLOBAL word Snap_Largeur;    // Largeur entre 2 points de la grille
    00453 GFX2_GLOBAL word Snap_Hauteur;    // Hauteur entre 2 points de la grille
    00454 GFX2_GLOBAL word Snap_Decalage_X; // Position en X du point le + à gauche
    00455 GFX2_GLOBAL word Snap_Decalage_Y; // Position en Y du point le + en haut
    00456
    00457   // Mode trame:
    00458
    00459 GFX2_GLOBAL byte  Trame_Mode;    // Le mode Trame est enclenché
    00460 GFX2_GLOBAL byte  Trame[16][16]; // Sprite de la trame
    00461 GFX2_GLOBAL word  TRAME_PREDEFINIE[12][16]; // Trames préséfinies (compactées sur 16*16 bits)
    00462 GFX2_GLOBAL short Trame_Largeur; // Largeur de la trame
    00463 GFX2_GLOBAL short Trame_Hauteur; // Hauteur de la trame
    00464
    00465   // Mode colorize:
    00466
    00467 GFX2_GLOBAL byte Colorize_Mode;          // Le mode Colorize est enclenché
    00468 GFX2_GLOBAL byte Colorize_Opacite;       // Intensité du Colorize
    00469 GFX2_GLOBAL byte Colorize_Mode_en_cours; // Le type de Colorize en cours (0-2)
    00470 GFX2_GLOBAL word Table_de_multiplication_par_Facteur_A[256];
    00471 GFX2_GLOBAL word Table_de_multiplication_par_Facteur_B[256];
    00472
    00473   // Mode smooth:
    00474
    00475 GFX2_GLOBAL byte Smooth_Mode;          // Le mode Smooth est enclenché
    00476 GFX2_GLOBAL byte Smooth_Matrice[3][3]; // La matrice du Smooth actuel
    00477
    00478   // Mode Tiling:
    00479
    00480 GFX2_GLOBAL byte  Tiling_Mode;       // Le mode Tiling est enclenché
    00481 GFX2_GLOBAL short Tiling_Decalage_X; // Décalage du tiling en X
    00482 GFX2_GLOBAL short Tiling_Decalage_Y; // Décalage du tiling en Y
    00483
    00484   // Mode Mask
    00485
    00486 GFX2_GLOBAL byte Mask_Mode;  // Le mode Masque est enclenché
    00487 GFX2_GLOBAL byte Mask_table[256];  // Tableau des couleurs constituant le masque
    00488
    00489   // Mode loupe:
    00490
    00491 GFX2_GLOBAL byte  Loupe_Mode;
    00492 GFX2_GLOBAL word  Loupe_Facteur;
    00493 GFX2_GLOBAL word  Loupe_Hauteur;
    00494 GFX2_GLOBAL word  Loupe_Largeur;
    00495 GFX2_GLOBAL short Loupe_Decalage_X;
    00496 GFX2_GLOBAL short Loupe_Decalage_Y;
    00497 GFX2_GLOBAL word  * Table_mul_facteur_zoom;
    00498 GFX2_GLOBAL word  TABLE_ZOOM[NB_FACTEURS_DE_ZOOM][512];
    00499
    00500 #ifdef VARIABLES_GLOBALES
    00501   word FACTEUR_ZOOM[NB_FACTEURS_DE_ZOOM]={2,3,4,5,6,8,10,12,14,16,18,20};
    00502 #else
    00503   extern word FACTEUR_ZOOM[NB_FACTEURS_DE_ZOOM];
    00504 #endif
    00505
    00506   // Données sur les ellipses et les cercles:
    00507
    00508 GFX2_GLOBAL long  Ellipse_Curseur_X;
    00509 GFX2_GLOBAL long  Ellipse_Curseur_Y;
    00510 GFX2_GLOBAL long  Ellipse_Rayon_vertical_au_carre;
    00511 GFX2_GLOBAL long  Ellipse_Rayon_horizontal_au_carre;
    00512 //GFX2_GLOBAL long  Ellipse_Limite_High;
    00513 //GFX2_GLOBAL long  Ellipse_Limite_Low;
    00514 GFX2_GLOBAL uint64_t Ellipse_Limite;
    00515 GFX2_GLOBAL long  Cercle_Curseur_X;
    00516 GFX2_GLOBAL long  Cercle_Curseur_Y;
    00517 GFX2_GLOBAL long  Cercle_Limite;
    00518
    00519   // Données sur les dégradés:
    00520
    00521 GFX2_GLOBAL short Degrade_Borne_Inferieure;   // Plus petite couleur englobée par le dégradé
    00522 GFX2_GLOBAL short Degrade_Borne_Superieure;   // Plus grande couleur englobée par le dégradé
    00523 GFX2_GLOBAL int   Degrade_Inverse;            // Booléen "Le dégradé est en réalité inversé"
    00524 GFX2_GLOBAL long  Degrade_Intervalle_bornes;  // = Abs(Degrade_Borne_Inferieure-Degrade_Borne_Superieure)+1
    00525 GFX2_GLOBAL long  Degrade_Intervalle_total;   // Valeur maximum des indices passés à la fonction de dégradé (!!! >0 !!!)
    00526 GFX2_GLOBAL long  Degrade_Melange_aleatoire;  // Facteur de mélange (1-256+) du dégradé
    00527 GFX2_GLOBAL fonction_degrade Traiter_degrade; // Fonction de traitement du dégradé, varie selon la méthode choisie par l'utilisateur.
    00528 GFX2_GLOBAL fonction_afficheur Traiter_pixel_de_degrade; // Redirection de l'affichage
    00529
    00530 GFX2_GLOBAL struct T_Degrade_Tableau Degrade_Tableau[16]; // Données de tous les dégradés
    00531 GFX2_GLOBAL byte Degrade_Courant;             // Indice du tableau correspondant au dégradé courant
    00532
    00533
    00534
    00535   // Données sur le Spray:
    00536
    00537 GFX2_GLOBAL byte  Spray_Mode;            // Mode Mono(1) ou Multicolore(0)
    00538 GFX2_GLOBAL short Spray_Size;            // Diamètre du spray en pixels
    00539 GFX2_GLOBAL byte  Spray_Delay;           // Délai en VBLs entre 2 "pschiitt"
    00540 GFX2_GLOBAL byte  Spray_Mono_flow;       // Nombre de pixels qui sortent en même temps en mono
    00541 GFX2_GLOBAL byte  Spray_Multi_flow[256]; // Idem pour chaque couleur
    00542
    00543
    00544   // Données diverses sur le programme:
    00545
    00546 GFX2_GLOBAL byte Sortir_du_programme;
    00547 GFX2_GLOBAL char Repertoire_initial[256];          // Répertoire à partir duquel à été lancé le programme
    00548 GFX2_GLOBAL char Repertoire_des_donnees[256];      // Répertoire contenant les fichiers lus (interface graphique, etc)
    00549 GFX2_GLOBAL char Repertoire_de_configuration[256]; // Répertoire contenant les fichiers .ini et .cfg
    00550 GFX2_GLOBAL byte Fore_color;
    00551 GFX2_GLOBAL byte Back_color;
    00552 GFX2_GLOBAL byte Mode_de_dessin_en_cours;
    00553 GFX2_GLOBAL byte Courbe_en_cours;
    00554 GFX2_GLOBAL byte Ligne_en_cours;
    00555 GFX2_GLOBAL byte Couleur_debut_palette;
    00556 GFX2_GLOBAL byte Un_fichier_a_ete_passe_en_parametre;
    00557 GFX2_GLOBAL byte Une_resolution_a_ete_passee_en_parametre; // utilisée uniquement si la variable précédente est à 1
    00558
    00559   // Variables concernant l'OBJ DIVERS
    00560
    00561 GFX2_GLOBAL word INPUT_Nouveau_Mouse_X;
    00562 GFX2_GLOBAL word INPUT_Nouveau_Mouse_Y;
    00563 GFX2_GLOBAL byte INPUT_Nouveau_Mouse_K;
    00564 GFX2_GLOBAL byte INPUT_Keyb_mode;
    00565
    00566   // Les différents sprites:
    00567
    00568 GFX2_GLOBAL byte BLOCK_MENU[HAUTEUR_MENU][LARGEUR_MENU];
    00569 GFX2_GLOBAL byte SPRITE_MENU[NB_SPRITES_MENU][HAUTEUR_SPRITE_MENU][LARGEUR_SPRITE_MENU];
    00570 GFX2_GLOBAL byte SPRITE_EFFET[NB_SPRITES_EFFETS][HAUTEUR_SPRITE_MENU][LARGEUR_SPRITE_MENU];
    00571
    00572 GFX2_GLOBAL byte * Logo_GrafX2;
    00573
    00574 GFX2_GLOBAL byte Fonte_systeme[256*8*8];
    00575 GFX2_GLOBAL byte Fonte_fun    [256*8*8];
    00576 GFX2_GLOBAL byte Fonte_help_norm [256][6][8];
    00577 GFX2_GLOBAL byte Fonte_help_bold [256][6][8];
    00578 // 12
    00579 // 34
    00580 GFX2_GLOBAL byte Fonte_help_t1 [64][6][8];
    00581 GFX2_GLOBAL byte Fonte_help_t2 [64][6][8];
    00582 GFX2_GLOBAL byte Fonte_help_t3 [64][6][8];
    00583 GFX2_GLOBAL byte Fonte_help_t4 [64][6][8];
    00584 GFX2_GLOBAL byte * Fonte;
    00585
    00586   // Les données de l'aide:
    00587
    00588 GFX2_GLOBAL byte Section_d_aide_en_cours;  // Indice de la table d'aide en cours de consultation
    00589 GFX2_GLOBAL word Position_d_aide_en_cours; // Numéro de la ligne d'aide en cours de consultation
    00590
    00591   // Données sur les opérations
    00592
    00593 GFX2_GLOBAL word Operation_avant_interruption; // N° de l'opération en cours avant l'utilisation d'une interruption
    00594 GFX2_GLOBAL word Operation_en_cours;           // N° de l'opération en cours
    00595 GFX2_GLOBAL word Operation_Pile[TAILLE_PILE_OPERATIONS]; // Pile simplifiée
    00596 GFX2_GLOBAL byte Operation_Taille_pile;    // Taille effective de la pile (0=vide)
    00597 GFX2_GLOBAL byte Operation_dans_loupe;     // Indique si l'opération a commencé dans la partie Zoomée ou non
    00598
    00599 GFX2_GLOBAL short Pipette_Couleur;
    00600 GFX2_GLOBAL short Pipette_X;
    00601 GFX2_GLOBAL short Pipette_Y;
    00602
    00603
    00604 #ifdef VARIABLES_GLOBALES
    00605   byte CURSEUR_D_OPERATION[NB_OPERATIONS]=
    00606   {
    00607     FORME_CURSEUR_CIBLE            , // Dessin à la main continu
    00608     FORME_CURSEUR_CIBLE            , // Dessin à la main discontinu
    00609     FORME_CURSEUR_CIBLE            , // Dessin à la main point par point
    00610     FORME_CURSEUR_CIBLE            , // Contour fill
    00611     FORME_CURSEUR_CIBLE            , // Lignes
    00612     FORME_CURSEUR_CIBLE            , // Lignes reliées
    00613     FORME_CURSEUR_CIBLE            , // Lignes centrées
    00614     FORME_CURSEUR_CIBLE_XOR        , // Rectangle vide
    00615     FORME_CURSEUR_CIBLE_XOR        , // Rectangle plein
    00616     FORME_CURSEUR_CIBLE            , // Cercles vides
    00617     FORME_CURSEUR_CIBLE            , // Cercles pleins
    00618     FORME_CURSEUR_CIBLE            , // Ellipses vides
    00619     FORME_CURSEUR_CIBLE            , // Ellipses pleines
    00620     FORME_CURSEUR_CIBLE            , // Fill
    00621     FORME_CURSEUR_CIBLE            , // Remplacer
    00622     FORME_CURSEUR_CIBLE_XOR        , // Prise de brosse rectangulaire
    00623     FORME_CURSEUR_CIBLE            , // Prise d'une brosse multiforme
    00624     FORME_CURSEUR_CIBLE_PIPETTE    , // Récupération d'une couleur
    00625     FORME_CURSEUR_RECTANGLE_XOR    , // Positionnement de la fenêtre de loupe
    00626     FORME_CURSEUR_CIBLE            , // Courbe à 3 points
    00627     FORME_CURSEUR_CIBLE            , // Courbe à 4 points
    00628     FORME_CURSEUR_CIBLE            , // Spray
    00629     FORME_CURSEUR_CIBLE            , // Polygone
    00630     FORME_CURSEUR_CIBLE            , // Polyforme
    00631     FORME_CURSEUR_CIBLE            , // Polyfill
    00632     FORME_CURSEUR_CIBLE            , // Polyforme rempli
    00633     FORME_CURSEUR_MULTIDIRECTIONNEL, // Scroll
    00634     FORME_CURSEUR_CIBLE            , // Cercles dégradés
    00635     FORME_CURSEUR_CIBLE            , // Ellipses dégradées
    00636     FORME_CURSEUR_ROTATE_XOR       , // Faire tourner brosse
    00637     FORME_CURSEUR_CIBLE_XOR        , // Etirer brosse
    00638     FORME_CURSEUR_CIBLE            , // Deformer brosse
    00639     FORME_CURSEUR_CIBLE_XOR        , // Rectangle degrade
    00640   };
    00641 #else
    00642   extern byte CURSEUR_D_OPERATION[NB_OPERATIONS];
    00643 #endif
    00644
    00645
    00646   // Procédures à appeler: Opération,Mouse_K,Etat de la pile
    00647
    00648 GFX2_GLOBAL struct
    00649 {
    00650   byte Effacer_curseur; // Booléen "il faut effacer le curseur pour l'opéra."
    00651   fonction_action Action;                                   // Action appelée
    00652 } Operation[NB_OPERATIONS][3][TAILLE_PILE_OPERATIONS];
    00653
    00654
    00655
    00656 // Informations sur les lecteurs et autres images
    00657 GFX2_GLOBAL byte SPRITE_DRIVE[NB_SPRITES_DRIVES][HAUTEUR_SPRITE_DRIVE][LARGEUR_SPRITE_DRIVE];
    00658
    00659
    00660 // -- Section des informations sur les formats de fichiers ------------------
    00661
    00662   // Comptage du nb d'éléments dans la liste:
    00663 GFX2_GLOBAL short Liste_Nb_elements;
    00664 GFX2_GLOBAL short Liste_Nb_fichiers;
    00665 GFX2_GLOBAL short Liste_Nb_repertoires;
    00666   // Tête de la liste chaînée:
    00667 GFX2_GLOBAL struct Element_de_liste_de_fileselect * Liste_du_fileselect;
    00668
    00669 // ------------------- Inititialisation des formats connus -------------------
    00670
    00671 void Rien_du_tout(void);
    00672
    00673 GFX2_GLOBAL signed char Erreur_fichier; // 0: opération I/O OK
    00674                                    // 1: Erreur dès le début de l'opération
    00675                                    // 2: Erreur durant l'opération => données modifiées
    00676                                    //-1: Interruption du chargement d'une preview
    00677
    00678 GFX2_GLOBAL int Ligne_INI;
    00679
    00680 GFX2_GLOBAL fonction_afficheur Pixel_de_chargement;
    00681 GFX2_GLOBAL fonction_lecteur   Lit_pixel_de_sauvegarde;
    00682
    00683 /********************
    00684  * Spécifique à SDL *
    00685  ********************/
    00686 GFX2_GLOBAL SDL_Surface * Ecran_SDL;
    00687 GFX2_GLOBAL SDL_Joystick* joystick;
    00688
    00689 #define TOUCHE_AUCUNE          0
    00690 #define TOUCHE_MOUSEMIDDLE     (SDLK_LAST+1)
    00691 #define TOUCHE_MOUSEWHEELUP    (SDLK_LAST+2)
    00692 #define TOUCHE_MOUSEWHEELDOWN  (SDLK_LAST+3)
    00693 #define TOUCHE_BUTTON          (SDLK_LAST+4)
    00694
    00695 #ifdef __gp2x__
    00696   #define TOUCHE_ESC (TOUCHE_BUTTON+GP2X_BUTTON_X)
    00697 #else
    00698   #define TOUCHE_ESC SDLK_ESCAPE
    00699 #endif
    00700
    00701 #endif