Big cleanup, proper makefile

git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@12 416bcca6-2ee7-4201-b75f-2eb2f807beb1
This commit is contained in:
Adrien Destugues 2007-08-13 18:41:50 +00:00
parent 47b59aa70d
commit 57fa46de8c
19 changed files with 6588 additions and 6576 deletions

View File

@ -12,13 +12,11 @@ word Palette_Compter_nb_couleurs_utilisees(dword* Tableau)
word Nombre_Couleurs=0; word Nombre_Couleurs=0;
int i; int i;
//Calcul du nombre de pixels dans l'image //Calcul du nombre de pixels dans l'image
Nombre_De_Pixels=Principal_Hauteur_image*Principal_Largeur_image; Nombre_De_Pixels=Principal_Hauteur_image*Principal_Largeur_image;
// On parcourt l'cran courant pour compter les utilisations des couleurs // On parcourt l'écran courant pour compter les utilisations des couleurs
for(i=0;i++;i>Nombre_De_Pixels) for(i=0;i>Nombre_De_Pixels;i++)
{ {
Couleur=*Pixel_Courant; //on lit la couleur dans l'écran Couleur=*Pixel_Courant; //on lit la couleur dans l'écran
@ -28,32 +26,26 @@ word Palette_Compter_nb_couleurs_utilisees(dword* Tableau)
Pixel_Courant++; Pixel_Courant++;
} }
//On va maintenant compter dans la table les couleurs utilises: //On va maintenant compter dans la table les couleurs utilisées:
Couleur=0;
Couleur=0; //EDX do
do
{ {
if (Tableau[Couleur]!=0) if (Tableau[Couleur]!=0)
Nombre_Couleurs++; Nombre_Couleurs++;
Couleur++;
Couleur++; }while(Couleur!=0); //On sort quand on a fait le tour (la var est sur 8 bits donc 255+1=0)
}while (Couleur<256);
return Nombre_Couleurs; return Nombre_Couleurs;
} }
void Set_palette(T_Palette Palette) void Set_palette(T_Palette Palette)
{ {
SDL_SetPalette(Ecran, SDL_LOGPAL|SDL_PHYSPAL, Palette, 0, 256); puts("Set_Palette non implémenté!\n");
} }
void Attendre_fin_de_click(void) void Attendre_fin_de_click(void)
{ {
do puts("Attendre_fin_de_click non implémenté!\n");
SDL_PumpEvents();
while (SDL_GetMouseState(NULL, NULL)&SDL_BUTTON(0));
} }
void Effacer_image_courante_Stencil(byte Couleur, byte * Pochoir) void Effacer_image_courante_Stencil(byte Couleur, byte * Pochoir)
@ -67,10 +59,10 @@ void Effacer_image_courante_Stencil(byte Couleur, byte * Pochoir)
Nombre_De_Pixels=Principal_Hauteur_image*Principal_Largeur_image; Nombre_De_Pixels=Principal_Hauteur_image*Principal_Largeur_image;
for(i=0;i++;i<Nombre_De_Pixels) for(i=0;i<Nombre_De_Pixels;i++)
{ {
if (Pochoir[*Pixel_Courant]=0); if (Pochoir[*Pixel_Courant]==0);
*Pixel_Courant=Couleur; *Pixel_Courant=Couleur;
Pixel_Courant++; Pixel_Courant++;
} }
@ -79,7 +71,7 @@ void Effacer_image_courante_Stencil(byte Couleur, byte * Pochoir)
void Effacer_image_courante(byte Couleur) void Effacer_image_courante(byte Couleur)
// Effacer l'image courante avec une certaine couleur // Effacer l'image courante avec une certaine couleur
{ {
SDL_FillRect(Ecran,NULL,Couleur); puts("Effacer_image_courante non implémenté!\n");
} }
void Sensibilite_souris(word X,word Y) void Sensibilite_souris(word X,word Y)
@ -94,7 +86,8 @@ void Get_input(void)
void Initialiser_chrono(dword Delai) void Initialiser_chrono(dword Delai)
{// Démarrer le chrono {// Démarrer le chrono
puts("Initialiser_chrono non implémenté!\n");
/*
push ebp push ebp
mov ebp,esp mov ebp,esp
@ -110,6 +103,27 @@ void Initialiser_chrono(dword Delai)
mov esp,ebp mov esp,ebp
pop ebp pop ebp
*/
return; return;
} }
void Wait_VBL(void)
{
puts("Wait_VBL non implémenté!\n");
}
void Passer_en_mode_texte(byte Nb_lignes)
{
puts("Passer_en_mode_texte non implémenté!\n");
}
void Pixel_dans_brosse (word X,word Y,byte Couleur)
{
puts("Pixel_dans_brosse non implémenté!\n");
}
byte Lit_pixel_dans_brosse (word X,word Y)
{
puts("Lit_pixel_dans_brosse non implémenté!\n");
return 0;
}

View File

@ -42,12 +42,12 @@ long Freespace(byte Numero_de_lecteur);
// 3 : lecteur C: // 3 : lecteur C:
// ... : ... // ... : ...
// //
// Rsultat = -1 si lecteur invalide, taille disponible sinon // Résultat = -1 si lecteur invalide, taille disponible sinon
byte Type_de_lecteur_de_disquette(byte Numero_de_lecteur); byte Type_de_lecteur_de_disquette(byte Numero_de_lecteur);
// Numero_de_lecteur compris entre 0 et 3 (4 lecteurs de disquettes) // Numero_de_lecteur compris entre 0 et 3 (4 lecteurs de disquettes)
// //
// Rsultat = 0 : Pas de lecteur // Résultat = 0 : Pas de lecteur
// 1 : Lecteur 360 Ko // 1 : Lecteur 360 Ko
// 2 : Lecteur 1.2 Mo // 2 : Lecteur 1.2 Mo
// 3 : Lecteur 720 Ko // 3 : Lecteur 720 Ko
@ -59,11 +59,11 @@ byte Disk_map(byte Numero_de_lecteur);
// Renseigne sur la lettre logique d'un lecteur // Renseigne sur la lettre logique d'un lecteur
// (utile pour tester si un lecteur de disquette est A: ou B: aux yeux du DOS) // (utile pour tester si un lecteur de disquette est A: ou B: aux yeux du DOS)
// //
// Entre: Octet = nø du lecteur (1=A, 2=B ...) // Entrée: Octet = nø du lecteur (1=A, 2=B ...)
// //
// Sortie: Octet = 0FFh : Pas de lecteur (???) // Sortie: Octet = 0FFh : Pas de lecteur (???)
// sinon: numro reprsentant la lettre logique du lecteur // sinon: numéro représenatan la lettre logique du lecteur
// (commence 1) // (commence à 1)
byte Disque_dur_present(byte Numero_de_disque); byte Disque_dur_present(byte Numero_de_disque);
// Numero_de_disque = 0:C, 1:D, 2:E, ... // Numero_de_disque = 0:C, 1:D, 2:E, ...
@ -91,21 +91,21 @@ void Ellipse_Calculer_limites(short Rayon_horizontal,short Rayon_vertical);
byte Pixel_dans_ellipse(void); byte Pixel_dans_ellipse(void);
// Indique si le pixel se trouvant Ellipse_Curseur_X pixels // Indique si le pixel se trouvant à Ellipse_Curseur_X pixels
// (Ellipse_Curseur_X>0 = … droite, Ellipse_Curseur_X<0 = … gauche) et … // (Ellipse_Curseur_X>0 = à droite, Ellipse_Curseur_X<0 = à gauche) et à
// Ellipse_Curseur_Y pixels (Ellipse_Curseur_Y>0 = en bas, // Ellipse_Curseur_Y pixels (Ellipse_Curseur_Y>0 = en bas,
// Ellipse_Curseur_Y<0 = en haut) du centre se trouve dans l'ellipse en // Ellipse_Curseur_Y<0 = en haut) du centre se trouve dans l'ellipse en
// cours. // cours.
byte Pixel_dans_cercle(void); byte Pixel_dans_cercle(void);
// Indique si le pixel se trouvant Cercle_Curseur_X pixels // Indique si le pixel se trouvant à Cercle_Curseur_X pixels
// (Cercle_Curseur_X>0 = … droite, Cercle_Curseur_X<0 = … gauche) et … // (Cercle_Curseur_X>0 = à droite, Cercle_Curseur_X<0 = à gauche) et à
// Cercle_Curseur_Y pixels (Cercle_Curseur_Y>0 = en bas, // Cercle_Curseur_Y pixels (Cercle_Curseur_Y>0 = en bas,
// Cercle_Curseur_Y<0 = en haut) du centre se trouve dans le cercle en // Cercle_Curseur_Y<0 = en haut) du centre se trouve dans le cercle en
// cours. // cours.
byte Bit(byte Octet, byte Rang); byte Bit(byte Octet, byte Rang);
// Extrait un bit d'un certain rang partir d'un octet. // Extrait un bit d'un certain rang à partir d'un octet.
byte Couleur_ILBM_line(word Pos_X, word Vraie_taille_ligne); byte Couleur_ILBM_line(word Pos_X, word Vraie_taille_ligne);
// Renvoie la couleur du pixel (ILBM) en Pos_X. // Renvoie la couleur du pixel (ILBM) en Pos_X.

280
global.h
View File

