grafX2/global.h
Yves Rizoud 7175fe7b17 "Help" text is now hard-coded in tables_aide.h and compiled into the exe,
instead of being encrypted in the middle of gfx.dat


git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@158 416bcca6-2ee7-4201-b75f-2eb2f807beb1
2008-09-16 23:22:18 +00:00

765 lines
30 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifdef VARIABLES_GLOBALES
#define GLOBAL
#else
#define GLOBAL extern
#endif
//////////////////////////////////////////////////////////////////////////////
// //
// Ce fichier contient les déclaration des variables globales //
// //
//////////////////////////////////////////////////////////////////////////////
// -- Section des variables de CONFIGURATION ---------------------------------
#ifndef _GLOBAL_H_
#define _GLOBAL_H_
#include <SDL/SDL.h>
#include "struct.h"
GLOBAL struct S_Config
{
byte Fonte;
int Lire_les_fichiers_caches;
int Lire_les_repertoires_caches;
int Lire_les_repertoires_systemes;
byte Afficher_limites_image;
byte Curseur;
byte Maximize_preview;
byte Auto_set_res;
byte Coords_rel;
byte Backup;
byte Adjust_brush_pick;
byte Auto_save;
byte Nb_pages_Undo;
byte Indice_Sensibilite_souris_X;
byte Indice_Sensibilite_souris_Y;
byte Mouse_Facteur_de_correction_X;
byte Mouse_Facteur_de_correction_Y;
byte Valeur_tempo_jauge_gauche;
byte Valeur_tempo_jauge_droite;
long Chrono_delay;
struct Composantes Coul_menu_pref[4];
int Nb_max_de_vertex_par_polygon;
byte Clear_palette;
byte Set_resolution_according_to;
byte Ratio;
byte Fast_zoom;
byte Find_file_fast;
byte Couleurs_separees;
byte FX_Feedback;
byte Safety_colors;
byte Opening_message;
byte Clear_with_stencil;
byte Auto_discontinuous;
byte Taille_ecran_dans_GIF;
byte Auto_nb_used;
byte Resolution_par_defaut;
} Config;
// Tableau des touches spéciales
GLOBAL word Config_Touche[NB_TOUCHES_SPECIALES];
struct S_Mode_video
{
short Largeur;
short Hauteur;
byte Mode;
word Facteur_X;
word Facteur_Y;
char Ratio[5];
signed char Refresh; // <0 => entrelacé
word Mode_VESA_de_base;
void * Pointeur;
byte Etat; // 0:Cool 1:OK ; 2:Bof ; 3:Naze ; si on rajoute +128 => incompatible
};
GLOBAL struct S_Mode_video Mode_video[NB_MODES_VIDEO];
GLOBAL struct
{
byte Granularite; // Facteur de gestion de la granularité
byte Code_fenetres; // Utilisation des fenˆtres: 0=AA 1=BB 2=AB 3=BA
byte * WinFuncPtr;
byte * Adresse_physique_LFB; // Si = 0 => Pas de LFB
dword Taille_LFB; // Taille de la mémoire LFB
} VESA_Mode_Infos[4];
// Palette par défaut
GLOBAL T_Palette Palette_defaut;
// Couleurs du menu
GLOBAL byte CM_Noir;
GLOBAL byte CM_Fonce;
GLOBAL byte CM_Clair;
GLOBAL byte CM_Blanc;
GLOBAL byte CM_Trans;
GLOBAL struct Composantes Coul_menu_pref[4];
// Etat des entrées
GLOBAL word Mouse_X; // Abscisse de la souris
GLOBAL word Mouse_Y; // Ordonnée de la souris
GLOBAL byte Mouse_K; // Etat des boutons de la souris
GLOBAL word Touche;
GLOBAL Uint8* Etat_Du_Clavier; // Scancode de la touche en cours et etat des touches de ctrl
GLOBAL byte Touche_ASCII; // Code ASCII de la touche en cours
GLOBAL byte Mouse_Facteur_de_correction_X;
GLOBAL byte Mouse_Facteur_de_correction_Y;
GLOBAL byte Autoriser_changement_de_couleur_pendant_operation;
// Données sur le curseur
GLOBAL byte Forme_curseur;
GLOBAL byte Forme_curseur_avant_fenetre; // Forme du curseur avant l'ouverture d'une fenˆtre
GLOBAL byte Forcer_affichage_curseur; // Forcer l'affichage du curseur au prochain Get_input();
GLOBAL byte Cacher_curseur;
GLOBAL byte Curseur_dans_menu; // Booléen "Le curseur se trouve dans le menu"
GLOBAL byte Curseur_dans_menu_precedent; // Booléen "Le curseur se trouvait précédemment dans le menu"
GLOBAL word Curseur_Decalage_X[NB_SPRITES_CURSEUR]; // Coordonnées X du point sensible de curseurs en sprite
GLOBAL word Curseur_Decalage_Y[NB_SPRITES_CURSEUR]; // Coordonnées Y du point sensible de curseurs en sprite
GLOBAL byte SPRITE_CURSEUR[NB_SPRITES_CURSEUR][HAUTEUR_SPRITE_CURSEUR][LARGEUR_SPRITE_CURSEUR]; // Dessins des sprites de curseur
GLOBAL byte FOND_CURSEUR[HAUTEUR_SPRITE_CURSEUR][LARGEUR_SPRITE_CURSEUR]; // Contenu du dessous du curseur
// Données sur le pinceau
GLOBAL byte Pinceau_Forme;
GLOBAL byte Pinceau_Forme_avant_fill;
GLOBAL byte Pinceau_Forme_avant_pipette;
GLOBAL byte Pinceau_Forme_avant_lasso;
GLOBAL byte Cacher_pinceau;
GLOBAL short Pinceau_X;
GLOBAL short Pinceau_Y;
GLOBAL byte SPRITE_PINCEAU [NB_SPRITES_PINCEAU][HAUTEUR_PINCEAU][LARGEUR_PINCEAU];
GLOBAL word Pinceau_predefini_Largeur[NB_SPRITES_PINCEAU];
GLOBAL word Pinceau_predefini_Hauteur[NB_SPRITES_PINCEAU];
GLOBAL byte Pinceau_Type[NB_SPRITES_PINCEAU];
GLOBAL word Pinceau_predefini_Decalage_X[NB_SPRITES_PINCEAU];
GLOBAL word Pinceau_predefini_Decalage_Y[NB_SPRITES_PINCEAU];
GLOBAL byte * Pinceau_Sprite;
GLOBAL short Pinceau_Largeur;
GLOBAL short Pinceau_Hauteur;
GLOBAL short Pinceau_Decalage_X;
GLOBAL short Pinceau_Decalage_Y;
// Commandes graphiques
GLOBAL fonction_afficheur Pixel; // Affiche un point … l'cran
GLOBAL fonction_afficheur Pixel_dans_menu;// Affiche un point dans le menu (ou pas si le menu est invisible)
GLOBAL fonction_lecteur Lit_pixel; // Teste la couleur d'un pixel dans l'écran
GLOBAL fonction_effaceur Clear_screen; // Efface rapidement tout l'cran (en faisant attention de ne pas effacer le menu)
GLOBAL fonction_display Display_screen; // Affiche rapidement tout l'cran (en faisant attention de ne pas effacer le menu)
GLOBAL fonction_block Block; // Affiche rapidement un bloc … l'cran
GLOBAL fonction_block Block_Fast; // Affiche rapidement un bloc … l'cran sans rafraichir
GLOBAL fonction_afficheur Pixel_Preview_Normal; // Affiche un point de l'image … l'écran en mode normal (pas en mode loupe)
GLOBAL fonction_afficheur Pixel_Preview_Loupe; // Affiche un point de l'image … l'écran en mode loupe
GLOBAL fonction_afficheur Pixel_Preview; // Affiche un point de l'image … l'écran en fonction de l'état du mode loupe
GLOBAL fonction_Ligne_XOR Ligne_horizontale_XOR;// Affiche une ligne horizontale en XOR (pour placer la loupe)
GLOBAL fonction_Ligne_XOR Ligne_verticale_XOR; // Affiche une ligne verticale en XOR (pour placer la loupe)
GLOBAL fonction_display_brush_Color Display_brush_Color; // Affiche une partie de la brosse en couleur
GLOBAL fonction_display_brush_Mono Display_brush_Mono; // Affiche une partie de la brosse en monochrome
GLOBAL fonction_display_brush_Color Clear_brush; // Efface la partie de la brosse affichée … l'écran
GLOBAL fonction_remap Remap_screen; // Remappe une partie de l'écran avec les nouvelles couleurs du menu
GLOBAL fonction_procsline Afficher_ligne; // Afficher une ligne
GLOBAL fonction_procsline Lire_ligne; // Afficher ou lire une ligne
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)
GLOBAL fonction_display_brush_Color_zoom Display_brush_Color_zoom;
GLOBAL fonction_display_brush_Mono_zoom Display_brush_Mono_zoom;
GLOBAL fonction_display_brush_Color_zoom Clear_brush_zoom;
// Données sur les dimensions de l'écran
GLOBAL int Resolution_actuelle; // Résolution graphique courante
GLOBAL short Ecran_original_X; // |_ Dimensions de l'écran d'origine de
GLOBAL short Ecran_original_Y; // | l'image qui vient d'ˆtre chargée.
GLOBAL short Largeur_ecran; // Largeur de l'écran
GLOBAL short Hauteur_ecran; // Hauteur de l'écran
GLOBAL short Limite_Haut; // |
GLOBAL short Limite_Bas; // |_ Limites dans lesquelles
GLOBAL short Limite_Gauche; // | on peut écrire
GLOBAL short Limite_Droite; // |
GLOBAL short Limite_visible_Bas; // |_ Derniers points visibles
GLOBAL short Limite_visible_Droite; // | "… l'image"
GLOBAL short Limite_Haut_Zoom; // |
GLOBAL short Limite_Bas_Zoom; // |_ Limites dans lesquelles on peut
GLOBAL short Limite_Gauche_Zoom; // | écrire dans la partie zoomée
GLOBAL short Limite_Droite_Zoom; // |
GLOBAL short Limite_visible_Bas_Zoom; // |_ Derniers points visibles "…
GLOBAL short Limite_visible_Droite_Zoom; // | l'image" dans la partie zoomée
GLOBAL byte * Buffer_de_ligne_horizontale; // Buffer d'affichage de lignes
// Données sur l'image actuelle:
GLOBAL byte * Principal_Ecran; // Ecran virtuel courant
GLOBAL T_Palette Principal_Palette; // Palette de l'écran en cours
GLOBAL byte Principal_Image_modifiee; // L'image courante a été modifiée
GLOBAL short Principal_Largeur_image; // Largeur de l'image dans laquelle l'utilisateur désire travailler
GLOBAL short Principal_Hauteur_image; // Hauteur de l'image dans laquelle l'utilisateur désire travailler
GLOBAL short Principal_Decalage_X; // Décalage en X de l'écran par rapport au début de l'image
GLOBAL short Principal_Decalage_Y; // Décalage en Y de l'écran par rapport au début de l'image
GLOBAL short Ancien_Principal_Decalage_X;
GLOBAL short Ancien_Principal_Decalage_Y;
#ifdef __WATCOMC__
GLOBAL char Principal_Drive_fichier[2];
#endif
GLOBAL char Principal_Repertoire_fichier[1024]; // |_ Nom complet =
GLOBAL char Principal_Nom_fichier[256]; // | Repertoire_fichier+"\"+Nom_fichier
GLOBAL byte Principal_Format_fichier; // Format auquel il faut lire et écrire le fichier
GLOBAL byte Principal_Format; // Format du fileselect
GLOBAL short Principal_File_list_Position; // Début de la partie affichée dans la liste de fichiers
GLOBAL short Principal_File_list_Decalage; // Décalage de la barre de sélection dans le fileselector
GLOBAL char Principal_Repertoire_courant[1024]; // Répertoire actuel sur disque
GLOBAL char Principal_Commentaire[TAILLE_COMMENTAIRE+1]; // Commentaire de l'image
GLOBAL short Principal_Split; // Position en X du bord gauche du split de la loupe
GLOBAL short Principal_X_Zoom; // (Menu_Facteur_X) + Position en X du bord droit du split de la loupe
GLOBAL float Principal_Proportion_split; // Proportion de la zone non-zoomée par rapport … l'écran
// Données sur le brouillon:
GLOBAL byte * Brouillon_Ecran; // Ecran virtuel brouillon
GLOBAL T_Palette Brouillon_Palette; // Palette de l'écran de brouillon
GLOBAL byte Brouillon_Image_modifiee; // Le brouillon a été modifié
GLOBAL short Brouillon_Largeur_image; // Largeur du brouillon dans laquelle l'utilisateur désire travailler
GLOBAL short Brouillon_Hauteur_image; // Hauteur du brouillon dans laquelle l'utilisateur désire travailler
GLOBAL short Brouillon_Decalage_X; // Décalage en X du brouillon par rapport au début de l'image
GLOBAL short Brouillon_Decalage_Y; // Décalage en Y du brouillon par rapport au début de l'image
GLOBAL short Ancien_Brouillon_Decalage_X;
GLOBAL short Ancien_Brouillon_Decalage_Y;
GLOBAL char Brouillon_Repertoire_fichier[TAILLE_CHEMIN_FICHIER]; // |_ Nom complet =
GLOBAL char Brouillon_Nom_fichier[TAILLE_CHEMIN_FICHIER]; // | Repertoire_fichier+"\"+Nom_fichier
GLOBAL byte Brouillon_Format_fichier; // Format auquel il faut lire et écrire le fichier
GLOBAL byte Brouillon_Format; // Format du fileselect
GLOBAL short Brouillon_File_list_Position; // Début de la partie affichée dans la liste de fichiers
GLOBAL short Brouillon_File_list_Decalage; // Décalage de la barre de sélection dans le fileselector
GLOBAL char Brouillon_Repertoire_courant[TAILLE_CHEMIN_FICHIER]; // Répertoire actuel sur disque
GLOBAL char Brouillon_Commentaire[TAILLE_COMMENTAIRE+1]; // Commentaire de l'image
GLOBAL short Brouillon_Split; // Position en X du bord gauche du split de la loupe
GLOBAL short Brouillon_X_Zoom; // (Menu_Facteur_X) + Position en X du bord droit du split de la loupe
GLOBAL float Brouillon_Proportion_split; // Proportion de la zone non-zoomée par rapport … l'écran
GLOBAL byte Brouillon_Loupe_Mode; // On est en mode loupe dans le brouillon
GLOBAL word Brouillon_Loupe_Facteur; // Facteur de zoom dans le brouillon
GLOBAL word Brouillon_Loupe_Hauteur; // Largeur de la fenˆtre de zoom dans le brouillon
GLOBAL word Brouillon_Loupe_Largeur; // Hauteur de la fenˆtre de zoom dans le brouillon
GLOBAL short Brouillon_Loupe_Decalage_X;// Decalage horizontal de la fenˆtre de zoom dans le brouillon
GLOBAL short Brouillon_Loupe_Decalage_Y;// Decalage vertical de la fenˆtre de zoom dans le brouillon
GLOBAL byte Masque_copie_couleurs[256]; // Tableau des couleurs … copier vers le brouillon
// Sauvegarde de l'image:
GLOBAL byte * Ecran_backup; // Sauvegarde de l'écran virtuel courant
GLOBAL S_Liste_de_pages * Principal_Backups; // Liste des pages de backup de la page principale
GLOBAL S_Liste_de_pages * Brouillon_Backups; // Liste des pages de backup de la page de brouillon
// Données sur la brosse:
GLOBAL byte * Brosse; // Sprite de la brosse
GLOBAL word Brosse_Decalage_X; // Centre horizontal de la brosse
GLOBAL word Brosse_Decalage_Y; // Centre vertical de la brosse
GLOBAL word Brosse_Largeur; // Largeur de la brosse
GLOBAL word Brosse_Hauteur; // Hauteur de la brosse
GLOBAL char Brosse_Repertoire_fichier[TAILLE_CHEMIN_FICHIER];// |
GLOBAL char Brosse_Nom_fichier[TAILLE_CHEMIN_FICHIER]; // |
GLOBAL byte Brosse_Format_fichier; // | Infos sur le
GLOBAL byte Brosse_Format; // |_ sélecteur de
GLOBAL short Brosse_File_list_Position; // | fichiers de la
GLOBAL short Brosse_File_list_Decalage; // | brosse.
GLOBAL char Brosse_Repertoire_courant[256]; // |
GLOBAL char Brosse_Commentaire[TAILLE_COMMENTAIRE+1]; // |
GLOBAL byte Brosse_Centre_rotation_defini; // | Infos sur le
GLOBAL short Brosse_Centre_rotation_X; // |- centre de rotation
GLOBAL short Brosse_Centre_rotation_Y; // | de la brosse
// Données sur le menu
GLOBAL byte Menu_visible; // Le menu est actif … l'écran
GLOBAL word Menu_Ordonnee; // Ordonnée o— commence le menu
GLOBAL word Menu_Ordonnee_Texte; // Ordonnée o— commence le texte dans le menu
GLOBAL word Menu_Facteur_X; // Facteur de grossissement du menu en X
GLOBAL word Menu_Facteur_Y; // Facteur de grossissement du menu en Y
GLOBAL word Menu_Taille_couleur; // Taille d'une couleur de la palette du menu
// Données sur la fenˆtre de menu
GLOBAL byte Une_fenetre_est_ouverte;
GLOBAL word Fenetre_Pos_X; // Position du bord gauche de la fenˆtre dans l'écran
GLOBAL word Fenetre_Pos_Y; // Position du bord haut de la fenˆtre dans l'écran
GLOBAL word Fenetre_Largeur; // Largeur de la fenˆtre
GLOBAL word Fenetre_Hauteur; // Hauteur de la fenˆtre
GLOBAL byte Menu_visible_avant_fenetre; // Le menu était visible avant d'ouvir une fenˆtre
GLOBAL word Menu_Ordonnee_avant_fenetre; // Ordonnée du menu avant d'ouvrir une fenˆtre
GLOBAL byte Cacher_pinceau_avant_fenetre;// Le pinceau étatit déj… caché avant l'ouverture de la fenetre?
GLOBAL word Nb_boutons_fenetre;
GLOBAL struct Fenetre_Bouton_normal * Fenetre_Liste_boutons_normal;
GLOBAL struct Fenetre_Bouton_palette * Fenetre_Liste_boutons_palette;
GLOBAL struct Fenetre_Bouton_scroller * Fenetre_Liste_boutons_scroller;
GLOBAL struct Fenetre_Bouton_special * Fenetre_Liste_boutons_special;
GLOBAL int Fenetre_Attribut1;
GLOBAL int Fenetre_Attribut2;
// Définition des boutons ////////////////////////////////////////////////////
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 Largeur; // Largeur du bouton
word Hauteur; // Hauteur du bouton
byte Enfonce; // Le bouton est enfoncé
byte Forme; // 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; // Raccourci clavier équivalent … un click gauche sur le bouton
word Raccourci_droite; // Raccourci 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
byte Famille; // Ensemble de boutons auquel celui-ci appartient
} Bouton[NB_BOUTONS];
// Informations sur les différents modes de dessin
GLOBAL fonction_effet Fonction_effet;
GLOBAL byte * FX_Feedback_Ecran;
GLOBAL byte Exclude_color[256]; // Couleurs … exclure pour Meilleure_couleur
// Mode smear:
GLOBAL byte Smear_Mode; // Le mode smear est enclenché
GLOBAL byte Smear_Debut; // On vient juste de commencer une opération en Smear
GLOBAL byte * Smear_Brosse; // Sprite de la brosse de Smear
GLOBAL word Smear_Brosse_Largeur; // Largeur de la brosse de Smear
GLOBAL word Smear_Brosse_Hauteur; // Hauteur de la brosse de Smear
GLOBAL short Smear_Min_X,Smear_Max_X,Smear_Min_Y,Smear_Max_Y; // Bornes de la Brosse du smear
// Mode shade:
GLOBAL struct T_Shade Shade_Liste[8]; // Listes de shade
GLOBAL byte Shade_Actuel; // Numéro du shade en cours
GLOBAL byte * Shade_Table; // Table de conversion de shade en cours
GLOBAL byte Shade_Table_gauche[256]; // Table de conversion de shade pour un clic gauche
GLOBAL byte Shade_Table_droite[256]; // Table de conversion de shade pour un clic droit
GLOBAL byte Shade_Mode; // Le mode shade est enclenché
GLOBAL byte Quick_shade_Mode; // Le mode quick-shade est enclenché
GLOBAL byte Quick_shade_Step; // Pas du mode quick-shade
GLOBAL byte Quick_shade_Loop; // Normal / Loop / No sat.
// Mode stencil:
GLOBAL byte Stencil_Mode; // Le mode stencil est enclenché
GLOBAL byte Stencil[256]; // Tableau des couleurs protégées
// Mode grille:
GLOBAL byte Snap_Mode; // Le mode grille est enclenché
GLOBAL short Snap_Largeur; // Largeur entre 2 points de la grille
GLOBAL short Snap_Hauteur; // Hauteur entre 2 points de la grille
GLOBAL short Snap_Decalage_X; // Position en X du point le + … gauche
GLOBAL short Snap_Decalage_Y; // Position en Y du point le + en haut
// Mode trame:
GLOBAL byte Trame_Mode; // Le mode Trame est enclenché
GLOBAL byte Trame[16][16]; // Sprite de la trame
GLOBAL word TRAME_PREDEFINIE[12][16]; // Trames préséfinies (compactées sur 16*16 bits)
GLOBAL short Trame_Largeur; // Largeur de la trame
GLOBAL short Trame_Hauteur; // Hauteur de la trame
// Mode colorize:
GLOBAL byte Colorize_Mode; // Le mode Colorize est enclenché
GLOBAL byte Colorize_Opacite; // Intensité du Colorize
GLOBAL byte Colorize_Mode_en_cours; // Le type de Colorize en cours (0-2)
GLOBAL word Table_de_multiplication_par_Facteur_A[64];
GLOBAL word Table_de_multiplication_par_Facteur_B[64];
// Mode smooth:
GLOBAL byte Smooth_Mode; // Le mode Smooth est enclenché
GLOBAL byte Smooth_Matrice[3][3]; // La matrice du Smooth actuel
// Mode Tiling:
GLOBAL byte Tiling_Mode; // Le mode Tiling est enclenché
GLOBAL short Tiling_Decalage_X; // Décalage du tiling en X
GLOBAL short Tiling_Decalage_Y; // Décalage du tiling en Y
// Mode Mask
GLOBAL byte Mask_Mode; // Le mode Masque est enclenché
GLOBAL byte Mask[256]; // Tableau des couleurs constituant le masque
// Mode loupe:
GLOBAL byte Loupe_Mode;
GLOBAL word Loupe_Facteur;
GLOBAL word Loupe_Hauteur;
GLOBAL word Loupe_Largeur;
GLOBAL short Loupe_Decalage_X;
GLOBAL short Loupe_Decalage_Y;
GLOBAL word * Table_mul_facteur_zoom;
GLOBAL word TABLE_ZOOM[NB_FACTEURS_DE_ZOOM][512];
#ifdef VARIABLES_GLOBALES
word FACTEUR_ZOOM[NB_FACTEURS_DE_ZOOM]={2,3,4,5,6,8,10,12,14,16,18,20};
#else
extern word FACTEUR_ZOOM[NB_FACTEURS_DE_ZOOM];
#endif
// Données sur les ellipses et les cercles:
GLOBAL dword Table_des_carres[1025];
GLOBAL long Ellipse_Curseur_X;
GLOBAL long Ellipse_Curseur_Y;
GLOBAL long Ellipse_Rayon_vertical_au_carre;
GLOBAL long Ellipse_Rayon_horizontal_au_carre;
GLOBAL long Ellipse_Limite_High;
GLOBAL long Ellipse_Limite_Low;
GLOBAL long Cercle_Curseur_X;
GLOBAL long Cercle_Curseur_Y;
GLOBAL long Cercle_Limite;
// Données sur les dégradés:
GLOBAL short Degrade_Borne_Inferieure; // Plus petite couleur englobée par le dégradé
GLOBAL short Degrade_Borne_Superieure; // Plus grande couleur englobée par le dégradé
GLOBAL int Degrade_Inverse; // Booléen "Le dégradé est en réalité inversé"
GLOBAL long Degrade_Intervalle_bornes; // = Abs(Degrade_Borne_Inferieure-Degrade_Borne_Superieure)+1
GLOBAL long Degrade_Intervalle_total; // Valeur maximum des indices passés … la fonction de dégradé (!!! >0 !!!)
GLOBAL long Degrade_Melange_aleatoire; // Facteur de mélange (1-256+) du dégradé
GLOBAL fonction_degrade Traiter_degrade; // Fonction de traitement du dégradé, varie selon la méthode choisie par l'utilisateur.
GLOBAL fonction_afficheur Traiter_pixel_de_degrade; // Redirection de l'affichage
GLOBAL struct T_Degrade_Tableau Degrade_Tableau[16]; // Données de tous les dégradés
GLOBAL int Degrade_Courant; // Indice du tableau correspondant au dégradé courant
// Données sur le Spray:
GLOBAL byte Spray_Mode; // Mode Mono(1) ou Multicolore(0)
GLOBAL short Spray_Size; // DiamŠtre du spray en pixels
GLOBAL byte Spray_Delay; // Délai en VBLs entre 2 "pschiitt"
GLOBAL byte Spray_Mono_flow; // Nombre de pixels qui sortent en mˆme temps en mono
GLOBAL byte Spray_Multi_flow[256]; // Idem pour chaque couleur
// Données diverses sur le programme:
GLOBAL byte Sortir_du_programme;
GLOBAL char Repertoire_du_programme[256]; // Répertoire dans lequel se trouve le programme
GLOBAL char Repertoire_initial[256]; // Répertoire … partir duquel … été lancé le programme
GLOBAL byte Fore_color;
GLOBAL byte Back_color;
GLOBAL byte Mode_de_dessin_en_cours;
GLOBAL byte Courbe_en_cours;
GLOBAL byte Ligne_en_cours;
GLOBAL byte Couleur_debut_palette;
GLOBAL byte Un_fichier_a_ete_passe_en_parametre;
GLOBAL byte Une_resolution_a_ete_passee_en_parametre; // utilisée uniquement si la variable précédente est … 1
// Variables concernant l'OBJ DIVERS
GLOBAL word INPUT_Nouveau_Mouse_X;
GLOBAL word INPUT_Nouveau_Mouse_Y;
GLOBAL byte INPUT_Nouveau_Mouse_K;
GLOBAL byte INPUT_Keyb_mode;
GLOBAL int MC_Indice;
GLOBAL int MC_DR;
GLOBAL int MC_DV;
GLOBAL int MC_DB;
GLOBAL int * MC_Table_differences;
// Variables concernant l'OBJ VIDEO
// Partie concernant le mode X:
GLOBAL dword MODE_X_Decalage_synchro;
GLOBAL word MODE_X_Largeur_de_ligne;
GLOBAL dword MODE_X_Valeur_initiale_de_esi;
GLOBAL dword MODE_X_Valeur_initiale_de_edi;
// Partie concernant le VESA:
GLOBAL byte Granularite; // Facteur de gestion de la granularité de la carte
GLOBAL byte VESA_Erreur;
GLOBAL byte * VESA_WinFuncPtr; // Handler software de changement de banque
GLOBAL word * VESA_Liste_des_modes;
GLOBAL dword VESA_Decalage_synchro;
GLOBAL word VESA_Largeur_ecran_en_dword;
GLOBAL byte VESA_Banque_en_cours; // Variable normalement locale … VIDEO.ASM
GLOBAL byte VESA_Derniere_banque_Fenetre_A_utilisee;
GLOBAL byte VESA_Derniere_banque_Fenetre_B_utilisee;
GLOBAL fonction_action VESA_Change_banque_lecture;
GLOBAL fonction_action VESA_Change_banque_ecriture;
GLOBAL fonction_action VESA_Change_banque_lect_ecr;
GLOBAL byte VESA_Version_Unite;
GLOBAL byte VESA_Version_Decimale;
GLOBAL char VESA_Constructeur[TAILLE_NOM_CONSTRUCTEUR+1];
GLOBAL word VESA_Taille_memoire;
// Les différents sprites:
GLOBAL byte BLOCK_MENU[HAUTEUR_MENU][LARGEUR_MENU];
GLOBAL byte SPRITE_MENU[NB_SPRITES_MENU][HAUTEUR_SPRITE_MENU][LARGEUR_SPRITE_MENU];
GLOBAL byte SPRITE_EFFET[NB_SPRITES_EFFETS][HAUTEUR_SPRITE_MENU][LARGEUR_SPRITE_MENU];
GLOBAL byte * Logo_GrafX2;
GLOBAL byte Fonte_systeme[256*8*8];
GLOBAL byte Fonte_fun [256*8*8];
GLOBAL byte Fonte_help [315][6][8];
GLOBAL byte * Fonte;
// Les données de l'aide:
GLOBAL byte Section_d_aide_en_cours; // Indice de la table d'aide en cours de consultation
GLOBAL word Position_d_aide_en_cours; // Numéro de la ligne d'aide en cours de consultation
// Données sur les opérations
GLOBAL word Operation_avant_interruption; // Nø de l'opération en cours avant l'utilisation d'une interruption
GLOBAL word Operation_en_cours; // Nø de l'opération en cours
GLOBAL word Operation_Pile[TAILLE_PILE_OPERATIONS]; // Pile simplifiée
GLOBAL byte Operation_Taille_pile; // Taille effective de la pile (0=vide)
GLOBAL byte Operation_dans_loupe; // Indique si l'opération a commencé dans la partie Zoomée ou non
GLOBAL short Pipette_Couleur;
GLOBAL short Pipette_X;
GLOBAL short Pipette_Y;
#ifdef VARIABLES_GLOBALES
byte CURSEUR_D_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 , // 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
};
#else
extern byte CURSEUR_D_OPERATION[NB_OPERATIONS];
#endif
// Procédures … appeler: Opération,Mouse_K,Etat de la pile
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];
// Informations sur les lecteurs
GLOBAL byte Nb_drives;
GLOBAL struct T_Drive Drive[26];
GLOBAL byte SPRITE_DRIVE[NB_SPRITES_DRIVES][HAUTEUR_SPRITE_DRIVE][LARGEUR_SPRITE_DRIVE];
// -- Section des informations sur les formats de fichiers ------------------
// Comptage du nb d'éléments dans la liste:
GLOBAL short Liste_Nb_elements;
GLOBAL short Liste_Nb_fichiers;
GLOBAL short Liste_Nb_repertoires;
// Tˆte de la liste chaŒnée:
GLOBAL struct Element_de_liste_de_fileselect * Liste_du_fileselect;
// ------------------- Inititialisation des formats connus -------------------
#include "loadsave.h"
void Rien_du_tout(void);
#ifdef VARIABLES_GLOBALES
// Extension du format
char Format_Extension[NB_FORMATS_CONNUS][4]=
{
"pkm", // PKM
"lbm", // LBM
"gif", // GIF
"bmp", // BMP
"pcx", // PCX
"img", // IMG
"sc?", // SCx
"pi1", // PI1
"pc1", // PC1
"cel", // CEL
"kcf", // KCF
"pal" // PAL
};
// Fonction … appeler pour vérifier la signature du fichier
fonction_action Format_Test[NB_FORMATS_LOAD]=
{
Test_PKM, // PKM
Test_LBM, // LBM
Test_GIF, // GIF
Test_BMP, // BMP
Test_PCX, // PCX
Test_IMG, // IMG
Test_SCx, // SCx
Test_PI1, // PI1
Test_PC1, // PC1
Test_CEL, // CEL
Test_KCF, // KCF
Test_PAL // PAL
};
// Fonction … appeler pour charger l'image
fonction_action Format_Load[NB_FORMATS_LOAD]=
{
Load_PKM, // PKM
Load_LBM, // LBM
Load_GIF, // GIF
Load_BMP, // BMP
Load_PCX, // PCX
Load_IMG, // IMG
Load_SCx, // SCx
Load_PI1, // PI1
Load_PC1, // PC1
Load_CEL, // CEL
Load_KCF, // KCF
Load_PAL // PAL
};
// Fonction … appeler pour sauvegarder l'image
fonction_action Format_Save[NB_FORMATS_SAVE]=
{
Save_PKM, // PKM
Save_LBM, // LBM
Save_GIF, // GIF
Save_BMP, // BMP
Save_PCX, // PCX
Save_IMG, // IMG
Save_SCx, // SCx
Save_PI1, // PI1
Save_PC1, // PC1
Save_CEL, // CEL
Save_KCF, // KCF
Save_PAL // PAL
};
// indique si l'on doit considérer que l'image n'est plus modifiée
byte Format_Backup_done[NB_FORMATS_CONNUS]=
{
1, // PKM
1, // LBM
1, // GIF
1, // BMP
1, // PCX
1, // IMG
1, // SCx
1, // PI1
1, // PC1
1, // CEL
0, // KCF
0 // PAL
};
// Le format de fichier autorise un commentaire
byte Format_Commentaire[NB_FORMATS_CONNUS]=
{
1, // PKM
0, // LBM
0, // GIF
0, // BMP
0, // PCX
0, // IMG
0, // SCx
0, // PI1
0, // PC1
0, // CEL
0, // KCF
0 // PAL
};
#else
extern char Format_Extension[NB_FORMATS_CONNUS][4];
extern fonction_action Format_Load[NB_FORMATS_LOAD];
extern fonction_action Format_Save[NB_FORMATS_SAVE];
extern fonction_action Format_Test[NB_FORMATS_LOAD];
extern byte Format_Backup_done[NB_FORMATS_CONNUS];
extern byte Format_Commentaire[NB_FORMATS_CONNUS];
#endif
GLOBAL signed char Erreur_fichier; // 0: opration I/O OK
// 1: Erreur dŠs le dbut de l'opration
// 2: Erreur durant l'opration => donnes modifies
//-1: Interruption du chargement d'une preview
GLOBAL int Ligne_INI;
GLOBAL fonction_afficheur Pixel_de_chargement;
GLOBAL fonction_lecteur Lit_pixel_de_sauvegarde;
/********************
* Spcifique … SDL *
********************/
GLOBAL SDL_Surface * Ecran_SDL;
#endif