Source code translated to english

git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@697 416bcca6-2ee7-4201-b75f-2eb2f807beb1
This commit is contained in:
Yves Rizoud
2009-03-27 16:50:21 +00:00
parent 6b4a8f674e
commit efbc978e6f
68 changed files with 22766 additions and 22766 deletions

736
global.h
View File

@@ -21,7 +21,7 @@
// Dans MAIN on declare les variables
// Dans les autres fichiers, on ne fait que les référencer
#ifdef VARIABLES_GLOBALES
#ifdef GLOBAL_VARIABLES
#define GFX2_GLOBAL
#else
#define GFX2_GLOBAL extern
@@ -45,7 +45,7 @@
GFX2_GLOBAL T_Config Config;
// Tableau des touches spéciales
GFX2_GLOBAL word Config_Touche[NB_TOUCHES_SPECIALES][2];
GFX2_GLOBAL word Config_Key[NB_SPECIAL_SHORTCUTS][2];
typedef struct
@@ -54,37 +54,37 @@ typedef struct
short Height;
byte Mode;
word Fullscreen;
byte Etat; // 0:Cool 1:OK ; 2:Bof ; 3:Naze ; si on rajoute +128 => incompatible
byte State; // 0:Cool 1:OK ; 2:Bof ; 3:Naze ; si on rajoute +128 => incompatible
} T_Video_mode;
GFX2_GLOBAL T_Video_mode Mode_video[MAX_MODES_VIDEO];
GFX2_GLOBAL int Nb_modes_video; // Nombre de modes réellement recensés dans Mode_video[]
GFX2_GLOBAL T_Video_mode Video_mode[MAX_VIDEO_MODES];
GFX2_GLOBAL int Nb_video_modes; // Nombre de modes réellement recensés dans Video_mode[]
// Palette par défaut
GFX2_GLOBAL T_Palette Palette_defaut;
GFX2_GLOBAL T_Palette Default_palette;
// Couleurs du menu
GFX2_GLOBAL byte CM_Noir;
GFX2_GLOBAL byte CM_Fonce;
GFX2_GLOBAL byte CM_Clair;
GFX2_GLOBAL byte CM_Blanc;
GFX2_GLOBAL byte CM_Trans;
GFX2_GLOBAL Composantes Coul_menu_pref[4];
GFX2_GLOBAL byte MC_Black;
GFX2_GLOBAL byte MC_Dark;
GFX2_GLOBAL byte MC_Light;
GFX2_GLOBAL byte MC_White;
GFX2_GLOBAL byte MC_Trans;
GFX2_GLOBAL T_Components Fav_menu_colors[4];
// Etat des entrées
// State des entrées
GFX2_GLOBAL word Mouse_X; // Abscisse de la souris
GFX2_GLOBAL word Mouse_Y; // Ordonnée de la souris
GFX2_GLOBAL byte Mouse_K; // Etat des boutons de la souris (tient comte des boutons appuyés simultanéments
GFX2_GLOBAL byte Mouse_K; // State des boutons de la souris (tient comte des boutons appuyés simultanéments
#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, ...)
#define Mouse_K_unique (Mouse_K==0?0:(Mouse_K&1?1:(Mouse_K&2?2:0))) // State des boutons de la souris (un seul bouton à la fois, on regarde d'abord le 1, puis le 2, ...)
GFX2_GLOBAL dword Touche; // Touche tapée
GFX2_GLOBAL dword Touche_ANSI; // Caractère tapé
GFX2_GLOBAL Uint8* Etat_Du_Clavier; // Scancode de la touche en cours et etat des touches de ctrl
// Modificateurs pour Touche
GFX2_GLOBAL dword Key; // Key tapée
GFX2_GLOBAL dword Key_ANSI; // Caractère tapé
GFX2_GLOBAL Uint8* Keyboard_state; // Scancode de la touche en cours et etat des touches de ctrl
// Modificateurs pour Key
// (Name conflict with windows.h)
#ifdef MOD_SHIFT
#undef MOD_SHIFT
@@ -99,244 +99,244 @@ GFX2_GLOBAL Uint8* Etat_Du_Clavier; // Scancode de la touche en cours et etat d
#define MOD_CTRL 0x2000
#define MOD_ALT 0x4000
GFX2_GLOBAL byte Quit_demande; // !=0 lorsque l'utilisateur demande la fermeture de fenêtre.
GFX2_GLOBAL byte Quit_is_required; // !=0 lorsque l'utilisateur demande la fermeture de fenêtre.
GFX2_GLOBAL byte Mouse_Facteur_de_correction_X;
GFX2_GLOBAL byte Mouse_Facteur_de_correction_Y;
GFX2_GLOBAL byte Mouse_fix_factor_X;
GFX2_GLOBAL byte Mouse_fix_factor_Y;
GFX2_GLOBAL byte Autoriser_changement_de_couleur_pendant_operation;
GFX2_GLOBAL byte Allow_color_change_during_operation;
// Données sur le curseur
GFX2_GLOBAL byte Forme_curseur;
GFX2_GLOBAL byte Forme_curseur_avant_fenetre; // Forme du curseur avant l'ouverture d'une fenêtre
GFX2_GLOBAL byte Cacher_curseur;
GFX2_GLOBAL byte Curseur_dans_menu; // Booléen "Le curseur se trouve dans le menu"
GFX2_GLOBAL byte Curseur_dans_menu_precedent; // Booléen "Le curseur se trouvait précédemment dans le menu"
GFX2_GLOBAL word Curseur_Decalage_X[NB_SPRITES_CURSEUR]; // Coordonnées X du point sensible de curseurs en sprite
GFX2_GLOBAL word Curseur_Decalage_Y[NB_SPRITES_CURSEUR]; // Coordonnées Y du point sensible de curseurs en sprite
GFX2_GLOBAL byte SPRITE_CURSEUR[NB_SPRITES_CURSEUR][HAUTEUR_SPRITE_CURSEUR][LARGEUR_SPRITE_CURSEUR]; // Dessins des sprites de curseur
GFX2_GLOBAL byte FOND_CURSEUR[HAUTEUR_SPRITE_CURSEUR][LARGEUR_SPRITE_CURSEUR]; // Contenu du dessous du curseur
GFX2_GLOBAL byte Cursor_shape;
GFX2_GLOBAL byte Cursor_shape_before_window; // Forme du curseur avant l'ouverture d'une fenêtre
GFX2_GLOBAL byte Cursor_hidden;
GFX2_GLOBAL byte Cursor_in_menu; // Booléen "Le curseur se trouve dans le menu"
GFX2_GLOBAL byte Cursor_in_menu_precedent; // Booléen "Le curseur se trouvait précédemment dans le menu"
GFX2_GLOBAL word Cursor_offset_X[NB_CURSOR_SPRITES]; // Coordonnées X du point sensible de curseurs en sprite
GFX2_GLOBAL word Cursor_offset_Y[NB_CURSOR_SPRITES]; // Coordonnées Y du point sensible de curseurs en sprite
GFX2_GLOBAL byte GFX_cursor_sprite[NB_CURSOR_SPRITES][CURSOR_SPRITE_HEIGHT][CURSOR_SPRITE_WIDTH]; // Dessins des sprites de curseur
GFX2_GLOBAL byte CURSOR_BACKGROUND[CURSOR_SPRITE_HEIGHT][CURSOR_SPRITE_WIDTH]; // Contenu du dessous du curseur
// Données sur le pinceau
GFX2_GLOBAL byte Pinceau_Forme;
GFX2_GLOBAL byte Pinceau_Forme_avant_fill;
GFX2_GLOBAL byte Pinceau_Forme_avant_pipette;
GFX2_GLOBAL byte Pinceau_Forme_avant_lasso;
GFX2_GLOBAL byte Cacher_pinceau;
GFX2_GLOBAL short Pinceau_X;
GFX2_GLOBAL short Pinceau_Y;
GFX2_GLOBAL byte SPRITE_PINCEAU [NB_SPRITES_PINCEAU][HAUTEUR_PINCEAU][LARGEUR_PINCEAU];
GFX2_GLOBAL word Pinceau_predefini_Largeur[NB_SPRITES_PINCEAU];
GFX2_GLOBAL word Pinceau_predefini_Hauteur[NB_SPRITES_PINCEAU];
GFX2_GLOBAL byte Pinceau_Type[NB_SPRITES_PINCEAU];
GFX2_GLOBAL word Pinceau_predefini_Decalage_X[NB_SPRITES_PINCEAU];
GFX2_GLOBAL word Pinceau_predefini_Decalage_Y[NB_SPRITES_PINCEAU];
GFX2_GLOBAL byte * Pinceau_Sprite;
GFX2_GLOBAL short Pinceau_Largeur;
GFX2_GLOBAL short Pinceau_Hauteur;
GFX2_GLOBAL short Pinceau_Decalage_X;
GFX2_GLOBAL short Pinceau_Decalage_Y;
GFX2_GLOBAL byte Paintbrush_shape;
GFX2_GLOBAL byte Paintbrush_shape_before_fill;
GFX2_GLOBAL byte Paintbrush_shape_before_colorpicker;
GFX2_GLOBAL byte Paintbrush_shape_before_lasso;
GFX2_GLOBAL byte Paintbrush_hidden;
GFX2_GLOBAL short Paintbrush_X;
GFX2_GLOBAL short Paintbrush_Y;
GFX2_GLOBAL byte GFX_paintbrush_sprite [NB_PAINTBRUSH_SPRITES][PAINTBRUSH_HEIGHT][PAINTBRUSH_WIDTH];
GFX2_GLOBAL word Preset_paintbrush_width[NB_PAINTBRUSH_SPRITES];
GFX2_GLOBAL word Preset_paintbrush_height[NB_PAINTBRUSH_SPRITES];
GFX2_GLOBAL byte Paintbrush_type[NB_PAINTBRUSH_SPRITES];
GFX2_GLOBAL word Preset_paintbrush_offset_X[NB_PAINTBRUSH_SPRITES];
GFX2_GLOBAL word Preset_paintbrush_offset_Y[NB_PAINTBRUSH_SPRITES];
GFX2_GLOBAL byte * Paintbrush_sprite;
GFX2_GLOBAL short Paintbrush_width;
GFX2_GLOBAL short Paintbrush_height;
GFX2_GLOBAL short Paintbrush_offset_X;
GFX2_GLOBAL short Paintbrush_offset_Y;
// Commandes graphiques
GFX2_GLOBAL int Pixel_ratio;
GFX2_GLOBAL int Pixel_width;
GFX2_GLOBAL int Pixel_height;
GFX2_GLOBAL fonction_afficheur Pixel; // Affiche un point à l'écran
GFX2_GLOBAL fonction_afficheur Pixel_dans_menu;// Affiche un point dans le menu (ou pas si le menu est invisible)
GFX2_GLOBAL fonction_lecteur Lit_pixel; // Teste la couleur d'un pixel dans l'écran
GFX2_GLOBAL fonction_display Display_screen; // Affiche rapidement tout l'écran (en faisant attention de ne pas effacer le menu)
GFX2_GLOBAL fonction_block Block; // Affiche rapidement un bloc à l'écran
GFX2_GLOBAL fonction_afficheur Pixel_Preview_Normal; // Affiche un point de l'image à l'écran en mode normal (pas en mode loupe)
GFX2_GLOBAL fonction_afficheur Pixel_Preview_Loupe; // Affiche un point de l'image à l'écran en mode loupe
GFX2_GLOBAL fonction_afficheur Pixel_Preview; // Affiche un point de l'image à l'écran en fonction de l'état du mode loupe
GFX2_GLOBAL fonction_Ligne_XOR Ligne_horizontale_XOR;// Affiche une ligne horizontale en XOR (pour placer la loupe)
GFX2_GLOBAL fonction_Ligne_XOR Ligne_verticale_XOR; // Affiche une ligne verticale en XOR (pour placer la loupe)
GFX2_GLOBAL fonction_display_brush_Color Display_brush_Color; // Affiche une partie de la brosse en couleur
GFX2_GLOBAL fonction_display_brush_Mono Display_brush_Mono; // Affiche une partie de la brosse en monochrome
GFX2_GLOBAL fonction_display_brush_Color Clear_brush; // Efface la partie de la brosse affichée à l'écran
GFX2_GLOBAL fonction_remap Remap_screen; // Remappe une partie de l'écran avec les nouvelles couleurs du menu
GFX2_GLOBAL fonction_procsline Afficher_ligne; // Afficher une ligne
GFX2_GLOBAL fonction_procsline Afficher_ligne_fast; // Afficher une ligne talle quelle (sans la doubler en mode wide)
GFX2_GLOBAL fonction_procsline Lire_ligne; // Afficher ou lire une ligne
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)
GFX2_GLOBAL fonction_display_brush_Color_zoom Display_brush_Color_zoom;
GFX2_GLOBAL fonction_display_brush_Mono_zoom Display_brush_Mono_zoom;
GFX2_GLOBAL fonction_display_brush_Color_zoom Clear_brush_zoom;
GFX2_GLOBAL fonction_affiche_brosse Affiche_brosse;
GFX2_GLOBAL Func_pixel Pixel; // Affiche un point à l'écran
GFX2_GLOBAL Func_pixel Pixel_in_menu;// Affiche un point dans le menu (ou pas si le menu est invisible)
GFX2_GLOBAL Func_read Read_pixel; // Teste la couleur d'un pixel dans l'écran
GFX2_GLOBAL Func_display Display_screen; // Affiche rapidement tout l'écran (en faisant attention de ne pas effacer le menu)
GFX2_GLOBAL Func_block Block; // Affiche rapidement un bloc à l'écran
GFX2_GLOBAL Func_pixel Pixel_preview_normal; // Affiche un point de l'image à l'écran en mode normal (pas en mode loupe)
GFX2_GLOBAL Func_pixel Pixel_preview_magnifier; // Affiche un point de l'image à l'écran en mode loupe
GFX2_GLOBAL Func_pixel Pixel_preview; // Affiche un point de l'image à l'écran en fonction de l'état du mode loupe
GFX2_GLOBAL Func_line_XOR Horizontal_XOR_line;// Affiche une ligne horizontale en XOR (pour placer la loupe)
GFX2_GLOBAL Func_line_XOR Vertical_XOR_line; // Affiche une ligne verticale en XOR (pour placer la loupe)
GFX2_GLOBAL Func_display_brush_color Display_brush_color; // Affiche une partie de la brosse en couleur
GFX2_GLOBAL Func_display_brush_mono Display_brush_mono; // Affiche une partie de la brosse en monochrome
GFX2_GLOBAL Func_display_brush_color Clear_brush; // Efface la partie de la brosse affichée à l'écran
GFX2_GLOBAL Func_remap Remap_screen; // Remappe une partie de l'écran avec les nouvelles couleurs du menu
GFX2_GLOBAL Func_procsline Display_line; // Afficher une ligne
GFX2_GLOBAL Func_procsline Display_line_fast; // Afficher une ligne talle quelle (sans la doubler en mode wide)
GFX2_GLOBAL Func_procsline Read_line; // Afficher ou lire une ligne
GFX2_GLOBAL Func_display_zoom Display_zoomed_screen; // Affiche rapidement toute la partie zoomée à l'écran (en faisant attention de ne pas effacer le menu)
GFX2_GLOBAL Func_display_brush_color_zoom Display_brush_color_zoom;
GFX2_GLOBAL Func_display_brush_mono_zoom Display_brush_mono_zoom;
GFX2_GLOBAL Func_display_brush_color_zoom Clear_brush_scaled;
GFX2_GLOBAL Func_draw_brush Display_brush;
// Données sur les dimensions de l'écran
GFX2_GLOBAL int Resize_Largeur; // \__ Positionnées lorsque l'utilisateur tire
GFX2_GLOBAL int Resize_Hauteur; // / un bord de la fenêtre.
GFX2_GLOBAL int Resolution_actuelle; // Résolution graphique courante
GFX2_GLOBAL short Ecran_original_X; // |_ Dimensions de l'écran d'origine de
GFX2_GLOBAL short Ecran_original_Y; // | l'image qui vient d'être chargée.
GFX2_GLOBAL short Largeur_ecran; // Largeur de l'écran
GFX2_GLOBAL short Hauteur_ecran; // Hauteur de l'écran
GFX2_GLOBAL short Limite_Haut; // |
GFX2_GLOBAL short Limite_Bas; // |_ Limites dans lesquelles
GFX2_GLOBAL short Limite_Gauche; // | on peut écrire
GFX2_GLOBAL short Limite_Droite; // |
GFX2_GLOBAL short Limite_visible_Bas; // |_ Derniers points visibles
GFX2_GLOBAL short Limite_visible_Droite; // | "à l'image"
GFX2_GLOBAL int Resize_width; // \__ Positionnées lorsque l'utilisateur tire
GFX2_GLOBAL int Resize_height; // / un bord de la fenêtre.
GFX2_GLOBAL int Current_resolution; // Résolution graphique courante
GFX2_GLOBAL short Original_screen_X; // |_ Dimensions de l'écran d'origine de
GFX2_GLOBAL short Original_screen_Y; // | l'image qui vient d'être chargée.
GFX2_GLOBAL short Screen_width; // Largeur de l'écran
GFX2_GLOBAL short Screen_height; // Hauteur de l'écran
GFX2_GLOBAL short Limit_top; // |
GFX2_GLOBAL short Limit_bottom; // |_ Limites dans lesquelles
GFX2_GLOBAL short Limit_left; // | on peut écrire
GFX2_GLOBAL short Limit_right; // |
GFX2_GLOBAL short Limit_visible_bottom; // |_ Derniers points visibles
GFX2_GLOBAL short Limit_visible_right; // | "à l'image"
GFX2_GLOBAL short Limite_Haut_Zoom; // |
GFX2_GLOBAL short Limite_Bas_Zoom; // |_ Limites dans lesquelles on peut
GFX2_GLOBAL short Limite_Gauche_Zoom; // | écrire dans la partie zoomée
GFX2_GLOBAL short Limite_Droite_Zoom; // |
GFX2_GLOBAL short Limite_visible_Bas_Zoom; // |_ Derniers points visibles "à
GFX2_GLOBAL short Limite_visible_Droite_Zoom; // | l'image" dans la partie zoomée
GFX2_GLOBAL short Limit_top_zoom; // |
GFX2_GLOBAL short Limit_bottom_zoom; // |_ Limites dans lesquelles on peut
GFX2_GLOBAL short Limit_left_zoom; // | écrire dans la partie zoomée
GFX2_GLOBAL short Limit_right_zoom; // |
GFX2_GLOBAL short Limit_visible_bottom_zoom; // |_ Derniers points visibles "à
GFX2_GLOBAL short Limit_visible_right_zoom; // | l'image" dans la partie zoomée
GFX2_GLOBAL byte * Buffer_de_ligne_horizontale; // Buffer d'affichage de lignes
GFX2_GLOBAL byte * Horizontal_line_buffer; // buffer d'affichage de lignes
// Données sur l'image actuelle:
GFX2_GLOBAL byte * Principal_Ecran; // Ecran virtuel courant
GFX2_GLOBAL T_Palette Principal_Palette; // Palette de l'écran en cours
GFX2_GLOBAL byte * Main_screen; // Screen virtuel courant
GFX2_GLOBAL T_Palette Main_palette; // Palette de l'écran en cours
GFX2_GLOBAL byte Principal_Image_modifiee; // L'image courante a été modifiée
GFX2_GLOBAL short Principal_Largeur_image; // Largeur de l'image dans laquelle l'utilisateur désire travailler
GFX2_GLOBAL short Principal_Hauteur_image; // Hauteur de l'image dans laquelle l'utilisateur désire travailler
GFX2_GLOBAL short Principal_Decalage_X; // Décalage en X de l'écran par rapport au début de l'image
GFX2_GLOBAL short Principal_Decalage_Y; // Décalage en Y de l'écran par rapport au début de l'image
GFX2_GLOBAL short Ancien_Principal_Decalage_X;
GFX2_GLOBAL short Ancien_Principal_Decalage_Y;
GFX2_GLOBAL byte Main_image_is_modified; // L'image courante a été modifiée
GFX2_GLOBAL short Main_image_width; // Largeur de l'image dans laquelle l'utilisateur désire travailler
GFX2_GLOBAL short Main_image_height; // Hauteur de l'image dans laquelle l'utilisateur désire travailler
GFX2_GLOBAL short Main_offset_X; // Décalage en X de l'écran par rapport au début de l'image
GFX2_GLOBAL short Main_offset_Y; // Décalage en Y de l'écran par rapport au début de l'image
GFX2_GLOBAL short Old_main_offset_X;
GFX2_GLOBAL short Old_main_offset_Y;
GFX2_GLOBAL char Principal_Repertoire_fichier[1024]; // |_ Nom complet =
GFX2_GLOBAL char Principal_Nom_fichier[256]; // | Repertoire_fichier+"\"+Filename
GFX2_GLOBAL byte Principal_Format_fichier; // Format auquel il faut lire et écrire le fichier
GFX2_GLOBAL byte Principal_Format; // Format du fileselect
GFX2_GLOBAL short Principal_File_list_Position; // Début de la partie affichée dans la liste de fichiers
GFX2_GLOBAL short Principal_File_list_Decalage; // Décalage de la barre de sélection dans le fileselector
GFX2_GLOBAL char Principal_Repertoire_courant[1024]; // Répertoire actuel sur disque
GFX2_GLOBAL char Principal_Commentaire[TAILLE_COMMENTAIRE+1]; // Commentaire de l'image
GFX2_GLOBAL char Main_file_directory[1024]; // |_ Nom complet =
GFX2_GLOBAL char Main_filename[256]; // | File_directory+"\"+Filename
GFX2_GLOBAL byte Main_fileformat; // Format auquel il faut lire et écrire le fichier
GFX2_GLOBAL byte Main_format; // Format du fileselect
GFX2_GLOBAL short Main_fileselector_position; // Début de la partie affichée dans la liste de fichiers
GFX2_GLOBAL short Main_fileselector_offset; // Décalage de la barre de sélection dans le fileselector
GFX2_GLOBAL char Main_current_directory[1024]; // Répertoire actuel sur disque
GFX2_GLOBAL char Main_comment[COMMENT_SIZE+1]; // Commentaire de l'image
GFX2_GLOBAL short Principal_Split; // Position en X du bord gauche du split de la loupe
GFX2_GLOBAL short Principal_X_Zoom; // (Menu_Facteur_X) + Position en X du bord droit du split de la loupe
GFX2_GLOBAL float Principal_Proportion_split; // Proportion de la zone non-zoomée par rapport à l'écran
GFX2_GLOBAL short Main_separator_position; // Position en X du bord gauche du split de la loupe
GFX2_GLOBAL short Main_X_zoom; // (Menu_factor_X) + Position en X du bord droit du split de la loupe
GFX2_GLOBAL float Main_separator_proportion; // Proportion de la zone non-zoomée par rapport à l'écran
// Données sur le brouillon:
GFX2_GLOBAL byte * Brouillon_Ecran; // Ecran virtuel brouillon
GFX2_GLOBAL T_Palette Brouillon_Palette; // Palette de l'écran de brouillon
GFX2_GLOBAL byte * Spare_screen; // Screen virtuel brouillon
GFX2_GLOBAL T_Palette Spare_palette; // Palette de l'écran de brouillon
GFX2_GLOBAL byte Brouillon_Image_modifiee; // Le brouillon a été modifié
GFX2_GLOBAL short Brouillon_Largeur_image; // Largeur du brouillon dans laquelle l'utilisateur désire travailler
GFX2_GLOBAL short Brouillon_Hauteur_image; // Hauteur du brouillon dans laquelle l'utilisateur désire travailler
GFX2_GLOBAL short Brouillon_Decalage_X; // Décalage en X du brouillon par rapport au début de l'image
GFX2_GLOBAL short Brouillon_Decalage_Y; // Décalage en Y du brouillon par rapport au début de l'image
GFX2_GLOBAL short Ancien_Brouillon_Decalage_X;
GFX2_GLOBAL short Ancien_Brouillon_Decalage_Y;
GFX2_GLOBAL byte Spare_image_is_modified; // Le brouillon a été modifié
GFX2_GLOBAL short Spare_image_width; // Largeur du brouillon dans laquelle l'utilisateur désire travailler
GFX2_GLOBAL short Spare_image_height; // Hauteur du brouillon dans laquelle l'utilisateur désire travailler
GFX2_GLOBAL short Spare_offset_X; // Décalage en X du brouillon par rapport au début de l'image
GFX2_GLOBAL short Spare_offset_Y; // Décalage en Y du brouillon par rapport au début de l'image
GFX2_GLOBAL short Old_spare_offset_X;
GFX2_GLOBAL short Old_spare_offset_Y;
GFX2_GLOBAL char Brouillon_Repertoire_fichier[TAILLE_CHEMIN_FICHIER]; // |_ Nom complet =
GFX2_GLOBAL char Brouillon_Nom_fichier[TAILLE_CHEMIN_FICHIER]; // | Repertoire_fichier+"\"+Filename
GFX2_GLOBAL byte Brouillon_Format_fichier; // Format auquel il faut lire et écrire le fichier
GFX2_GLOBAL byte Brouillon_Format; // Format du fileselect
GFX2_GLOBAL short Brouillon_File_list_Position; // Début de la partie affichée dans la liste de fichiers
GFX2_GLOBAL short Brouillon_File_list_Decalage; // Décalage de la barre de sélection dans le fileselector
GFX2_GLOBAL char Brouillon_Repertoire_courant[TAILLE_CHEMIN_FICHIER]; // Répertoire actuel sur disque
GFX2_GLOBAL char Brouillon_Commentaire[TAILLE_COMMENTAIRE+1]; // Commentaire de l'image
GFX2_GLOBAL char Spare_file_directory[MAX_PATH_CHARACTERS]; // |_ Nom complet =
GFX2_GLOBAL char Spare_filename[MAX_PATH_CHARACTERS]; // | File_directory+"\"+Filename
GFX2_GLOBAL byte Spare_fileformat; // Format auquel il faut lire et écrire le fichier
GFX2_GLOBAL byte Spare_format; // Format du fileselect
GFX2_GLOBAL short Spare_fileselector_position; // Début de la partie affichée dans la liste de fichiers
GFX2_GLOBAL short Spare_fileselector_offset; // Décalage de la barre de sélection dans le fileselector
GFX2_GLOBAL char Spare_current_directory[MAX_PATH_CHARACTERS]; // Répertoire actuel sur disque
GFX2_GLOBAL char Spare_comment[COMMENT_SIZE+1]; // Commentaire de l'image
GFX2_GLOBAL short Brouillon_Split; // Position en X du bord gauche du split de la loupe
GFX2_GLOBAL short Brouillon_X_Zoom; // (Menu_Facteur_X) + Position en X du bord droit du split de la loupe
GFX2_GLOBAL float Brouillon_Proportion_split; // Proportion de la zone non-zoomée par rapport à l'écran
GFX2_GLOBAL short Spare_separator_position; // Position en X du bord gauche du split de la loupe
GFX2_GLOBAL short Spare_X_zoom; // (Menu_factor_X) + Position en X du bord droit du split de la loupe
GFX2_GLOBAL float Spare_separator_proportion; // Proportion de la zone non-zoomée par rapport à l'écran
GFX2_GLOBAL byte Brouillon_Loupe_Mode; // On est en mode loupe dans le brouillon
GFX2_GLOBAL word Brouillon_Loupe_Facteur; // Facteur de zoom dans le brouillon
GFX2_GLOBAL word Brouillon_Loupe_Hauteur; // Largeur de la fenêtre de zoom dans le brouillon
GFX2_GLOBAL word Brouillon_Loupe_Largeur; // Hauteur de la fenêtre de zoom dans le brouillon
GFX2_GLOBAL short Brouillon_Loupe_Decalage_X;// Decalage horizontal de la fenêtre de zoom dans le brouillon
GFX2_GLOBAL short Brouillon_Loupe_Decalage_Y;// Decalage vertical de la fenêtre de zoom dans le brouillon
GFX2_GLOBAL byte Spare_magnifier_mode; // On est en mode loupe dans le brouillon
GFX2_GLOBAL word Spare_magnifier_factor; // Facteur de zoom dans le brouillon
GFX2_GLOBAL word Spare_magnifier_height; // Largeur de la fenêtre de zoom dans le brouillon
GFX2_GLOBAL word Spare_magnifier_width; // Hauteur de la fenêtre de zoom dans le brouillon
GFX2_GLOBAL short Spare_magnifier_offset_X;// Offset horizontal de la fenêtre de zoom dans le brouillon
GFX2_GLOBAL short Spare_magnifier_offset_Y;// Offset vertical de la fenêtre de zoom dans le brouillon
GFX2_GLOBAL byte Masque_copie_couleurs[256]; // Tableau des couleurs à copier vers le brouillon
GFX2_GLOBAL byte Mask_color_to_copy[256]; // Tableau des couleurs à copier vers le brouillon
// Sauvegarde de l'image:
GFX2_GLOBAL byte * Ecran_backup; // Sauvegarde de l'écran virtuel courant
GFX2_GLOBAL S_Liste_de_pages * Principal_Backups; // Liste des pages de backup de la page principale
GFX2_GLOBAL S_Liste_de_pages * Brouillon_Backups; // Liste des pages de backup de la page de brouillon
GFX2_GLOBAL byte * Screen_backup; // Sauvegarde de l'écran virtuel courant
GFX2_GLOBAL T_List_of_pages * Main_backups; // Liste des pages de backup de la page principale
GFX2_GLOBAL T_List_of_pages * Spare_backups; // Liste des pages de backup de la page de brouillon
// Données sur la brosse:
GFX2_GLOBAL byte * Brosse; // Sprite de la brosse
GFX2_GLOBAL word Brosse_Decalage_X; // Centre horizontal de la brosse
GFX2_GLOBAL word Brosse_Decalage_Y; // Centre vertical de la brosse
GFX2_GLOBAL word Brosse_Largeur; // Largeur de la brosse
GFX2_GLOBAL word Brosse_Hauteur; // Hauteur de la brosse
GFX2_GLOBAL byte * Brush; // Sprite de la brosse
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
GFX2_GLOBAL char Brosse_Repertoire_fichier[TAILLE_CHEMIN_FICHIER];// |
GFX2_GLOBAL char Brosse_Nom_fichier[TAILLE_CHEMIN_FICHIER]; // |
GFX2_GLOBAL byte Brosse_Format_fichier; // | Infos sur le
GFX2_GLOBAL byte Brosse_Format; // |_ sélecteur de
GFX2_GLOBAL short Brosse_File_list_Position; // | fichiers de la
GFX2_GLOBAL short Brosse_File_list_Decalage; // | brosse.
GFX2_GLOBAL char Brosse_Repertoire_courant[256]; // |
GFX2_GLOBAL char Brosse_Commentaire[TAILLE_COMMENTAIRE+1]; // |
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]; // |
GFX2_GLOBAL byte Brosse_Centre_rotation_defini; // | Infos sur le
GFX2_GLOBAL short Brosse_Centre_rotation_X; // |- centre de rotation
GFX2_GLOBAL short Brosse_Centre_rotation_Y; // | de la brosse
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_visible; // Le menu est actif à l'écran
GFX2_GLOBAL word Menu_Ordonnee; // Ordonnée où commence le menu
GFX2_GLOBAL word Menu_Ordonnee_Texte; // Ordonnée où commence le texte dans le menu
GFX2_GLOBAL byte Menu_Facteur_X; // Facteur de grossissement du menu en X
GFX2_GLOBAL byte Menu_Facteur_Y; // Facteur de grossissement du menu en Y
GFX2_GLOBAL word Menu_Taille_couleur; // Taille d'une couleur de la palette du 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
// Données sur la fenêtre de menu
GFX2_GLOBAL byte Fenetre; // Nombre de fenetres empilées. 0 si pas de fenetre ouverte.
GFX2_GLOBAL byte Window; // Nombre de fenetres empilées. 0 si pas de fenetre ouverte.
GFX2_GLOBAL byte Menu_visible_avant_fenetre; // Le menu était visible avant d'ouvir une fenêtre
GFX2_GLOBAL word Menu_Ordonnee_avant_fenetre; // Ordonnée du menu avant d'ouvrir une fenêtre
GFX2_GLOBAL byte Cacher_pinceau_avant_fenetre;// Le pinceau étatit déjà caché avant l'ouverture de la fenetre?
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 Pile_Fenetre_Pos_X[8]; // Position du bord gauche de la fenêtre dans l'écran
#define Fenetre_Pos_X Pile_Fenetre_Pos_X[Fenetre-1]
GFX2_GLOBAL word Window_stack_pos_X[8]; // Position du bord gauche de la fenêtre dans l'écran
#define Window_pos_X Window_stack_pos_X[Window-1]
GFX2_GLOBAL word Pile_Fenetre_Pos_Y[8]; // Position du bord haut de la fenêtre dans l'écran
#define Fenetre_Pos_Y Pile_Fenetre_Pos_Y[Fenetre-1]
GFX2_GLOBAL word Window_stack_pos_Y[8]; // Position du bord haut de la fenêtre dans l'écran
#define Window_pos_Y Window_stack_pos_Y[Window-1]
GFX2_GLOBAL word Pile_Fenetre_Largeur[8]; // Largeur de la fenêtre
#define Fenetre_Largeur Pile_Fenetre_Largeur[Fenetre-1]
GFX2_GLOBAL word Window_stack_width[8]; // Largeur de la fenêtre
#define Window_width Window_stack_width[Window-1]
GFX2_GLOBAL word Pile_Fenetre_Hauteur[8]; // Hauteur de la fenêtre
#define Fenetre_Hauteur Pile_Fenetre_Hauteur[Fenetre-1]
GFX2_GLOBAL word Window_stack_height[8]; // Hauteur de la fenêtre
#define Window_height Window_stack_height[Window-1]
GFX2_GLOBAL word Pile_Nb_boutons_fenetre[8];
#define Nb_boutons_fenetre Pile_Nb_boutons_fenetre[Fenetre-1]
GFX2_GLOBAL word Window_stack_nb_buttons[8];
#define Window_nb_buttons Window_stack_nb_buttons[Window-1]
GFX2_GLOBAL T_Bouton_normal * Pile_Fenetre_Liste_boutons_normal[8];
#define Fenetre_Liste_boutons_normal Pile_Fenetre_Liste_boutons_normal[Fenetre-1]
GFX2_GLOBAL T_Normal_button * Window_stack_normal_button_list[8];
#define Window_normal_button_list Window_stack_normal_button_list[Window-1]
GFX2_GLOBAL T_Bouton_palette * Pile_Fenetre_Liste_boutons_palette[8];
#define Fenetre_Liste_boutons_palette Pile_Fenetre_Liste_boutons_palette[Fenetre-1]
GFX2_GLOBAL T_Palette_button * Window_stack_palette_button_list[8];
#define Window_palette_button_list Window_stack_palette_button_list[Window-1]
GFX2_GLOBAL T_Bouton_scroller * Pile_Fenetre_Liste_boutons_scroller[8];
#define Fenetre_Liste_boutons_scroller Pile_Fenetre_Liste_boutons_scroller[Fenetre-1]
GFX2_GLOBAL T_Scroller_button * Window_stack_scroller_button_list[8];
#define Window_scroller_button_list Window_stack_scroller_button_list[Window-1]
GFX2_GLOBAL T_Bouton_special * Pile_Fenetre_Liste_boutons_special[8];
#define Fenetre_Liste_boutons_special Pile_Fenetre_Liste_boutons_special[Fenetre-1]
GFX2_GLOBAL T_Special_button * Window_stack_special_button_list[8];
#define Window_special_button_list Window_stack_special_button_list[Window-1]
GFX2_GLOBAL T_Bouton_dropdown * Pile_Fenetre_Liste_boutons_dropdown[8];
#define Fenetre_Liste_boutons_dropdown Pile_Fenetre_Liste_boutons_dropdown[Fenetre-1]
GFX2_GLOBAL T_Dropdown_button * Window_stack_dropdown_button_list[8];
#define Window_dropdown_button_list Window_stack_dropdown_button_list[Window-1]
GFX2_GLOBAL int Pile_Fenetre_Attribut1[8];
#define Fenetre_Attribut1 Pile_Fenetre_Attribut1[Fenetre-1]
GFX2_GLOBAL int Window_stack_attribute1[8];
#define Window_attribute1 Window_stack_attribute1[Window-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 Pile_Fenetre_Attribut2[8];
#define Fenetre_Attribut2 Pile_Fenetre_Attribut2[Fenetre-1]
GFX2_GLOBAL int Window_stack_attribute2[8];
#define Window_attribute2 Window_stack_attribute2[Window-1]
@@ -346,303 +346,303 @@ GFX2_GLOBAL int Pile_Fenetre_Attribut2[8];
GFX2_GLOBAL struct
{
// Informations sur l'aspect du bouton (graphisme):
word Decalage_X; // Décalage par rapport à la gauche du menu
word Decalage_Y; // Décalage par rapport au haut du menu
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 Enfonce; // Le bouton est enfoncé
byte Pressed; // Le bouton est enfoncé
byte Shape; // Forme du bouton
// Information sur les clicks de la souris:
fonction_action Gauche; // Action déclenchée par un click gauche sur le bouton
fonction_action Droite; // Action déclenchée par un click droit sur le bouton
word Raccourci_gauche[2]; // Raccourci clavier équivalent à un click gauche sur le bouton
word Raccourci_droite[2]; // Raccourci clavier équivalent à un click droit sur le bouton
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
// Informations sur le désenclenchement du bouton géré par le moteur:
fonction_action Desenclencher; // Action appelée lors du désenclenchement du bouton
Func_action Desenclencher; // Action appelée lors du désenclenchement du bouton
byte Famille; // Ensemble de boutons auquel celui-ci appartient
} Bouton[NB_BOUTONS];
} Button[NB_BUTTONS];
// Informations sur les différents modes de dessin
GFX2_GLOBAL fonction_effet Fonction_effet;
GFX2_GLOBAL Func_effect Effect_function;
GFX2_GLOBAL byte * FX_Feedback_Ecran;
GFX2_GLOBAL byte * FX_feedback_screen;
GFX2_GLOBAL byte Exclude_color[256]; // Couleurs à exclure pour Meilleure_couleur
GFX2_GLOBAL byte Exclude_color[256]; // Couleurs à exclure pour Best_color
// Mode smear:
GFX2_GLOBAL byte Smear_Mode; // Le mode smear est enclenché
GFX2_GLOBAL byte Smear_Debut; // On vient juste de commencer une opération en Smear
GFX2_GLOBAL byte * Smear_Brosse; // Sprite de la brosse de Smear
GFX2_GLOBAL word Smear_Brosse_Largeur; // Largeur de la brosse de Smear
GFX2_GLOBAL word Smear_Brosse_Hauteur; // Hauteur de la brosse de Smear
GFX2_GLOBAL short Smear_Min_X,Smear_Max_X,Smear_Min_Y,Smear_Max_Y; // Bornes de la Brosse du smear
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
// Mode shade:
GFX2_GLOBAL T_Shade Shade_Liste[8]; // Listes de shade
GFX2_GLOBAL byte Shade_Actuel; // Numéro du shade en cours
GFX2_GLOBAL byte * Shade_Table; // Table de conversion de shade en cours
GFX2_GLOBAL byte Shade_Table_gauche[256]; // Table de conversion de shade pour un clic gauche
GFX2_GLOBAL byte Shade_Table_droite[256]; // Table de conversion de shade pour un clic droit
GFX2_GLOBAL byte Shade_Mode; // Le mode shade est enclenché
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é
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.
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.
// Mode stencil:
GFX2_GLOBAL byte Stencil_Mode; // Le mode stencil est enclenché
GFX2_GLOBAL byte Stencil_mode; // Le mode stencil est enclenché
GFX2_GLOBAL byte Stencil[256]; // Tableau des couleurs protégées
// Mode grille:
GFX2_GLOBAL byte Snap_Mode; // Le mode grille est enclenché
GFX2_GLOBAL word Snap_Largeur; // Largeur entre 2 points de la grille
GFX2_GLOBAL word Snap_Hauteur; // Hauteur entre 2 points de la grille
GFX2_GLOBAL word Snap_Decalage_X; // Position en X du point le + à gauche
GFX2_GLOBAL word Snap_Decalage_Y; // Position en Y du point le + en haut
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
// Mode trame:
GFX2_GLOBAL byte Trame_Mode; // Le mode Trame est enclenché
GFX2_GLOBAL byte Trame[16][16]; // Sprite de la trame
GFX2_GLOBAL word TRAME_PREDEFINIE[12][16]; // Trames préséfinies (compactées sur 16*16 bits)
GFX2_GLOBAL short Trame_Largeur; // Largeur de la trame
GFX2_GLOBAL short Trame_Hauteur; // Hauteur de la trame
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
// Mode colorize:
GFX2_GLOBAL byte Colorize_Mode; // Le mode Colorize est enclenché
GFX2_GLOBAL byte Colorize_Opacite; // Intensité du Colorize
GFX2_GLOBAL byte Colorize_Mode_en_cours; // Le type de Colorize en cours (0-2)
GFX2_GLOBAL word Table_de_multiplication_par_Facteur_A[256];
GFX2_GLOBAL word Table_de_multiplication_par_Facteur_B[256];
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)
GFX2_GLOBAL word Facteur_A_table[256];
GFX2_GLOBAL word Facteur_B_table[256];
// Mode smooth:
GFX2_GLOBAL byte Smooth_Mode; // Le mode Smooth est enclenché
GFX2_GLOBAL byte Smooth_Matrice[3][3]; // La matrice du Smooth actuel
GFX2_GLOBAL byte Smooth_mode; // Le mode Smooth est enclenché
GFX2_GLOBAL byte Smooth_matrix[3][3]; // La matrice du Smooth actuel
// Mode Tiling:
GFX2_GLOBAL byte Tiling_Mode; // Le mode Tiling est enclenché
GFX2_GLOBAL short Tiling_Decalage_X; // Décalage du tiling en X
GFX2_GLOBAL short Tiling_Decalage_Y; // Décalage du tiling en Y
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
// Mode Mask
GFX2_GLOBAL byte Mask_Mode; // Le mode Masque est enclenché
GFX2_GLOBAL byte Mask_mode; // Le mode Masque est enclenché
GFX2_GLOBAL byte Mask_table[256]; // Tableau des couleurs constituant le masque
// Mode loupe:
GFX2_GLOBAL byte Loupe_Mode;
GFX2_GLOBAL word Loupe_Facteur;
GFX2_GLOBAL word Loupe_Hauteur;
GFX2_GLOBAL word Loupe_Largeur;
GFX2_GLOBAL short Loupe_Decalage_X;
GFX2_GLOBAL short Loupe_Decalage_Y;
GFX2_GLOBAL word * Table_mul_facteur_zoom;
GFX2_GLOBAL word TABLE_ZOOM[NB_FACTEURS_DE_ZOOM][512];
GFX2_GLOBAL byte Main_magnifier_mode;
GFX2_GLOBAL word Main_magnifier_factor;
GFX2_GLOBAL word Main_magnifier_height;
GFX2_GLOBAL word Main_magnifier_width;
GFX2_GLOBAL short Main_magnifier_offset_X;
GFX2_GLOBAL short Main_magnifier_offset_Y;
GFX2_GLOBAL word * Zoom_factor_table;
GFX2_GLOBAL word Magnify_table[NB_ZOOM_FACTORS][512];
#ifdef VARIABLES_GLOBALES
word FACTEUR_ZOOM[NB_FACTEURS_DE_ZOOM]={2,3,4,5,6,8,10,12,14,16,18,20};
#ifdef GLOBAL_VARIABLES
word ZOOM_FACTOR[NB_ZOOM_FACTORS]={2,3,4,5,6,8,10,12,14,16,18,20};
#else
extern word FACTEUR_ZOOM[NB_FACTEURS_DE_ZOOM];
extern word ZOOM_FACTOR[NB_ZOOM_FACTORS];
#endif
// Données sur les ellipses et les cercles:
GFX2_GLOBAL long Ellipse_Curseur_X;
GFX2_GLOBAL long Ellipse_Curseur_Y;
GFX2_GLOBAL long Ellipse_Rayon_vertical_au_carre;
GFX2_GLOBAL long Ellipse_Rayon_horizontal_au_carre;
GFX2_GLOBAL qword Ellipse_Limite;
GFX2_GLOBAL long Cercle_Curseur_X;
GFX2_GLOBAL long Cercle_Curseur_Y;
GFX2_GLOBAL long Cercle_Limite;
GFX2_GLOBAL long Ellipse_cursor_X;
GFX2_GLOBAL long Ellipse_cursor_Y;
GFX2_GLOBAL long Ellipse_vertical_radius_squared;
GFX2_GLOBAL long Ellipse_horizontal_radius_squared;
GFX2_GLOBAL qword Ellipse_limit;
GFX2_GLOBAL long Circle_cursor_X;
GFX2_GLOBAL long Circle_cursor_Y;
GFX2_GLOBAL long Circle_limit;
// Données sur les dégradés:
GFX2_GLOBAL short Degrade_Borne_Inferieure; // Plus petite couleur englobée par le dégradé
GFX2_GLOBAL short Degrade_Borne_Superieure; // Plus grande couleur englobée par le dégradé
GFX2_GLOBAL int Degrade_Inverse; // Booléen "Le dégradé est en réalité inversé"
GFX2_GLOBAL long Degrade_Intervalle_bornes; // = Abs(Degrade_Borne_Inferieure-Degrade_Borne_Superieure)+1
GFX2_GLOBAL long Degrade_Intervalle_total; // Valeur maximum des indices passés à la fonction de dégradé (!!! >0 !!!)
GFX2_GLOBAL long Degrade_Melange_aleatoire; // Facteur de mélange (1-256+) du dégradé
GFX2_GLOBAL fonction_degrade Traiter_degrade; // Fonction de traitement du dégradé, varie selon la méthode choisie par l'utilisateur.
GFX2_GLOBAL fonction_afficheur Traiter_pixel_de_degrade; // Redirection de l'affichage
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
GFX2_GLOBAL T_Degrade_Tableau Degrade_Tableau[16]; // Données de tous les dégradés
GFX2_GLOBAL byte Degrade_Courant; // Indice du tableau correspondant au dégradé courant
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
// Données sur le Spray:
GFX2_GLOBAL byte Spray_Mode; // Mode Mono(1) ou Multicolore(0)
GFX2_GLOBAL short Spray_Size; // Diamètre du spray en pixels
GFX2_GLOBAL byte Spray_Delay; // Délai en VBLs entre 2 "pschiitt"
GFX2_GLOBAL byte Spray_Mono_flow; // Nombre de pixels qui sortent en même temps en mono
GFX2_GLOBAL byte Spray_Multi_flow[256]; // Idem pour chaque couleur
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:
GFX2_GLOBAL byte Sortir_du_programme;
GFX2_GLOBAL char Repertoire_initial[256]; // Répertoire à partir duquel à été lancé le programme
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 Repertoire_de_configuration[256]; // Répertoire contenant les fichiers .ini et .cfg
GFX2_GLOBAL char Config_directory[256]; // Répertoire contenant les fichiers .ini et .cfg
GFX2_GLOBAL byte Fore_color;
GFX2_GLOBAL byte Back_color;
GFX2_GLOBAL byte Mode_de_dessin_en_cours;
GFX2_GLOBAL byte Courbe_en_cours;
GFX2_GLOBAL byte Ligne_en_cours;
GFX2_GLOBAL byte Couleur_debut_palette;
GFX2_GLOBAL byte Un_fichier_a_ete_passe_en_parametre;
GFX2_GLOBAL byte Une_resolution_a_ete_passee_en_parametre; // utilisée uniquement si la variable précédente est à 1
GFX2_GLOBAL byte Selected_operation;
GFX2_GLOBAL byte Selected_curve_mode;
GFX2_GLOBAL byte Selected_line_mode;
GFX2_GLOBAL byte First_color_in_palette;
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
// Les différents sprites:
GFX2_GLOBAL byte BLOCK_MENU[HAUTEUR_MENU][LARGEUR_MENU];
GFX2_GLOBAL byte SPRITE_MENU[NB_SPRITES_MENU][HAUTEUR_SPRITE_MENU][LARGEUR_SPRITE_MENU];
GFX2_GLOBAL byte SPRITE_EFFET[NB_SPRITES_EFFETS][HAUTEUR_SPRITE_MENU][LARGEUR_SPRITE_MENU];
GFX2_GLOBAL byte GFX_menu_block[MENU_HEIGHT][MENU_WIDTH];
GFX2_GLOBAL byte GFX_menu_sprite[NB_MENU_SPRITES][MENU_SPRITE_HEIGHT][MENU_SPRITE_WIDTH];
GFX2_GLOBAL byte GFX_effect_sprite[NB_EFFECTS_SPRITES][MENU_SPRITE_HEIGHT][MENU_SPRITE_WIDTH];
GFX2_GLOBAL byte * Logo_GrafX2;
GFX2_GLOBAL byte * GFX_logo_grafx2;
GFX2_GLOBAL byte Fonte_systeme[256*8*8];
GFX2_GLOBAL byte Fonte_fun [256*8*8];
GFX2_GLOBAL byte Fonte_help_norm [256][6][8];
GFX2_GLOBAL byte Fonte_help_bold [256][6][8];
GFX2_GLOBAL byte GFX_system_font[256*8*8];
GFX2_GLOBAL byte GFX_fun_font [256*8*8];
GFX2_GLOBAL byte GFX_help_font_norm [256][6][8];
GFX2_GLOBAL byte GFX_bold_font [256][6][8];
// 12
// 34
GFX2_GLOBAL byte Fonte_help_t1 [64][6][8];
GFX2_GLOBAL byte Fonte_help_t2 [64][6][8];
GFX2_GLOBAL byte Fonte_help_t3 [64][6][8];
GFX2_GLOBAL byte Fonte_help_t4 [64][6][8];
GFX2_GLOBAL byte * Fonte;
GFX2_GLOBAL byte GFX_help_font_t1 [64][6][8];
GFX2_GLOBAL byte GFX_help_font_t2 [64][6][8];
GFX2_GLOBAL byte GFX_help_font_t3 [64][6][8];
GFX2_GLOBAL byte GFX_help_font_t4 [64][6][8];
GFX2_GLOBAL byte * Font;
// Les données de l'aide:
GFX2_GLOBAL byte Section_d_aide_en_cours; // Indice de la table d'aide en cours de consultation
GFX2_GLOBAL word Position_d_aide_en_cours; // Numéro de la ligne d'aide en cours de consultation
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
// Données sur les opérations
GFX2_GLOBAL word Operation_avant_interruption; // N° de l'opération en cours avant l'utilisation d'une interruption
GFX2_GLOBAL word Operation_en_cours; // N° de l'opération en cours
GFX2_GLOBAL word Operation_Pile[TAILLE_PILE_OPERATIONS]; // Pile simplifiée
GFX2_GLOBAL byte Operation_Taille_pile; // Taille effective de la pile (0=vide)
GFX2_GLOBAL byte Operation_dans_loupe; // Indique si l'opération a commencé dans la partie Zoomée ou non
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
GFX2_GLOBAL short Pipette_Couleur;
GFX2_GLOBAL short Pipette_X;
GFX2_GLOBAL short Pipette_Y;
GFX2_GLOBAL short Colorpicker_color;
GFX2_GLOBAL short Colorpicker_X;
GFX2_GLOBAL short Colorpicker_Y;
#ifdef VARIABLES_GLOBALES
byte CURSEUR_D_OPERATION[NB_OPERATIONS]=
#ifdef GLOBAL_VARIABLES
byte CURSOR_FOR_OPERATION[NB_OPERATIONS]=
{
FORME_CURSEUR_CIBLE , // Dessin à la main continu
FORME_CURSEUR_CIBLE , // Dessin à la main discontinu
FORME_CURSEUR_CIBLE , // Dessin à la main point par point
FORME_CURSEUR_CIBLE , // Contour fill
FORME_CURSEUR_CIBLE , // Lignes
FORME_CURSEUR_CIBLE , // Lignes reliées
FORME_CURSEUR_CIBLE , // Lignes centrées
FORME_CURSEUR_CIBLE_XOR , // Rectangle vide
FORME_CURSEUR_CIBLE_XOR , // Rectangle plein
FORME_CURSEUR_CIBLE , // Cercles vides
FORME_CURSEUR_CIBLE , // Cercles pleins
FORME_CURSEUR_CIBLE , // Ellipses vides
FORME_CURSEUR_CIBLE , // Ellipses pleines
FORME_CURSEUR_CIBLE , // Fill
FORME_CURSEUR_CIBLE , // Remplacer
FORME_CURSEUR_CIBLE_XOR , // Prise de brosse rectangulaire
FORME_CURSEUR_CIBLE , // Prise d'une brosse multiforme
FORME_CURSEUR_CIBLE_PIPETTE , // Récupération d'une couleur
FORME_CURSEUR_RECTANGLE_XOR , // Positionnement de la fenêtre de loupe
FORME_CURSEUR_CIBLE , // Courbe à 3 points
FORME_CURSEUR_CIBLE , // Courbe à 4 points
FORME_CURSEUR_CIBLE , // Spray
FORME_CURSEUR_CIBLE , // Polygone
FORME_CURSEUR_CIBLE , // Polyforme
FORME_CURSEUR_CIBLE , // Polyfill
FORME_CURSEUR_CIBLE , // Polyforme rempli
FORME_CURSEUR_MULTIDIRECTIONNEL, // Scroll
FORME_CURSEUR_CIBLE , // Cercles dégradés
FORME_CURSEUR_CIBLE , // Ellipses dégradées
FORME_CURSEUR_ROTATE_XOR , // Faire tourner brosse
FORME_CURSEUR_CIBLE_XOR , // Etirer brosse
FORME_CURSEUR_CIBLE , // Deformer brosse
FORME_CURSEUR_CIBLE_XOR , // Rectangle degrade
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 , // 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
};
#else
extern byte CURSEUR_D_OPERATION[NB_OPERATIONS];
extern byte CURSOR_FOR_OPERATION[NB_OPERATIONS];
#endif
// Procédures à appeler: Opération,Mouse_K,Etat de la pile
// Procédures à appeler: Opération,Mouse_K,State de la pile
GFX2_GLOBAL struct
{
byte Effacer_curseur; // Booléen "il faut effacer le curseur pour l'opéra."
fonction_action Action; // Action appelée
} Operation[NB_OPERATIONS][3][TAILLE_PILE_OPERATIONS];
byte Hide_cursor; // Booléen "il faut effacer le curseur pour l'opéra."
Func_action Action; // Action appelée
} Operation[NB_OPERATIONS][3][OPERATION_STACK_SIZE];
// Informations sur les lecteurs et autres images
GFX2_GLOBAL byte SPRITE_DRIVE[NB_SPRITES_DRIVES][HAUTEUR_SPRITE_DRIVE][LARGEUR_SPRITE_DRIVE];
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:
GFX2_GLOBAL short Liste_Nb_elements;
GFX2_GLOBAL short Liste_Nb_fichiers;
GFX2_GLOBAL short Liste_Nb_repertoires;
GFX2_GLOBAL short Filelist_nb_elements;
GFX2_GLOBAL short Filelist_nb_files;
GFX2_GLOBAL short Filelist_nb_directories;
// Tête de la liste chaînée:
GFX2_GLOBAL Element_de_liste_de_fileselect * Liste_du_fileselect;
GFX2_GLOBAL T_Fileselector_item * Filelist;
// ------------------- Inititialisation des formats connus -------------------
void Rien_du_tout(void);
void Do_nothing(void);
GFX2_GLOBAL signed char Erreur_fichier; // 0: opération I/O OK
// 1: Erreur dès le début de l'opération
// 2: Erreur durant l'opération => données modifiées
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
GFX2_GLOBAL int Ligne_INI;
GFX2_GLOBAL int Line_number_in_INI_file;
GFX2_GLOBAL fonction_afficheur Pixel_de_chargement;
GFX2_GLOBAL fonction_lecteur Lit_pixel_de_sauvegarde;
GFX2_GLOBAL Func_pixel Pixel_load_function;
GFX2_GLOBAL Func_read Read_pixel_old;
/********************
* Spécifique à SDL *
********************/
GFX2_GLOBAL SDL_Surface * Ecran_SDL;
GFX2_GLOBAL SDL_Joystick* joystick;
GFX2_GLOBAL SDL_Surface * Screen_SDL;
GFX2_GLOBAL SDL_Joystick* Joystick;
#define TOUCHE_AUCUNE 0
#define TOUCHE_MOUSEMIDDLE (SDLK_LAST+1)
#define TOUCHE_MOUSEWHEELUP (SDLK_LAST+2)
#define TOUCHE_MOUSEWHEELDOWN (SDLK_LAST+3)
#define TOUCHE_BUTTON (SDLK_LAST+4)
#define KEY_NONE 0
#define KEY_MOUSEMIDDLE (SDLK_LAST+1)
#define KEY_MOUSEWHEELUP (SDLK_LAST+2)
#define KEY_MOUSEWHEELDOWN (SDLK_LAST+3)
#define KEY_JOYBUTTON (SDLK_LAST+4)
#ifdef __gp2x__
#define TOUCHE_ESC (TOUCHE_BUTTON+GP2X_BUTTON_X)
#define KEY_ESC (KEY_JOYBUTTON+GP2X_BUTTON_X)
#else
#define TOUCHE_ESC SDLK_ESCAPE
#define KEY_ESC SDLK_ESCAPE
#endif
#endif