@ -6,7 +6,7 @@
////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////
// // // //
// Ce fichier contient les dclaration des variables globales // // Ce fichier contient les déclaration des variables globales //
// // // //
////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////
@ -59,11 +59,11 @@ GLOBAL struct S_Config
byte Resolution_par_defaut; byte Resolution_par_defaut;
} Config; } Config;
// Tableau des touches spciales // Tableau des touches spéciales
GLOBAL word Config_Touche[NB_TOUCHES_SPECIALES]; GLOBAL word Config_Touche[NB_TOUCHES_SPECIALES];
GLOBAL struct S_Mode_video struct S_Mode_video
{ {
short Largeur; short Largeur;
short Hauteur; short Hauteur;
@ -71,7 +71,7 @@ GLOBAL struct S_Mode_video
word Facteur_X; word Facteur_X;
word Facteur_Y; word Facteur_Y;
char Ratio[5]; char Ratio[5];
signed char Refresh; // <0 => entrelac signed char Refresh; // <0 => entrelacé
word Mode_VESA_de_base; word Mode_VESA_de_base;
void * Pointeur; void * Pointeur;
byte Etat; // 0:Cool 1:OK ; 2:Bof ; 3:Naze ; si on rajoute +128 => incompatible byte Etat; // 0:Cool 1:OK ; 2:Bof ; 3:Naze ; si on rajoute +128 => incompatible
@ -81,16 +81,16 @@ GLOBAL struct S_Mode_video Mode_video[NB_MODES_VIDEO];
GLOBAL struct GLOBAL struct
{ {
byte Granularite; // Facteur de gestion de la granularit byte Granularite; // Facteur de gestion de la granularité
byte Code_fenetres; // Utilisation des fenˆtres: 0=AA 1=BB 2=AB 3=BA byte Code_fenetres; // Utilisation des fenˆtres: 0=AA 1=BB 2=AB 3=BA
byte * WinFuncPtr; byte * WinFuncPtr;
byte * Adresse_physique_LFB; // Si = 0 => Pas de LFB byte * Adresse_physique_LFB; // Si = 0 => Pas de LFB
dword Taille_LFB; // Taille de la mmoire LFB dword Taille_LFB; // Taille de la mémoire LFB
} VESA_Mode_Infos[4]; } VESA_Mode_Infos[4];
// Palette par dfaut // Palette par défaut
GLOBAL T_Palette Palette_defaut; GLOBAL T_Palette Palette_defaut;
@ -103,10 +103,10 @@ GLOBAL byte CM_Blanc;
GLOBAL byte CM_Trans; GLOBAL byte CM_Trans;
GLOBAL struct Composantes Coul_menu_pref[4]; GLOBAL struct Composantes Coul_menu_pref[4];
// Etat des entres // Etat des entrées
GLOBAL word Mouse_X; // Abscisse de la souris GLOBAL word Mouse_X; // Abscisse de la souris
GLOBAL word Mouse_Y; // Ordonne de la souris GLOBAL word Mouse_Y; // Ordonnée de la souris
GLOBAL byte Mouse_K; // Etat des boutons de la souris GLOBAL byte Mouse_K; // Etat des boutons de la souris
GLOBAL word Touche; GLOBAL word Touche;
GLOBAL Uint8* Etat_Du_Clavier; // Scancode de la touche en cours et etat des touches de ctrl GLOBAL Uint8* Etat_Du_Clavier; // Scancode de la touche en cours et etat des touches de ctrl
@ -117,20 +117,20 @@ GLOBAL byte Mouse_Facteur_de_correction_Y;
GLOBAL byte Autoriser_changement_de_couleur_pendant_operation; GLOBAL byte Autoriser_changement_de_couleur_pendant_operation;
// Donnes sur le curseur // Données sur le curseur
GLOBAL byte Forme_curseur; GLOBAL byte Forme_curseur;
GLOBAL byte Forme_curseur_avant_fenetre; // Forme du curseur avant l'ouverture d'une fenˆtre 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 Forcer_affichage_curseur; // Forcer l'affichage du curseur au prochain Get_input();
GLOBAL byte Cacher_curseur; GLOBAL byte Cacher_curseur;
GLOBAL byte Curseur_dans_menu; // Boolen "Le curseur se trouve dans le menu" GLOBAL byte Curseur_dans_menu; // Booléen "Le curseur se trouve dans le menu"
GLOBAL byte Curseur_dans_menu_precedent; // Boolen "Le curseur se trouvait prcdemment 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]; // Coordonnes X du point sensible de curseurs en sprite 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]; // Coordonnes Y 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 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 GLOBAL byte FOND_CURSEUR[HAUTEUR_SPRITE_CURSEUR][LARGEUR_SPRITE_CURSEUR]; // Contenu du dessous du curseur
// Donnes sur le pinceau // Données sur le pinceau
GLOBAL byte Pinceau_Forme; GLOBAL byte Pinceau_Forme;
GLOBAL byte Pinceau_Forme_avant_fill; GLOBAL byte Pinceau_Forme_avant_fill;
@ -153,102 +153,102 @@ GLOBAL short Pinceau_Decalage_Y;
// Commandes graphiques // Commandes graphiques
GLOBAL fonction_afficheur Pixel; // Affiche un point … l'cran 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_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_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_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_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; // Affiche rapidement un bloc … l'écran
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_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_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_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_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_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_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_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 affiche … l'cran 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_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 Afficher_ligne; // Afficher une ligne
GLOBAL fonction_procsline Lire_ligne; // Afficher ou lire une ligne GLOBAL fonction_procsline Lire_ligne; // Afficher ou lire une ligne
GLOBAL fonction_display_zoom Display_zoomed_screen; // Affiche rapidement toute la partie zoome … l'cran (en faisant attention de ne pas effacer le menu) 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_Color_zoom Display_brush_Color_zoom;
GLOBAL fonction_display_brush_Mono_zoom Display_brush_Mono_zoom; GLOBAL fonction_display_brush_Mono_zoom Display_brush_Mono_zoom;
GLOBAL fonction_display_brush_Color_zoom Clear_brush_zoom; GLOBAL fonction_display_brush_Color_zoom Clear_brush_zoom;
// Donnes sur les dimensions de l'cran // Données sur les dimensions de l'écran
GLOBAL int Resolution_actuelle; // Rsolution graphique courante GLOBAL int Resolution_actuelle; // Résolution graphique courante
GLOBAL short Ecran_original_X; // |_ Dimensions de l'cran d'origine de GLOBAL short Ecran_original_X; // |_ Dimensions de l'écran d'origine de
GLOBAL short Ecran_original_Y; // | l'image qui vient d'ˆtre charge. GLOBAL short Ecran_original_Y; // | l'image qui vient d'ˆtre chargée.
GLOBAL short Largeur_ecran; // Largeur de l'cran GLOBAL short Largeur_ecran; // Largeur de l'écran
GLOBAL short Hauteur_ecran; // Hauteur de l'cran GLOBAL short Hauteur_ecran; // Hauteur de l'écran
GLOBAL short Limite_Haut; // | GLOBAL short Limite_Haut; // |
GLOBAL short Limite_Bas; // |_ Limites dans lesquelles GLOBAL short Limite_Bas; // |_ Limites dans lesquelles
GLOBAL short Limite_Gauche; // | on peut crire GLOBAL short Limite_Gauche; // | on peut écrire
GLOBAL short Limite_Droite; // | GLOBAL short Limite_Droite; // |
GLOBAL short Limite_visible_Bas; // |_ Derniers points visibles GLOBAL short Limite_visible_Bas; // |_ Derniers points visibles
GLOBAL short Limite_visible_Droite; // | "… l'image" GLOBAL short Limite_visible_Droite; // | "… l'image"
GLOBAL short Limite_Haut_Zoom; // | GLOBAL short Limite_Haut_Zoom; // |
GLOBAL short Limite_Bas_Zoom; // |_ Limites dans lesquelles on peut GLOBAL short Limite_Bas_Zoom; // |_ Limites dans lesquelles on peut
GLOBAL short Limite_Gauche_Zoom; // | crire dans la partie zoome GLOBAL short Limite_Gauche_Zoom; // | écrire dans la partie zoomée
GLOBAL short Limite_Droite_Zoom; // | GLOBAL short Limite_Droite_Zoom; // |
GLOBAL short Limite_visible_Bas_Zoom; // |_ Derniers points visibles "… GLOBAL short Limite_visible_Bas_Zoom; // |_ Derniers points visibles "…
GLOBAL short Limite_visible_Droite_Zoom; // | l'image" dans la partie zoome GLOBAL short Limite_visible_Droite_Zoom; // | l'image" dans la partie zoomée
GLOBAL byte * Buffer_de_ligne_horizontale; // Buffer d'affichage de lignes GLOBAL byte * Buffer_de_ligne_horizontale; // Buffer d'affichage de lignes
// Donnes sur l'image actuelle: // Données sur l'image actuelle:
GLOBAL byte * Principal_Ecran; // Ecran virtuel courant GLOBAL byte * Principal_Ecran; // Ecran virtuel courant
GLOBAL T_Palette Principal_Palette; // Palette de l'cran en cours GLOBAL T_Palette Principal_Palette; // Palette de l'écran en cours
GLOBAL byte Principal_Image_modifiee; // L'image courante a t modifie 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 dsire travailler 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 dsire travailler GLOBAL short Principal_Hauteur_image; // Hauteur de l'image dans laquelle l'utilisateur désire travailler
GLOBAL short Principal_Decalage_X; // Dcalage en X de l'cran par rapport au dbut de l'image 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; // Dcalage en Y de l'cran par rapport au dbut 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_X;
GLOBAL short Ancien_Principal_Decalage_Y; GLOBAL short Ancien_Principal_Decalage_Y;
GLOBAL char Principal_Repertoire_fichier[256]; // |_ Nom complet = GLOBAL char Principal_Repertoire_fichier[256]; // |_ Nom complet =
GLOBAL char Principal_Nom_fichier[13]; // | Repertoire_fichier+"\"+Nom_fichier GLOBAL char Principal_Nom_fichier[13]; // | Repertoire_fichier+"\"+Nom_fichier
GLOBAL byte Principal_Format_fichier; // Format auquel il faut lire et crire le fichier GLOBAL byte Principal_Format_fichier; // Format auquel il faut lire et écrire le fichier
GLOBAL byte Principal_Format; // Format du fileselect GLOBAL byte Principal_Format; // Format du fileselect
GLOBAL short Principal_File_list_Position; // Dbut de la partie affiche dans la liste de fichiers GLOBAL short Principal_File_list_Position; // Début de la partie affichée dans la liste de fichiers
GLOBAL short Principal_File_list_Decalage; // Dcalage de la barre de slection dans le fileselector GLOBAL short Principal_File_list_Decalage; // Décalage de la barre de sélection dans le fileselector
GLOBAL char Principal_Repertoire_courant[256]; // Rpertoire actuel sur disque GLOBAL char Principal_Repertoire_courant[256]; // Répertoire actuel sur disque
GLOBAL char Principal_Commentaire[TAILLE_COMMENTAIRE+1]; // Commentaire de l'image 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_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 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-zoome par rapport … l'cran GLOBAL float Principal_Proportion_split; // Proportion de la zone non-zoomée par rapport … l'écran
// Donnes sur le brouillon: // Données sur le brouillon:
GLOBAL byte * Brouillon_Ecran; // Ecran virtuel brouillon GLOBAL byte * Brouillon_Ecran; // Ecran virtuel brouillon
GLOBAL T_Palette Brouillon_Palette; // Palette de l'cran de brouillon GLOBAL T_Palette Brouillon_Palette; // Palette de l'écran de brouillon
GLOBAL byte Brouillon_Image_modifiee; // Le brouillon a t modifi GLOBAL byte Brouillon_Image_modifiee; // Le brouillon a été modifié
GLOBAL short Brouillon_Largeur_image; // Largeur du brouillon dans laquelle l'utilisateur dsire travailler 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 dsire travailler GLOBAL short Brouillon_Hauteur_image; // Hauteur du brouillon dans laquelle l'utilisateur désire travailler
GLOBAL short Brouillon_Decalage_X; // Dcalage en X du brouillon par rapport au dbut de l'image GLOBAL short Brouillon_Decalage_X; // Décalage en X du brouillon par rapport au début de l'image
GLOBAL short Brouillon_Decalage_Y; // Dcalage en Y du brouillon par rapport au dbut 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_X;
GLOBAL short Ancien_Brouillon_Decalage_Y; GLOBAL short Ancien_Brouillon_Decalage_Y;
GLOBAL char Brouillon_Repertoire_fichier[256]; // |_ Nom complet = GLOBAL char Brouillon_Repertoire_fichier[256]; // |_ Nom complet =
GLOBAL char Brouillon_Nom_fichier[13]; // | Repertoire_fichier+"\"+Nom_fichier GLOBAL char Brouillon_Nom_fichier[13]; // | Repertoire_fichier+"\"+Nom_fichier
GLOBAL byte Brouillon_Format_fichier; // Format auquel il faut lire et crire le fichier GLOBAL byte Brouillon_Format_fichier; // Format auquel il faut lire et écrire le fichier
GLOBAL byte Brouillon_Format; // Format du fileselect GLOBAL byte Brouillon_Format; // Format du fileselect
GLOBAL short Brouillon_File_list_Position; // Dbut de la partie affiche dans la liste de fichiers GLOBAL short Brouillon_File_list_Position; // Début de la partie affichée dans la liste de fichiers
GLOBAL short Brouillon_File_list_Decalage; // Dcalage de la barre de slection dans le fileselector GLOBAL short Brouillon_File_list_Decalage; // Décalage de la barre de sélection dans le fileselector
GLOBAL char Brouillon_Repertoire_courant[256]; // Rpertoire actuel sur disque GLOBAL char Brouillon_Repertoire_courant[256]; // Répertoire actuel sur disque
GLOBAL char Brouillon_Commentaire[TAILLE_COMMENTAIRE+1]; // Commentaire de l'image 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_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 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-zoome par rapport … l'cran 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 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_Facteur; // Facteur de zoom dans le brouillon
@ -261,12 +261,12 @@ GLOBAL byte Masque_copie_couleurs[256]; // Tableau des couleurs
// Sauvegarde de l'image: // Sauvegarde de l'image:
GLOBAL byte * Ecran_backup; // Sauvegarde de l'cran virtuel courant 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 * 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 GLOBAL S_Liste_de_pages * Brouillon_Backups; // Liste des pages de backup de la page de brouillon
// Donnes sur la brosse: // Données sur la brosse:
GLOBAL byte * Brosse; // Sprite de la brosse GLOBAL byte * Brosse; // Sprite de la brosse
GLOBAL word Brosse_Decalage_X; // Centre horizontal de la brosse GLOBAL word Brosse_Decalage_X; // Centre horizontal de la brosse
@ -277,7 +277,7 @@ GLOBAL word Brosse_Hauteur; // Hauteur de la brosse
GLOBAL char Brosse_Repertoire_fichier[256]; // | GLOBAL char Brosse_Repertoire_fichier[256]; // |
GLOBAL char Brosse_Nom_fichier[13]; // | GLOBAL char Brosse_Nom_fichier[13]; // |
GLOBAL byte Brosse_Format_fichier; // | Infos sur le GLOBAL byte Brosse_Format_fichier; // | Infos sur le
GLOBAL byte Brosse_Format; // |_ slecteur de GLOBAL byte Brosse_Format; // |_ sélecteur de
GLOBAL short Brosse_File_list_Position; // | fichiers de la GLOBAL short Brosse_File_list_Position; // | fichiers de la
GLOBAL short Brosse_File_list_Decalage; // | brosse. GLOBAL short Brosse_File_list_Decalage; // | brosse.
GLOBAL char Brosse_Repertoire_courant[256]; // | GLOBAL char Brosse_Repertoire_courant[256]; // |
@ -287,28 +287,28 @@ GLOBAL byte Brosse_Centre_rotation_defini; // | Infos sur le
GLOBAL short Brosse_Centre_rotation_X; // |- centre de rotation GLOBAL short Brosse_Centre_rotation_X; // |- centre de rotation
GLOBAL short Brosse_Centre_rotation_Y; // | de la brosse GLOBAL short Brosse_Centre_rotation_Y; // | de la brosse
// Donnes sur le menu // Données sur le menu
GLOBAL byte Menu_visible; // Le menu est actif … l'cran GLOBAL byte Menu_visible; // Le menu est actif … l'écran
GLOBAL word Menu_Ordonnee; // Ordonne o— commence le menu GLOBAL word Menu_Ordonnee; // Ordonnée o— commence le menu
GLOBAL word Menu_Ordonnee_Texte; // Ordonne o— commence le texte dans 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_X; // Facteur de grossissement du menu en X
GLOBAL word Menu_Facteur_Y; // Facteur de grossissement du menu en Y 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 GLOBAL word Menu_Taille_couleur; // Taille d'une couleur de la palette du menu
// Donnes sur la fenˆtre de menu // Données sur la fenˆtre de menu
GLOBAL byte Une_fenetre_est_ouverte; 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_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_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_Largeur; // Largeur de la fenˆtre
GLOBAL word Fenetre_Hauteur; // Hauteur 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 byte Menu_visible_avant_fenetre; // Le menu était visible avant d'ouvir une fenˆtre
GLOBAL word Menu_Ordonnee_avant_fenetre; // Ordonne du menu avant d'ouvrir 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 dj… cach avant l'ouverture de la fenetre? GLOBAL byte Cacher_pinceau_avant_fenetre;// Le pinceau étatit déj… caché avant l'ouverture de la fenetre?
GLOBAL word Nb_boutons_fenetre; GLOBAL word Nb_boutons_fenetre;
GLOBAL struct Fenetre_Bouton_normal * Fenetre_Liste_boutons_normal; GLOBAL struct Fenetre_Bouton_normal * Fenetre_Liste_boutons_normal;
@ -321,33 +321,33 @@ GLOBAL int Fenetre_Attribut2;
// Dfinition des boutons //////////////////////////////////////////////////// // Définition des boutons ////////////////////////////////////////////////////
GLOBAL struct GLOBAL struct
{ {
// Informations sur l'aspect du bouton (graphisme): // Informations sur l'aspect du bouton (graphisme):
word Decalage_X; // Dcalage par rapport … la gauche du menu word Decalage_X; // Décalage par rapport … la gauche du menu
word Decalage_Y; // Dcalage par rapport au haut du menu word Decalage_Y; // Décalage par rapport au haut du menu
word Largeur; // Largeur du bouton word Largeur; // Largeur du bouton
word Hauteur; // Hauteur du bouton word Hauteur; // Hauteur du bouton
byte Enfonce; // Le bouton est enfonc byte Enfonce; // Le bouton est enfoncé
byte Forme; // Forme du bouton byte Forme; // Forme du bouton
// Information sur les clicks de la souris: // Information sur les clicks de la souris:
fonction_action Gauche; // Action dclenche par un click gauche sur le bouton fonction_action Gauche; // Action déclenchée par un click gauche sur le bouton
fonction_action Droite; // Action dclenche par un click droit 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_gauche; // Raccourci clavier équivalent … un click gauche sur le bouton
word Raccourci_droite; // Raccourci clavier quivalent … un click droit sur le bouton word Raccourci_droite; // Raccourci clavier équivalent … un click droit sur le bouton
// Informations sur le dsenclenchement du bouton gr par le moteur: // Informations sur le désenclenchement du bouton géré par le moteur:
fonction_action Desenclencher; // Action appele lors du dsenclenchement du bouton fonction_action Desenclencher; // Action appelée lors du désenclenchement du bouton
byte Famille; // Ensemble de boutons auquel celui-ci appartient byte Famille; // Ensemble de boutons auquel celui-ci appartient
} Bouton[NB_BOUTONS]; } Bouton[NB_BOUTONS];
// Informations sur les diffrents modes de dessin // Informations sur les différents modes de dessin
GLOBAL fonction_effet Fonction_effet; GLOBAL fonction_effet Fonction_effet;
@ -357,8 +357,8 @@ GLOBAL byte Exclude_color[256]; // Couleurs
// Mode smear: // Mode smear:
GLOBAL byte Smear_Mode; // Le mode smear est enclench GLOBAL byte Smear_Mode; // Le mode smear est enclenché
GLOBAL byte Smear_Debut; // On vient juste de commencer une opration en Smear 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 byte * Smear_Brosse; // Sprite de la brosse de Smear
GLOBAL word Smear_Brosse_Largeur; // Largeur 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 word Smear_Brosse_Hauteur; // Hauteur de la brosse de Smear
@ -367,24 +367,24 @@ GLOBAL short Smear_Min_X,Smear_Max_X,Smear_Min_Y,Smear_Max_Y; // Bornes de la Br
// Mode shade: // Mode shade:
GLOBAL struct T_Shade Shade_Liste[8]; // Listes de shade GLOBAL struct T_Shade Shade_Liste[8]; // Listes de shade
GLOBAL byte Shade_Actuel; // Numro du shade en cours 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; // 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_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_Table_droite[256]; // Table de conversion de shade pour un clic droit
GLOBAL byte Shade_Mode; // Le mode shade est enclench GLOBAL byte Shade_Mode; // Le mode shade est enclenché
GLOBAL byte Quick_shade_Mode; // Le mode quick-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_Step; // Pas du mode quick-shade
GLOBAL byte Quick_shade_Loop; // Normal / Loop / No sat. GLOBAL byte Quick_shade_Loop; // Normal / Loop / No sat.
// Mode stencil: // Mode stencil:
GLOBAL byte Stencil_Mode; // Le mode stencil est enclench GLOBAL byte Stencil_Mode; // Le mode stencil est enclenché
GLOBAL byte Stencil[256]; // Tableau des couleurs protges GLOBAL byte Stencil[256]; // Tableau des couleurs protégées
// Mode grille: // Mode grille:
GLOBAL byte Snap_Mode; // Le mode grille est enclench GLOBAL byte Snap_Mode; // Le mode grille est enclenché
GLOBAL short Snap_Largeur; // Largeur entre 2 points de la grille 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_Hauteur; // Hauteur entre 2 points de la grille
GLOBAL short Snap_Decalage_X; // Position en X du point le + … gauche GLOBAL short Snap_Decalage_X; // Position en X du point le + … gauche
@ -392,34 +392,34 @@ GLOBAL short Snap_Decalage_Y; // Position en Y du point le + en haut
// Mode trame: // Mode trame:
GLOBAL byte Trame_Mode; // Le mode Trame est enclench GLOBAL byte Trame_Mode; // Le mode Trame est enclenché
GLOBAL byte Trame[16][16]; // Sprite de la trame GLOBAL byte Trame[16][16]; // Sprite de la trame
GLOBAL word TRAME_PREDEFINIE[12][16]; // Trames prsfinies (compactes sur 16*16 bits) 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_Largeur; // Largeur de la trame
GLOBAL short Trame_Hauteur; // Hauteur de la trame GLOBAL short Trame_Hauteur; // Hauteur de la trame
// Mode colorize: // Mode colorize:
GLOBAL byte Colorize_Mode; // Le mode Colorize est enclench GLOBAL byte Colorize_Mode; // Le mode Colorize est enclenché
GLOBAL byte Colorize_Opacite; // Intensit du Colorize GLOBAL byte Colorize_Opacite; // Intensité du Colorize
GLOBAL byte Colorize_Mode_en_cours; // Le type de Colorize en cours (0-2) 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_A[64];
GLOBAL word Table_de_multiplication_par_Facteur_B[64]; GLOBAL word Table_de_multiplication_par_Facteur_B[64];
// Mode smooth: // Mode smooth:
GLOBAL byte Smooth_Mode; // Le mode Smooth est enclench GLOBAL byte Smooth_Mode; // Le mode Smooth est enclenché
GLOBAL byte Smooth_Matrice[3][3]; // La matrice du Smooth actuel GLOBAL byte Smooth_Matrice[3][3]; // La matrice du Smooth actuel
// Mode Tiling: // Mode Tiling:
GLOBAL byte Tiling_Mode; // Le mode Tiling est enclench GLOBAL byte Tiling_Mode; // Le mode Tiling est enclenché
GLOBAL short Tiling_Decalage_X; // Dcalage du tiling en X GLOBAL short Tiling_Decalage_X; // Décalage du tiling en X
GLOBAL short Tiling_Decalage_Y; // Dcalage du tiling en Y GLOBAL short Tiling_Decalage_Y; // Décalage du tiling en Y
// Mode Mask // Mode Mask
GLOBAL byte Mask_Mode; // Le mode Masque est enclench GLOBAL byte Mask_Mode; // Le mode Masque est enclenché
GLOBAL byte Mask[256]; // Tableau des couleurs constituant le masque GLOBAL byte Mask[256]; // Tableau des couleurs constituant le masque
// Mode loupe: // Mode loupe:
@ -439,7 +439,7 @@ GLOBAL word TABLE_ZOOM[NB_FACTEURS_DE_ZOOM][512];
extern word FACTEUR_ZOOM[NB_FACTEURS_DE_ZOOM]; extern word FACTEUR_ZOOM[NB_FACTEURS_DE_ZOOM];
#endif #endif
// Donnes sur les ellipses et les cercles: // Données sur les ellipses et les cercles:
GLOBAL dword Table_des_carres[1025]; GLOBAL dword Table_des_carres[1025];
GLOBAL long Ellipse_Curseur_X; GLOBAL long Ellipse_Curseur_X;
@ -452,36 +452,36 @@ GLOBAL long Cercle_Curseur_X;
GLOBAL long Cercle_Curseur_Y; GLOBAL long Cercle_Curseur_Y;
GLOBAL long Cercle_Limite; GLOBAL long Cercle_Limite;
// Donnes sur les dgrads: // Données sur les dégradés:
GLOBAL short Degrade_Borne_Inferieure; // Plus petite couleur englobe par le dgrad GLOBAL short Degrade_Borne_Inferieure; // Plus petite couleur englobée par le dégradé
GLOBAL short Degrade_Borne_Superieure; // Plus grande couleur englobe par le dgrad GLOBAL short Degrade_Borne_Superieure; // Plus grande couleur englobée par le dégradé
GLOBAL int Degrade_Inverse; // Boolen "Le dgrad est en ralit invers" 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_bornes; // = Abs(Degrade_Borne_Inferieure-Degrade_Borne_Superieure)+1
GLOBAL long Degrade_Intervalle_total; // Valeur maximum des indices passs … la fonction de dgrad (!!! >0 !!!) GLOBAL long Degrade_Intervalle_total; // Valeur maximum des indices passés … la fonction de dégradé (!!! >0 !!!)
GLOBAL long Degrade_Melange_aleatoire; // Facteur de mlange (1-256+) du dgrad GLOBAL long Degrade_Melange_aleatoire; // Facteur de mélange (1-256+) du dégradé
GLOBAL fonction_degrade Traiter_degrade; // Fonction de traitement du dgrad, varie selon la mthode choisie par l'utilisateur. 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 fonction_afficheur Traiter_pixel_de_degrade; // Redirection de l'affichage
GLOBAL struct T_Degrade_Tableau Degrade_Tableau[16]; // Donnes de tous les dgrads 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 dgrad courant GLOBAL int Degrade_Courant; // Indice du tableau correspondant au dégradé courant
// Donnes sur le Spray: // Données sur le Spray:
GLOBAL byte Spray_Mode; // Mode Mono(1) ou Multicolore(0) GLOBAL byte Spray_Mode; // Mode Mono(1) ou Multicolore(0)
GLOBAL short Spray_Size; // DiamŠtre du spray en pixels GLOBAL short Spray_Size; // DiamŠtre du spray en pixels
GLOBAL byte Spray_Delay; // Dlai en VBLs entre 2 "pschiitt" 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_Mono_flow; // Nombre de pixels qui sortent en mˆme temps en mono
GLOBAL byte Spray_Multi_flow[256]; // Idem pour chaque couleur GLOBAL byte Spray_Multi_flow[256]; // Idem pour chaque couleur
// Donnes diverses sur le programme: // Données diverses sur le programme:
GLOBAL byte Sortir_du_programme; GLOBAL byte Sortir_du_programme;
GLOBAL char Repertoire_du_programme[256]; // Rpertoire dans lequel se trouve le programme GLOBAL char Repertoire_du_programme[256]; // Répertoire dans lequel se trouve le programme
GLOBAL char Repertoire_initial[256]; // Rpertoire … partir duquel … t lanc le programme GLOBAL char Repertoire_initial[256]; // Répertoire … partir duquel … été lancé le programme
GLOBAL byte Fore_color; GLOBAL byte Fore_color;
GLOBAL byte Back_color; GLOBAL byte Back_color;
GLOBAL byte Mode_de_dessin_en_cours; GLOBAL byte Mode_de_dessin_en_cours;
@ -489,7 +489,7 @@ GLOBAL byte Courbe_en_cours;
GLOBAL byte Ligne_en_cours; GLOBAL byte Ligne_en_cours;
GLOBAL byte Couleur_debut_palette; GLOBAL byte Couleur_debut_palette;
GLOBAL byte Un_fichier_a_ete_passe_en_parametre; GLOBAL byte Un_fichier_a_ete_passe_en_parametre;
GLOBAL byte Une_resolution_a_ete_passee_en_parametre; // utilise uniquement si la variable prcdente est … 1 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 // Variables concernant l'OBJ DIVERS
@ -512,7 +512,7 @@ GLOBAL word MODE_X_Largeur_de_ligne;
GLOBAL dword MODE_X_Valeur_initiale_de_esi; GLOBAL dword MODE_X_Valeur_initiale_de_esi;
GLOBAL dword MODE_X_Valeur_initiale_de_edi; GLOBAL dword MODE_X_Valeur_initiale_de_edi;
// Partie concernant le VESA: // Partie concernant le VESA:
GLOBAL byte Granularite; // Facteur de gestion de la granularit de la carte GLOBAL byte Granularite; // Facteur de gestion de la granularité de la carte
GLOBAL byte VESA_Erreur; GLOBAL byte VESA_Erreur;
GLOBAL byte * VESA_WinFuncPtr; // Handler software de changement de banque GLOBAL byte * VESA_WinFuncPtr; // Handler software de changement de banque
GLOBAL word * VESA_Liste_des_modes; GLOBAL word * VESA_Liste_des_modes;
@ -529,7 +529,7 @@ GLOBAL byte VESA_Version_Decimale;
GLOBAL char VESA_Constructeur[TAILLE_NOM_CONSTRUCTEUR+1]; GLOBAL char VESA_Constructeur[TAILLE_NOM_CONSTRUCTEUR+1];
GLOBAL word VESA_Taille_memoire; GLOBAL word VESA_Taille_memoire;
// Les diffrents sprites: // Les différents sprites:
GLOBAL byte BLOCK_MENU[HAUTEUR_MENU][LARGEUR_MENU]; GLOBAL byte BLOCK_MENU[HAUTEUR_MENU][LARGEUR_MENU];
GLOBAL byte SPRITE_MENU[NB_SPRITES_MENU][HAUTEUR_SPRITE_MENU][LARGEUR_SPRITE_MENU]; GLOBAL byte SPRITE_MENU[NB_SPRITES_MENU][HAUTEUR_SPRITE_MENU][LARGEUR_SPRITE_MENU];
@ -542,19 +542,19 @@ GLOBAL byte Fonte_fun [256*8*8];
GLOBAL byte Fonte_help [315][6][8]; GLOBAL byte Fonte_help [315][6][8];
GLOBAL byte * Fonte; GLOBAL byte * Fonte;
// Les donnes de l'aide: // Les données de l'aide:
GLOBAL struct Section_d_aide Table_d_aide[NB_SECTIONS_AIDE]; GLOBAL struct Section_d_aide Table_d_aide[NB_SECTIONS_AIDE];
GLOBAL byte Section_d_aide_en_cours; // Indice de la table d'aide en cours de consultation GLOBAL byte Section_d_aide_en_cours; // Indice de la table d'aide en cours de consultation
GLOBAL word Position_d_aide_en_cours; // Numro de la ligne d'aide en cours de consultation GLOBAL word Position_d_aide_en_cours; // Numéro de la ligne d'aide en cours de consultation
// Donnes sur les oprations // Données sur les opérations
GLOBAL word Operation_avant_interruption; // Nø de l'opration en cours avant l'utilisation d'une interruption 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'opration en cours GLOBAL word Operation_en_cours; // Nø de l'opération en cours
GLOBAL word Operation_Pile[TAILLE_PILE_OPERATIONS]; // Pile simplifie 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_Taille_pile; // Taille effective de la pile (0=vide)
GLOBAL byte Operation_dans_loupe; // Indique si l'opration a commenc dans la partie Zoome ou non 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_Couleur;
GLOBAL short Pipette_X; GLOBAL short Pipette_X;
@ -568,8 +568,8 @@ GLOBAL short Pipette_Y;
FORME_CURSEUR_CIBLE , // Dessin … la main discontinu FORME_CURSEUR_CIBLE , // Dessin … la main discontinu
FORME_CURSEUR_CIBLE , // Dessin … la main point par point FORME_CURSEUR_CIBLE , // Dessin … la main point par point
FORME_CURSEUR_CIBLE , // Lignes FORME_CURSEUR_CIBLE , // Lignes
FORME_CURSEUR_CIBLE , // Lignes relies FORME_CURSEUR_CIBLE , // Lignes reliées
FORME_CURSEUR_CIBLE , // Lignes centres FORME_CURSEUR_CIBLE , // Lignes centrées
FORME_CURSEUR_CIBLE_XOR , // Rectangle vide FORME_CURSEUR_CIBLE_XOR , // Rectangle vide
FORME_CURSEUR_CIBLE_XOR , // Rectangle plein FORME_CURSEUR_CIBLE_XOR , // Rectangle plein
FORME_CURSEUR_CIBLE , // Cercles vides FORME_CURSEUR_CIBLE , // Cercles vides
@ -580,7 +580,7 @@ GLOBAL short Pipette_Y;
FORME_CURSEUR_CIBLE , // Remplacer FORME_CURSEUR_CIBLE , // Remplacer
FORME_CURSEUR_CIBLE_XOR , // Prise de brosse rectangulaire FORME_CURSEUR_CIBLE_XOR , // Prise de brosse rectangulaire
FORME_CURSEUR_CIBLE , // Prise d'une brosse multiforme FORME_CURSEUR_CIBLE , // Prise d'une brosse multiforme
FORME_CURSEUR_CIBLE_PIPETTE , // Rcupration d'une couleur FORME_CURSEUR_CIBLE_PIPETTE , // Récupération d'une couleur
FORME_CURSEUR_RECTANGLE_XOR , // Positionnement de la fenˆtre de loupe FORME_CURSEUR_RECTANGLE_XOR , // Positionnement de la fenˆtre de loupe
FORME_CURSEUR_CIBLE , // Courbe … 3 points FORME_CURSEUR_CIBLE , // Courbe … 3 points
FORME_CURSEUR_CIBLE , // Courbe … 4 points FORME_CURSEUR_CIBLE , // Courbe … 4 points
@ -590,8 +590,8 @@ GLOBAL short Pipette_Y;
FORME_CURSEUR_CIBLE , // Polyfill FORME_CURSEUR_CIBLE , // Polyfill
FORME_CURSEUR_CIBLE , // Polyforme rempli FORME_CURSEUR_CIBLE , // Polyforme rempli
FORME_CURSEUR_MULTIDIRECTIONNEL, // Scroll FORME_CURSEUR_MULTIDIRECTIONNEL, // Scroll
FORME_CURSEUR_CIBLE , // Cercles dgrads FORME_CURSEUR_CIBLE , // Cercles dégradés
FORME_CURSEUR_CIBLE , // Ellipses dgrades FORME_CURSEUR_CIBLE , // Ellipses dégradées
FORME_CURSEUR_ROTATE_XOR , // Faire tourner brosse FORME_CURSEUR_ROTATE_XOR , // Faire tourner brosse
FORME_CURSEUR_CIBLE_XOR , // Etirer brosse FORME_CURSEUR_CIBLE_XOR , // Etirer brosse
FORME_CURSEUR_CIBLE // Deformer brosse FORME_CURSEUR_CIBLE // Deformer brosse
@ -601,12 +601,12 @@ GLOBAL short Pipette_Y;
#endif #endif
// Procdures … appeler: Opration,Mouse_K,Etat de la pile // Procédures … appeler: Opération,Mouse_K,Etat de la pile
GLOBAL struct GLOBAL struct
{ {
byte Effacer_curseur; // Boolen "il faut effacer le curseur pour l'opra." byte Effacer_curseur; // Booléen "il faut effacer le curseur pour l'opéra."
fonction_action Action; // Action appele fonction_action Action; // Action appelée
} Operation[NB_OPERATIONS][3][TAILLE_PILE_OPERATIONS]; } Operation[NB_OPERATIONS][3][TAILLE_PILE_OPERATIONS];
@ -620,11 +620,11 @@ GLOBAL byte SPRITE_DRIVE[NB_SPRITES_DRIVES][HAUTEUR_SPRITE_DRIVE][LARGEUR_SPRITE
// -- Section des informations sur les formats de fichiers ------------------ // -- Section des informations sur les formats de fichiers ------------------
// Comptage du nb d'lments dans la liste: // Comptage du nb d'éléments dans la liste:
GLOBAL short Liste_Nb_elements; GLOBAL short Liste_Nb_elements;
GLOBAL short Liste_Nb_fichiers; GLOBAL short Liste_Nb_fichiers;
GLOBAL short Liste_Nb_repertoires; GLOBAL short Liste_Nb_repertoires;
// Tˆte de la liste chaŒne: // Tˆte de la liste chaŒnée:
GLOBAL struct Element_de_liste_de_fileselect * Liste_du_fileselect; GLOBAL struct Element_de_liste_de_fileselect * Liste_du_fileselect;
// ------------------- Inititialisation des formats connus ------------------- // ------------------- Inititialisation des formats connus -------------------
@ -650,7 +650,7 @@ void Rien_du_tout(void);
"PAL" // PAL "PAL" // PAL
}; };
// Fonction … appeler pour vrifier la signature du fichier // Fonction … appeler pour vérifier la signature du fichier
fonction_action Format_Test[NB_FORMATS_LOAD]= fonction_action Format_Test[NB_FORMATS_LOAD]=
{ {
Test_PKM, // PKM Test_PKM, // PKM
@ -701,7 +701,7 @@ void Rien_du_tout(void);
Save_PAL // PAL Save_PAL // PAL
}; };
// indique si l'on doit considrer que l'image n'est plus modifie // indique si l'on doit considérer que l'image n'est plus modifiée
byte Format_Backup_done[NB_FORMATS_CONNUS]= byte Format_Backup_done[NB_FORMATS_CONNUS]=
{ {
1, // PKM 1, // PKM
@ -743,9 +743,9 @@ void Rien_du_tout(void);
extern byte Format_Commentaire[NB_FORMATS_CONNUS]; extern byte Format_Commentaire[NB_FORMATS_CONNUS];
#endif #endif
GLOBAL signed char Erreur_fichier; // 0: opration I/O OK GLOBAL signed char Erreur_fichier; // 0: opération I/O OK
// 1: Erreur dŠs le dbut de l'opration // 1: Erreur dŠs le début de l'opération
// 2: Erreur durant l'opration => donnes modifies // 2: Erreur durant l'opération => données modifiées
//-1: Interruption du chargement d'une preview //-1: Interruption du chargement d'une preview
GLOBAL int Ligne_INI; GLOBAL int Ligne_INI;

725
graph.c

File diff suppressed because it is too large Load Diff

View File

@ -1,3 +1,5 @@
#include "global.h"
//byte Meilleure_couleur(byte Rouge, byte Vert, byte Bleu); //byte Meilleure_couleur(byte Rouge, byte Vert, byte Bleu);
void Remapper_ecran_apres_changement_couleurs_menu(void); void Remapper_ecran_apres_changement_couleurs_menu(void);
@ -52,7 +54,7 @@ byte Effet_Smooth(word X,word Y,byte Couleur);
void Afficher_foreback(void); void Afficher_foreback(void);
void Afficher_pixel(short X,short Y,byte Couleur); void Afficher_pixel(word X,word Y,byte Couleur);
void Afficher_pinceau(short X,short Y,byte Couleur,byte Preview); void Afficher_pinceau(short X,short Y,byte Couleur,byte Preview);
void Effacer_pinceau(short X,short Y); void Effacer_pinceau(short X,short Y);

92
init.c
View File

@ -20,11 +20,11 @@
#include <stdlib.h> #include <stdlib.h>
#include "divers.h" #include "divers.h"
// On dclare mchamment le prototype de Erreur pour viter de faire un // On déclare méchamment le prototype de Erreur pour éviter de faire un
// fichier "main.h": // fichier "main.h":
void Erreur(int Code); void Erreur(int Code);
// Chercher le rpertoire contenant GFX2.EXE // Chercher le répertoire contenant GFX2.EXE
void Chercher_repertoire_du_programme(char * Chaine) void Chercher_repertoire_du_programme(char * Chaine)
{ {
int Position; int Position;
@ -81,8 +81,8 @@ void Rechercher_drives(void)
byte Lecteur; byte Lecteur;
byte Nb_lecteurs_disquettes; byte Nb_lecteurs_disquettes;
byte Lecteur_de_disquettes; byte Lecteur_de_disquettes;
byte Type_de_lecteur; byte Type_de_lecteur=42;
char Bidon[256]; //char Bidon[256];
Nb_drives=0; Nb_drives=0;
Nb_lecteurs_disquettes=(Type_de_lecteur_de_disquette(0)>0)+(Type_de_lecteur_de_disquette(1)>0); Nb_lecteurs_disquettes=(Type_de_lecteur_de_disquette(0)>0)+(Type_de_lecteur_de_disquette(1)>0);
@ -106,7 +106,7 @@ void Rechercher_drives(void)
{ {
if (Disk_map(2)==Disk_map(1)) if (Disk_map(2)==Disk_map(1))
{ {
// Il n'y a pas de lecteur mul par un SUBST // Il n'y a pas de lecteur émulé par un SUBST
Lecteur_de_disquettes=Disk_map(1)-1; Lecteur_de_disquettes=Disk_map(1)-1;
for (Lecteur=0; Lecteur<=1; Lecteur++) for (Lecteur=0; Lecteur<=1; Lecteur++)
{ {
@ -125,7 +125,7 @@ void Rechercher_drives(void)
} }
else else
{ {
// Il y a un lecteur mul par un SUBST // Il y a un lecteur émulé par un SUBST
Lecteur_de_disquettes=Disk_map(1)-1; Lecteur_de_disquettes=Disk_map(1)-1;
// On cherche d'abord sur quel lecteur le lecteur physique est dispo // On cherche d'abord sur quel lecteur le lecteur physique est dispo
@ -144,24 +144,24 @@ void Rechercher_drives(void)
} }
} }
// On dclare les trucs maintenant // On déclare les trucs maintenant
if (Lecteur_de_disquettes==0) if (Lecteur_de_disquettes==0)
{ {
// Situation : On a un lecteur A: qui est rel et un lecteur B: mul // Situation : On a un lecteur A: qui est réel et un lecteur B: émulé
Ajouter_lecteur(0,Type_de_lecteur); Ajouter_lecteur(0,Type_de_lecteur);
Ajouter_lecteur(1,DRIVE_NETWORK); Ajouter_lecteur(1,DRIVE_NETWORK);
} }
else else
{ {
// Situation : On a un lecteur A: qui est rel et un lecteur B: mul // Situation : On a un lecteur A: qui est réel et un lecteur B: émulé
Ajouter_lecteur(0,DRIVE_NETWORK); Ajouter_lecteur(0,DRIVE_NETWORK);
Ajouter_lecteur(1,Type_de_lecteur); Ajouter_lecteur(1,Type_de_lecteur);
} }
} }
} }
else else
// Il n'y a pas de lecteur de D7 physique, mais on vrifie s'il n'y en a // Il n'y a pas de lecteur de D7 physique, mais on vérifie s'il n'y en a
// pas qui seraient muls par SUBST // pas qui seraient émulés par SUBST
for (Lecteur=0; Lecteur<=1; Lecteur++) for (Lecteur=0; Lecteur<=1; Lecteur++)
{ {
switch (Freespace(Lecteur+1)) switch (Freespace(Lecteur+1))
@ -173,8 +173,8 @@ void Rechercher_drives(void)
} }
} }
// Test de la prsence d'autres lecteurs (HDD, CD, Rseau) // Test de la présence d'autres lecteurs (HDD, CD, Réseau)
// On les met tous en rseau avant de tester leur vrai type. // On les met tous en réseau avant de tester leur vrai type.
for (Lecteur=2; Lecteur<=25; Lecteur++) for (Lecteur=2; Lecteur<=25; Lecteur++)
{ {
if (Disque_dur_present(Lecteur-2)) if (Disque_dur_present(Lecteur-2))
@ -190,7 +190,7 @@ void Rechercher_drives(void)
} }
// Fonction de dcryptage // Fonction de décryptage
#define DECRYPT_TAILLE_CLE 14 #define DECRYPT_TAILLE_CLE 14
byte Decrypt_compteur=0; byte Decrypt_compteur=0;
@ -206,7 +206,7 @@ void Rechercher_drives(void)
return Temp; return Temp;
} }
// Dcryptage d'une donne // Décryptage d'une donnée
void Decrypte(byte * Donnee,int Taille) void Decrypte(byte * Donnee,int Taille)
{ {
@ -228,7 +228,7 @@ void Charger_DAT(void)
byte Pos_Y; byte Pos_Y;
word Mot_temporaire; word Mot_temporaire;
struct stat* Informations_Fichier; struct stat* Informations_Fichier=NULL;
strcpy(Nom_du_fichier,Repertoire_du_programme); strcpy(Nom_du_fichier,Repertoire_du_programme);
@ -248,7 +248,7 @@ void Charger_DAT(void)
if (read(Handle,BLOCK_MENU,LARGEUR_MENU*HAUTEUR_MENU)!=LARGEUR_MENU*HAUTEUR_MENU) if (read(Handle,BLOCK_MENU,LARGEUR_MENU*HAUTEUR_MENU)!=LARGEUR_MENU*HAUTEUR_MENU)
Erreur(ERREUR_DAT_CORROMPU); Erreur(ERREUR_DAT_CORROMPU);
Decrypte(BLOCK_MENU,LARGEUR_MENU*HAUTEUR_MENU); Decrypte((byte *)BLOCK_MENU,LARGEUR_MENU*HAUTEUR_MENU);
if (read(Handle,SPRITE_EFFET,LARGEUR_SPRITE_MENU*HAUTEUR_SPRITE_MENU*NB_SPRITES_EFFETS)!= if (read(Handle,SPRITE_EFFET,LARGEUR_SPRITE_MENU*HAUTEUR_SPRITE_MENU*NB_SPRITES_EFFETS)!=
LARGEUR_SPRITE_MENU*HAUTEUR_SPRITE_MENU*NB_SPRITES_EFFETS) LARGEUR_SPRITE_MENU*HAUTEUR_SPRITE_MENU*NB_SPRITES_EFFETS)
@ -311,12 +311,12 @@ void Charger_DAT(void)
Fonte=Fonte_systeme; Fonte=Fonte_systeme;
// Lecture de la fonte 6x8: (spciale aide) // Lecture de la fonte 6x8: (spéciale aide)
if (read(Handle,Fonte_help,(315*6*8))!=(315*6*8)) if (read(Handle,Fonte_help,(315*6*8))!=(315*6*8))
Erreur(ERREUR_DAT_CORROMPU); Erreur(ERREUR_DAT_CORROMPU);
Decrypte((byte*)Fonte_help,(315*6*8)); Decrypte((byte*)Fonte_help,(315*6*8));
// Lecture des diffrentes sections de l'aide: // Lecture des différentes sections de l'aide:
// Pour chaque section "Indice" de l'aide: // Pour chaque section "Indice" de l'aide:
for (Indice=0;Indice<NB_SECTIONS_AIDE;Indice++) for (Indice=0;Indice<NB_SECTIONS_AIDE;Indice++)
@ -328,11 +328,11 @@ void Charger_DAT(void)
// On copie ce nombre de lignes dans la table: // On copie ce nombre de lignes dans la table:
Table_d_aide[Indice].Nombre_de_lignes=Mot_temporaire; Table_d_aide[Indice].Nombre_de_lignes=Mot_temporaire;
// On lit la place que la section prend en mmoire: // On lit la place que la section prend en mémoire:
if (read(Handle,&Mot_temporaire,2)!=2) if (read(Handle,&Mot_temporaire,2)!=2)
Erreur(ERREUR_DAT_CORROMPU); Erreur(ERREUR_DAT_CORROMPU);
// On alloue la mmoire correspondante: // On alloue la mémoire correspondante:
if (!(Table_d_aide[Indice].Debut_de_la_liste=(byte *)malloc(Mot_temporaire))) if (!(Table_d_aide[Indice].Debut_de_la_liste=(byte *)malloc(Mot_temporaire)))
Erreur(ERREUR_MEMOIRE); Erreur(ERREUR_MEMOIRE);
@ -619,7 +619,7 @@ void Initialisation_des_boutons(void)
0); 0);
} }
// Ici viennent les dclarations des boutons que l'on sait grer // Ici viennent les déclarations des boutons que l'on sait gérer
Initialiser_bouton(BOUTON_PINCEAUX, Initialiser_bouton(BOUTON_PINCEAUX,
0,1, 0,1,
@ -958,9 +958,9 @@ void Initialisation_des_boutons(void)
// Initialisation des oprations: // Initialisation des opérations:
// Initialiseur d'une opration: // Initialiseur d'une opération:
void Initialiser_operation(byte Numero_operation, void Initialiser_operation(byte Numero_operation,
byte Numero_bouton_souris, byte Numero_bouton_souris,
@ -975,15 +975,15 @@ void Initialiser_operation(byte Numero_operation,
} }
// Initiliseur de toutes les oprations: // Initiliseur de toutes les opérations:
void Initialisation_des_operations(void) void Initialisation_des_operations(void)
{ {
byte Numero; // Numro de l'option en cours d'auto-initialisation byte Numero; // Numéro de l'option en cours d'auto-initialisation
byte Bouton; // Bouton souris en cours d'auto-initialisation byte Bouton; // Bouton souris en cours d'auto-initialisation
byte Taille; // Taille de la pile en cours d'auto-initialisation byte Taille; // Taille de la pile en cours d'auto-initialisation
// Auto-initialisation des oprations (vers des actions inoffensives) // Auto-initialisation des opérations (vers des actions inoffensives)
for (Numero=0;Numero<NB_OPERATIONS;Numero++) for (Numero=0;Numero<NB_OPERATIONS;Numero++)
for (Bouton=0;Bouton<3;Bouton++) for (Bouton=0;Bouton<3;Bouton++)
@ -991,7 +991,7 @@ void Initialisation_des_operations(void)
Initialiser_operation(Numero,Bouton,Taille,Print_coordonnees,0); Initialiser_operation(Numero,Bouton,Taille,Print_coordonnees,0);
// Ici viennent les dclarations dtailles des oprations // Ici viennent les déclarations détaillées des opérations
Initialiser_operation(OPERATION_DESSIN_CONTINU,1,0, Initialiser_operation(OPERATION_DESSIN_CONTINU,1,0,
Freehand_Mode1_1_0,1); Freehand_Mode1_1_0,1);
Initialiser_operation(OPERATION_DESSIN_CONTINU,1,2, Initialiser_operation(OPERATION_DESSIN_CONTINU,1,2,
@ -1350,9 +1350,9 @@ void Initialisation_des_operations(void)
//-- Dfinition des modes vido: -------------------------------------------- //-- Définition des modes vidéo: --------------------------------------------
// Dfinition d'un mode: // Définition d'un mode:
void Definir_mode_video(int Numero, void Definir_mode_video(int Numero,
short Largeur, short Hauteur, short Largeur, short Hauteur,
@ -1375,7 +1375,7 @@ void Definir_mode_video(int Numero,
} }
// Initiliseur de toutes les oprations: // Initiliseur de toutes les opérations:
void Definition_des_modes_video(void) void Definition_des_modes_video(void)
{ // Numero LargHaut Mode FXFY Ratio Ref Vesa Pointeur { // Numero LargHaut Mode FXFY Ratio Ref Vesa Pointeur
@ -1485,8 +1485,8 @@ word Ordonnancement[NB_TOUCHES]=
0x200+BOUTON_SPRAY, // Spray menu 0x200+BOUTON_SPRAY, // Spray menu
0x100+BOUTON_FLOODFILL, // Floodfill 0x100+BOUTON_FLOODFILL, // Floodfill
0x200+BOUTON_FLOODFILL, // Replace color 0x200+BOUTON_FLOODFILL, // Replace color
0x100+BOUTON_COURBES, // Bzier's curves 0x100+BOUTON_COURBES, // Bézier's curves
0x200+BOUTON_COURBES, // Bzier's curve with 3 or 4 points 0x200+BOUTON_COURBES, // Bézier's curve with 3 or 4 points
0x100+BOUTON_RECTANGLES, // Empty rectangle 0x100+BOUTON_RECTANGLES, // Empty rectangle
0x100+BOUTON_FILLRECT, // Filled rectangle 0x100+BOUTON_FILLRECT, // Filled rectangle
0x100+BOUTON_CERCLES, // Empty circle 0x100+BOUTON_CERCLES, // Empty circle
@ -1585,7 +1585,7 @@ word Ordonnancement[NB_TOUCHES]=
SPECIAL_PREVIOUS_USER_FORECOLOR, // Previous user-defined foreground color SPECIAL_PREVIOUS_USER_FORECOLOR, // Previous user-defined foreground color
SPECIAL_NEXT_USER_BACKCOLOR, // Next user-defined background color SPECIAL_NEXT_USER_BACKCOLOR, // Next user-defined background color
SPECIAL_PREVIOUS_USER_BACKCOLOR, // Previous user-defined background color SPECIAL_PREVIOUS_USER_BACKCOLOR, // Previous user-defined background color
SPECIAL_RETRECIR_PINCEAU, // Rtrcir le pinceau SPECIAL_RETRECIR_PINCEAU, // Rétrécir le pinceau
SPECIAL_GROSSIR_PINCEAU // Grossir le pinceau SPECIAL_GROSSIR_PINCEAU // Grossir le pinceau
}; };
@ -1623,8 +1623,8 @@ byte Numero_option[NB_TOUCHES]=
29, // Spray menu 29, // Spray menu
30, // Floodfill 30, // Floodfill
124, // Replace color 124, // Replace color
31, // Bzier's curves 31, // Bézier's curves
32, // Bzier's curve with 3 or 4 points 32, // Bézier's curve with 3 or 4 points
33, // Empty rectangle 33, // Empty rectangle
34, // Filled rectangle 34, // Filled rectangle
35, // Empty circle 35, // Empty circle
@ -1723,7 +1723,7 @@ byte Numero_option[NB_TOUCHES]=
127, // Previous user-defined foreground color 127, // Previous user-defined foreground color
128, // Next user-defined background color 128, // Next user-defined background color
129, // Previous user-defined background color 129, // Previous user-defined background color
121, // Rtrcir le pinceau 121, // Rétrécir le pinceau
122 // Grossir le pinceau 122 // Grossir le pinceau
}; };
@ -1738,7 +1738,7 @@ int Charger_CFG(int Tout_charger)
struct Config_Chunk Chunk; struct Config_Chunk Chunk;
struct Config_Infos_touche CFG_Infos_touche; struct Config_Infos_touche CFG_Infos_touche;
struct Config_Mode_video CFG_Mode_video; struct Config_Mode_video CFG_Mode_video;
struct stat* Informations_Fichier; struct stat* Informations_Fichier=NULL;
strcpy(Nom_du_fichier,Repertoire_du_programme); strcpy(Nom_du_fichier,Repertoire_du_programme);
@ -1802,7 +1802,7 @@ int Charger_CFG(int Tout_charger)
goto Erreur_lecture_config; goto Erreur_lecture_config;
} }
break; break;
case CHUNK_MODES_VIDEO: // Modes vido case CHUNK_MODES_VIDEO: // Modes vidéo
if ((Chunk.Taille/sizeof(CFG_Mode_video))!=NB_MODES_VIDEO) if ((Chunk.Taille/sizeof(CFG_Mode_video))!=NB_MODES_VIDEO)
goto Erreur_lecture_config; goto Erreur_lecture_config;
for (Indice=1; Indice<=NB_MODES_VIDEO; Indice++) for (Indice=1; Indice<=NB_MODES_VIDEO; Indice++)
@ -1868,7 +1868,7 @@ int Charger_CFG(int Tout_charger)
goto Erreur_lecture_config; goto Erreur_lecture_config;
} }
break; break;
case CHUNK_DEGRADES: // Infos sur les dgrads case CHUNK_DEGRADES: // Infos sur les dégradés
if (Tout_charger) if (Tout_charger)
{ {
if (read(Handle,&Degrade_Courant,1)!=1) if (read(Handle,&Degrade_Courant,1)!=1)
@ -1944,7 +1944,7 @@ int Sauver_CFG(void)
{ {
int Handle; int Handle;
int Indice; int Indice;
byte Octet; //byte Octet;
char Nom_du_fichier[256]; char Nom_du_fichier[256];
struct Config_Header CFG_Header; struct Config_Header CFG_Header;
struct Config_Chunk Chunk; struct Config_Chunk Chunk;
@ -1986,7 +1986,7 @@ int Sauver_CFG(void)
goto Erreur_sauvegarde_config; goto Erreur_sauvegarde_config;
} }
// Sauvegarde de l'tat de chaque mode vido // Sauvegarde de l'état de chaque mode vidéo
Chunk.Numero=CHUNK_MODES_VIDEO; Chunk.Numero=CHUNK_MODES_VIDEO;
Chunk.Taille=NB_MODES_VIDEO*sizeof(CFG_Mode_video); Chunk.Taille=NB_MODES_VIDEO*sizeof(CFG_Mode_video);
if (write(Handle,&Chunk,sizeof(Chunk))!=sizeof(Chunk)) if (write(Handle,&Chunk,sizeof(Chunk))!=sizeof(Chunk))
@ -2000,7 +2000,7 @@ int Sauver_CFG(void)
goto Erreur_sauvegarde_config; goto Erreur_sauvegarde_config;
} }
// Ecriture des donnes du Shade (prcdes du shade en cours) // Ecriture des données du Shade (précédées du shade en cours)
Chunk.Numero=CHUNK_SHADE; Chunk.Numero=CHUNK_SHADE;
Chunk.Taille=sizeof(Shade_Liste)+sizeof(Shade_Actuel); Chunk.Taille=sizeof(Shade_Liste)+sizeof(Shade_Actuel);
if (write(Handle,&Chunk,sizeof(Chunk))!=sizeof(Chunk)) if (write(Handle,&Chunk,sizeof(Chunk))!=sizeof(Chunk))
@ -2026,7 +2026,7 @@ int Sauver_CFG(void)
if (write(Handle,Stencil,sizeof(Stencil))!=sizeof(Stencil)) if (write(Handle,Stencil,sizeof(Stencil))!=sizeof(Stencil))
goto Erreur_sauvegarde_config; goto Erreur_sauvegarde_config;
// Sauvegarde des informations des dgrads // Sauvegarde des informations des dégradés
Chunk.Numero=CHUNK_DEGRADES; Chunk.Numero=CHUNK_DEGRADES;
Chunk.Taille=sizeof(Degrade_Tableau)+1; Chunk.Taille=sizeof(Degrade_Tableau)+1;
if (write(Handle,&Chunk,sizeof(Chunk))!=sizeof(Chunk)) if (write(Handle,&Chunk,sizeof(Chunk))!=sizeof(Chunk))
@ -2104,11 +2104,11 @@ void Initialiser_la_table_precalculee_des_distances_de_couleur(void)
{ {
int Indice; int Indice;
// On commence par allouer la mmoire utilise par la table: // On commence par allouer la mémoire utilisée par la table:
// 128 valeurs pour chaque teinte, 3 teintes (Rouge, vert et bleu) // 128 valeurs pour chaque teinte, 3 teintes (Rouge, vert et bleu)
MC_Table_differences=(int *)malloc(sizeof(int)*(3*128)); MC_Table_differences=(int *)malloc(sizeof(int)*(3*128));
// Pour chacune des 128 positions correspondant … une valeur de diffrence: // Pour chacune des 128 positions correspondant … une valeur de différence:
for (Indice=0;Indice<128;Indice++) for (Indice=0;Indice<128;Indice++)
{ {
if (Indice<64) if (Indice<64)

View File

@ -15,3 +15,8 @@ void _splitpath(char* Buffer, char* Chemin, char* Nom_Fichier)
Chemin[i]=0; Chemin[i]=0;
strcpy(Nom_Fichier,Buffer+i); strcpy(Nom_Fichier,Buffer+i);
} }
int filelength(char *)
{
printf("filelenght non implémenté!\n");
}

View File

@ -6,4 +6,6 @@ struct find_t {
char name[256]; char name[256];
}; };
int filelength(char *);
#define _A_SUBDIR 1 #define _A_SUBDIR 1

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,7 @@
void Pixel_Chargement_dans_ecran_courant(short Pos_X,short Pos_Y,byte Couleur); void Pixel_Chargement_dans_ecran_courant(word Pos_X,word Pos_Y,byte Couleur);
void Pixel_Chargement_dans_preview (short Pos_X,short Pos_Y,byte Couleur); void Pixel_Chargement_dans_preview (word Pos_X,word Pos_Y,byte Couleur);
void Pixel_Chargement_dans_brosse (short Pos_X,short Pos_Y,byte Couleur); void Pixel_Chargement_dans_brosse (word Pos_X,word Pos_Y,byte Couleur);
void Nom_fichier_complet(char * Nom_du_fichier, byte Sauve_Colorix); void Nom_fichier_complet(char * Nom_du_fichier, byte Sauve_Colorix);

116
main.c
View File

@ -22,10 +22,10 @@
#include "loadsave.h" #include "loadsave.h"
#include "sdlscreen.h" #include "sdlscreen.h"
byte Ancien_nb_lignes; // Ancien nombre de lignes de l'cran byte Ancien_nb_lignes; // Ancien nombre de lignes de l'écran
//--- Affichage de la syntaxe, et de la liste des modes vidos disponibles --- //--- Affichage de la syntaxe, et de la liste des modes vidéos disponibles ---
void Afficher_syntaxe(void) void Afficher_syntaxe(void)
{ {
printf("Syntax: GFX2 [<picture>] [<Video mode number>|<Help>]\n\n"); printf("Syntax: GFX2 [<picture>] [<Video mode number>|<Help>]\n\n");
@ -188,7 +188,7 @@ void Analyse_de_la_ligne_de_commande(int argc,char * argv[])
switch (argc) switch (argc)
{ {
case 1 : // Mode par dfaut case 1 : // Mode par défaut
Resolution_actuelle=Config.Resolution_par_defaut; Resolution_actuelle=Config.Resolution_par_defaut;
break; break;
@ -199,9 +199,9 @@ void Analyse_de_la_ligne_de_commande(int argc,char * argv[])
Un_fichier_a_ete_passe_en_parametre=1; Un_fichier_a_ete_passe_en_parametre=1;
Option2=2; Option2=2;
// On rcupŠre le chemin complet du paramŠtre // On récupŠre le chemin complet du paramŠtre
Buffer=realpath(argv[1],NULL); Buffer=realpath(argv[1],NULL);
// Et on dcoupe ce chemin en rpertoire(path) + fichier(.ext) // Et on découpe ce chemin en répertoire(path) + fichier(.ext)
_splitpath(Buffer,Principal_Repertoire_fichier,Principal_Nom_fichier); _splitpath(Buffer,Principal_Repertoire_fichier,Principal_Nom_fichier);
// chdir(Principal_Repertoire_fichier); // chdir(Principal_Repertoire_fichier);
} }
@ -223,7 +223,7 @@ void Analyse_de_la_ligne_de_commande(int argc,char * argv[])
exit(0); exit(0);
} }
Resolution_actuelle=Str2num(argv[Option2]); // Mode dsir par l'utilisateur Resolution_actuelle=Str2num(argv[Option2]); // Mode désiré par l'utilisateur
if ( (Resolution_actuelle<MODE_320_200) || (Resolution_actuelle>MODE_1024_768) ) if ( (Resolution_actuelle<MODE_320_200) || (Resolution_actuelle>MODE_1024_768) )
Erreur(ERREUR_NUMERO_MODE); Erreur(ERREUR_NUMERO_MODE);
Une_resolution_a_ete_passee_en_parametre=Un_fichier_a_ete_passe_en_parametre; Une_resolution_a_ete_passee_en_parametre=Un_fichier_a_ete_passe_en_parametre;
@ -248,40 +248,40 @@ void Initialisation_du_programme(int argc,char * argv[])
int Temp; int Temp;
int Mode_dans_lequel_on_demarre; int Mode_dans_lequel_on_demarre;
// On commence galement par interdire d'appuyer sur Ctrl+Pause et Ctrl+C // On commence également par interdire d'appuyer sur Ctrl+Pause et Ctrl+C
signal(SIGINT ,SIG_IGN); signal(SIGINT ,SIG_IGN);
printf("°±²Û GrafX 2.00 %s%s þ Copyright (c)1996-1999 Sunset Design Û²±°\n",ALPHA_BETA,POURCENTAGE_VERSION); printf("°±²Û GrafX 2.00 %s%s þ Copyright (c)1996-1999 Sunset Design Û²±°\n",ALPHA_BETA,POURCENTAGE_VERSION);
// On cre dŠs maintenant les descripteurs des listes de pages pour la page // On crée dŠs maintenant les descripteurs des listes de pages pour la page
// principale et la page de brouillon afin que leurs champs ne soient pas // principale et la page de brouillon afin que leurs champs ne soient pas
// invalide lors des appels aux multiples fonctions manipules … // invalide lors des appels aux multiples fonctions manipulées …
// l'initialisation du programme. // l'initialisation du programme.
Principal_Backups=(S_Liste_de_pages *)malloc(sizeof(S_Liste_de_pages)); Principal_Backups=(S_Liste_de_pages *)malloc(sizeof(S_Liste_de_pages));
Brouillon_Backups=(S_Liste_de_pages *)malloc(sizeof(S_Liste_de_pages)); Brouillon_Backups=(S_Liste_de_pages *)malloc(sizeof(S_Liste_de_pages));
Initialiser_S_Liste_de_pages(Principal_Backups); Initialiser_S_Liste_de_pages(Principal_Backups);
Initialiser_S_Liste_de_pages(Brouillon_Backups); Initialiser_S_Liste_de_pages(Brouillon_Backups);
// On calcule tout de suite la table prcalcule utilise pour la recherche // On calcule tout de suite la table précalculée utilisée pour la recherche
// des meilleures couleurs afin de ne pas avoir de valeurs catastrophiques // des meilleures couleurs afin de ne pas avoir de valeurs catastrophiques
// dsignes au dmarrage (couleurs du menu, ...) // désignées au démarrage (couleurs du menu, ...)
Initialiser_la_table_precalculee_des_distances_de_couleur(); Initialiser_la_table_precalculee_des_distances_de_couleur();
// On dtermine dŠs le dpart o— se trouve le fichier: // On détermine dŠs le départ o— se trouve le fichier:
Chercher_repertoire_du_programme(argv[0]); Chercher_repertoire_du_programme(argv[0]);
// On dtecte les lecteurs qui sont accessibles: // On détecte les lecteurs qui sont accessibles:
Rechercher_drives(); Rechercher_drives();
// On dtermine le rpertoire courant: // On détermine le répertoire courant:
Determiner_repertoire_courant(); Determiner_repertoire_courant();
// On en profite pour le mmoriser dans le rpertoire principal: // On en profite pour le mémoriser dans le répertoire principal:
strcpy(Repertoire_initial,Principal_Repertoire_courant); strcpy(Repertoire_initial,Principal_Repertoire_courant);
// On initialise les donnes sur le nom de fichier de l'image principale: // On initialise les données sur le nom de fichier de l'image principale:
strcpy(Principal_Repertoire_fichier,Principal_Repertoire_courant); strcpy(Principal_Repertoire_fichier,Principal_Repertoire_courant);
strcpy(Principal_Nom_fichier,"NO_NAME.PKM"); strcpy(Principal_Nom_fichier,"NO_NAME.PKM");
Principal_Format_fichier=FORMAT_PAR_DEFAUT; Principal_Format_fichier=FORMAT_PAR_DEFAUT;
// On initialise les donnes sur le nom de fichier de l'image de brouillon: // On initialise les données sur le nom de fichier de l'image de brouillon:
strcpy(Brouillon_Repertoire_courant,Principal_Repertoire_courant); strcpy(Brouillon_Repertoire_courant,Principal_Repertoire_courant);
strcpy(Brouillon_Repertoire_fichier,Principal_Repertoire_fichier); strcpy(Brouillon_Repertoire_fichier,Principal_Repertoire_fichier);
strcpy(Brouillon_Nom_fichier ,Principal_Nom_fichier); strcpy(Brouillon_Nom_fichier ,Principal_Nom_fichier);
@ -292,9 +292,9 @@ void Initialisation_du_programme(int argc,char * argv[])
Brosse_Format_fichier =Principal_Format_fichier; Brosse_Format_fichier =Principal_Format_fichier;
// On initialise ce qu'il faut pour que les fileselects ne plantent pas: // On initialise ce qu'il faut pour que les fileselects ne plantent pas:
Liste_du_fileselect=NULL; // Au dbut, il n'y a pas de fichiers dans la liste Liste_du_fileselect=NULL; // Au début, il n'y a pas de fichiers dans la liste
Principal_File_list_Position=0; // Au dbut, le fileselect est en haut de la liste des fichiers Principal_File_list_Position=0; // Au début, le fileselect est en haut de la liste des fichiers
Principal_File_list_Decalage=0; // Au dbut, le fileselect est en haut de la liste des fichiers Principal_File_list_Decalage=0; // Au début, le fileselect est en haut de la liste des fichiers
Principal_Format=0; Principal_Format=0;
Brouillon_File_list_Position=0; Brouillon_File_list_Position=0;
Brouillon_File_list_Decalage=0; Brouillon_File_list_Decalage=0;
@ -336,23 +336,23 @@ void Initialisation_du_programme(int argc,char * argv[])
Brouillon_Loupe_Decalage_X=0; Brouillon_Loupe_Decalage_X=0;
Brouillon_Loupe_Decalage_Y=0; Brouillon_Loupe_Decalage_Y=0;
// On initialise tous les modes vido // On initialise tous les modes vidéo
Definition_des_modes_video(); Definition_des_modes_video();
// On initialise les donnes sur l'tat du programme: // On initialise les données sur l'état du programme:
// Donne sur la sortie du programme: // Donnée sur la sortie du programme:
Sortir_du_programme=0; Sortir_du_programme=0;
// Donnes sur l'tat du menu: // Données sur l'état du menu:
Pixel_dans_menu=Pixel_dans_barre_d_outil; Pixel_dans_menu=Pixel_dans_barre_d_outil;
Menu_visible=1; Menu_visible=1;
// Donnes sur les couleurs et la palette: // Données sur les couleurs et la palette:
Fore_color=15; Fore_color=15;
Back_color=0; Back_color=0;
Couleur_debut_palette=0; Couleur_debut_palette=0;
// Donnes sur le curseur: // Données sur le curseur:
Forme_curseur=FORME_CURSEUR_CIBLE; Forme_curseur=FORME_CURSEUR_CIBLE;
Cacher_curseur=0; Cacher_curseur=0;
// Donnes sur le pinceau: // Données sur le pinceau:
Pinceau_X=0; Pinceau_X=0;
Pinceau_Y=0; Pinceau_Y=0;
Pinceau_Forme=FORME_PINCEAU_ROND; Pinceau_Forme=FORME_PINCEAU_ROND;
@ -362,10 +362,10 @@ void Initialisation_du_programme(int argc,char * argv[])
Forcer_affichage_curseur=0; Forcer_affichage_curseur=0;
// On initialise la table des carrs: // On initialise la table des carrés:
Initialiser_la_table_des_carres(); Initialiser_la_table_des_carres();
// On initialise tout ce qui concerne les oprations et les effets // On initialise tout ce qui concerne les opérations et les effets
Operation_Taille_pile=0; Operation_Taille_pile=0;
Mode_de_dessin_en_cours=OPERATION_DESSIN_CONTINU; Mode_de_dessin_en_cours=OPERATION_DESSIN_CONTINU;
Ligne_en_cours =OPERATION_LIGNE; Ligne_en_cours =OPERATION_LIGNE;
@ -385,10 +385,10 @@ void Initialisation_du_programme(int argc,char * argv[])
// On initialise les infos du mode smooth: // On initialise les infos du mode smooth:
Smooth_Mode=0; Smooth_Mode=0;
// On initialise les infos du mode shade: // On initialise les infos du mode shade:
Shade_Mode=0; // Les autres infos du Shade sont charges avec la config Shade_Mode=0; // Les autres infos du Shade sont chargées avec la config
Quick_shade_Mode=0; // idem Quick_shade_Mode=0; // idem
// On initialise les infos sur les dgrads: // On initialise les infos sur les dégradés:
Traiter_pixel_de_degrade =Afficher_pixel; // Les autres infos sont charges avec la config Traiter_pixel_de_degrade =Afficher_pixel; // Les autres infos sont chargées avec la config
// On initialise les infos de la grille: // On initialise les infos de la grille:
Snap_Mode=0; Snap_Mode=0;
Snap_Largeur=8; Snap_Largeur=8;
@ -396,12 +396,12 @@ void Initialisation_du_programme(int argc,char * argv[])
Snap_Decalage_X=0; Snap_Decalage_X=0;
Snap_Decalage_Y=0; Snap_Decalage_Y=0;
// On initialise les infos du mode Colorize: // On initialise les infos du mode Colorize:
Colorize_Mode=0; // Mode colorize inactif par dfaut Colorize_Mode=0; // Mode colorize inactif par défaut
Colorize_Opacite=50; // Une interpolation de 50% par dfaut Colorize_Opacite=50; // Une interpolation de 50% par défaut
Colorize_Mode_en_cours=0; // Par dfaut, la mthode par interpolation Colorize_Mode_en_cours=0; // Par défaut, la méthode par interpolation
Calculer_les_tables_de_Colorize(); Calculer_les_tables_de_Colorize();
// On initialise les infos du mode Tiling: // On initialise les infos du mode Tiling:
Tiling_Mode=0; // Pas besoin d'initialiser les dcalages car ‡a se fait Tiling_Mode=0; // Pas besoin d'initialiser les décalages car ‡a se fait
// en prenant une brosse (toujours mis … 0). // en prenant une brosse (toujours mis … 0).
// On initialise les infos du mode Mask: // On initialise les infos du mode Mask:
Mask_Mode=0; Mask_Mode=0;
@ -414,17 +414,17 @@ void Initialisation_du_programme(int argc,char * argv[])
memset(Spray_Multi_flow,0,256); memset(Spray_Multi_flow,0,256);
srand(time(NULL)); // On randomize un peu tout ‡a... srand(time(NULL)); // On randomize un peu tout ‡a...
// Rcupration du nombre de lignes de l'ancien mode // Récupération du nombre de lignes de l'ancien mode
Ancien_nb_lignes=Recuperer_nb_lignes(); Ancien_nb_lignes=Recuperer_nb_lignes();
// Passer en clavier amricain // Passer en clavier américain
Clavier_americain(); Clavier_americain();
// Tester la prsence de la souris // Tester la présence de la souris
if (!Detection_souris()) Erreur(ERREUR_DRIVER_SOURIS); if (!Detection_souris()) Erreur(ERREUR_DRIVER_SOURIS);
// Initialisation des boutons // Initialisation des boutons
Initialisation_des_boutons(); Initialisation_des_boutons();
// Initialisation des oprations // Initialisation des opérations
Initialisation_des_operations(); Initialisation_des_operations();
Une_fenetre_est_ouverte=0; Une_fenetre_est_ouverte=0;
@ -459,7 +459,7 @@ void Initialisation_du_programme(int argc,char * argv[])
Trame_Mode=0; Trame_Mode=0;
Copier_trame_predefinie(0); Copier_trame_predefinie(0);
// On slectionne toutes les couleurs pour le masque de copie de couleurs vers le brouillon // On sélectionne toutes les couleurs pour le masque de copie de couleurs vers le brouillon
memset(Masque_copie_couleurs,1,256); memset(Masque_copie_couleurs,1,256);
// Prise en compte de la fonte // Prise en compte de la fonte
@ -468,7 +468,7 @@ void Initialisation_du_programme(int argc,char * argv[])
else else
Fonte=Fonte_systeme; Fonte=Fonte_systeme;
// Allocation de mmoire pour la brosse // Allocation de mémoire pour la brosse
if (!(Brosse =(byte *)malloc( 1* 1))) Erreur(ERREUR_MEMOIRE); if (!(Brosse =(byte *)malloc( 1* 1))) Erreur(ERREUR_MEMOIRE);
if (!(Smear_Brosse =(byte *)malloc(TAILLE_MAXI_PINCEAU*TAILLE_MAXI_PINCEAU))) Erreur(ERREUR_MEMOIRE); if (!(Smear_Brosse =(byte *)malloc(TAILLE_MAXI_PINCEAU*TAILLE_MAXI_PINCEAU))) Erreur(ERREUR_MEMOIRE);
@ -478,7 +478,7 @@ void Initialisation_du_programme(int argc,char * argv[])
Pinceau_Largeur=1; Pinceau_Largeur=1;
Pinceau_Hauteur=1; Pinceau_Hauteur=1;
// Dtection des modes SDL en tat de fonctionner: // Détection des modes SDL en état de fonctionner:
Liste_Modes_Videos_SDL= SDL_ListModes(NULL, 0); Liste_Modes_Videos_SDL= SDL_ListModes(NULL, 0);
//Ici, trier les modes dispos ou pas dans le tableau global ... //Ici, trier les modes dispos ou pas dans le tableau global ...
@ -506,7 +506,7 @@ void Initialisation_du_programme(int argc,char * argv[])
Mode_dans_lequel_on_demarre=Resolution_actuelle; Mode_dans_lequel_on_demarre=Resolution_actuelle;
Buffer_de_ligne_horizontale=NULL; Buffer_de_ligne_horizontale=NULL;
Resolution_actuelle=-1; // On n'tait pas dans un mode graphique Resolution_actuelle=-1; // On n'était pas dans un mode graphique
Initialiser_mode_video(Mode_dans_lequel_on_demarre); Initialiser_mode_video(Mode_dans_lequel_on_demarre);
Principal_Largeur_image=Largeur_ecran; Principal_Largeur_image=Largeur_ecran;
@ -514,12 +514,12 @@ void Initialisation_du_programme(int argc,char * argv[])
Brouillon_Largeur_image=Largeur_ecran; Brouillon_Largeur_image=Largeur_ecran;
Brouillon_Hauteur_image=Hauteur_ecran; Brouillon_Hauteur_image=Hauteur_ecran;
// Allocation de mmoire pour les diffrents crans virtuels (et brosse) // Allocation de mémoire pour les différents écrans virtuels (et brosse)
if (Initialiser_les_listes_de_backups_en_debut_de_programme(Config.Nb_pages_Undo+1,Largeur_ecran,Hauteur_ecran)==0) if (Initialiser_les_listes_de_backups_en_debut_de_programme(Config.Nb_pages_Undo+1,Largeur_ecran,Hauteur_ecran)==0)
Erreur(ERREUR_MEMOIRE); Erreur(ERREUR_MEMOIRE);
// On remet le nom par dfaut pour la page de brouillon car il t modifi // On remet le nom par défaut pour la page de brouillon car il été modifié
// par le passage d'un fichier en paramŠtre lors du traitement prcdent. // par le passage d'un fichier en paramŠtre lors du traitement précédent.
// Note: le fait que l'on ne modifie que les variables globales Brouillon_* // Note: le fait que l'on ne modifie que les variables globales Brouillon_*
// et pas les infos contenues dans la page de brouillon elle-mˆme ne m'ins- // et pas les infos contenues dans la page de brouillon elle-mˆme ne m'ins-
// -pire pas confiance mais ‡a a l'air de marcher sans poser de problŠmes, // -pire pas confiance mais ‡a a l'air de marcher sans poser de problŠmes,
@ -531,7 +531,7 @@ void Initialisation_du_programme(int argc,char * argv[])
Brouillon_Format_fichier=FORMAT_PAR_DEFAUT; Brouillon_Format_fichier=FORMAT_PAR_DEFAUT;
} }
// Nettoyage de l'cran virtuel (les autres recevront celui-ci par copie) // Nettoyage de l'écran virtuel (les autres recevront celui-ci par copie)
memset(Principal_Ecran,0,Principal_Largeur_image*Principal_Hauteur_image); memset(Principal_Ecran,0,Principal_Largeur_image*Principal_Hauteur_image);
// Initialisation de diverses variables par calcul: // Initialisation de diverses variables par calcul:
@ -543,13 +543,13 @@ void Initialisation_du_programme(int argc,char * argv[])
Afficher_menu(); Afficher_menu();
Afficher_pinceau_dans_menu(); Afficher_pinceau_dans_menu();
// On affiche le curseur pour dbutter correctement l'tat du programme: // On affiche le curseur pour débutter correctement l'état du programme:
Afficher_curseur(); Afficher_curseur();
Brouillon_Image_modifiee=0; Brouillon_Image_modifiee=0;
Principal_Image_modifiee=0; Principal_Image_modifiee=0;
// Le programme dbute en mode de dessin … la main // Le programme débute en mode de dessin … la main
Enclencher_bouton(BOUTON_DESSIN,A_GAUCHE); Enclencher_bouton(BOUTON_DESSIN,A_GAUCHE);
// On initialise la brosse initiale … 1 pixel blanc: // On initialise la brosse initiale … 1 pixel blanc:
@ -568,32 +568,32 @@ void Fermeture_du_programme(void)
// On libŠre le buffer de gestion de lignes // On libŠre le buffer de gestion de lignes
free(Buffer_de_ligne_horizontale); free(Buffer_de_ligne_horizontale);
// On libŠre le pinceau spcial // On libŠre le pinceau spécial
free(Pinceau_Sprite); free(Pinceau_Sprite);
// On libŠre la table prcalcule des distances de teintes // On libŠre la table précalculée des distances de teintes
free(MC_Table_differences); free(MC_Table_differences);
// On libŠre les diffrents crans virtuels et brosse: // On libŠre les différents écrans virtuels et brosse:
free(Brosse); free(Brosse);
Nouveau_nombre_de_backups(0); Nouveau_nombre_de_backups(0);
free(Brouillon_Ecran); free(Brouillon_Ecran);
free(Principal_Ecran); free(Principal_Ecran);
// On libŠre galement les donnes de l'aide: // On libŠre également les données de l'aide:
for (Bidon=0;Bidon<NB_SECTIONS_AIDE;Bidon++) for (Bidon=0;Bidon<NB_SECTIONS_AIDE;Bidon++)
free(Table_d_aide[Bidon].Debut_de_la_liste); free(Table_d_aide[Bidon].Debut_de_la_liste);
Passer_en_mode_texte(Ancien_nb_lignes); Passer_en_mode_texte(Ancien_nb_lignes);
Clavier_de_depart(); Clavier_de_depart();
// On prend bien soin de passer dans le rpertoire initial: // On prend bien soin de passer dans le répertoire initial:
if (chdir(Repertoire_initial)!=-1) if (chdir(Repertoire_initial)!=-1)
{ {
/* A revoir ... /* A revoir ...
_dos_setdrive(Repertoire_initial[0]-64,&Bidon); _dos_setdrive(Repertoire_initial[0]-64,&Bidon);
*/ */
// On sauvegarde les donnes dans le .CFG et dans le .INI // On sauvegarde les données dans le .CFG et dans le .INI
if (Config.Auto_save) if (Config.Auto_save)
{ {
Retour=Sauver_CFG(); Retour=Sauver_CFG();
@ -609,7 +609,7 @@ void Fermeture_du_programme(void)
} }
// -------------------------- Procdure principale --------------------------- // -------------------------- Procédure principale ---------------------------
int main(int argc,char * argv[]) int main(int argc,char * argv[])
{ {
Initialisation_du_programme(argc,argv); Initialisation_du_programme(argc,argv);
@ -620,7 +620,7 @@ int main(int argc,char * argv[])
if (Un_fichier_a_ete_passe_en_parametre) if (Un_fichier_a_ete_passe_en_parametre)
{ {
Bouton_reload(); Bouton_Reload();
Une_resolution_a_ete_passee_en_parametre=0; Une_resolution_a_ete_passee_en_parametre=0;
} }

View File

@ -1,59 +1,51 @@
CC = gcc CC = gcc
COPT = -Wall -Os COPT = -Wall -Os -c
LOPT = -lSDL
gfx2 : main.o init.o graph.o video.o divers.o special.o boutons.o palette.o aide.o operatio.o loadsave.o readline.o moteur.o files.o dpmi.o op_c.o op_asm.o gfx2 : main.o init.o graph.o sdlscreen.o divers.o special.o boutons.o palette.o aide.o operatio.o loadsave.o readline.o moteur.o files.o op_c.o
wlink @make.inc $(CC) $(LOPT) main.o graph.o divers.o -o grafx2
main.o : const.h struct.h global.h graph.h divers.h init.h boutons.h moteur.h files.h loadsave.h main.c readini.h saveini.h main.o : graph.o const.h struct.h global.h graph.h divers.h init.h boutons.h moteur.h files.h loadsave.h main.c readini.h saveini.h
$(CC) $(COPT) main.c $(CC) $(COPT) main.c
init.o : const.h struct.h global.h modesvdo.h graph.h boutons.h palette.h aide.h operatio.h init.c readini.c saveini.c init.o : const.h struct.h global.h modesvdo.h graph.h boutons.h palette.h aide.h operatio.h init.c readini.c saveini.c
$(CC) $(COPT) init.c $(CC) $(COPT) init.c
graph.o : graph.c pages.c const.h struct.h global.h video.h divers.h graph.o : divers.o graph.c pages.c const.h struct.h global.h divers.h
$(CC) $(COPT) graph.c $(CC) $(COPT) graph.c
video.o : global.h const.h video.c
$(ASMC) $(ASMOPT) video.c
divers.o : global.h const.h divers.c divers.o : global.h const.h divers.c
$(ASMC) $(ASMOPT) divers.c $(CC) $(COPT) divers.c
special.o : const.h struct.h global.h graph.h moteur.h special.c special.o : const.h struct.h global.h graph.h moteur.h special.c
$(CC) $(COPT) special.c $(CC) $(COPT) special.c
boutons.o : boutons.c shade.c const.h struct.h global.h divers.h graph.h moteur.h readline.h files.h loadsave.h init.h readini.h saveini.h boutons.o : boutons.c shade.c const.h struct.h global.h divers.h graph.h moteur.h readline.h files.h loadsave.h init.h readini.h saveini.h
$(CC) $(COPT) boutons $(CC) $(COPT) boutons.c
palette.o : const.h struct.h global.h divers.h graph.h moteur.h readline.h palette.c palette.o : const.h struct.h global.h divers.h graph.h moteur.h readline.h palette.c
$(CC) $(COPT) palette $(CC) $(COPT) palette.c
aide.o : const.h struct.h global.h divers.h graph.h moteur.h aide.c aide.o : const.h struct.h global.h divers.h graph.h moteur.h aide.c
$(CC) $(COPT) aide $(CC) $(COPT) aide.c
moteur.o : const.h struct.h global.h graph.h divers.h moteur.c moteur.o : const.h struct.h global.h graph.h divers.h moteur.c
$(CC) $(COPT) moteur $(CC) $(COPT) moteur.c
operatio.o : const.h struct.h global.h divers.h moteur.h graph.h operatio.h operatio.c operatio.o : const.h struct.h global.h divers.h moteur.h graph.h operatio.h operatio.c
$(CC) $(COPT) operatio $(CC) $(COPT) operatio.c
readline.o : const.h struct.h global.h divers.h graph.h readline.c readline.o : const.h struct.h global.h divers.h graph.h readline.c
$(CC) $(COPT) readline $(CC) $(COPT) readline.c
files.o : const.h struct.h global.h graph.h divers.h files.c files.o : const.h struct.h global.h graph.h divers.h files.c
$(CC) $(COPT) files $(CC) $(COPT) files.c
loadsave.o : const.h struct.h global.h divers.h graph.h loadsave.c pages.h op_c.h op_asm.h loadsave.o : const.h struct.h global.h divers.h graph.h loadsave.c pages.h op_c.h op_asm.h
$(CC) $(COPT) loadsave $(CC) $(COPT) loadsave.c
op_c.o : struct.h op_c.c op_c.h op_asm.h op_c.o : struct.h op_c.c op_c.h op_asm.h
$(CC) $(COPT) op_c $(CC) $(COPT) op_c.c
dpmi.o : dpmi.asm dpmi.h sdlscreen.o : sdlscreen.c sdlscreen.h
$(ASMC) $(ASMOPT) dpmi $(CC) $(COPT) sdlscreen.c
vesalfb.o : vesalfb.asm vesalfb.h dpmi.h
$(ASMC) $(ASMOPT) vesalfb
op_asm.o : struct.h op_asm.asm op_c.h op_asm.h
$(ASMC) $(ASMOPT) op_asm

2
op_c.c
View File

@ -1,6 +1,6 @@
#include <stdlib.h> #include <stdlib.h>
#include <string.h>
#include <stdio.h> #include <stdio.h>
#include <fcntl.h> #include <fcntl.h>
#include <sys/stat.h> #include <sys/stat.h>

278
pages.c
View File

@ -11,7 +11,7 @@
#include "pages.h" #include "pages.h"
#include "graph.h" #include "graph.h"
// On dclare mchamment le prototype de Erreur pour viter de faire un // On déclare méchamment le prototype de Erreur pour éviter de faire un
// fichier "main.h": // fichier "main.h":
void Erreur(int Code); void Erreur(int Code);
@ -53,7 +53,7 @@ void Initialiser_S_Page(S_Page * Page)
void Download_infos_page_principal(S_Page * Page) void Download_infos_page_principal(S_Page * Page)
{ {
int Indice_facteur; //int Indice_facteur;
int Dimensions_modifiees; int Dimensions_modifiees;
if (Page!=NULL) if (Page!=NULL)
@ -73,7 +73,7 @@ void Download_infos_page_principal(S_Page * Page)
Principal_Decalage_X=Page->Decalage_X; Principal_Decalage_X=Page->Decalage_X;
Principal_Decalage_Y=Page->Decalage_Y; Principal_Decalage_Y=Page->Decalage_Y;
// On corrige les dcalages en fonction de la dimension de l'cran // On corrige les décalages en fonction de la dimension de l'cran
if ( (Principal_Decalage_X>0) && if ( (Principal_Decalage_X>0) &&
(Principal_Decalage_X+Largeur_ecran>Principal_Largeur_image) ) (Principal_Decalage_X+Largeur_ecran>Principal_Largeur_image) )
Principal_Decalage_X=Max(0,Principal_Largeur_image-Largeur_ecran); Principal_Decalage_X=Max(0,Principal_Largeur_image-Largeur_ecran);
@ -212,38 +212,38 @@ void Download_infos_backup(S_Liste_de_pages * Liste)
int Allouer_une_page(S_Page * Page,int Largeur,int Hauteur) int Allouer_une_page(S_Page * Page,int Largeur,int Hauteur)
{ {
// Important: la S_Page ne doit pas dj… dsigner une page alloue auquel // Important: la S_Page ne doit pas déjà désigner une page allouée auquel
// cas celle-ci serait perdue. // cas celle-ci serait perdue.
/* Debug : if (Page->Image!=NULL) exit(666); */ /* Debug : if (Page->Image!=NULL) exit(666); */
// On alloue la mmoire pour le bitmap // On alloue la mémoire pour le bitmap
Page->Image=(byte *)malloc(Largeur*Hauteur); Page->Image=(byte *)malloc(Largeur*Hauteur);
// On vrifie que l'allocation se soit bien passe // On vérifie que l'allocation se soit bien passée
if (Page->Image==NULL) if (Page->Image==NULL)
return 0; // Echec return 0; // Echec
else else
{ {
Page->Largeur=Largeur; Page->Largeur=Largeur;
Page->Hauteur=Hauteur; Page->Hauteur=Hauteur;
// Important: La mise jour des autres infos est du ressort de // Important: La mise à jour des autres infos est du ressort de
// l'appelant. // l'appelant.
return 1; // SuccŠs return 1; // Succès
} }
} }
void Liberer_une_page(S_Page * Page) void Liberer_une_page(S_Page * Page)
{ {
// On peut appeler cette fonction sur une page non alloue. // On peut appeler cette fonction sur une page non allouée.
if (Page->Image!=NULL) if (Page->Image!=NULL)
free(Page->Image); free(Page->Image);
Page->Image=NULL; Page->Image=NULL;
Page->Largeur=0; Page->Largeur=0;
Page->Hauteur=0; Page->Hauteur=0;
// On ne se proccupe pas de ce que deviens le reste des infos de l'image. // On ne se préoccupe pas de ce que deviens le reste des infos de l'image.
} }
void Copier_S_page(S_Page * Destination,S_Page * Source) void Copier_S_page(S_Page * Destination,S_Page * Source)
@ -255,9 +255,9 @@ int Taille_d_une_page(S_Page * Page)
{ {
return sizeof(S_Page)+(Page->Largeur*Page->Hauteur)+8; return sizeof(S_Page)+(Page->Largeur*Page->Hauteur)+8;
// 8 = 4 + 4 // 8 = 4 + 4
// (Toute zone alloue en mmoire est prcde d'un mot double indiquant sa // (Toute zone allouée en mémoire est précédée d'un mot double indiquant sa
// taille, or la taille d'un mot double est de 4 octets, et on utilise deux // taille, or la taille d'un mot double est de 4 octets, et on utilise deux
// allocations de mmoires: une pour la S_Page et une pour l'image) // allocations de mémoires: une pour la S_Page et une pour l'image)
} }
@ -277,16 +277,16 @@ void Initialiser_S_Liste_de_pages(S_Liste_de_pages * Liste)
int Allouer_une_liste_de_pages(S_Liste_de_pages * Liste,int Taille) int Allouer_une_liste_de_pages(S_Liste_de_pages * Liste,int Taille)
{ {
// Important: la S_Liste_de_pages ne doit pas dj… dsigner une liste de // Important: la S_Liste_de_pages ne doit pas déjà désigner une liste de
// pages alloue auquel cas celle-ci serait perdue. // pages allouée auquel cas celle-ci serait perdue.
int Indice; int Indice;
/* Debug : if (Liste->Pages!=NULL) exit(666); */ /* Debug : if (Liste->Pages!=NULL) exit(666); */
// On alloue la mmoire pour la liste // On alloue la mémoire pour la liste
Liste->Pages=(S_Page *)malloc(Taille*sizeof(S_Page)); Liste->Pages=(S_Page *)malloc(Taille*sizeof(S_Page));
// On vrifie que l'allocation se soit bien passe // On vérifie que l'allocation se soit bien passée
if (Liste->Pages==NULL) if (Liste->Pages==NULL)
return 0; // Echec return 0; // Echec
else else
@ -297,16 +297,16 @@ int Allouer_une_liste_de_pages(S_Liste_de_pages * Liste,int Taille)
Liste->Taille_liste=Taille; Liste->Taille_liste=Taille;
Liste->Nb_pages_allouees=0; Liste->Nb_pages_allouees=0;
return 1; // SuccŠs return 1; // Succès
} }
} }
void Liberer_une_liste_de_pages(S_Liste_de_pages * Liste) void Liberer_une_liste_de_pages(S_Liste_de_pages * Liste)
{ {
// On peut appeler cette fonction sur une liste de pages non alloue. // On peut appeler cette fonction sur une liste de pages non allouée.
// Important: cette fonction ne libŠre pas les pages de la liste. Il faut // Important: cette fonction ne libère pas les pages de la liste. Il faut
// donc le faire pralablement si ncessaire. // donc le faire préalablement si nécessaire.
if (Liste->Pages!=NULL) if (Liste->Pages!=NULL)
free(Liste->Pages); free(Liste->Pages);
@ -325,7 +325,7 @@ int Taille_d_une_liste_de_pages(S_Liste_de_pages * Liste)
return Resultat+sizeof(S_Liste_de_pages)+4; return Resultat+sizeof(S_Liste_de_pages)+4;
// C.F. la remarque propos de Taille_d_une_page pour la valeur 4. // C.F. la remarque à propos de Taille_d_une_page pour la valeur 4.
} }
void Reculer_dans_une_liste_de_pages(S_Liste_de_pages * Liste) void Reculer_dans_une_liste_de_pages(S_Liste_de_pages * Liste)
@ -336,14 +336,14 @@ void Reculer_dans_une_liste_de_pages(S_Liste_de_pages * Liste)
// º0º1³2³3³4³5³6³7³8³9³Aº | // º0º1³2³3³4³5³6³7³8³9³Aº |
// ÈÍÊÍÏÍÏÍÏÍÏÍÏÍÏÍÏÍÏÍÏͼ | 0=Page courante // ÈÍÊÍÏÍÏÍÏÍÏÍÏÍÏÍÏÍÏÍÏͼ | 0=Page courante
// ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ |_ A=Page la plus ancienne // ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ |_ A=Page la plus ancienne
// v v v v v v v v v v v | 1=DerniŠre page (1er backup) // v v v v v v v v v v v | 1=Dernière page (1er backup)
// ÉÍËÍÑÍÑÍÑÍÑÍÑÍÑÍÑÍÑÍÑÍ» | // ÉÍËÍÑÍÑÍÑÍÑÍÑÍÑÍÑÍÑÍÑÍ» |
// º1º2³3³4³5³6³7³8³9³A³0º | // º1º2³3³4³5³6³7³8³9³A³0º |
// ÈÍÊÍÏÍÏÍÏÍÏÍÏÍÏÍÏÍÏÍÏͼ | // ÈÍÊÍÏÍÏÍÏÍÏÍÏÍÏÍÏÍÏÍÏͼ |
// Pour simuler un vritable Undo, l'appelant doit mettre la structure // Pour simuler un véritable Undo, l'appelant doit mettre la structure
// de page courante … jour avant l'appel, puis en rextraire les infos en // de page courante à jour avant l'appel, puis en réextraire les infos en
// sortie, ainsi que celles relatives … la plus rcente page d'undo (1Šre // sortie, ainsi que celles relatives à la plus récente page d'undo (1ère
// page de la liste). // page de la liste).
int Indice; int Indice;
@ -351,22 +351,22 @@ void Reculer_dans_une_liste_de_pages(S_Liste_de_pages * Liste)
if (Liste->Nb_pages_allouees>1) if (Liste->Nb_pages_allouees>1)
{ {
// On cre la page tempo // On crée la page tempo
Page_tempo=(S_Page *)malloc(sizeof(S_Page)); Page_tempo=(S_Page *)malloc(sizeof(S_Page));
Initialiser_S_Page(Page_tempo); Initialiser_S_Page(Page_tempo);
// On copie la 1Šre page (Page 0) dans la page temporaire // On copie la 1ère page (Page 0) dans la page temporaire
Copier_S_page(Page_tempo,Liste->Pages); Copier_S_page(Page_tempo,Liste->Pages);
// On copie toutes les pages 1-A leur gauche // On copie toutes les pages 1-A à leur gauche
for (Indice=1;Indice<Liste->Nb_pages_allouees;Indice++) for (Indice=1;Indice<Liste->Nb_pages_allouees;Indice++)
Copier_S_page(Liste->Pages+Indice-1,Liste->Pages+Indice); Copier_S_page(Liste->Pages+Indice-1,Liste->Pages+Indice);
// On copie la page 0 (dont la sauvegarde a t effectue dans la page // On copie la page 0 (dont la sauvegarde a été effectuée dans la page
// temporaire) en derniŠre position // temporaire) en dernière position
Copier_S_page(Liste->Pages+Liste->Nb_pages_allouees-1,Page_tempo); Copier_S_page(Liste->Pages+Liste->Nb_pages_allouees-1,Page_tempo);
// On dtruit la page tempo // On détruit la page tempo
free(Page_tempo); free(Page_tempo);
} }
} }
@ -379,14 +379,14 @@ void Avancer_dans_une_liste_de_pages(S_Liste_de_pages * Liste)
// º0º1³2³3³4³5³6³7³8³9³Aº | // º0º1³2³3³4³5³6³7³8³9³Aº |
// ÈÍÊÍÏÍÏÍÏÍÏÍÏÍÏÍÏÍÏÍÏͼ | 0=Page courante // ÈÍÊÍÏÍÏÍÏÍÏÍÏÍÏÍÏÍÏÍÏͼ | 0=Page courante
// ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ |_ A=Page la plus ancienne // ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ |_ A=Page la plus ancienne
// v v v v v v v v v v v | 1=DerniŠre page (1er backup) // v v v v v v v v v v v | 1=Dernière page (1er backup)
// ÉÍËÍÑÍÑÍÑÍÑÍÑÍÑÍÑÍÑÍÑÍ» | // ÉÍËÍÑÍÑÍÑÍÑÍÑÍÑÍÑÍÑÍÑÍ» |
// ºAº0³1³2³3³4³5³6³7³8³9º | // ºAº0³1³2³3³4³5³6³7³8³9º |
// ÈÍÊÍÏÍÏÍÏÍÏÍÏÍÏÍÏÍÏÍÏͼ | // ÈÍÊÍÏÍÏÍÏÍÏÍÏÍÏÍÏÍÏÍÏͼ |
// Pour simuler un vritable Redo, l'appelant doit mettre la structure // Pour simuler un véritable Redo, l'appelant doit mettre la structure
// de page courante … jour avant l'appel, puis en rextraire les infos en // de page courante à jour avant l'appel, puis en réextraire les infos en
// sortie, ainsi que celles relatives … la plus rcente page d'undo (1Šre // sortie, ainsi que celles relatives à la plus récente page d'undo (1ère
// page de la liste). // page de la liste).
int Indice; int Indice;
@ -394,22 +394,22 @@ void Avancer_dans_une_liste_de_pages(S_Liste_de_pages * Liste)
if (Liste->Nb_pages_allouees>1) if (Liste->Nb_pages_allouees>1)
{ {
// On cre la page tempo // On crée la page tempo
Page_tempo=(S_Page *)malloc(sizeof(S_Page)); Page_tempo=(S_Page *)malloc(sizeof(S_Page));
Initialiser_S_Page(Page_tempo); Initialiser_S_Page(Page_tempo);
// On copie la derniŠre page dans la page temporaire // On copie la dernière page dans la page temporaire
Copier_S_page(Page_tempo,Liste->Pages+Liste->Nb_pages_allouees-1); Copier_S_page(Page_tempo,Liste->Pages+Liste->Nb_pages_allouees-1);
// On copie toutes les pages 0-9 leur droite // On copie toutes les pages 0-9 à leur droite
for (Indice=Liste->Nb_pages_allouees-1;Indice>0;Indice--) for (Indice=Liste->Nb_pages_allouees-1;Indice>0;Indice--)
Copier_S_page(Liste->Pages+Indice,Liste->Pages+Indice-1); Copier_S_page(Liste->Pages+Indice,Liste->Pages+Indice-1);
// On copie la page plus ancienne page (la "A", dont la sauvegarde a t // On copie la page plus ancienne page (la "A", dont la sauvegarde a été
// effectue dans la page temporaire) en 1Šre position // effectuée dans la page temporaire) en 1ère position
Copier_S_page(Liste->Pages,Page_tempo); Copier_S_page(Liste->Pages,Page_tempo);
// On dtruit la page tempo // On détruit la page tempo
free(Page_tempo); free(Page_tempo);
} }
} }
@ -431,14 +431,14 @@ int Nouvelle_page_possible(S_Page * Nouvelle_page,S_Liste_de_pages * Liste_coura
Taille_nouvelle_page =Taille_d_une_page(Nouvelle_page); Taille_nouvelle_page =Taille_d_une_page(Nouvelle_page);
// Il faut pouvoir loger la nouvelle page et son backup dans la page // Il faut pouvoir loger la nouvelle page et son backup dans la page
// courante, en conservant au pire la 1Šre page de brouillon. // courante, en conservant au pire la 1ère page de brouillon.
if ((Taille_immediatement_disponible+Taille_liste_courante+ if ((Taille_immediatement_disponible+Taille_liste_courante+
Taille_liste_brouillon-Taille_page_brouillon)<(2*Taille_nouvelle_page)) Taille_liste_brouillon-Taille_page_brouillon)<(2*Taille_nouvelle_page))
return 0; return 0;
// Il faut pouvoir loger le brouillon et son backup dans la page de // Il faut pouvoir loger le brouillon et son backup dans la page de
// brouillon, en conservant au pire un exemplaire de la nouvelle page dans // brouillon, en conservant au pire un exemplaire de la nouvelle page dans
// la page courante. (pour permettre l'utilisateur de travailler sur son // la page courante. (pour permettre à l'utilisateur de travailler sur son
// brouillon) // brouillon)
if ((Taille_immediatement_disponible+Taille_liste_courante+ if ((Taille_immediatement_disponible+Taille_liste_courante+
Taille_liste_brouillon-Taille_nouvelle_page)<(2*Taille_page_brouillon)) Taille_liste_brouillon-Taille_nouvelle_page)<(2*Taille_page_brouillon))
@ -462,24 +462,24 @@ void Detruire_derniere_page_allouee_de_la_liste(S_Liste_de_pages * Liste)
void Creer_nouvelle_page(S_Page * Nouvelle_page,S_Liste_de_pages * Liste_courante,S_Liste_de_pages * Liste_secondaire) void Creer_nouvelle_page(S_Page * Nouvelle_page,S_Liste_de_pages * Liste_courante,S_Liste_de_pages * Liste_secondaire)
{ {
// Cette fonction cre une nouvelle page dont les attributs correspondent … // Cette fonction crée une nouvelle page dont les attributs correspondent à
// ceux de Nouvelle_page (Largeur,Hauteur,...) (le champ Image est invalide // ceux de Nouvelle_page (Largeur,Hauteur,...) (le champ Image est invalide
// … l'appel, c'est la fonction qui le met … jour), et l'enfile dans // à l'appel, c'est la fonction qui le met à jour), et l'enfile dans
// Liste_courante. // Liste_courante.
// Il est impratif que la cration de cette page soit possible, // Il est impératif que la création de cette page soit possible,
// ventuellement au dtriment des backups de la page de brouillon // éventuellement au détriment des backups de la page de brouillon
// (Liste_secondaire). Afin de s'en assurer, il faut vrifier cette // (Liste_secondaire). Afin de s'en assurer, il faut vérifier cette
// possibilit l'aide de // possibilité à l'aide de
// Nouvelle_page_possible(Nouvelle_page,Liste_courante,Liste_secondaire) avant // Nouvelle_page_possible(Nouvelle_page,Liste_courante,Liste_secondaire) avant
// l'appel cette fonction. // l'appel à cette fonction.
// De plus, il faut qu'il y ait au moins une page dans chacune des listes. // De plus, il faut qu'il y ait au moins une page dans chacune des listes.
int Il_faut_liberer; int Il_faut_liberer;
S_Liste_de_pages * Liste_a_raboter; S_Liste_de_pages * Liste_a_raboter=NULL;
S_Page * Page_a_supprimer; S_Page * Page_a_supprimer;
int Indice; int Indice;
// On regarde s'il faut librer des pages: // On regarde s'il faut libérer des pages:
Il_faut_liberer= Il_faut_liberer=
// C'est le cas si la Liste_courante est pleine // C'est le cas si la Liste_courante est pleine
( (Liste_courante->Taille_liste==Liste_courante->Nb_pages_allouees) ( (Liste_courante->Taille_liste==Liste_courante->Nb_pages_allouees)
@ -490,29 +490,29 @@ void Creer_nouvelle_page(S_Page * Nouvelle_page,S_Liste_de_pages * Liste_courant
if (!Il_faut_liberer) if (!Il_faut_liberer)
{ {
// On a assez de place pour allouer une page, et de plus la Liste_courante // On a assez de place pour allouer une page, et de plus la Liste_courante
// n'est pas pleine. On n'a donc aucune page supprimer. On peut en // n'est pas pleine. On n'a donc aucune page à supprimer. On peut en
// allouer une directement. // allouer une directement.
Nouvelle_page->Image=(byte *)malloc(Nouvelle_page->Hauteur*Nouvelle_page->Largeur); Nouvelle_page->Image=(byte *)malloc(Nouvelle_page->Hauteur*Nouvelle_page->Largeur);
} }
else else
{ {
// On manque de mmoire ou la Liste_courante est pleine. Dans tous les // On manque de mémoire ou la Liste_courante est pleine. Dans tous les
// cas, il faut librer une page... qui peut-ˆtre pourra re-servir. // cas, il faut libérer une page... qui peut-ˆtre pourra re-servir.
// Tant qu'il faut librer // Tant qu'il faut libérer
while (Il_faut_liberer) while (Il_faut_liberer)
{ {
// On cherche sur quelle liste on va virer une page // On cherche sur quelle liste on va virer une page
// S'il reste des pages … librer dans la Liste_courante // S'il reste des pages à libérer dans la Liste_courante
if (Liste_courante->Nb_pages_allouees>1) if (Liste_courante->Nb_pages_allouees>1)
// Alors on va dtruire la derniŠre page alloue de la Liste_courante // Alors on va détruire la dernière page allouée de la Liste_courante
Liste_a_raboter=Liste_courante; Liste_a_raboter=Liste_courante;
else else
{ {
if (Liste_secondaire->Nb_pages_allouees>1) if (Liste_secondaire->Nb_pages_allouees>1)
{ {
// Sinon on va dtruire la derniŠre page alloue de la // Sinon on va détruire la dernière page allouée de la
// Liste_secondaire // Liste_secondaire
Liste_a_raboter=Liste_secondaire; Liste_a_raboter=Liste_secondaire;
} }
@ -522,7 +522,7 @@ void Creer_nouvelle_page(S_Page * Nouvelle_page,S_Liste_de_pages * Liste_courant
} }
} }
// Puis on dtermine la page que l'on va supprimer (c'est la derniŠre de // Puis on détermine la page que l'on va supprimer (c'est la dernière de
// la liste) // la liste)
Page_a_supprimer=Liste_a_raboter->Pages+(Liste_a_raboter->Nb_pages_allouees)-1; Page_a_supprimer=Liste_a_raboter->Pages+(Liste_a_raboter->Nb_pages_allouees)-1;
@ -532,14 +532,14 @@ void Creer_nouvelle_page(S_Page * Nouvelle_page,S_Liste_de_pages * Liste_courant
(Nouvelle_page->Hauteur*Nouvelle_page->Largeur)) (Nouvelle_page->Hauteur*Nouvelle_page->Largeur))
{ {
// Alors // Alors
// On rcupŠre le bitmap de la page … supprimer (vite de faire des // On récupère le bitmap de la page à supprimer (vite de faire des
// allocations/dsallocations fastidieuses et inutiles) // allocations/désallocations fastidieuses et inutiles)
Nouvelle_page->Image=Page_a_supprimer->Image; Nouvelle_page->Image=Page_a_supprimer->Image;
// On fait semblant que la derniŠre page alloue ne l'est pas // On fait semblant que la dernière page allouée ne l'est pas
Liste_a_raboter->Nb_pages_allouees--; Liste_a_raboter->Nb_pages_allouees--;
// On n'a plus besoin de librer de la mmoire puisqu'on a refil // On n'a plus besoin de libérer de la mémoire puisqu'on a refilé à
// Nouvelle_page un bitmap valide // Nouvelle_page un bitmap valide
Il_faut_liberer=0; Il_faut_liberer=0;
} }
@ -547,10 +547,10 @@ void Creer_nouvelle_page(S_Page * Nouvelle_page,S_Liste_de_pages * Liste_courant
{ {
// Sinon // Sinon
// Dtruire la derniŠre page alloue dans la Liste_…_raboter // Détruire la dernière page allouée dans la Liste_à_raboter
Detruire_derniere_page_allouee_de_la_liste(Liste_a_raboter); Detruire_derniere_page_allouee_de_la_liste(Liste_a_raboter);
// On regarde s'il faut continuer … librer de la place // On regarde s'il faut continuer à libérer de la place
Il_faut_liberer=(Memoire_libre()-QUANTITE_MINIMALE_DE_MEMOIRE_A_CONSERVER) Il_faut_liberer=(Memoire_libre()-QUANTITE_MINIMALE_DE_MEMOIRE_A_CONSERVER)
<(Nouvelle_page->Hauteur*Nouvelle_page->Largeur); <(Nouvelle_page->Hauteur*Nouvelle_page->Largeur);
@ -562,15 +562,15 @@ void Creer_nouvelle_page(S_Page * Nouvelle_page,S_Liste_de_pages * Liste_courant
} }
} }
// D'aprŠs l'hypothŠse de dpart, la boucle ci-dessus doit s'arrˆter car // D'après l'hypothèse de départ, la boucle ci-dessus doit s'arrˆter car
// on a assez de mmoire pour allouer la nouvelle page. // on a assez de mémoire pour allouer la nouvelle page.
// Dsormais Nouvelle_page contient un pointeur sur une zone bitmap valide. // Désormais Nouvelle_page contient un pointeur sur une zone bitmap valide.
// Dcaler la Liste_courante d'un cran vers le pass. // Décaler la Liste_courante d'un cran vers le pass.
for (Indice=Liste_courante->Taille_liste-1;Indice>0;Indice--) for (Indice=Liste_courante->Taille_liste-1;Indice>0;Indice--)
Copier_S_page(Liste_courante->Pages+Indice,Liste_courante->Pages+Indice-1); Copier_S_page(Liste_courante->Pages+Indice,Liste_courante->Pages+Indice-1);
// Recopier la Nouvelle_page en 1Šre position de la Liste_courante // Recopier la Nouvelle_page en 1ère position de la Liste_courante
Copier_S_page(Liste_courante->Pages,Nouvelle_page); Copier_S_page(Liste_courante->Pages,Nouvelle_page);
Liste_courante->Nb_pages_allouees++; Liste_courante->Nb_pages_allouees++;
} }
@ -580,16 +580,16 @@ void Changer_nombre_de_pages_d_une_liste(S_Liste_de_pages * Liste,int Nb)
int Indice; int Indice;
S_Page * Nouvelles_pages; S_Page * Nouvelles_pages;
// Si la liste a dj… la taille demande // Si la liste a déjà la taille demandée
if (Liste->Taille_liste==Nb) if (Liste->Taille_liste==Nb)
// Alors il n'y a rien faire // Alors il n'y a rien à faire
return; return;
// Si la liste contient plus de pages que souhait // Si la liste contient plus de pages que souhaité
if (Liste->Taille_liste>Nb) if (Liste->Taille_liste>Nb)
// Alors pour chaque page en excs // Alors pour chaque page en excés
for (Indice=Nb;Indice<Liste->Taille_liste;Indice++) for (Indice=Nb;Indice<Liste->Taille_liste;Indice++)
// On libŠre la page // On libère la page
Liberer_une_page(Liste->Pages+Indice); Liberer_une_page(Liste->Pages+Indice);
// On fait une nouvelle liste de pages: // On fait une nouvelle liste de pages:
@ -597,14 +597,14 @@ void Changer_nombre_de_pages_d_une_liste(S_Liste_de_pages * Liste,int Nb)
for (Indice=0;Indice<Nb;Indice++) for (Indice=0;Indice<Nb;Indice++)
Initialiser_S_Page(Nouvelles_pages+Indice); Initialiser_S_Page(Nouvelles_pages+Indice);
// On recopie les pages conserver de l'ancienne liste // On recopie les pages à conserver de l'ancienne liste
for (Indice=0;Indice<Min(Nb,Liste->Taille_liste);Indice++) for (Indice=0;Indice<Min(Nb,Liste->Taille_liste);Indice++)
Copier_S_page(Nouvelles_pages+Indice,Liste->Pages+Indice); Copier_S_page(Nouvelles_pages+Indice,Liste->Pages+Indice);
// On libŠre l'ancienne liste // On libère l'ancienne liste
free(Liste->Pages); free(Liste->Pages);
// On met jour les champs de la nouvelle liste // On met à jour les champs de la nouvelle liste
Liste->Pages=Nouvelles_pages; Liste->Pages=Nouvelles_pages;
Liste->Taille_liste=Nb; Liste->Taille_liste=Nb;
if (Liste->Nb_pages_allouees>Nb) if (Liste->Nb_pages_allouees>Nb)
@ -613,15 +613,15 @@ void Changer_nombre_de_pages_d_une_liste(S_Liste_de_pages * Liste,int Nb)
void Detruire_la_page_courante_d_une_liste(S_Liste_de_pages * Liste) void Detruire_la_page_courante_d_une_liste(S_Liste_de_pages * Liste)
{ {
// On ne peut pas dtruire la page courante de la liste si aprŠs // On ne peut pas détruire la page courante de la liste si après
// destruction il ne reste pas encore au moins une page. // destruction il ne reste pas encore au moins une page.
if (Liste->Nb_pages_allouees>1) if (Liste->Nb_pages_allouees>1)
{ {
// On fait faire un undo la liste, comme ‡a, la nouvelle page courante // On fait faire un undo à la liste, comme ‡a, la nouvelle page courante
// est la page prcdente // est la page précédente
Reculer_dans_une_liste_de_pages(Principal_Backups); Reculer_dans_une_liste_de_pages(Principal_Backups);
// Puis on dtruit la derniŠre page, qui est l'ancienne page courante // Puis on détruit la dernière page, qui est l'ancienne page courante
Detruire_derniere_page_allouee_de_la_liste(Liste); Detruire_derniere_page_allouee_de_la_liste(Liste);
} }
} }
@ -635,7 +635,7 @@ int Initialiser_les_listes_de_backups_en_debut_de_programme(int Taille,int Large
{ {
// Taille correspond au nombre de pages que l'on souhaite dans chaque liste // Taille correspond au nombre de pages que l'on souhaite dans chaque liste
// (1 pour la page courante, puis 1 pour chaque backup, soit 2 au minimum). // (1 pour la page courante, puis 1 pour chaque backup, soit 2 au minimum).
// Largeur et Hauteur correspondent … la dimension des images de dpart. // Largeur et Hauteur correspondent à la dimension des images de départ.
S_Page * Page; S_Page * Page;
int Retour=0; int Retour=0;
@ -643,26 +643,26 @@ int Initialiser_les_listes_de_backups_en_debut_de_programme(int Taille,int Large
if (Allouer_une_liste_de_pages(Principal_Backups,Taille) && if (Allouer_une_liste_de_pages(Principal_Backups,Taille) &&
Allouer_une_liste_de_pages(Brouillon_Backups,Taille)) Allouer_une_liste_de_pages(Brouillon_Backups,Taille))
{ {
// On a russi … allouer deux listes de pages dont la taille correspond … // On a réussi à allouer deux listes de pages dont la taille correspond à
// celle demande par l'utilisateur. // celle demandée par l'utilisateur.
// On cre un descripteur de page correspondant … la page principale // On crée un descripteur de page correspondant à la page principale
Page=(S_Page *)malloc(sizeof(S_Page)); Page=(S_Page *)malloc(sizeof(S_Page));
Initialiser_S_Page(Page); Initialiser_S_Page(Page);
Upload_infos_page_principal(Page); Upload_infos_page_principal(Page);
// On y met les infos sur la dimension de dmarrage // On y met les infos sur la dimension de démarrage
Page->Largeur=Largeur; Page->Largeur=Largeur;
Page->Hauteur=Hauteur; Page->Hauteur=Hauteur;
// On regarde si on peut ajouter cette page // On regarde si on peut ajouter cette page
if (Nouvelle_page_possible(Page,Principal_Backups,Brouillon_Backups)) if (Nouvelle_page_possible(Page,Principal_Backups,Brouillon_Backups))
{ {
// On peut, donc on va la crer // On peut, donc on va la créer
Creer_nouvelle_page(Page,Principal_Backups,Brouillon_Backups); Creer_nouvelle_page(Page,Principal_Backups,Brouillon_Backups);
Download_infos_page_principal(Page); Download_infos_page_principal(Page);
Download_infos_backup(Principal_Backups); Download_infos_backup(Principal_Backups);
// Maintenant, on regarde si on a le droit de crer la mˆme page dans // Maintenant, on regarde si on a le droit de créer la mˆme page dans
// la page de brouillon. // la page de brouillon.
if (Nouvelle_page_possible(Page,Brouillon_Backups,Principal_Backups)) if (Nouvelle_page_possible(Page,Brouillon_Backups,Principal_Backups))
{ {
@ -678,23 +678,23 @@ int Initialiser_les_listes_de_backups_en_debut_de_programme(int Taille,int Large
} }
else else
{ {
// Il n'est pas possible de dmarrer le programme avec la page // Il n'est pas possible de démarrer le programme avec la page
// principale et la page de brouillon aux dimensions demande par // principale et la page de brouillon aux dimensions demandée par
// l'utilisateur. ==> On l'envoie ballader // l'utilisateur. ==> On l'envoie ballader
Retour=0; Retour=0;
} }
} }
else else
{ {
// On ne peut pas dmarrer le programme avec ne serait-ce qu'une page // On ne peut pas démarrer le programme avec ne serait-ce qu'une page
// de la dimension souhaite, donc on laisse tout tomber et on le // de la dimension souhaitée, donc on laisse tout tomber et on le
// renvoie chier. // renvoie chier.
Retour=0; Retour=0;
} }
} }
else else
{ {
// On n'a mˆme pas russi … crer les listes. Donc c'est mˆme pas la // On n'a mˆme pas réussi à créer les listes. Donc c'est mˆme pas la
// peine de continuer : l'utilisateur ne pourra jamais rien faire, autant // peine de continuer : l'utilisateur ne pourra jamais rien faire, autant
// avorter le chargement du programme. // avorter le chargement du programme.
Retour=0; Retour=0;
@ -705,7 +705,7 @@ int Initialiser_les_listes_de_backups_en_debut_de_programme(int Taille,int Large
void Detruire_les_listes_de_backups_en_fin_de_programme(void) void Detruire_les_listes_de_backups_en_fin_de_programme(void)
{ {
// On commence par supprimer les pages une une dans chacune des listes // On commence par supprimer les pages une à une dans chacune des listes
// Liste de la page principale // Liste de la page principale
while (Principal_Backups->Nb_pages_allouees>0) while (Principal_Backups->Nb_pages_allouees>0)
Detruire_derniere_page_allouee_de_la_liste(Principal_Backups); Detruire_derniere_page_allouee_de_la_liste(Principal_Backups);
@ -713,7 +713,7 @@ void Detruire_les_listes_de_backups_en_fin_de_programme(void)
while (Brouillon_Backups->Nb_pages_allouees>0) while (Brouillon_Backups->Nb_pages_allouees>0)
Detruire_derniere_page_allouee_de_la_liste(Brouillon_Backups); Detruire_derniere_page_allouee_de_la_liste(Brouillon_Backups);
// Puis on peut dtruire les structures de liste elles-mˆmes // Puis on peut détruire les structures de liste elles-mˆmes
Liberer_une_liste_de_pages(Principal_Backups); Liberer_une_liste_de_pages(Principal_Backups);
Liberer_une_liste_de_pages(Brouillon_Backups); Liberer_une_liste_de_pages(Brouillon_Backups);
free(Principal_Backups); free(Principal_Backups);
@ -725,7 +725,7 @@ void Nouveau_nombre_de_backups(int Nouveau)
Changer_nombre_de_pages_d_une_liste(Principal_Backups,Nouveau+1); Changer_nombre_de_pages_d_une_liste(Principal_Backups,Nouveau+1);
Changer_nombre_de_pages_d_une_liste(Brouillon_Backups,Nouveau+1); Changer_nombre_de_pages_d_une_liste(Brouillon_Backups,Nouveau+1);
// Le +1 vient du fait que dans chaque liste, en 1Šre position on retrouve // Le +1 vient du fait que dans chaque liste, en 1ère position on retrouve
// les infos de la page courante sur le brouillon et la page principale. // les infos de la page courante sur le brouillon et la page principale.
// (Nouveau = Nombre de backups, sans compter les pages courantes) // (Nouveau = Nombre de backups, sans compter les pages courantes)
} }
@ -739,11 +739,11 @@ int Backup_avec_nouvelles_dimensions(int Upload,int Largeur,int Hauteur)
int Retour=0; int Retour=0;
if (Upload) if (Upload)
// On remet jour l'tat des infos de la page courante (pour pouvoir les // On remet à jour l'tat des infos de la page courante (pour pouvoir les
// retrouver plus tard) // retrouver plus tard)
Upload_infos_page_principal(Principal_Backups->Pages); Upload_infos_page_principal(Principal_Backups->Pages);
// On cre un descripteur pour la nouvelle page courante // On crée un descripteur pour la nouvelle page courante
Nouvelle_page=(S_Page *)malloc(sizeof(S_Page)); Nouvelle_page=(S_Page *)malloc(sizeof(S_Page));
Initialiser_S_Page(Nouvelle_page); Initialiser_S_Page(Nouvelle_page);
@ -760,7 +760,7 @@ int Backup_avec_nouvelles_dimensions(int Upload,int Largeur,int Hauteur)
Retour=1; Retour=1;
} }
// On dtruit le descripteur de la page courante // On détruit le descripteur de la page courante
free(Nouvelle_page); free(Nouvelle_page);
return Retour; return Retour;
@ -774,11 +774,11 @@ int Backuper_et_redimensionner_brouillon(int Largeur,int Hauteur)
S_Page * Nouvelle_page; S_Page * Nouvelle_page;
int Retour=0; int Retour=0;
// On remet jour l'tat des infos de la page de brouillon (pour pouvoir // On remet à jour l'tat des infos de la page de brouillon (pour pouvoir
// les retrouver plus tard) // les retrouver plus tard)
Upload_infos_page_brouillon(Brouillon_Backups->Pages); Upload_infos_page_brouillon(Brouillon_Backups->Pages);
// On cre un descripteur pour la nouvelle page de brouillon // On crée un descripteur pour la nouvelle page de brouillon
Nouvelle_page=(S_Page *)malloc(sizeof(S_Page)); Nouvelle_page=(S_Page *)malloc(sizeof(S_Page));
Initialiser_S_Page(Nouvelle_page); Initialiser_S_Page(Nouvelle_page);
@ -792,7 +792,7 @@ int Backuper_et_redimensionner_brouillon(int Largeur,int Hauteur)
Retour=1; Retour=1;
} }
// On dtruit le descripteur de la page courante // On détruit le descripteur de la page courante
free(Nouvelle_page); free(Nouvelle_page);
return Retour; return Retour;
@ -802,11 +802,11 @@ void Backup(void)
{ {
S_Page * Nouvelle_page; S_Page * Nouvelle_page;
// On remet jour l'tat des infos de la page courante (pour pouvoir les // On remet à jour l'tat des infos de la page courante (pour pouvoir les
// retrouver plus tard) // retrouver plus tard)
Upload_infos_page_principal(Principal_Backups->Pages); Upload_infos_page_principal(Principal_Backups->Pages);
// On cre un descripteur pour la nouvelle page courante // On crée un descripteur pour la nouvelle page courante
Nouvelle_page=(S_Page *)malloc(sizeof(S_Page)); Nouvelle_page=(S_Page *)malloc(sizeof(S_Page));
Initialiser_S_Page(Nouvelle_page); Initialiser_S_Page(Nouvelle_page);
@ -819,7 +819,7 @@ void Backup(void)
// On copie l'image du backup vers la page courante: // On copie l'image du backup vers la page courante:
memcpy(Principal_Ecran,Ecran_backup,Principal_Largeur_image*Principal_Hauteur_image); memcpy(Principal_Ecran,Ecran_backup,Principal_Largeur_image*Principal_Hauteur_image);
// On dtruit le descripteur de la page courante // On détruit le descripteur de la page courante
free(Nouvelle_page); free(Nouvelle_page);
// On allume l'indicateur de modification de l'image // On allume l'indicateur de modification de l'image
@ -828,10 +828,10 @@ void Backup(void)
void Undo(void) void Undo(void)
{ {
// On remet jour l'tat des infos de la page courante (pour pouvoir les // On remet à jour l'tat des infos de la page courante (pour pouvoir les
// retrouver plus tard) // retrouver plus tard)
Upload_infos_page_principal(Principal_Backups->Pages); Upload_infos_page_principal(Principal_Backups->Pages);
// On fait faire un undo la liste des backups de la page principale // On fait faire un undo à la liste des backups de la page principale
Reculer_dans_une_liste_de_pages(Principal_Backups); Reculer_dans_une_liste_de_pages(Principal_Backups);
// On extrait ensuite les infos sur la nouvelle page courante // On extrait ensuite les infos sur la nouvelle page courante
@ -840,16 +840,16 @@ void Undo(void)
Download_infos_backup(Principal_Backups); Download_infos_backup(Principal_Backups);
// Note: le backup n'a pas obligatoirement les mˆmes dimensions ni la mˆme // Note: le backup n'a pas obligatoirement les mˆmes dimensions ni la mˆme
// palette que la page courante. Mais en temps normal, le backup // palette que la page courante. Mais en temps normal, le backup
// n'est pas utilis la suite d'un Undo. Donc ‡a ne devrait pas // n'est pas utilisé à la suite d'un Undo. Donc ‡a ne devrait pas
// poser de problŠmes. // poser de problèmes.
} }
void Redo(void) void Redo(void)
{ {
// On remet jour l'tat des infos de la page courante (pour pouvoir les // On remet à jour l'tat des infos de la page courante (pour pouvoir les
// retrouver plus tard) // retrouver plus tard)
Upload_infos_page_principal(Principal_Backups->Pages); Upload_infos_page_principal(Principal_Backups->Pages);
// On fait faire un redo la liste des backups de la page principale // On fait faire un redo à la liste des backups de la page principale
Avancer_dans_une_liste_de_pages(Principal_Backups); Avancer_dans_une_liste_de_pages(Principal_Backups);
// On extrait ensuite les infos sur la nouvelle page courante // On extrait ensuite les infos sur la nouvelle page courante
@ -858,13 +858,13 @@ void Redo(void)
Download_infos_backup(Principal_Backups); Download_infos_backup(Principal_Backups);
// Note: le backup n'a pas obligatoirement les mˆmes dimensions ni la mˆme // Note: le backup n'a pas obligatoirement les mˆmes dimensions ni la mˆme
// palette que la page courante. Mais en temps normal, le backup // palette que la page courante. Mais en temps normal, le backup
// n'est pas utilis la suite d'un Redo. Donc ‡a ne devrait pas // n'est pas utilisé à la suite d'un Redo. Donc ‡a ne devrait pas
// poser de problŠmes. // poser de problèmes.
} }
void Detruire_la_page_courante(void) void Detruire_la_page_courante(void)
{ {
// On dtruit la page courante de la liste principale // On détruit la page courante de la liste principale
Detruire_la_page_courante_d_une_liste(Principal_Backups); Detruire_la_page_courante_d_une_liste(Principal_Backups);
// On extrait ensuite les infos sur la nouvelle page courante // On extrait ensuite les infos sur la nouvelle page courante
Download_infos_page_principal(Principal_Backups->Pages); Download_infos_page_principal(Principal_Backups->Pages);
@ -872,16 +872,16 @@ void Detruire_la_page_courante(void)
Download_infos_backup(Principal_Backups); Download_infos_backup(Principal_Backups);
// Note: le backup n'a pas obligatoirement les mˆmes dimensions ni la mˆme // Note: le backup n'a pas obligatoirement les mˆmes dimensions ni la mˆme
// palette que la page courante. Mais en temps normal, le backup // palette que la page courante. Mais en temps normal, le backup
// n'est pas utilis la suite d'une destruction de page. Donc ‡a ne // n'est pas utilisé à la suite d'une destruction de page. Donc ‡a ne
// devrait pas poser de problŠmes. // devrait pas poser de problèmes.
} }
void Interchanger_image_principale_et_brouillon(void) void Interchanger_image_principale_et_brouillon(void)
{ {
S_Liste_de_pages * Liste_tempo; S_Liste_de_pages * Liste_tempo;
// On commence par mettre jour dans les descripteurs les infos sur les // On commence par mettre à jour dans les descripteurs les infos sur les
// pages qu'on s'apprˆte changer, pour qu'on se retrouve pas avec de // pages qu'on s'apprˆte à échanger, pour qu'on se retrouve pas avec de
// vieilles valeurs qui datent de mathuzalem. // vieilles valeurs qui datent de mathuzalem.
Upload_infos_page_principal(Principal_Backups->Pages); Upload_infos_page_principal(Principal_Backups->Pages);
Upload_infos_page_brouillon(Brouillon_Backups->Pages); Upload_infos_page_brouillon(Brouillon_Backups->Pages);
@ -895,8 +895,8 @@ void Interchanger_image_principale_et_brouillon(void)
// et backup. // et backup.
/* SECTION GROS CACA PROUT PROUT */ /* SECTION GROS CACA PROUT PROUT */
// Auparavant on ruse en mettant dj… … jour les dimensions de la // Auparavant on ruse en mettant déjà à jour les dimensions de la
// nouvelle page courante. Si on ne le fait pas, le "Download" va dtecter // nouvelle page courante. Si on ne le fait pas, le "Download" va détecter
// un changement de dimensions et va bˆtement sortir du mode loupe, alors // un changement de dimensions et va bˆtement sortir du mode loupe, alors
// que lors d'un changement de page, on veut bien conserver l'tat du mode // que lors d'un changement de page, on veut bien conserver l'tat du mode
// loupe du brouillon. // loupe du brouillon.
@ -923,8 +923,8 @@ int Emprunt_memoire_de_page_possible(int taille)
Taille_page_courante =Taille_d_une_page(Principal_Backups->Pages); Taille_page_courante =Taille_d_une_page(Principal_Backups->Pages);
Taille_page_brouillon =Taille_d_une_page(Brouillon_Backups->Pages); Taille_page_brouillon =Taille_d_une_page(Brouillon_Backups->Pages);
// Il faut pouvoir loger la zone mmoire ainsi qu'un exemplaire de la page // Il faut pouvoir loger la zone mémoire ainsi qu'un exemplaire de la page
// courante, en conservant au pire la 1Šre page de brouillon. // courante, en conservant au pire la 1ère page de brouillon.
if ((Taille_immediatement_disponible if ((Taille_immediatement_disponible
+Taille_liste_courante +Taille_liste_courante
+Taille_liste_brouillon +Taille_liste_brouillon
@ -940,60 +940,60 @@ void * Emprunter_memoire_de_page(int taille)
int Il_faut_liberer; int Il_faut_liberer;
S_Liste_de_pages * Liste_a_raboter; S_Liste_de_pages * Liste_a_raboter;
S_Page * Page_a_supprimer; S_Page * Page_a_supprimer;
int Indice; //int Indice;
if (Emprunt_memoire_de_page_possible(taille)) if (Emprunt_memoire_de_page_possible(taille))
{ {
// On regarde s'il faut librer des pages: // On regarde s'il faut libérer des pages:
Il_faut_liberer= Il_faut_liberer=
(Memoire_libre()-QUANTITE_MINIMALE_DE_MEMOIRE_A_CONSERVER)<taille; (Memoire_libre()-QUANTITE_MINIMALE_DE_MEMOIRE_A_CONSERVER)<taille;
if (!Il_faut_liberer) if (!Il_faut_liberer)
{ {
// On a assez de place pour allouer une page. On n'a donc aucune page // On a assez de place pour allouer une page. On n'a donc aucune page
// … supprimer. On peut allouer de la mmoire directement. // à supprimer. On peut allouer de la mémoire directement.
return malloc(taille); return malloc(taille);
} }
else else
{ {
// On manque de mmoire. Il faut librer une page... // On manque de mémoire. Il faut libérer une page...
// Tant qu'il faut librer // Tant qu'il faut libérer
while (Il_faut_liberer) while (Il_faut_liberer)
{ {
// On cherche sur quelle liste on va virer une page // On cherche sur quelle liste on va virer une page
// S'il reste des pages … librer dans la liste des brouillons // S'il reste des pages à libérer dans la liste des brouillons
if (Brouillon_Backups->Nb_pages_allouees>1) if (Brouillon_Backups->Nb_pages_allouees>1)
// Alors on va dtruire la derniŠre page alloue de la liste des // Alors on va détruire la dernière page allouée de la liste des
// brouillons // brouillons
Liste_a_raboter=Brouillon_Backups; Liste_a_raboter=Brouillon_Backups;
else else
{ {
if (Principal_Backups->Nb_pages_allouees>1) if (Principal_Backups->Nb_pages_allouees>1)
{ {
// Sinon on va dtruire la derniŠre page alloue de la // Sinon on va détruire la dernière page allouée de la
// liste principale // liste principale
Liste_a_raboter=Principal_Backups; Liste_a_raboter=Principal_Backups;
} }
else else
{ {
// Dans cette branche, il tait prvu qu'on obtienne la mmoire // Dans cette branche, il était prévu qu'on obtienne la mémoire
// ncessaire mais on n'arrive pas … la trouver. On indique donc // nécessaire mais on n'arrive pas à la trouver. On indique donc
// qu'elle n'est pas disponible, et on aura perdu des backups // qu'elle n'est pas disponible, et on aura perdu des backups
// pour rien // pour rien
return 0; return 0;
} }
} }
// Puis on dtermine la page que l'on va supprimer (c'est la derniŠre // Puis on détermine la page que l'on va supprimer (c'est la dernière
// de la liste) // de la liste)
Page_a_supprimer=Liste_a_raboter->Pages+(Liste_a_raboter->Nb_pages_allouees)-1; Page_a_supprimer=Liste_a_raboter->Pages+(Liste_a_raboter->Nb_pages_allouees)-1;
// Dtruire la derniŠre page alloue dans la Liste_…_raboter // Détruire la dernière page allouée dans la Liste_à_raboter
Detruire_derniere_page_allouee_de_la_liste(Liste_a_raboter); Detruire_derniere_page_allouee_de_la_liste(Liste_a_raboter);
// On regarde s'il faut continuer … librer de la place // On regarde s'il faut continuer à libérer de la place
Il_faut_liberer= Il_faut_liberer=
(Memoire_libre()-QUANTITE_MINIMALE_DE_MEMOIRE_A_CONSERVER)<taille; (Memoire_libre()-QUANTITE_MINIMALE_DE_MEMOIRE_A_CONSERVER)<taille;
@ -1006,8 +1006,8 @@ void * Emprunter_memoire_de_page(int taille)
} }
else else
{ {
// Il n'y a pas assez de place pour allouer la mmoire temporaire dans // Il n'y a pas assez de place pour allouer la mémoire temporaire dans
// la mmoire rserve aux pages. // la mémoire réservée aux pages.
return 0; return 0;
} }

120
readini.c
View File

@ -48,9 +48,9 @@ void Charger_INI_Clear_string(char * String)
} }
else else
{ {
// Passage en majuscule d'un caractŠre: // Passage en majuscule d'un caractère:
String[Indice]=lowercase_to_uppercase[String[Indice]]; String[Indice]=lowercase_to_uppercase[(int)String[Indice]];
Indice++; Indice++;
} }
} }
@ -63,22 +63,22 @@ int Charger_INI_Seek_pattern(char * Buffer,char * Pattern)
int Indice_buffer; int Indice_buffer;
int Indice_pattern; int Indice_pattern;
// A partir de chaque lettre de la chaŒne Buffer // A partir de chaque lettre de la chaîne Buffer
for (Indice_buffer=0;Buffer[Indice_buffer]!='\0';Indice_buffer++) for (Indice_buffer=0;Buffer[Indice_buffer]!='\0';Indice_buffer++)
{ {
// On regarde si la chaŒne Pattern est quivalente … la position courante // On regarde si la chaîne Pattern est équivalente … la position courante
// de la chaŒne Buffer: // de la chaîne Buffer:
for (Indice_pattern=0;(Pattern[Indice_pattern]!='\0') && (Buffer[Indice_buffer+Indice_pattern]==Pattern[Indice_pattern]);Indice_pattern++); for (Indice_pattern=0;(Pattern[Indice_pattern]!='\0') && (Buffer[Indice_buffer+Indice_pattern]==Pattern[Indice_pattern]);Indice_pattern++);
// Si on a trouv la chaŒne Pattern dans la chaŒne Buffer, on renvoie la // Si on a trouvé la chaîne Pattern dans la chaîne Buffer, on renvoie la
// position … laquelle on l'a trouve (+1 pour que si on la trouve au // position … laquelle on l'a trouvée (+1 pour que si on la trouve au
// dbut ‡a ne renvoie pas la mˆme chose que si on ne l'avait pas // début ‡a ne renvoie pas la mˆme chose que si on ne l'avait pas
// trouve): // trouvée):
if (Pattern[Indice_pattern]=='\0') if (Pattern[Indice_pattern]=='\0')
return (Indice_buffer+1); return (Indice_buffer+1);
} }
// Si on ne l'a pas trouve, on renvoie 0: // Si on ne l'a pas trouvée, on renvoie 0:
return 0; return 0;
} }
@ -90,7 +90,7 @@ int Charger_INI_Reach_group(FILE * File,char * Buffer,char * Group)
char * Group_upper; char * Group_upper;
char * Buffer_upper; char * Buffer_upper;
// On alloue les zones de mmoire: // On alloue les zones de mémoire:
Group_upper=(char *)malloc(1024); Group_upper=(char *)malloc(1024);
Buffer_upper=(char *)malloc(1024); Buffer_upper=(char *)malloc(1024);
@ -115,7 +115,7 @@ int Charger_INI_Reach_group(FILE * File,char * Buffer,char * Group)
strcpy(Buffer_upper,Buffer); strcpy(Buffer_upper,Buffer);
Charger_INI_Clear_string(Buffer_upper); Charger_INI_Clear_string(Buffer_upper);
// On compare la chaŒne avec le groupe recherch: // On compare la chaîne avec le groupe recherché:
Arret=Charger_INI_Seek_pattern(Buffer_upper,Group_upper); Arret=Charger_INI_Seek_pattern(Buffer_upper,Group_upper);
} }
while (!Arret); while (!Arret);
@ -255,7 +255,7 @@ int Charger_INI_Get_values(FILE * File,char * Buffer,char * Option,int Nb_values
int Indice_buffer; int Indice_buffer;
int Nb_valeurs; int Nb_valeurs;
// On alloue les zones de mmoire: // On alloue les zones de mémoire:
Option_upper=(char *)malloc(1024); Option_upper=(char *)malloc(1024);
Buffer_upper=(char *)malloc(1024); Buffer_upper=(char *)malloc(1024);
@ -280,15 +280,15 @@ int Charger_INI_Get_values(FILE * File,char * Buffer,char * Option,int Nb_values
strcpy(Buffer_upper,Buffer); strcpy(Buffer_upper,Buffer);
Charger_INI_Clear_string(Buffer_upper); Charger_INI_Clear_string(Buffer_upper);
// On compare la chaŒne avec l'option recherche: // On compare la chaîne avec l'option recherchée:
Arret=Charger_INI_Seek_pattern(Buffer_upper,Option_upper); Arret=Charger_INI_Seek_pattern(Buffer_upper,Option_upper);
// Si on l'a trouve: // Si on l'a trouvée:
if (Arret) if (Arret)
{ {
Nb_valeurs=0; Nb_valeurs=0;
// On se positionne juste aprŠs la chaŒne "=" // On se positionne juste après la chaîne "="
Indice_buffer=Charger_INI_Seek_pattern(Buffer_upper,"="); Indice_buffer=Charger_INI_Seek_pattern(Buffer_upper,"=");
// Tant qu'on a pas atteint la fin de la ligne // Tant qu'on a pas atteint la fin de la ligne
@ -332,7 +332,7 @@ int Charger_INI(struct S_Config * Conf)
FILE * Fichier; FILE * Fichier;
char * Buffer; char * Buffer;
int Valeurs[3]; int Valeurs[3];
int Indice; //int Indice;
char * Nom_du_fichier; char * Nom_du_fichier;
int Retour; int Retour;
@ -340,7 +340,7 @@ int Charger_INI(struct S_Config * Conf)
Ligne_INI=0; Ligne_INI=0;
// On alloue les zones de mmoire: // On alloue les zones de mémoire:
Buffer=(char *)malloc(1024); Buffer=(char *)malloc(1024);
Nom_du_fichier=(char *)malloc(256); Nom_du_fichier=(char *)malloc(256);
@ -351,41 +351,41 @@ int Charger_INI(struct S_Config * Conf)
Fichier=fopen(Nom_du_fichier,"r"); Fichier=fopen(Nom_du_fichier,"r");
if (Fichier!=0) if (Fichier!=0)
{ {
if (Retour=Charger_INI_Reach_group(Fichier,Buffer,"[MOUSE]")) if ((Retour=Charger_INI_Reach_group(Fichier,Buffer,"[MOUSE]")))
goto Erreur_Retour; goto Erreur_Retour;
if (Retour=Charger_INI_Get_values (Fichier,Buffer,"X_sensitivity",1,Valeurs)) if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"X_sensitivity",1,Valeurs)))
goto Erreur_Retour; goto Erreur_Retour;
if ((Valeurs[0]<1) || (Valeurs[0]>255)) if ((Valeurs[0]<1) || (Valeurs[0]>255))
goto Erreur_ERREUR_INI_CORROMPU; goto Erreur_ERREUR_INI_CORROMPU;
Conf->Indice_Sensibilite_souris_X=Valeurs[0]; Conf->Indice_Sensibilite_souris_X=Valeurs[0];
if (Retour=Charger_INI_Get_values (Fichier,Buffer,"Y_sensitivity",1,Valeurs)) if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Y_sensitivity",1,Valeurs)))
goto Erreur_Retour; goto Erreur_Retour;
if ((Valeurs[0]<1) || (Valeurs[0]>255)) if ((Valeurs[0]<1) || (Valeurs[0]>255))
goto Erreur_ERREUR_INI_CORROMPU; goto Erreur_ERREUR_INI_CORROMPU;
Conf->Indice_Sensibilite_souris_Y=Valeurs[0]; Conf->Indice_Sensibilite_souris_Y=Valeurs[0];
if (Retour=Charger_INI_Get_values (Fichier,Buffer,"X_correction_factor",1,Valeurs)) if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"X_correction_factor",1,Valeurs)))
goto Erreur_Retour; goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>4)) if ((Valeurs[0]<0) || (Valeurs[0]>4))
goto Erreur_ERREUR_INI_CORROMPU; goto Erreur_ERREUR_INI_CORROMPU;
Conf->Mouse_Facteur_de_correction_X=Mouse_Facteur_de_correction_X=Valeurs[0]; Conf->Mouse_Facteur_de_correction_X=Mouse_Facteur_de_correction_X=Valeurs[0];
if (Retour=Charger_INI_Get_values (Fichier,Buffer,"Y_correction_factor",1,Valeurs)) if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Y_correction_factor",1,Valeurs)))
goto Erreur_Retour; goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>4)) if ((Valeurs[0]<0) || (Valeurs[0]>4))
goto Erreur_ERREUR_INI_CORROMPU; goto Erreur_ERREUR_INI_CORROMPU;
Conf->Mouse_Facteur_de_correction_Y=Mouse_Facteur_de_correction_Y=Valeurs[0]; Conf->Mouse_Facteur_de_correction_Y=Mouse_Facteur_de_correction_Y=Valeurs[0];
if (Retour=Charger_INI_Get_values (Fichier,Buffer,"Cursor_aspect",1,Valeurs)) if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Cursor_aspect",1,Valeurs)))
goto Erreur_Retour; goto Erreur_Retour;
if ((Valeurs[0]<1) || (Valeurs[0]>3)) if ((Valeurs[0]<1) || (Valeurs[0]>3))
goto Erreur_ERREUR_INI_CORROMPU; goto Erreur_ERREUR_INI_CORROMPU;
Conf->Curseur=Valeurs[0]-1; Conf->Curseur=Valeurs[0]-1;
if (Retour=Charger_INI_Reach_group(Fichier,Buffer,"[MENU]")) if ((Retour=Charger_INI_Reach_group(Fichier,Buffer,"[MENU]")))
goto Erreur_Retour; goto Erreur_Retour;
Conf->Coul_menu_pref[0].R=0; Conf->Coul_menu_pref[0].R=0;
@ -395,7 +395,7 @@ int Charger_INI(struct S_Config * Conf)
Conf->Coul_menu_pref[3].V=63; Conf->Coul_menu_pref[3].V=63;
Conf->Coul_menu_pref[3].B=63; Conf->Coul_menu_pref[3].B=63;
if (Retour=Charger_INI_Get_values (Fichier,Buffer,"Light_color",3,Valeurs)) if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Light_color",3,Valeurs)))
goto Erreur_Retour; goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>63)) if ((Valeurs[0]<0) || (Valeurs[0]>63))
goto Erreur_ERREUR_INI_CORROMPU; goto Erreur_ERREUR_INI_CORROMPU;
@ -407,7 +407,7 @@ int Charger_INI(struct S_Config * Conf)
Conf->Coul_menu_pref[2].V=Valeurs[1]; Conf->Coul_menu_pref[2].V=Valeurs[1];
Conf->Coul_menu_pref[2].B=Valeurs[2]; Conf->Coul_menu_pref[2].B=Valeurs[2];
if (Retour=Charger_INI_Get_values (Fichier,Buffer,"Dark_color",3,Valeurs)) if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Dark_color",3,Valeurs)))
goto Erreur_Retour; goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>63)) if ((Valeurs[0]<0) || (Valeurs[0]>63))
goto Erreur_ERREUR_INI_CORROMPU; goto Erreur_ERREUR_INI_CORROMPU;
@ -419,193 +419,193 @@ int Charger_INI(struct S_Config * Conf)
Conf->Coul_menu_pref[1].V=Valeurs[1]; Conf->Coul_menu_pref[1].V=Valeurs[1];
Conf->Coul_menu_pref[1].B=Valeurs[2]; Conf->Coul_menu_pref[1].B=Valeurs[2];
if (Retour=Charger_INI_Get_values (Fichier,Buffer,"Menu_ratio",1,Valeurs)) if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Menu_ratio",1,Valeurs)))
goto Erreur_Retour; goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>2)) if ((Valeurs[0]<0) || (Valeurs[0]>2))
goto Erreur_ERREUR_INI_CORROMPU; goto Erreur_ERREUR_INI_CORROMPU;
Conf->Ratio=Valeurs[0]; Conf->Ratio=Valeurs[0];
if (Retour=Charger_INI_Get_values (Fichier,Buffer,"Font",1,Valeurs)) if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Font",1,Valeurs)))
goto Erreur_Retour; goto Erreur_Retour;
if ((Valeurs[0]<1) || (Valeurs[0]>2)) if ((Valeurs[0]<1) || (Valeurs[0]>2))
goto Erreur_ERREUR_INI_CORROMPU; goto Erreur_ERREUR_INI_CORROMPU;
Conf->Fonte=Valeurs[0]-1; Conf->Fonte=Valeurs[0]-1;
if (Retour=Charger_INI_Reach_group(Fichier,Buffer,"[FILE_SELECTOR]")) if ((Retour=Charger_INI_Reach_group(Fichier,Buffer,"[FILE_SELECTOR]")))
goto Erreur_Retour; goto Erreur_Retour;
if (Retour=Charger_INI_Get_values (Fichier,Buffer,"Show_hidden_files",1,Valeurs)) if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Show_hidden_files",1,Valeurs)))
goto Erreur_Retour; goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>1)) if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU; goto Erreur_ERREUR_INI_CORROMPU;
Conf->Lire_les_fichiers_caches=Valeurs[0]?-1:0; Conf->Lire_les_fichiers_caches=Valeurs[0]?-1:0;
if (Retour=Charger_INI_Get_values (Fichier,Buffer,"Show_hidden_directories",1,Valeurs)) if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Show_hidden_directories",1,Valeurs)))
goto Erreur_Retour; goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>1)) if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU; goto Erreur_ERREUR_INI_CORROMPU;
Conf->Lire_les_repertoires_caches=Valeurs[0]?-1:0; Conf->Lire_les_repertoires_caches=Valeurs[0]?-1:0;
if (Retour=Charger_INI_Get_values (Fichier,Buffer,"Show_system_directories",1,Valeurs)) if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Show_system_directories",1,Valeurs)))
goto Erreur_Retour; goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>1)) if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU; goto Erreur_ERREUR_INI_CORROMPU;
Conf->Lire_les_repertoires_systemes=Valeurs[0]?-1:0; Conf->Lire_les_repertoires_systemes=Valeurs[0]?-1:0;
if (Retour=Charger_INI_Get_values (Fichier,Buffer,"Preview_delay",1,Valeurs)) if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Preview_delay",1,Valeurs)))
goto Erreur_Retour; goto Erreur_Retour;
if ((Valeurs[0]<1) || (Valeurs[0]>256)) if ((Valeurs[0]<1) || (Valeurs[0]>256))
goto Erreur_ERREUR_INI_CORROMPU; goto Erreur_ERREUR_INI_CORROMPU;
Conf->Chrono_delay=Valeurs[0]; Conf->Chrono_delay=Valeurs[0];
if (Retour=Charger_INI_Get_values (Fichier,Buffer,"Maximize_preview",1,Valeurs)) if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Maximize_preview",1,Valeurs)))
goto Erreur_Retour; goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>1)) if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU; goto Erreur_ERREUR_INI_CORROMPU;
Conf->Maximize_preview=Valeurs[0]; Conf->Maximize_preview=Valeurs[0];
if (Retour=Charger_INI_Get_values (Fichier,Buffer,"Find_file_fast",1,Valeurs)) if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Find_file_fast",1,Valeurs)))
goto Erreur_Retour; goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>2)) if ((Valeurs[0]<0) || (Valeurs[0]>2))
goto Erreur_ERREUR_INI_CORROMPU; goto Erreur_ERREUR_INI_CORROMPU;
Conf->Find_file_fast=Valeurs[0]; Conf->Find_file_fast=Valeurs[0];
if (Retour=Charger_INI_Reach_group(Fichier,Buffer,"[LOADING]")) if ((Retour=Charger_INI_Reach_group(Fichier,Buffer,"[LOADING]")))
goto Erreur_Retour; goto Erreur_Retour;
if (Retour=Charger_INI_Get_values (Fichier,Buffer,"Auto_set_resolution",1,Valeurs)) if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Auto_set_resolution",1,Valeurs)))
goto Erreur_Retour; goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>1)) if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU; goto Erreur_ERREUR_INI_CORROMPU;
Conf->Auto_set_res=Valeurs[0]; Conf->Auto_set_res=Valeurs[0];
if (Retour=Charger_INI_Get_values (Fichier,Buffer,"Set_resolution_according_to",1,Valeurs)) if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Set_resolution_according_to",1,Valeurs)))
goto Erreur_Retour; goto Erreur_Retour;
if ((Valeurs[0]<1) || (Valeurs[0]>2)) if ((Valeurs[0]<1) || (Valeurs[0]>2))
goto Erreur_ERREUR_INI_CORROMPU; goto Erreur_ERREUR_INI_CORROMPU;
Conf->Set_resolution_according_to=Valeurs[0]; Conf->Set_resolution_according_to=Valeurs[0];
if (Retour=Charger_INI_Get_values (Fichier,Buffer,"Clear_palette",1,Valeurs)) if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Clear_palette",1,Valeurs)))
goto Erreur_Retour; goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>1)) if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU; goto Erreur_ERREUR_INI_CORROMPU;
Conf->Clear_palette=Valeurs[0]; Conf->Clear_palette=Valeurs[0];
if (Retour=Charger_INI_Reach_group(Fichier,Buffer,"[MISCELLANEOUS]")) if ((Retour=Charger_INI_Reach_group(Fichier,Buffer,"[MISCELLANEOUS]")))
goto Erreur_Retour; goto Erreur_Retour;
if (Retour=Charger_INI_Get_values (Fichier,Buffer,"Draw_limits",1,Valeurs)) if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Draw_limits",1,Valeurs)))
goto Erreur_Retour; goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>1)) if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU; goto Erreur_ERREUR_INI_CORROMPU;
Conf->Afficher_limites_image=Valeurs[0]; Conf->Afficher_limites_image=Valeurs[0];
if (Retour=Charger_INI_Get_values (Fichier,Buffer,"Adjust_brush_pick",1,Valeurs)) if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Adjust_brush_pick",1,Valeurs)))
goto Erreur_Retour; goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>1)) if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU; goto Erreur_ERREUR_INI_CORROMPU;
Conf->Adjust_brush_pick=Valeurs[0]; Conf->Adjust_brush_pick=Valeurs[0];
if (Retour=Charger_INI_Get_values (Fichier,Buffer,"Coordinates",1,Valeurs)) if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Coordinates",1,Valeurs)))
goto Erreur_Retour; goto Erreur_Retour;
if ((Valeurs[0]<1) || (Valeurs[0]>2)) if ((Valeurs[0]<1) || (Valeurs[0]>2))
goto Erreur_ERREUR_INI_CORROMPU; goto Erreur_ERREUR_INI_CORROMPU;
Conf->Coords_rel=2-Valeurs[0]; Conf->Coords_rel=2-Valeurs[0];
if (Retour=Charger_INI_Get_values (Fichier,Buffer,"Backup",1,Valeurs)) if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Backup",1,Valeurs)))
goto Erreur_Retour; goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>1)) if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU; goto Erreur_ERREUR_INI_CORROMPU;
Conf->Backup=Valeurs[0]; Conf->Backup=Valeurs[0];
if (Retour=Charger_INI_Get_values (Fichier,Buffer,"Undo_pages",1,Valeurs)) if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Undo_pages",1,Valeurs)))
goto Erreur_Retour; goto Erreur_Retour;
if ((Valeurs[0]<1) || (Valeurs[0]>99)) if ((Valeurs[0]<1) || (Valeurs[0]>99))
goto Erreur_ERREUR_INI_CORROMPU; goto Erreur_ERREUR_INI_CORROMPU;
Conf->Nb_pages_Undo=Valeurs[0]; Conf->Nb_pages_Undo=Valeurs[0];
if (Retour=Charger_INI_Get_values (Fichier,Buffer,"Gauges_scrolling_speed_Left",1,Valeurs)) if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Gauges_scrolling_speed_Left",1,Valeurs)))
goto Erreur_Retour; goto Erreur_Retour;
if ((Valeurs[0]<1) || (Valeurs[0]>255)) if ((Valeurs[0]<1) || (Valeurs[0]>255))
goto Erreur_ERREUR_INI_CORROMPU; goto Erreur_ERREUR_INI_CORROMPU;
Conf->Valeur_tempo_jauge_gauche=Valeurs[0]; Conf->Valeur_tempo_jauge_gauche=Valeurs[0];
if (Retour=Charger_INI_Get_values (Fichier,Buffer,"Gauges_scrolling_speed_Right",1,Valeurs)) if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Gauges_scrolling_speed_Right",1,Valeurs)))
goto Erreur_Retour; goto Erreur_Retour;
if ((Valeurs[0]<1) || (Valeurs[0]>255)) if ((Valeurs[0]<1) || (Valeurs[0]>255))
goto Erreur_ERREUR_INI_CORROMPU; goto Erreur_ERREUR_INI_CORROMPU;
Conf->Valeur_tempo_jauge_droite=Valeurs[0]; Conf->Valeur_tempo_jauge_droite=Valeurs[0];
if (Retour=Charger_INI_Get_values (Fichier,Buffer,"Auto_save",1,Valeurs)) if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Auto_save",1,Valeurs)))
goto Erreur_Retour; goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>1)) if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU; goto Erreur_ERREUR_INI_CORROMPU;
Conf->Auto_save=Valeurs[0]; Conf->Auto_save=Valeurs[0];
if (Retour=Charger_INI_Get_values (Fichier,Buffer,"Vertices_per_polygon",1,Valeurs)) if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Vertices_per_polygon",1,Valeurs)))
goto Erreur_Retour; goto Erreur_Retour;
if ((Valeurs[0]<2) || (Valeurs[0]>16384)) if ((Valeurs[0]<2) || (Valeurs[0]>16384))
goto Erreur_ERREUR_INI_CORROMPU; goto Erreur_ERREUR_INI_CORROMPU;
Conf->Nb_max_de_vertex_par_polygon=Valeurs[0]; Conf->Nb_max_de_vertex_par_polygon=Valeurs[0];
if (Retour=Charger_INI_Get_values (Fichier,Buffer,"Fast_zoom",1,Valeurs)) if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Fast_zoom",1,Valeurs)))
goto Erreur_Retour; goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>1)) if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU; goto Erreur_ERREUR_INI_CORROMPU;
Conf->Fast_zoom=Valeurs[0]; Conf->Fast_zoom=Valeurs[0];
if (Retour=Charger_INI_Get_values (Fichier,Buffer,"Separate_colors",1,Valeurs)) if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Separate_colors",1,Valeurs)))
goto Erreur_Retour; goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>1)) if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU; goto Erreur_ERREUR_INI_CORROMPU;
Conf->Couleurs_separees=Valeurs[0]; Conf->Couleurs_separees=Valeurs[0];
if (Retour=Charger_INI_Get_values (Fichier,Buffer,"FX_feedback",1,Valeurs)) if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"FX_feedback",1,Valeurs)))
goto Erreur_Retour; goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>1)) if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU; goto Erreur_ERREUR_INI_CORROMPU;
Conf->FX_Feedback=Valeurs[0]; Conf->FX_Feedback=Valeurs[0];
if (Retour=Charger_INI_Get_values (Fichier,Buffer,"Safety_colors",1,Valeurs)) if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Safety_colors",1,Valeurs)))
goto Erreur_Retour; goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>1)) if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU; goto Erreur_ERREUR_INI_CORROMPU;
Conf->Safety_colors=Valeurs[0]; Conf->Safety_colors=Valeurs[0];
if (Retour=Charger_INI_Get_values (Fichier,Buffer,"Opening_message",1,Valeurs)) if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Opening_message",1,Valeurs)))
goto Erreur_Retour; goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>1)) if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU; goto Erreur_ERREUR_INI_CORROMPU;
Conf->Opening_message=Valeurs[0]; Conf->Opening_message=Valeurs[0];
if (Retour=Charger_INI_Get_values (Fichier,Buffer,"Clear_with_stencil",1,Valeurs)) if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Clear_with_stencil",1,Valeurs)))
goto Erreur_Retour; goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>1)) if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU; goto Erreur_ERREUR_INI_CORROMPU;
Conf->Clear_with_stencil=Valeurs[0]; Conf->Clear_with_stencil=Valeurs[0];
if (Retour=Charger_INI_Get_values (Fichier,Buffer,"Auto_discontinuous",1,Valeurs)) if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Auto_discontinuous",1,Valeurs)))
goto Erreur_Retour; goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>1)) if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU; goto Erreur_ERREUR_INI_CORROMPU;
Conf->Auto_discontinuous=Valeurs[0]; Conf->Auto_discontinuous=Valeurs[0];
if (Retour=Charger_INI_Get_values (Fichier,Buffer,"Save_screen_size_in_GIF",1,Valeurs)) if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Save_screen_size_in_GIF",1,Valeurs)))
goto Erreur_Retour; goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>1)) if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU; goto Erreur_ERREUR_INI_CORROMPU;
Conf->Taille_ecran_dans_GIF=Valeurs[0]; Conf->Taille_ecran_dans_GIF=Valeurs[0];
if (Retour=Charger_INI_Get_values (Fichier,Buffer,"Auto_nb_colors_used",1,Valeurs)) if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Auto_nb_colors_used",1,Valeurs)))
goto Erreur_Retour; goto Erreur_Retour;
if ((Valeurs[0]<0) || (Valeurs[0]>1)) if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU; goto Erreur_ERREUR_INI_CORROMPU;
Conf->Auto_nb_used=Valeurs[0]; Conf->Auto_nb_used=Valeurs[0];
if (Retour=Charger_INI_Get_values (Fichier,Buffer,"Default_video_mode",1,Valeurs)) if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Default_video_mode",1,Valeurs)))
goto Erreur_Retour; goto Erreur_Retour;
if ((Valeurs[0]<MODE_320_200) || (Valeurs[0]>MODE_1024_768)) if ((Valeurs[0]<MODE_320_200) || (Valeurs[0]>MODE_1024_768))
goto Erreur_ERREUR_INI_CORROMPU; goto Erreur_ERREUR_INI_CORROMPU;

View File

@ -176,7 +176,7 @@ int Sauver_INI_Set_values(FILE * Old_file,FILE * New_file,char * Buffer,char * O
char * Option_upper; char * Option_upper;
char * Buffer_upper; char * Buffer_upper;
char * Buffer_resultat; char * Buffer_resultat;
int Indice_buffer; //int Indice_buffer;
// On alloue les zones de mmoire: // On alloue les zones de mmoire:
Option_upper=(char *)malloc(1024); Option_upper=(char *)malloc(1024);
@ -283,175 +283,175 @@ int Sauver_INI(struct S_Config * Conf)
Nouveau_fichier=fopen(Nom_du_fichier,"w"); Nouveau_fichier=fopen(Nom_du_fichier,"w");
if (Nouveau_fichier!=0) if (Nouveau_fichier!=0)
{ {
if (Retour=Sauver_INI_Reach_group(Ancien_fichier,Nouveau_fichier,Buffer,"[MOUSE]")) if ((Retour=Sauver_INI_Reach_group(Ancien_fichier,Nouveau_fichier,Buffer,"[MOUSE]")))
goto Erreur_Retour; goto Erreur_Retour;
Valeurs[0]=Conf->Indice_Sensibilite_souris_X; Valeurs[0]=Conf->Indice_Sensibilite_souris_X;
if (Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"X_sensitivity",1,Valeurs,0)) if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"X_sensitivity",1,Valeurs,0)))
goto Erreur_Retour; goto Erreur_Retour;
Valeurs[0]=Conf->Indice_Sensibilite_souris_Y; Valeurs[0]=Conf->Indice_Sensibilite_souris_Y;
if (Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Y_sensitivity",1,Valeurs,0)) if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Y_sensitivity",1,Valeurs,0)))
goto Erreur_Retour; goto Erreur_Retour;
Valeurs[0]=Conf->Mouse_Facteur_de_correction_X; Valeurs[0]=Conf->Mouse_Facteur_de_correction_X;
if (Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"X_correction_factor",1,Valeurs,0)) if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"X_correction_factor",1,Valeurs,0)))
goto Erreur_Retour; goto Erreur_Retour;
Valeurs[0]=Conf->Mouse_Facteur_de_correction_Y; Valeurs[0]=Conf->Mouse_Facteur_de_correction_Y;
if (Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Y_correction_factor",1,Valeurs,0)) if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Y_correction_factor",1,Valeurs,0)))
goto Erreur_Retour; goto Erreur_Retour;
Valeurs[0]=(Conf->Curseur)+1; Valeurs[0]=(Conf->Curseur)+1;
if (Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Cursor_aspect",1,Valeurs,0)) if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Cursor_aspect",1,Valeurs,0)))
goto Erreur_Retour; goto Erreur_Retour;
if (Retour=Sauver_INI_Reach_group(Ancien_fichier,Nouveau_fichier,Buffer,"[MENU]")) if ((Retour=Sauver_INI_Reach_group(Ancien_fichier,Nouveau_fichier,Buffer,"[MENU]")))
goto Erreur_Retour; goto Erreur_Retour;
Valeurs[0]=Conf->Coul_menu_pref[2].R; Valeurs[0]=Conf->Coul_menu_pref[2].R;
Valeurs[1]=Conf->Coul_menu_pref[2].V; Valeurs[1]=Conf->Coul_menu_pref[2].V;
Valeurs[2]=Conf->Coul_menu_pref[2].B; Valeurs[2]=Conf->Coul_menu_pref[2].B;
if (Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Light_color",3,Valeurs,0)) if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Light_color",3,Valeurs,0)))
goto Erreur_Retour; goto Erreur_Retour;
Valeurs[0]=Conf->Coul_menu_pref[1].R; Valeurs[0]=Conf->Coul_menu_pref[1].R;
Valeurs[1]=Conf->Coul_menu_pref[1].V; Valeurs[1]=Conf->Coul_menu_pref[1].V;
Valeurs[2]=Conf->Coul_menu_pref[1].B; Valeurs[2]=Conf->Coul_menu_pref[1].B;
if (Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Dark_color",3,Valeurs,0)) if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Dark_color",3,Valeurs,0)))
goto Erreur_Retour; goto Erreur_Retour;
Valeurs[0]=Conf->Ratio; Valeurs[0]=Conf->Ratio;
if (Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Menu_ratio",1,Valeurs,0)) if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Menu_ratio",1,Valeurs,0)))
goto Erreur_Retour; goto Erreur_Retour;
Valeurs[0]=(Conf->Fonte)+1; Valeurs[0]=(Conf->Fonte)+1;
if (Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Font",1,Valeurs,0)) if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Font",1,Valeurs,0)))
goto Erreur_Retour; goto Erreur_Retour;
if (Retour=Sauver_INI_Reach_group(Ancien_fichier,Nouveau_fichier,Buffer,"[FILE_SELECTOR]")) if ((Retour=Sauver_INI_Reach_group(Ancien_fichier,Nouveau_fichier,Buffer,"[FILE_SELECTOR]")))
goto Erreur_Retour; goto Erreur_Retour;
Valeurs[0]=Conf->Lire_les_fichiers_caches?1:0; Valeurs[0]=Conf->Lire_les_fichiers_caches?1:0;
if (Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Show_hidden_files",1,Valeurs,1)) if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Show_hidden_files",1,Valeurs,1)))
goto Erreur_Retour; goto Erreur_Retour;
Valeurs[0]=Conf->Lire_les_repertoires_caches?1:0; Valeurs[0]=Conf->Lire_les_repertoires_caches?1:0;
if (Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Show_hidden_directories",1,Valeurs,1)) if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Show_hidden_directories",1,Valeurs,1)))
goto Erreur_Retour; goto Erreur_Retour;
Valeurs[0]=Conf->Lire_les_repertoires_systemes?1:0; Valeurs[0]=Conf->Lire_les_repertoires_systemes?1:0;
if (Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Show_system_directories",1,Valeurs,1)) if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Show_system_directories",1,Valeurs,1)))
goto Erreur_Retour; goto Erreur_Retour;
Valeurs[0]=Conf->Chrono_delay; Valeurs[0]=Conf->Chrono_delay;
if (Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Preview_delay",1,Valeurs,0)) if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Preview_delay",1,Valeurs,0)))
goto Erreur_Retour; goto Erreur_Retour;
Valeurs[0]=Conf->Maximize_preview; Valeurs[0]=Conf->Maximize_preview;
if (Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Maximize_preview",1,Valeurs,1)) if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Maximize_preview",1,Valeurs,1)))
goto Erreur_Retour; goto Erreur_Retour;
Valeurs[0]=Conf->Find_file_fast; Valeurs[0]=Conf->Find_file_fast;
if (Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Find_file_fast",1,Valeurs,0)) if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Find_file_fast",1,Valeurs,0)))
goto Erreur_Retour; goto Erreur_Retour;
if (Retour=Sauver_INI_Reach_group(Ancien_fichier,Nouveau_fichier,Buffer,"[LOADING]")) if ((Retour=Sauver_INI_Reach_group(Ancien_fichier,Nouveau_fichier,Buffer,"[LOADING]")))
goto Erreur_Retour; goto Erreur_Retour;
Valeurs[0]=Conf->Auto_set_res; Valeurs[0]=Conf->Auto_set_res;
if (Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Auto_set_resolution",1,Valeurs,1)) if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Auto_set_resolution",1,Valeurs,1)))
goto Erreur_Retour; goto Erreur_Retour;
Valeurs[0]=Conf->Set_resolution_according_to; Valeurs[0]=Conf->Set_resolution_according_to;
if (Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Set_resolution_according_to",1,Valeurs,0)) if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Set_resolution_according_to",1,Valeurs,0)))
goto Erreur_Retour; goto Erreur_Retour;
Valeurs[0]=Conf->Clear_palette; Valeurs[0]=Conf->Clear_palette;
if (Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Clear_palette",1,Valeurs,1)) if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Clear_palette",1,Valeurs,1)))
goto Erreur_Retour; goto Erreur_Retour;
if (Retour=Sauver_INI_Reach_group(Ancien_fichier,Nouveau_fichier,Buffer,"[MISCELLANEOUS]")) if ((Retour=Sauver_INI_Reach_group(Ancien_fichier,Nouveau_fichier,Buffer,"[MISCELLANEOUS]")))
goto Erreur_Retour; goto Erreur_Retour;
Valeurs[0]=Conf->Afficher_limites_image; Valeurs[0]=Conf->Afficher_limites_image;
if (Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Draw_limits",1,Valeurs,1)) if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Draw_limits",1,Valeurs,1)))
goto Erreur_Retour; goto Erreur_Retour;
Valeurs[0]=Conf->Adjust_brush_pick; Valeurs[0]=Conf->Adjust_brush_pick;
if (Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Adjust_brush_pick",1,Valeurs,1)) if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Adjust_brush_pick",1,Valeurs,1)))
goto Erreur_Retour; goto Erreur_Retour;
Valeurs[0]=2-Conf->Coords_rel; Valeurs[0]=2-Conf->Coords_rel;
if (Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Coordinates",1,Valeurs,0)) if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Coordinates",1,Valeurs,0)))
goto Erreur_Retour; goto Erreur_Retour;
Valeurs[0]=Conf->Backup; Valeurs[0]=Conf->Backup;
if (Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Backup",1,Valeurs,1)) if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Backup",1,Valeurs,1)))
goto Erreur_Retour; goto Erreur_Retour;
Valeurs[0]=Conf->Nb_pages_Undo; Valeurs[0]=Conf->Nb_pages_Undo;
if (Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Undo_pages",1,Valeurs,0)) if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Undo_pages",1,Valeurs,0)))
goto Erreur_Retour; goto Erreur_Retour;
Valeurs[0]=Conf->Valeur_tempo_jauge_gauche; Valeurs[0]=Conf->Valeur_tempo_jauge_gauche;
if (Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Gauges_scrolling_speed_Left",1,Valeurs,0)) if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Gauges_scrolling_speed_Left",1,Valeurs,0)))
goto Erreur_Retour; goto Erreur_Retour;
Valeurs[0]=Conf->Valeur_tempo_jauge_droite; Valeurs[0]=Conf->Valeur_tempo_jauge_droite;
if (Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Gauges_scrolling_speed_Right",1,Valeurs,0)) if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Gauges_scrolling_speed_Right",1,Valeurs,0)))
goto Erreur_Retour; goto Erreur_Retour;
Valeurs[0]=Conf->Auto_save; Valeurs[0]=Conf->Auto_save;
if (Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Auto_save",1,Valeurs,1)) if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Auto_save",1,Valeurs,1)))
goto Erreur_Retour; goto Erreur_Retour;
Valeurs[0]=Conf->Nb_max_de_vertex_par_polygon; Valeurs[0]=Conf->Nb_max_de_vertex_par_polygon;
if (Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Vertices_per_polygon",1,Valeurs,0)) if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Vertices_per_polygon",1,Valeurs,0)))
goto Erreur_Retour; goto Erreur_Retour;
Valeurs[0]=Conf->Fast_zoom; Valeurs[0]=Conf->Fast_zoom;
if (Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Fast_zoom",1,Valeurs,1)) if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Fast_zoom",1,Valeurs,1)))
goto Erreur_Retour; goto Erreur_Retour;
Valeurs[0]=Conf->Couleurs_separees; Valeurs[0]=Conf->Couleurs_separees;
if (Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Separate_colors",1,Valeurs,1)) if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Separate_colors",1,Valeurs,1)))
goto Erreur_Retour; goto Erreur_Retour;
Valeurs[0]=Conf->FX_Feedback; Valeurs[0]=Conf->FX_Feedback;
if (Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"FX_feedback",1,Valeurs,1)) if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"FX_feedback",1,Valeurs,1)))
goto Erreur_Retour; goto Erreur_Retour;
Valeurs[0]=Conf->Safety_colors; Valeurs[0]=Conf->Safety_colors;
if (Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Safety_colors",1,Valeurs,1)) if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Safety_colors",1,Valeurs,1)))
goto Erreur_Retour; goto Erreur_Retour;
Valeurs[0]=Conf->Opening_message; Valeurs[0]=Conf->Opening_message;
if (Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Opening_message",1,Valeurs,1)) if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Opening_message",1,Valeurs,1)))
goto Erreur_Retour; goto Erreur_Retour;
Valeurs[0]=Conf->Clear_with_stencil; Valeurs[0]=Conf->Clear_with_stencil;
if (Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Clear_with_stencil",1,Valeurs,1)) if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Clear_with_stencil",1,Valeurs,1)))
goto Erreur_Retour; goto Erreur_Retour;
Valeurs[0]=Conf->Auto_discontinuous; Valeurs[0]=Conf->Auto_discontinuous;
if (Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Auto_discontinuous",1,Valeurs,1)) if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Auto_discontinuous",1,Valeurs,1)))
goto Erreur_Retour; goto Erreur_Retour;
Valeurs[0]=Conf->Taille_ecran_dans_GIF; Valeurs[0]=Conf->Taille_ecran_dans_GIF;
if (Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Save_screen_size_in_GIF",1,Valeurs,1)) if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Save_screen_size_in_GIF",1,Valeurs,1)))
goto Erreur_Retour; goto Erreur_Retour;
Valeurs[0]=Conf->Auto_nb_used; Valeurs[0]=Conf->Auto_nb_used;
if (Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Auto_nb_colors_used",1,Valeurs,1)) if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Auto_nb_colors_used",1,Valeurs,1)))
goto Erreur_Retour; goto Erreur_Retour;
Valeurs[0]=Conf->Resolution_par_defaut; Valeurs[0]=Conf->Resolution_par_defaut;
if (Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Default_video_mode",1,Valeurs,0)) if ((Retour=Sauver_INI_Set_values (Ancien_fichier,Nouveau_fichier,Buffer,"Default_video_mode",1,Valeurs,0)))
goto Erreur_Retour; goto Erreur_Retour;
Sauver_INI_Flush(Ancien_fichier,Nouveau_fichier,Buffer); Sauver_INI_Flush(Ancien_fichier,Nouveau_fichier,Buffer);

0
sdlscreen.c Normal file
View File

View File

@ -3,8 +3,8 @@
#include <SDL/SDL.h> #include <SDL/SDL.h>
#include "struct.h" #include "struct.h"
//Set_Mode_SDL();
void Set_Mode_SDL();
void Pixel_SDL (word X,word Y,byte Couleur); void Pixel_SDL (word X,word Y,byte Couleur);
byte Lit_Pixel_SDL (word X,word Y); byte Lit_Pixel_SDL (word X,word Y);
void Effacer_Tout_l_Ecran_SDL (byte Couleur); void Effacer_Tout_l_Ecran_SDL (byte Couleur);
@ -26,7 +26,7 @@
void Clear_brush_zoom_SDL (word Pos_X,word Pos_Y,word Decalage_X,word Decalage_Y,word Largeur,word Pos_Y_Fin,byte Couleur_de_transparence,word Largeur_image,byte * Buffer); void Clear_brush_zoom_SDL (word Pos_X,word Pos_Y,word Decalage_X,word Decalage_Y,word Largeur,word Pos_Y_Fin,byte Couleur_de_transparence,word Largeur_image,byte * Buffer);
SDL_Rect ** Liste_Modes_Videos_SDL; SDL_Rect ** Liste_Modes_Videos_SDL;
SDL_Surface* Ecran; byte* Ecran;
SDL_Event* Evenement_SDL; SDL_Event* Evenement_SDL;

View File

@ -3,7 +3,7 @@
#include "const.h" #include "const.h"
// Dclaration des types de base ///////////////////////////////////////////// // Déclaration des types de base /////////////////////////////////////////////
typedef unsigned char byte; typedef unsigned char byte;
typedef unsigned short word; typedef unsigned short word;
@ -89,47 +89,47 @@ struct T_Drive
}; };
// Dclaration du type d'lment qu'on va mmoriser dans la liste: // Déclaration du type d'élément qu'on va mémoriser dans la liste:
struct Element_de_liste_de_fileselect struct Element_de_liste_de_fileselect
{ {
char Nom[13]; // Le nom du fichier ou du rpertoire char Nom[13]; // Le nom du fichier ou du répertoire
byte Type; // Type d'lment : 0 = Fichier, 1 = Rpertoire byte Type; // Type d'élément : 0 = Fichier, 1 = Répertoire
// donnes de chaŒnage de la liste // données de chaŒnage de la liste
struct Element_de_liste_de_fileselect * Suivant; struct Element_de_liste_de_fileselect * Suivant;
struct Element_de_liste_de_fileselect * Precedent; struct Element_de_liste_de_fileselect * Precedent;
}; };
// Dclaration d'une section d'aide: // Déclaration d'une section d'aide:
struct Section_d_aide struct Section_d_aide
{ {
word Nombre_de_lignes; word Nombre_de_lignes;
byte * Debut_de_la_liste; // PremiŠre ligne de la liste byte * Debut_de_la_liste; // PremiŠre ligne de la liste
}; };
// Dclaration d'une info sur un dgrad // Déclaration d'une info sur un dégradé
struct T_Degrade_Tableau struct T_Degrade_Tableau
{ {
byte Debut; // PremiŠre couleur du dgrad byte Debut; // PremiŠre couleur du dégradé
byte Fin; // DerniŠre couleur du dgrad byte Fin; // DerniŠre couleur du dégradé
int Inverse; // "Le dgrad va de Fin … Debut" int Inverse; // "Le dégradé va de Fin … Debut"
long Melange; // Valeur de mlange du dgrad (0-255) long Melange; // Valeur de mélange du dégradé (0-255)
int Technique; // Technique … utiliser (0-2) int Technique; // Technique … utiliser (0-2)
}; };
// Dclaration d'une info de shade // Déclaration d'une info de shade
struct T_Shade struct T_Shade
{ {
word Liste[512]; // Liste de couleurs word Liste[512]; // Liste de couleurs
byte Pas; // Pas d'incrmentation/dcrmentation byte Pas; // Pas d'incrémentation/décrémentation
byte Mode; // Mode d'utilisation (Normal/Boucle/Non-satur) byte Mode; // Mode d'utilisation (Normal/Boucle/Non-saturé)
}; };
// Structure des donnes dans le fichier de config. // Structure des données dans le fichier de config.
struct Config_Mode_video struct Config_Mode_video
{ {
@ -162,11 +162,11 @@ struct Config_Infos_touche
// Structures utilises pour les descriptions de pages et de liste de pages. // Structures utilisées pour les descriptions de pages et de liste de pages.
// Lorsqu'on gŠrera les animations, il faudra aussi des listes de listes de // Lorsqu'on gŠrera les animations, il faudra aussi des listes de listes de
// pages. // pages.
// Ces structures sont manipules … travers des fonctions de gestion du // Ces structures sont manipulées … travers des fonctions de gestion du
// backup dans "graph.c". // backup dans "graph.c".
typedef struct typedef struct
@ -180,17 +180,17 @@ typedef struct
char Repertoire_fichier[256]; // |_ Nom complet = char Repertoire_fichier[256]; // |_ Nom complet =
char Nom_fichier[13]; // | Repertoire_fichier+"\"+Nom_fichier char Nom_fichier[13]; // | Repertoire_fichier+"\"+Nom_fichier
byte Format_fichier; // Format auquel il faut lire et crire le fichier byte Format_fichier; // Format auquel il faut lire et écrire le fichier
/* /*
short Decalage_X; // Dcalage en X de l'cran par rapport au dbut de l'image short Decalage_X; // Décalage en X de l'écran par rapport au début de l'image
short Decalage_Y; // Dcalage en Y de l'cran par rapport au dbut de l'image short Decalage_Y; // Décalage en Y de l'écran par rapport au début de l'image
short Ancien_Decalage_X; // Le mˆme avant le passage en mode loupe short Ancien_Decalage_X; // Le mˆme avant le passage en mode loupe
short Ancien_Decalage_Y; // Le mˆme avant le passage en mode loupe short Ancien_Decalage_Y; // Le mˆme avant le passage en mode loupe
short Split; // Position en X du bord gauche du split de la loupe short Split; // Position en X du bord gauche du split de la loupe
short X_Zoom; // (Menu_Facteur_X) + Position en X du bord droit du split de la loupe short X_Zoom; // (Menu_Facteur_X) + Position en X du bord droit du split de la loupe
float Proportion_split; // Proportion de la zone non-zoome par rapport … l'cran float Proportion_split; // Proportion de la zone non-zoomée par rapport … l'écran
byte Loupe_Mode; // On est en mode loupe byte Loupe_Mode; // On est en mode loupe
word Loupe_Facteur; // Facteur de zoom word Loupe_Facteur; // Facteur de zoom
@ -204,8 +204,8 @@ typedef struct
typedef struct typedef struct
{ {
int Taille_liste; // Nb de S_Page dans le vecteur "Pages" int Taille_liste; // Nb de S_Page dans le vecteur "Pages"
int Nb_pages_allouees; // Nb de S_Page dsignant des pages alloues int Nb_pages_allouees; // Nb de S_Page désignant des pages allouées
S_Page * Pages; // Liste de pages (Taille_liste lments) S_Page * Pages; // Liste de pages (Taille_liste éléments)
} S_Liste_de_pages; } S_Liste_de_pages;