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;
int i;
//Calcul du nombre de pixels dans l'image
Nombre_De_Pixels=Principal_Hauteur_image*Principal_Largeur_image;
// On parcourt l'cran courant pour compter les utilisations des couleurs
for(i=0;i++;i>Nombre_De_Pixels)
// On parcourt l'écran courant pour compter les utilisations des couleurs
for(i=0;i>Nombre_De_Pixels;i++)
{
Couleur=*Pixel_Courant; //on lit la couleur dans l'écran
@ -28,32 +26,26 @@ word Palette_Compter_nb_couleurs_utilisees(dword* Tableau)
Pixel_Courant++;
}
//On va maintenant compter dans la table les couleurs utilises:
Couleur=0; //EDX
do
//On va maintenant compter dans la table les couleurs utilisées:
Couleur=0;
do
{
if (Tableau[Couleur]!=0)
if (Tableau[Couleur]!=0)
Nombre_Couleurs++;
Couleur++;
}while (Couleur<256);
Couleur++;
}while(Couleur!=0); //On sort quand on a fait le tour (la var est sur 8 bits donc 255+1=0)
return Nombre_Couleurs;
}
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)
{
do
SDL_PumpEvents();
while (SDL_GetMouseState(NULL, NULL)&SDL_BUTTON(0));
puts("Attendre_fin_de_click non implémenté!\n");
}
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;
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++;
}
@ -79,7 +71,7 @@ void Effacer_image_courante_Stencil(byte Couleur, byte * Pochoir)
void Effacer_image_courante(byte 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)
@ -94,7 +86,8 @@ void Get_input(void)
void Initialiser_chrono(dword Delai)
{// Démarrer le chrono
puts("Initialiser_chrono non implémenté!\n");
/*
push ebp
mov ebp,esp
@ -110,6 +103,27 @@ void Initialiser_chrono(dword Delai)
mov esp,ebp
pop ebp
*/
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:
// ... : ...
//
// 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);
// 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
// 2 : Lecteur 1.2 Mo
// 3 : Lecteur 720 Ko
@ -59,11 +59,11 @@ byte Disk_map(byte Numero_de_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)
//
// 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 (???)
// sinon: numro reprsentant la lettre logique du lecteur
// (commence 1)
// sinon: numéro représenatan la lettre logique du lecteur
// (commence à 1)
byte Disque_dur_present(byte Numero_de_disque);
// 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);
// Indique si le pixel se trouvant Ellipse_Curseur_X pixels
// (Ellipse_Curseur_X>0 = … droite, Ellipse_Curseur_X<0 = … gauche) et …
// Indique si le pixel se trouvant à Ellipse_Curseur_X pixels
// (Ellipse_Curseur_X>0 = à droite, Ellipse_Curseur_X<0 = à gauche) et à
// Ellipse_Curseur_Y pixels (Ellipse_Curseur_Y>0 = en bas,
// Ellipse_Curseur_Y<0 = en haut) du centre se trouve dans l'ellipse en
// cours.
byte Pixel_dans_cercle(void);
// Indique si le pixel se trouvant Cercle_Curseur_X pixels
// (Cercle_Curseur_X>0 = … droite, Cercle_Curseur_X<0 = … gauche) et …
// Indique si le pixel se trouvant à Cercle_Curseur_X pixels
// (Cercle_Curseur_X>0 = à droite, Cercle_Curseur_X<0 = à gauche) et à
// Cercle_Curseur_Y pixels (Cercle_Curseur_Y>0 = en bas,
// Cercle_Curseur_Y<0 = en haut) du centre se trouve dans le cercle en
// cours.
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);
// 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;
} Config;
// Tableau des touches spciales
// Tableau des touches spéciales
GLOBAL word Config_Touche[NB_TOUCHES_SPECIALES];
GLOBAL struct S_Mode_video
struct S_Mode_video
{
short Largeur;
short Hauteur;
@ -71,7 +71,7 @@ GLOBAL struct S_Mode_video
word Facteur_X;
word Facteur_Y;
char Ratio[5];
signed char Refresh; // <0 => entrelac
signed char Refresh; // <0 => entrelacé
word Mode_VESA_de_base;
void * Pointeur;
byte Etat; // 0:Cool 1:OK ; 2:Bof ; 3:Naze ; si on rajoute +128 => incompatible
@ -81,16 +81,16 @@ GLOBAL struct S_Mode_video Mode_video[NB_MODES_VIDEO];
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 * WinFuncPtr;
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];
// Palette par dfaut
// Palette par défaut
GLOBAL T_Palette Palette_defaut;
@ -103,10 +103,10 @@ GLOBAL byte CM_Blanc;
GLOBAL byte CM_Trans;
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_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 word Touche;
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;
// Donnes sur le curseur
// Données sur le curseur
GLOBAL byte Forme_curseur;
GLOBAL byte Forme_curseur_avant_fenetre; // Forme du curseur avant l'ouverture d'une fenˆtre
GLOBAL byte Forcer_affichage_curseur; // Forcer l'affichage du curseur au prochain Get_input();
GLOBAL byte Cacher_curseur;
GLOBAL byte Curseur_dans_menu; // Boolen "Le curseur se trouve dans le menu"
GLOBAL byte Curseur_dans_menu_precedent; // Boolen "Le curseur se trouvait prcdemment dans le menu"
GLOBAL word Curseur_Decalage_X[NB_SPRITES_CURSEUR]; // Coordonnes 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 byte Curseur_dans_menu; // Booléen "Le curseur se trouve dans le menu"
GLOBAL byte Curseur_dans_menu_precedent; // Booléen "Le curseur se trouvait précédemment dans le menu"
GLOBAL word Curseur_Decalage_X[NB_SPRITES_CURSEUR]; // Coordonnées X du point sensible de curseurs en sprite
GLOBAL word Curseur_Decalage_Y[NB_SPRITES_CURSEUR]; // Coordonnées Y du point sensible de curseurs en sprite
GLOBAL byte SPRITE_CURSEUR[NB_SPRITES_CURSEUR][HAUTEUR_SPRITE_CURSEUR][LARGEUR_SPRITE_CURSEUR]; // Dessins des sprites de curseur
GLOBAL byte FOND_CURSEUR[HAUTEUR_SPRITE_CURSEUR][LARGEUR_SPRITE_CURSEUR]; // Contenu du dessous du curseur
// Donnes sur le pinceau
// Données sur le pinceau
GLOBAL byte Pinceau_Forme;
GLOBAL byte Pinceau_Forme_avant_fill;
@ -153,102 +153,102 @@ GLOBAL short Pinceau_Decalage_Y;
// 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_lecteur Lit_pixel; // Teste la couleur d'un pixel dans l'cran
GLOBAL fonction_effaceur Clear_screen; // Efface rapidement tout l'cran (en faisant attention de ne pas effacer le menu)
GLOBAL fonction_display Display_screen; // Affiche rapidement tout l'cran (en faisant attention de ne pas effacer le menu)
GLOBAL fonction_block Block; // Affiche rapidement un bloc … l'cran
GLOBAL fonction_afficheur Pixel_Preview_Normal; // Affiche un point de l'image … l'cran en mode normal (pas en mode loupe)
GLOBAL fonction_afficheur Pixel_Preview_Loupe; // Affiche un point de l'image … l'cran en mode loupe
GLOBAL fonction_afficheur Pixel_Preview; // Affiche un point de l'image … l'cran en fonction de l'tat du mode loupe
GLOBAL fonction_lecteur Lit_pixel; // Teste la couleur d'un pixel dans l'écran
GLOBAL fonction_effaceur Clear_screen; // Efface rapidement tout l'écran (en faisant attention de ne pas effacer le menu)
GLOBAL fonction_display Display_screen; // Affiche rapidement tout l'écran (en faisant attention de ne pas effacer le menu)
GLOBAL fonction_block Block; // Affiche rapidement un bloc … l'écran
GLOBAL fonction_afficheur Pixel_Preview_Normal; // Affiche un point de l'image … l'écran en mode normal (pas en mode loupe)
GLOBAL fonction_afficheur Pixel_Preview_Loupe; // Affiche un point de l'image … l'écran en mode loupe
GLOBAL fonction_afficheur Pixel_Preview; // Affiche un point de l'image … l'écran en fonction de l'état du mode loupe
GLOBAL fonction_Ligne_XOR Ligne_horizontale_XOR;// Affiche une ligne horizontale en XOR (pour placer la loupe)
GLOBAL fonction_Ligne_XOR Ligne_verticale_XOR; // Affiche une ligne verticale en XOR (pour placer la loupe)
GLOBAL fonction_display_brush_Color Display_brush_Color; // Affiche une partie de la brosse en couleur
GLOBAL fonction_display_brush_Mono Display_brush_Mono; // Affiche une partie de la brosse en monochrome
GLOBAL fonction_display_brush_Color Clear_brush; // Efface la partie de la brosse affiche … l'cran
GLOBAL fonction_remap Remap_screen; // Remappe une partie de l'cran avec les nouvelles couleurs du menu
GLOBAL fonction_display_brush_Color Clear_brush; // Efface la partie de la brosse affichée … l'écran
GLOBAL fonction_remap Remap_screen; // Remappe une partie de l'écran avec les nouvelles couleurs du menu
GLOBAL fonction_procsline Afficher_ligne; // Afficher une ligne
GLOBAL fonction_procsline Lire_ligne; // Afficher ou lire une ligne
GLOBAL fonction_display_zoom Display_zoomed_screen; // Affiche rapidement toute la partie 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_Mono_zoom Display_brush_Mono_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 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 Largeur_ecran; // Largeur de l'cran
GLOBAL short Hauteur_ecran; // Hauteur de l'cran
GLOBAL int Resolution_actuelle; // Résolution graphique courante
GLOBAL short Ecran_original_X; // |_ Dimensions de l'écran d'origine de
GLOBAL short Ecran_original_Y; // | l'image qui vient d'ˆtre chargée.
GLOBAL short Largeur_ecran; // Largeur de l'écran
GLOBAL short Hauteur_ecran; // Hauteur de l'écran
GLOBAL short Limite_Haut; // |
GLOBAL short Limite_Bas; // |_ Limites dans lesquelles
GLOBAL short Limite_Gauche; // | on peut crire
GLOBAL short Limite_Gauche; // | on peut écrire
GLOBAL short Limite_Droite; // |
GLOBAL short Limite_visible_Bas; // |_ Derniers points visibles
GLOBAL short Limite_visible_Droite; // | "… l'image"
GLOBAL short Limite_Haut_Zoom; // |
GLOBAL short Limite_Bas_Zoom; // |_ Limites dans lesquelles on peut
GLOBAL short Limite_Gauche_Zoom; // | crire dans la partie zoome
GLOBAL short Limite_Gauche_Zoom; // | écrire dans la partie zoomée
GLOBAL short Limite_Droite_Zoom; // |
GLOBAL short Limite_visible_Bas_Zoom; // |_ Derniers points visibles "…
GLOBAL short Limite_visible_Droite_Zoom; // | l'image" dans la partie 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
// Donnes sur l'image actuelle:
// Données sur l'image actuelle:
GLOBAL byte * Principal_Ecran; // Ecran virtuel courant
GLOBAL T_Palette Principal_Palette; // Palette de l'cran en cours
GLOBAL T_Palette Principal_Palette; // Palette de l'écran en cours
GLOBAL byte Principal_Image_modifiee; // L'image courante a t modifie
GLOBAL short Principal_Largeur_image; // Largeur de l'image dans laquelle l'utilisateur dsire travailler
GLOBAL short Principal_Hauteur_image; // Hauteur de l'image dans laquelle l'utilisateur dsire travailler
GLOBAL short Principal_Decalage_X; // Dcalage en X de l'cran par rapport au dbut de l'image
GLOBAL short Principal_Decalage_Y; // Dcalage en Y de l'cran par rapport au dbut de l'image
GLOBAL byte Principal_Image_modifiee; // L'image courante a été modifiée
GLOBAL short Principal_Largeur_image; // Largeur de l'image dans laquelle l'utilisateur désire travailler
GLOBAL short Principal_Hauteur_image; // Hauteur de l'image dans laquelle l'utilisateur désire travailler
GLOBAL short Principal_Decalage_X; // Décalage en X de l'écran par rapport au début de l'image
GLOBAL short Principal_Decalage_Y; // Décalage en Y de l'écran par rapport au début de l'image
GLOBAL short Ancien_Principal_Decalage_X;
GLOBAL short Ancien_Principal_Decalage_Y;
GLOBAL char Principal_Repertoire_fichier[256]; // |_ Nom complet =
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 short Principal_File_list_Position; // Dbut de la partie affiche dans la liste de fichiers
GLOBAL short Principal_File_list_Decalage; // Dcalage de la barre de slection dans le fileselector
GLOBAL char Principal_Repertoire_courant[256]; // Rpertoire actuel sur disque
GLOBAL short Principal_File_list_Position; // Début de la partie affichée dans la liste de fichiers
GLOBAL short Principal_File_list_Decalage; // Décalage de la barre de sélection dans le fileselector
GLOBAL char Principal_Repertoire_courant[256]; // Répertoire actuel sur disque
GLOBAL char Principal_Commentaire[TAILLE_COMMENTAIRE+1]; // Commentaire de l'image
GLOBAL short Principal_Split; // Position en X du bord gauche du split de la loupe
GLOBAL short Principal_X_Zoom; // (Menu_Facteur_X) + Position en X du bord droit du split de la loupe
GLOBAL float Principal_Proportion_split; // Proportion de la zone non-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 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 short Brouillon_Largeur_image; // Largeur du brouillon dans laquelle l'utilisateur dsire travailler
GLOBAL short Brouillon_Hauteur_image; // Hauteur du brouillon dans laquelle l'utilisateur dsire travailler
GLOBAL short Brouillon_Decalage_X; // Dcalage en X du brouillon par rapport au dbut de l'image
GLOBAL short Brouillon_Decalage_Y; // Dcalage en Y du brouillon par rapport au dbut de l'image
GLOBAL byte Brouillon_Image_modifiee; // Le brouillon a été modifié
GLOBAL short Brouillon_Largeur_image; // Largeur du brouillon dans laquelle l'utilisateur désire travailler
GLOBAL short Brouillon_Hauteur_image; // Hauteur du brouillon dans laquelle l'utilisateur désire travailler
GLOBAL short Brouillon_Decalage_X; // Décalage en X du brouillon par rapport au début de l'image
GLOBAL short Brouillon_Decalage_Y; // Décalage en Y du brouillon par rapport au début de l'image
GLOBAL short Ancien_Brouillon_Decalage_X;
GLOBAL short Ancien_Brouillon_Decalage_Y;
GLOBAL char Brouillon_Repertoire_fichier[256]; // |_ Nom complet =
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 short Brouillon_File_list_Position; // Dbut de la partie affiche dans la liste de fichiers
GLOBAL short Brouillon_File_list_Decalage; // Dcalage de la barre de slection dans le fileselector
GLOBAL char Brouillon_Repertoire_courant[256]; // Rpertoire actuel sur disque
GLOBAL short Brouillon_File_list_Position; // Début de la partie affichée dans la liste de fichiers
GLOBAL short Brouillon_File_list_Decalage; // Décalage de la barre de sélection dans le fileselector
GLOBAL char Brouillon_Repertoire_courant[256]; // Répertoire actuel sur disque
GLOBAL char Brouillon_Commentaire[TAILLE_COMMENTAIRE+1]; // Commentaire de l'image
GLOBAL short Brouillon_Split; // Position en X du bord gauche du split de la loupe
GLOBAL short Brouillon_X_Zoom; // (Menu_Facteur_X) + Position en X du bord droit du split de la loupe
GLOBAL float Brouillon_Proportion_split; // Proportion de la zone non-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 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:
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 * 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 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_Nom_fichier[13]; // |
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_Decalage; // | brosse.
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_Y; // | de la brosse
// Donnes sur le menu
// Données sur le menu
GLOBAL byte Menu_visible; // Le menu est actif … l'cran
GLOBAL word Menu_Ordonnee; // Ordonne o— commence le menu
GLOBAL word Menu_Ordonnee_Texte; // Ordonne o— commence le texte dans le menu
GLOBAL byte Menu_visible; // Le menu est actif … l'écran
GLOBAL word Menu_Ordonnee; // Ordonnée o— commence le menu
GLOBAL word Menu_Ordonnee_Texte; // Ordonnée o— commence le texte dans le menu
GLOBAL word Menu_Facteur_X; // Facteur de grossissement du menu en X
GLOBAL word Menu_Facteur_Y; // Facteur de grossissement du menu en Y
GLOBAL word Menu_Taille_couleur; // Taille d'une couleur de la palette du menu
// Donnes sur la fenˆtre de menu
// Données sur la fenˆtre de menu
GLOBAL byte Une_fenetre_est_ouverte;
GLOBAL word Fenetre_Pos_X; // Position du bord gauche de la fenˆtre dans l'cran
GLOBAL word Fenetre_Pos_Y; // Position du bord haut de la fenˆtre dans l'cran
GLOBAL word Fenetre_Pos_X; // Position du bord gauche de la fenˆtre dans l'écran
GLOBAL word Fenetre_Pos_Y; // Position du bord haut de la fenˆtre dans l'écran
GLOBAL word Fenetre_Largeur; // Largeur de la fenˆtre
GLOBAL word Fenetre_Hauteur; // Hauteur de la fenˆtre
GLOBAL byte Menu_visible_avant_fenetre; // Le menu tait visible avant d'ouvir une fenˆtre
GLOBAL word Menu_Ordonnee_avant_fenetre; // Ordonne 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 Menu_visible_avant_fenetre; // Le menu était visible avant d'ouvir une fenˆtre
GLOBAL word Menu_Ordonnee_avant_fenetre; // Ordonnée du menu avant d'ouvrir une fenˆtre
GLOBAL byte Cacher_pinceau_avant_fenetre;// Le pinceau étatit déj… caché avant l'ouverture de la fenetre?
GLOBAL word Nb_boutons_fenetre;
GLOBAL struct Fenetre_Bouton_normal * Fenetre_Liste_boutons_normal;
@ -321,33 +321,33 @@ GLOBAL int Fenetre_Attribut2;
// Dfinition des boutons ////////////////////////////////////////////////////
// Définition des boutons ////////////////////////////////////////////////////
GLOBAL struct
{
// Informations sur l'aspect du bouton (graphisme):
word Decalage_X; // Dcalage par rapport … la gauche du menu
word Decalage_Y; // Dcalage par rapport au haut du menu
word Decalage_X; // Décalage par rapport … la gauche du menu
word Decalage_Y; // Décalage par rapport au haut du menu
word Largeur; // Largeur du bouton
word Hauteur; // Hauteur du bouton
byte Enfonce; // Le bouton est enfonc
byte Enfonce; // Le bouton est enfoncé
byte Forme; // Forme du bouton
// Information sur les clicks de la souris:
fonction_action Gauche; // Action dclenche par un click gauche sur le bouton
fonction_action Droite; // Action dclenche par un click droit sur le bouton
word Raccourci_gauche; // Raccourci clavier quivalent … un click gauche sur le bouton
word Raccourci_droite; // Raccourci clavier quivalent … un click droit sur le bouton
fonction_action Gauche; // Action déclenchée par un click gauche sur le bouton
fonction_action Droite; // Action déclenchée par un click droit sur le bouton
word Raccourci_gauche; // Raccourci clavier équivalent … un click gauche sur le bouton
word Raccourci_droite; // Raccourci clavier équivalent … un click droit sur le bouton
// Informations sur le dsenclenchement du bouton gr par le moteur:
fonction_action Desenclencher; // Action appele lors du dsenclenchement du bouton
// Informations sur le désenclenchement du bouton géré par le moteur:
fonction_action Desenclencher; // Action appelée lors du désenclenchement du bouton
byte Famille; // Ensemble de boutons auquel celui-ci appartient
} Bouton[NB_BOUTONS];
// Informations sur les diffrents modes de dessin
// Informations sur les différents modes de dessin
GLOBAL fonction_effet Fonction_effet;
@ -357,8 +357,8 @@ GLOBAL byte Exclude_color[256]; // Couleurs
// Mode smear:
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_Mode; // Le mode smear est enclenché
GLOBAL byte Smear_Debut; // On vient juste de commencer une opération en Smear
GLOBAL byte * Smear_Brosse; // Sprite de la brosse de Smear
GLOBAL word Smear_Brosse_Largeur; // Largeur de la brosse de Smear
GLOBAL word Smear_Brosse_Hauteur; // Hauteur de la brosse de Smear
@ -367,24 +367,24 @@ GLOBAL short Smear_Min_X,Smear_Max_X,Smear_Min_Y,Smear_Max_Y; // Bornes de la Br
// Mode 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_gauche[256]; // Table de conversion de shade pour un clic gauche
GLOBAL byte Shade_Table_droite[256]; // Table de conversion de shade pour un clic droit
GLOBAL byte Shade_Mode; // Le mode shade est enclench
GLOBAL byte 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_Loop; // Normal / Loop / No sat.
// Mode stencil:
GLOBAL byte Stencil_Mode; // Le mode stencil est enclench
GLOBAL byte Stencil[256]; // Tableau des couleurs protges
GLOBAL byte Stencil_Mode; // Le mode stencil est enclenché
GLOBAL byte Stencil[256]; // Tableau des couleurs protégées
// Mode grille:
GLOBAL byte Snap_Mode; // Le mode grille est enclench
GLOBAL byte Snap_Mode; // Le mode grille est enclenché
GLOBAL short Snap_Largeur; // Largeur entre 2 points de la grille
GLOBAL short Snap_Hauteur; // Hauteur entre 2 points de la grille
GLOBAL short Snap_Decalage_X; // Position en X du point le + … gauche
@ -392,34 +392,34 @@ GLOBAL short Snap_Decalage_Y; // Position en Y du point le + en haut
// Mode trame:
GLOBAL byte Trame_Mode; // Le mode Trame est enclench
GLOBAL byte Trame_Mode; // Le mode Trame est enclenché
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_Hauteur; // Hauteur de la trame
// Mode colorize:
GLOBAL byte Colorize_Mode; // Le mode Colorize est enclench
GLOBAL byte Colorize_Opacite; // Intensit du Colorize
GLOBAL byte Colorize_Mode; // Le mode Colorize est enclenché
GLOBAL byte Colorize_Opacite; // Intensité du Colorize
GLOBAL byte Colorize_Mode_en_cours; // Le type de Colorize en cours (0-2)
GLOBAL word Table_de_multiplication_par_Facteur_A[64];
GLOBAL word Table_de_multiplication_par_Facteur_B[64];
// Mode smooth:
GLOBAL byte Smooth_Mode; // Le mode Smooth est enclench
GLOBAL byte Smooth_Mode; // Le mode Smooth est enclenché
GLOBAL byte Smooth_Matrice[3][3]; // La matrice du Smooth actuel
// Mode Tiling:
GLOBAL byte Tiling_Mode; // Le mode Tiling est enclench
GLOBAL short Tiling_Decalage_X; // Dcalage du tiling en X
GLOBAL short Tiling_Decalage_Y; // Dcalage du tiling en Y
GLOBAL byte Tiling_Mode; // Le mode Tiling est enclenché
GLOBAL short Tiling_Decalage_X; // Décalage du tiling en X
GLOBAL short Tiling_Decalage_Y; // Décalage du tiling en Y
// Mode Mask
GLOBAL byte Mask_Mode; // Le mode Masque est enclench
GLOBAL byte Mask_Mode; // Le mode Masque est enclenché
GLOBAL byte Mask[256]; // Tableau des couleurs constituant le masque
// Mode loupe:
@ -439,7 +439,7 @@ GLOBAL word TABLE_ZOOM[NB_FACTEURS_DE_ZOOM][512];
extern word FACTEUR_ZOOM[NB_FACTEURS_DE_ZOOM];
#endif
// Donnes sur les ellipses et les cercles:
// Données sur les ellipses et les cercles:
GLOBAL dword Table_des_carres[1025];
GLOBAL long Ellipse_Curseur_X;
@ -452,36 +452,36 @@ GLOBAL long Cercle_Curseur_X;
GLOBAL long Cercle_Curseur_Y;
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_Superieure; // Plus grande couleur englobe par le dgrad
GLOBAL int Degrade_Inverse; // Boolen "Le dgrad est en ralit invers"
GLOBAL short Degrade_Borne_Inferieure; // Plus petite couleur englobée par le dégradé
GLOBAL short Degrade_Borne_Superieure; // Plus grande couleur englobée par le dégradé
GLOBAL int Degrade_Inverse; // Booléen "Le dégradé est en réalité inversé"
GLOBAL long Degrade_Intervalle_bornes; // = Abs(Degrade_Borne_Inferieure-Degrade_Borne_Superieure)+1
GLOBAL long Degrade_Intervalle_total; // Valeur maximum des indices passs … la fonction de dgrad (!!! >0 !!!)
GLOBAL long Degrade_Melange_aleatoire; // Facteur de mlange (1-256+) du dgrad
GLOBAL fonction_degrade Traiter_degrade; // Fonction de traitement du dgrad, varie selon la mthode choisie par l'utilisateur.
GLOBAL long Degrade_Intervalle_total; // Valeur maximum des indices passés … la fonction de dégradé (!!! >0 !!!)
GLOBAL long Degrade_Melange_aleatoire; // Facteur de mélange (1-256+) du dégradé
GLOBAL fonction_degrade Traiter_degrade; // Fonction de traitement du dégradé, varie selon la méthode choisie par l'utilisateur.
GLOBAL fonction_afficheur Traiter_pixel_de_degrade; // Redirection de l'affichage
GLOBAL struct T_Degrade_Tableau Degrade_Tableau[16]; // Donnes de tous les dgrads
GLOBAL int Degrade_Courant; // Indice du tableau correspondant au dgrad courant
GLOBAL struct T_Degrade_Tableau Degrade_Tableau[16]; // Données de tous les dégradés
GLOBAL int Degrade_Courant; // Indice du tableau correspondant au dégradé courant
// Donnes sur le Spray:
// Données sur le Spray:
GLOBAL byte Spray_Mode; // Mode Mono(1) ou Multicolore(0)
GLOBAL short Spray_Size; // DiamŠtre du spray en pixels
GLOBAL byte Spray_Delay; // 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_Multi_flow[256]; // Idem pour chaque couleur
// Donnes diverses sur le programme:
// Données diverses sur le programme:
GLOBAL byte Sortir_du_programme;
GLOBAL char Repertoire_du_programme[256]; // Rpertoire dans lequel se trouve le programme
GLOBAL char Repertoire_initial[256]; // Rpertoire … partir duquel … t lanc le programme
GLOBAL char Repertoire_du_programme[256]; // Répertoire dans lequel se trouve le programme
GLOBAL char Repertoire_initial[256]; // Répertoire … partir duquel … été lancé le programme
GLOBAL byte Fore_color;
GLOBAL byte Back_color;
GLOBAL byte Mode_de_dessin_en_cours;
@ -489,7 +489,7 @@ GLOBAL byte Courbe_en_cours;
GLOBAL byte Ligne_en_cours;
GLOBAL byte Couleur_debut_palette;
GLOBAL byte Un_fichier_a_ete_passe_en_parametre;
GLOBAL byte Une_resolution_a_ete_passee_en_parametre; // 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
@ -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_edi;
// 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_WinFuncPtr; // Handler software de changement de banque
GLOBAL word * VESA_Liste_des_modes;
@ -529,7 +529,7 @@ GLOBAL byte VESA_Version_Decimale;
GLOBAL char VESA_Constructeur[TAILLE_NOM_CONSTRUCTEUR+1];
GLOBAL word VESA_Taille_memoire;
// Les diffrents sprites:
// Les différents sprites:
GLOBAL byte BLOCK_MENU[HAUTEUR_MENU][LARGEUR_MENU];
GLOBAL byte SPRITE_MENU[NB_SPRITES_MENU][HAUTEUR_SPRITE_MENU][LARGEUR_SPRITE_MENU];
@ -542,19 +542,19 @@ GLOBAL byte Fonte_fun [256*8*8];
GLOBAL byte Fonte_help [315][6][8];
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 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_en_cours; // Nø de l'opration en cours
GLOBAL word Operation_Pile[TAILLE_PILE_OPERATIONS]; // Pile simplifie
GLOBAL word Operation_avant_interruption; // Nø de l'opération en cours avant l'utilisation d'une interruption
GLOBAL word Operation_en_cours; // Nø de l'opération en cours
GLOBAL word Operation_Pile[TAILLE_PILE_OPERATIONS]; // Pile simplifiée
GLOBAL byte Operation_Taille_pile; // Taille effective de la pile (0=vide)
GLOBAL byte Operation_dans_loupe; // Indique si l'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_X;
@ -568,8 +568,8 @@ GLOBAL short Pipette_Y;
FORME_CURSEUR_CIBLE , // Dessin … la main discontinu
FORME_CURSEUR_CIBLE , // Dessin … la main point par point
FORME_CURSEUR_CIBLE , // Lignes
FORME_CURSEUR_CIBLE , // Lignes relies
FORME_CURSEUR_CIBLE , // Lignes centres
FORME_CURSEUR_CIBLE , // Lignes reliées
FORME_CURSEUR_CIBLE , // Lignes centrées
FORME_CURSEUR_CIBLE_XOR , // Rectangle vide
FORME_CURSEUR_CIBLE_XOR , // Rectangle plein
FORME_CURSEUR_CIBLE , // Cercles vides
@ -580,7 +580,7 @@ GLOBAL short Pipette_Y;
FORME_CURSEUR_CIBLE , // Remplacer
FORME_CURSEUR_CIBLE_XOR , // Prise de brosse rectangulaire
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_CIBLE , // Courbe … 3 points
FORME_CURSEUR_CIBLE , // Courbe … 4 points
@ -590,8 +590,8 @@ GLOBAL short Pipette_Y;
FORME_CURSEUR_CIBLE , // Polyfill
FORME_CURSEUR_CIBLE , // Polyforme rempli
FORME_CURSEUR_MULTIDIRECTIONNEL, // Scroll
FORME_CURSEUR_CIBLE , // Cercles dgrads
FORME_CURSEUR_CIBLE , // Ellipses dgrades
FORME_CURSEUR_CIBLE , // Cercles dégradés
FORME_CURSEUR_CIBLE , // Ellipses dégradées
FORME_CURSEUR_ROTATE_XOR , // Faire tourner brosse
FORME_CURSEUR_CIBLE_XOR , // Etirer brosse
FORME_CURSEUR_CIBLE // Deformer brosse
@ -601,12 +601,12 @@ GLOBAL short Pipette_Y;
#endif
// Procdures … appeler: Opration,Mouse_K,Etat de la pile
// Procédures … appeler: Opération,Mouse_K,Etat de la pile
GLOBAL struct
{
byte Effacer_curseur; // Boolen "il faut effacer le curseur pour l'opra."
fonction_action Action; // Action appele
byte Effacer_curseur; // Booléen "il faut effacer le curseur pour l'opéra."
fonction_action Action; // Action appelée
} Operation[NB_OPERATIONS][3][TAILLE_PILE_OPERATIONS];
@ -620,11 +620,11 @@ GLOBAL byte SPRITE_DRIVE[NB_SPRITES_DRIVES][HAUTEUR_SPRITE_DRIVE][LARGEUR_SPRITE
// -- 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_fichiers;
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;
// ------------------- Inititialisation des formats connus -------------------
@ -650,7 +650,7 @@ void Rien_du_tout(void);
"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]=
{
Test_PKM, // PKM
@ -701,7 +701,7 @@ void Rien_du_tout(void);
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]=
{
1, // PKM
@ -743,9 +743,9 @@ void Rien_du_tout(void);
extern byte Format_Commentaire[NB_FORMATS_CONNUS];
#endif
GLOBAL signed char Erreur_fichier; // 0: opration I/O OK
// 1: Erreur dŠs le dbut de l'opration
// 2: Erreur durant l'opration => donnes modifies
GLOBAL signed char Erreur_fichier; // 0: opération I/O OK
// 1: Erreur dŠs le début de l'opération
// 2: Erreur durant l'opération => données modifiées
//-1: Interruption du chargement d'une preview
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);
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_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 Effacer_pinceau(short X,short Y);

92
init.c
View File

@ -20,11 +20,11 @@
#include <stdlib.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":
void Erreur(int Code);
// Chercher le rpertoire contenant GFX2.EXE
// Chercher le répertoire contenant GFX2.EXE
void Chercher_repertoire_du_programme(char * Chaine)
{
int Position;
@ -81,8 +81,8 @@ void Rechercher_drives(void)
byte Lecteur;
byte Nb_lecteurs_disquettes;
byte Lecteur_de_disquettes;
byte Type_de_lecteur;
char Bidon[256];
byte Type_de_lecteur=42;
//char Bidon[256];
Nb_drives=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))
{
// 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;
for (Lecteur=0; Lecteur<=1; Lecteur++)
{
@ -125,7 +125,7 @@ void Rechercher_drives(void)
}
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;
// 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)
{
// 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(1,DRIVE_NETWORK);
}
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(1,Type_de_lecteur);
}
}
}
else
// Il n'y a pas de lecteur de D7 physique, mais on vrifie s'il n'y en a
// pas qui seraient muls par SUBST
// Il n'y a pas de lecteur de D7 physique, mais on vérifie s'il n'y en a
// pas qui seraient émulés par SUBST
for (Lecteur=0; Lecteur<=1; Lecteur++)
{
switch (Freespace(Lecteur+1))
@ -173,8 +173,8 @@ void Rechercher_drives(void)
}
}
// Test de la prsence d'autres lecteurs (HDD, CD, Rseau)
// On les met tous en rseau avant de tester leur vrai type.
// Test de la présence d'autres lecteurs (HDD, CD, Réseau)
// On les met tous en réseau avant de tester leur vrai type.
for (Lecteur=2; Lecteur<=25; Lecteur++)
{
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
byte Decrypt_compteur=0;
@ -206,7 +206,7 @@ void Rechercher_drives(void)
return Temp;
}
// Dcryptage d'une donne
// Décryptage d'une donnée
void Decrypte(byte * Donnee,int Taille)
{
@ -228,7 +228,7 @@ void Charger_DAT(void)
byte Pos_Y;
word Mot_temporaire;
struct stat* Informations_Fichier;
struct stat* Informations_Fichier=NULL;
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)
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)!=
LARGEUR_SPRITE_MENU*HAUTEUR_SPRITE_MENU*NB_SPRITES_EFFETS)
@ -311,12 +311,12 @@ void Charger_DAT(void)
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))
Erreur(ERREUR_DAT_CORROMPU);
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:
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:
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)
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)))
Erreur(ERREUR_MEMOIRE);
@ -619,7 +619,7 @@ void Initialisation_des_boutons(void)
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,
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,
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)
{
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 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 (Bouton=0;Bouton<3;Bouton++)
@ -991,7 +991,7 @@ void Initialisation_des_operations(void)
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,
Freehand_Mode1_1_0,1);
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,
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)
{ // Numero LargHaut Mode FXFY Ratio Ref Vesa Pointeur
@ -1485,8 +1485,8 @@ word Ordonnancement[NB_TOUCHES]=
0x200+BOUTON_SPRAY, // Spray menu
0x100+BOUTON_FLOODFILL, // Floodfill
0x200+BOUTON_FLOODFILL, // Replace color
0x100+BOUTON_COURBES, // Bzier's curves
0x200+BOUTON_COURBES, // Bzier's curve with 3 or 4 points
0x100+BOUTON_COURBES, // Bézier's curves
0x200+BOUTON_COURBES, // Bézier's curve with 3 or 4 points
0x100+BOUTON_RECTANGLES, // Empty rectangle
0x100+BOUTON_FILLRECT, // Filled rectangle
0x100+BOUTON_CERCLES, // Empty circle
@ -1585,7 +1585,7 @@ word Ordonnancement[NB_TOUCHES]=
SPECIAL_PREVIOUS_USER_FORECOLOR, // Previous user-defined foreground color
SPECIAL_NEXT_USER_BACKCOLOR, // Next 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
};
@ -1623,8 +1623,8 @@ byte Numero_option[NB_TOUCHES]=
29, // Spray menu
30, // Floodfill
124, // Replace color
31, // Bzier's curves
32, // Bzier's curve with 3 or 4 points
31, // Bézier's curves
32, // Bézier's curve with 3 or 4 points
33, // Empty rectangle
34, // Filled rectangle
35, // Empty circle
@ -1723,7 +1723,7 @@ byte Numero_option[NB_TOUCHES]=
127, // Previous user-defined foreground color
128, // Next user-defined background color
129, // Previous user-defined background color
121, // Rtrcir le pinceau
121, // Rétrécir le pinceau
122 // Grossir le pinceau
};
@ -1738,7 +1738,7 @@ int Charger_CFG(int Tout_charger)
struct Config_Chunk Chunk;
struct Config_Infos_touche CFG_Infos_touche;
struct Config_Mode_video CFG_Mode_video;
struct stat* Informations_Fichier;
struct stat* Informations_Fichier=NULL;
strcpy(Nom_du_fichier,Repertoire_du_programme);
@ -1802,7 +1802,7 @@ int Charger_CFG(int Tout_charger)
goto Erreur_lecture_config;
}
break;
case CHUNK_MODES_VIDEO: // Modes vido
case CHUNK_MODES_VIDEO: // Modes vidéo
if ((Chunk.Taille/sizeof(CFG_Mode_video))!=NB_MODES_VIDEO)
goto Erreur_lecture_config;
for (Indice=1; Indice<=NB_MODES_VIDEO; Indice++)
@ -1868,7 +1868,7 @@ int Charger_CFG(int Tout_charger)
goto Erreur_lecture_config;
}
break;
case CHUNK_DEGRADES: // Infos sur les dgrads
case CHUNK_DEGRADES: // Infos sur les dégradés
if (Tout_charger)
{
if (read(Handle,&Degrade_Courant,1)!=1)
@ -1944,7 +1944,7 @@ int Sauver_CFG(void)
{
int Handle;
int Indice;
byte Octet;
//byte Octet;
char Nom_du_fichier[256];
struct Config_Header CFG_Header;
struct Config_Chunk Chunk;
@ -1986,7 +1986,7 @@ int Sauver_CFG(void)
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.Taille=NB_MODES_VIDEO*sizeof(CFG_Mode_video);
if (write(Handle,&Chunk,sizeof(Chunk))!=sizeof(Chunk))
@ -2000,7 +2000,7 @@ int Sauver_CFG(void)
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.Taille=sizeof(Shade_Liste)+sizeof(Shade_Actuel);
if (write(Handle,&Chunk,sizeof(Chunk))!=sizeof(Chunk))
@ -2026,7 +2026,7 @@ int Sauver_CFG(void)
if (write(Handle,Stencil,sizeof(Stencil))!=sizeof(Stencil))
goto Erreur_sauvegarde_config;
// Sauvegarde des informations des dgrads
// Sauvegarde des informations des dégradés
Chunk.Numero=CHUNK_DEGRADES;
Chunk.Taille=sizeof(Degrade_Tableau)+1;
if (write(Handle,&Chunk,sizeof(Chunk))!=sizeof(Chunk))
@ -2104,11 +2104,11 @@ void Initialiser_la_table_precalculee_des_distances_de_couleur(void)
{
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)
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++)
{
if (Indice<64)

View File

@ -15,3 +15,8 @@ void _splitpath(char* Buffer, char* Chemin, char* Nom_Fichier)
Chemin[i]=0;
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];
};
int filelength(char *);
#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_preview (short Pos_X,short Pos_Y,byte Couleur);
void Pixel_Chargement_dans_brosse (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 (word Pos_X,word 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);

116
main.c
View File

@ -22,10 +22,10 @@
#include "loadsave.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)
{
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)
{
case 1 : // Mode par dfaut
case 1 : // Mode par défaut
Resolution_actuelle=Config.Resolution_par_defaut;
break;
@ -199,9 +199,9 @@ void Analyse_de_la_ligne_de_commande(int argc,char * argv[])
Un_fichier_a_ete_passe_en_parametre=1;
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);
// 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);
// chdir(Principal_Repertoire_fichier);
}
@ -223,7 +223,7 @@ void Analyse_de_la_ligne_de_commande(int argc,char * argv[])
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) )
Erreur(ERREUR_NUMERO_MODE);
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 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);
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
// invalide lors des appels aux multiples fonctions manipules …
// invalide lors des appels aux multiples fonctions manipulées …
// l'initialisation du programme.
Principal_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(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
// dsignes au dmarrage (couleurs du menu, ...)
// désignées au démarrage (couleurs du menu, ...)
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]);
// On dtecte les lecteurs qui sont accessibles:
// On détecte les lecteurs qui sont accessibles:
Rechercher_drives();
// On dtermine le rpertoire courant:
// On détermine le répertoire 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);
// 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_Nom_fichier,"NO_NAME.PKM");
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_fichier,Principal_Repertoire_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;
// 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
Principal_File_list_Position=0; // Au dbut, 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
Liste_du_fileselect=NULL; // Au début, il n'y a pas de fichiers dans la liste
Principal_File_list_Position=0; // Au début, 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;
Brouillon_File_list_Position=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_Y=0;
// On initialise tous les modes vido
// On initialise tous les modes vidéo
Definition_des_modes_video();
// On initialise les donnes sur l'tat du programme:
// Donne sur la sortie du programme:
// On initialise les données sur l'état du programme:
// Donnée sur la sortie du programme:
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;
Menu_visible=1;
// Donnes sur les couleurs et la palette:
// Données sur les couleurs et la palette:
Fore_color=15;
Back_color=0;
Couleur_debut_palette=0;
// Donnes sur le curseur:
// Données sur le curseur:
Forme_curseur=FORME_CURSEUR_CIBLE;
Cacher_curseur=0;
// Donnes sur le pinceau:
// Données sur le pinceau:
Pinceau_X=0;
Pinceau_Y=0;
Pinceau_Forme=FORME_PINCEAU_ROND;
@ -362,10 +362,10 @@ void Initialisation_du_programme(int argc,char * argv[])
Forcer_affichage_curseur=0;
// On initialise la table des carrs:
// On initialise la table des carrés:
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;
Mode_de_dessin_en_cours=OPERATION_DESSIN_CONTINU;
Ligne_en_cours =OPERATION_LIGNE;
@ -385,10 +385,10 @@ void Initialisation_du_programme(int argc,char * argv[])
// On initialise les infos du mode smooth:
Smooth_Mode=0;
// 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
// On initialise les infos sur les dgrads:
Traiter_pixel_de_degrade =Afficher_pixel; // Les autres infos sont charges avec la config
// On initialise les infos sur les dégradés:
Traiter_pixel_de_degrade =Afficher_pixel; // Les autres infos sont chargées avec la config
// On initialise les infos de la grille:
Snap_Mode=0;
Snap_Largeur=8;
@ -396,12 +396,12 @@ void Initialisation_du_programme(int argc,char * argv[])
Snap_Decalage_X=0;
Snap_Decalage_Y=0;
// On initialise les infos du mode Colorize:
Colorize_Mode=0; // Mode colorize inactif par dfaut
Colorize_Opacite=50; // Une interpolation de 50% par dfaut
Colorize_Mode_en_cours=0; // Par dfaut, la mthode par interpolation
Colorize_Mode=0; // Mode colorize inactif par défaut
Colorize_Opacite=50; // Une interpolation de 50% par défaut
Colorize_Mode_en_cours=0; // Par défaut, la méthode par interpolation
Calculer_les_tables_de_Colorize();
// 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).
// On initialise les infos du mode Mask:
Mask_Mode=0;
@ -414,17 +414,17 @@ void Initialisation_du_programme(int argc,char * argv[])
memset(Spray_Multi_flow,0,256);
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();
// Passer en clavier amricain
// Passer en clavier américain
Clavier_americain();
// Tester la prsence de la souris
// Tester la présence de la souris
if (!Detection_souris()) Erreur(ERREUR_DRIVER_SOURIS);
// Initialisation des boutons
Initialisation_des_boutons();
// Initialisation des oprations
// Initialisation des opérations
Initialisation_des_operations();
Une_fenetre_est_ouverte=0;
@ -459,7 +459,7 @@ void Initialisation_du_programme(int argc,char * argv[])
Trame_Mode=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);
// Prise en compte de la fonte
@ -468,7 +468,7 @@ void Initialisation_du_programme(int argc,char * argv[])
else
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 (!(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_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);
//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;
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);
Principal_Largeur_image=Largeur_ecran;
@ -514,12 +514,12 @@ void Initialisation_du_programme(int argc,char * argv[])
Brouillon_Largeur_image=Largeur_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)
Erreur(ERREUR_MEMOIRE);
// On remet le nom par dfaut pour la page de brouillon car il t modifi
// par le passage d'un fichier en paramŠtre lors du traitement prcdent.
// 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 précédent.
// 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-
// -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;
}
// 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);
// Initialisation de diverses variables par calcul:
@ -543,13 +543,13 @@ void Initialisation_du_programme(int argc,char * argv[])
Afficher_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();
Brouillon_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);
// 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
free(Buffer_de_ligne_horizontale);
// On libŠre le pinceau spcial
// On libŠre le pinceau spécial
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);
// On libŠre les diffrents crans virtuels et brosse:
// On libŠre les différents écrans virtuels et brosse:
free(Brosse);
Nouveau_nombre_de_backups(0);
free(Brouillon_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++)
free(Table_d_aide[Bidon].Debut_de_la_liste);
Passer_en_mode_texte(Ancien_nb_lignes);
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)
{
/* A revoir ...
_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)
{
Retour=Sauver_CFG();
@ -609,7 +609,7 @@ void Fermeture_du_programme(void)
}
// -------------------------- Procdure principale ---------------------------
// -------------------------- Procédure principale ---------------------------
int main(int argc,char * argv[])
{
Initialisation_du_programme(argc,argv);
@ -620,7 +620,7 @@ int main(int argc,char * argv[])
if (Un_fichier_a_ete_passe_en_parametre)
{
Bouton_reload();
Bouton_Reload();
Une_resolution_a_ete_passee_en_parametre=0;
}

View File

@ -1,59 +1,51 @@
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
wlink @make.inc
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
$(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
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
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
video.o : global.h const.h video.c
$(ASMC) $(ASMOPT) video.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
$(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
$(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
$(CC) $(COPT) palette
$(CC) $(COPT) palette.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
$(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
$(CC) $(COPT) operatio
$(CC) $(COPT) operatio.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
$(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
$(CC) $(COPT) loadsave
$(CC) $(COPT) loadsave.c
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
$(ASMC) $(ASMOPT) dpmi
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
sdlscreen.o : sdlscreen.c sdlscreen.h
$(CC) $(COPT) sdlscreen.c

2
op_c.c
View File

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

278
pages.c
View File

@ -11,7 +11,7 @@
#include "pages.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":
void Erreur(int Code);
@ -53,7 +53,7 @@ void Initialiser_S_Page(S_Page * Page)
void Download_infos_page_principal(S_Page * Page)
{
int Indice_facteur;
//int Indice_facteur;
int Dimensions_modifiees;
if (Page!=NULL)
@ -73,7 +73,7 @@ void Download_infos_page_principal(S_Page * Page)
Principal_Decalage_X=Page->Decalage_X;
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) &&
(Principal_Decalage_X+Largeur_ecran>Principal_Largeur_image) )
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)
{
// 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.
/* 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);
// On vrifie que l'allocation se soit bien passe
// On vérifie que l'allocation se soit bien passée
if (Page->Image==NULL)
return 0; // Echec
else
{
Page->Largeur=Largeur;
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.
return 1; // SuccŠs
return 1; // Succès
}
}
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)
free(Page->Image);
Page->Image=NULL;
Page->Largeur=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)
@ -255,9 +255,9 @@ int Taille_d_une_page(S_Page * Page)
{
return sizeof(S_Page)+(Page->Largeur*Page->Hauteur)+8;
// 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
// 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)
{
// Important: la S_Liste_de_pages ne doit pas dj… dsigner une liste de
// pages alloue auquel cas celle-ci serait perdue.
// Important: la S_Liste_de_pages ne doit pas déjà désigner une liste de
// pages allouée auquel cas celle-ci serait perdue.
int Indice;
/* 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));
// On vrifie que l'allocation se soit bien passe
// On vérifie que l'allocation se soit bien passée
if (Liste->Pages==NULL)
return 0; // Echec
else
@ -297,16 +297,16 @@ int Allouer_une_liste_de_pages(S_Liste_de_pages * Liste,int Taille)
Liste->Taille_liste=Taille;
Liste->Nb_pages_allouees=0;
return 1; // SuccŠs
return 1; // Succès
}
}
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
// donc le faire pralablement si ncessaire.
// Important: cette fonction ne libère pas les pages de la liste. Il faut
// donc le faire préalablement si nécessaire.
if (Liste->Pages!=NULL)
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;
// 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)
@ -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=Page courante
// ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ |_ 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º |
// ÈÍÊÍÏÍÏÍÏÍÏÍÏÍÏÍÏÍÏÍÏͼ |
// Pour simuler un vritable Undo, l'appelant doit mettre la structure
// de page courante … jour avant l'appel, puis en rextraire les infos en
// sortie, ainsi que celles relatives … la plus rcente page d'undo (1Šre
// Pour simuler un véritable Undo, l'appelant doit mettre la structure
// de page courante à jour avant l'appel, puis en réextraire les infos en
// sortie, ainsi que celles relatives à la plus récente page d'undo (1ère
// page de la liste).
int Indice;
@ -351,22 +351,22 @@ void Reculer_dans_une_liste_de_pages(S_Liste_de_pages * Liste)
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));
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);
// 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++)
Copier_S_page(Liste->Pages+Indice-1,Liste->Pages+Indice);
// On copie la page 0 (dont la sauvegarde a t effectue dans la page
// temporaire) en derniŠre position
// On copie la page 0 (dont la sauvegarde a été effectuée dans la page
// temporaire) en dernière position
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);
}
}
@ -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=Page courante
// ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ |_ 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º |
// ÈÍÊÍÏÍÏÍÏÍÏÍÏÍÏÍÏÍÏÍÏͼ |
// Pour simuler un vritable Redo, l'appelant doit mettre la structure
// de page courante … jour avant l'appel, puis en rextraire les infos en
// sortie, ainsi que celles relatives … la plus rcente page d'undo (1Šre
// Pour simuler un véritable Redo, l'appelant doit mettre la structure
// de page courante à jour avant l'appel, puis en réextraire les infos en
// sortie, ainsi que celles relatives à la plus récente page d'undo (1ère
// page de la liste).
int Indice;
@ -394,22 +394,22 @@ void Avancer_dans_une_liste_de_pages(S_Liste_de_pages * Liste)
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));
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);
// 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--)
Copier_S_page(Liste->Pages+Indice,Liste->Pages+Indice-1);
// On copie la page plus ancienne page (la "A", dont la sauvegarde a t
// effectue dans la page temporaire) en 1Šre position
// On copie la page plus ancienne page (la "A", dont la sauvegarde a été
// effectuée dans la page temporaire) en 1ère position
Copier_S_page(Liste->Pages,Page_tempo);
// On dtruit la page tempo
// On détruit la 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);
// 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+
Taille_liste_brouillon-Taille_page_brouillon)<(2*Taille_nouvelle_page))
return 0;
// 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
// la page courante. (pour permettre l'utilisateur de travailler sur son
// la page courante. (pour permettre à l'utilisateur de travailler sur son
// brouillon)
if ((Taille_immediatement_disponible+Taille_liste_courante+
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)
{
// 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
// … 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.
// Il est impratif que la cration de cette page soit possible,
// ventuellement au dtriment des backups de la page de brouillon
// (Liste_secondaire). Afin de s'en assurer, il faut vrifier cette
// possibilit l'aide de
// Il est impératif que la création de cette page soit possible,
// éventuellement au détriment des backups de la page de brouillon
// (Liste_secondaire). Afin de s'en assurer, il faut vérifier cette
// possibilité à l'aide de
// 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.
int Il_faut_liberer;
S_Liste_de_pages * Liste_a_raboter;
S_Liste_de_pages * Liste_a_raboter=NULL;
S_Page * Page_a_supprimer;
int Indice;
// On regarde s'il faut librer des pages:
// On regarde s'il faut libérer des pages:
Il_faut_liberer=
// C'est le cas si la Liste_courante est pleine
( (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)
{
// 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.
Nouvelle_page->Image=(byte *)malloc(Nouvelle_page->Hauteur*Nouvelle_page->Largeur);
}
else
{
// On manque de mmoire ou la Liste_courante est pleine. Dans tous les
// cas, il faut librer une page... qui peut-ˆtre pourra re-servir.
// On manque de mémoire ou la Liste_courante est pleine. Dans tous les
// 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)
{
// 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)
// 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;
else
{
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_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)
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))
{
// Alors
// On rcupŠre le bitmap de la page … supprimer (vite de faire des
// allocations/dsallocations fastidieuses et inutiles)
// On récupère le bitmap de la page à supprimer (vite de faire des
// allocations/désallocations fastidieuses et inutiles)
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--;
// 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
Il_faut_liberer=0;
}
@ -547,10 +547,10 @@ void Creer_nouvelle_page(S_Page * Nouvelle_page,S_Liste_de_pages * Liste_courant
{
// 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);
// 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)
<(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
// on a assez de mmoire pour allouer la nouvelle page.
// Dsormais Nouvelle_page contient un pointeur sur une zone bitmap valide.
// D'après l'hypothèse de départ, la boucle ci-dessus doit s'arrˆter car
// on a assez de mémoire pour allouer la nouvelle page.
// 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--)
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);
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;
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)
// Alors il n'y a rien faire
// Alors il n'y a rien à faire
return;
// Si la liste contient plus de pages que souhait
// Si la liste contient plus de pages que souhaité
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++)
// On libŠre la page
// On libère la page
Liberer_une_page(Liste->Pages+Indice);
// 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++)
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++)
Copier_S_page(Nouvelles_pages+Indice,Liste->Pages+Indice);
// On libŠre l'ancienne liste
// On libère l'ancienne liste
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->Taille_liste=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)
{
// 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.
if (Liste->Nb_pages_allouees>1)
{
// On fait faire un undo la liste, comme ‡a, la nouvelle page courante
// est la page prcdente
// On fait faire un undo à la liste, comme ‡a, la nouvelle page courante
// est la page précédente
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);
}
}
@ -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
// (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;
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) &&
Allouer_une_liste_de_pages(Brouillon_Backups,Taille))
{
// On a russi … allouer deux listes de pages dont la taille correspond …
// celle demande par l'utilisateur.
// On a réussi à allouer deux listes de pages dont la taille correspond à
// 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));
Initialiser_S_Page(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->Hauteur=Hauteur;
// On regarde si on peut ajouter cette page
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);
Download_infos_page_principal(Page);
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.
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
{
// Il n'est pas possible de dmarrer le programme avec la page
// principale et la page de brouillon aux dimensions demande par
// Il n'est pas possible de démarrer le programme avec la page
// principale et la page de brouillon aux dimensions demandée par
// l'utilisateur. ==> On l'envoie ballader
Retour=0;
}
}
else
{
// On ne peut pas dmarrer le programme avec ne serait-ce qu'une page
// de la dimension souhaite, donc on laisse tout tomber et on le
// On ne peut pas démarrer le programme avec ne serait-ce qu'une page
// de la dimension souhaitée, donc on laisse tout tomber et on le
// renvoie chier.
Retour=0;
}
}
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
// avorter le chargement du programme.
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)
{
// 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
while (Principal_Backups->Nb_pages_allouees>0)
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)
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(Brouillon_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(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.
// (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;
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)
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));
Initialiser_S_Page(Nouvelle_page);
@ -760,7 +760,7 @@ int Backup_avec_nouvelles_dimensions(int Upload,int Largeur,int Hauteur)
Retour=1;
}
// On dtruit le descripteur de la page courante
// On détruit le descripteur de la page courante
free(Nouvelle_page);
return Retour;
@ -774,11 +774,11 @@ int Backuper_et_redimensionner_brouillon(int Largeur,int Hauteur)
S_Page * Nouvelle_page;
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)
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));
Initialiser_S_Page(Nouvelle_page);
@ -792,7 +792,7 @@ int Backuper_et_redimensionner_brouillon(int Largeur,int Hauteur)
Retour=1;
}
// On dtruit le descripteur de la page courante
// On détruit le descripteur de la page courante
free(Nouvelle_page);
return Retour;
@ -802,11 +802,11 @@ void Backup(void)
{
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)
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));
Initialiser_S_Page(Nouvelle_page);
@ -819,7 +819,7 @@ void Backup(void)
// On copie l'image du backup vers la page courante:
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);
// On allume l'indicateur de modification de l'image
@ -828,10 +828,10 @@ void Backup(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)
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);
// On extrait ensuite les infos sur la nouvelle page courante
@ -840,16 +840,16 @@ void Undo(void)
Download_infos_backup(Principal_Backups);
// 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
// n'est pas utilis la suite d'un Undo. Donc ‡a ne devrait pas
// poser de problŠmes.
// n'est pas utilisé à la suite d'un Undo. Donc ‡a ne devrait pas
// poser de problèmes.
}
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)
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);
// On extrait ensuite les infos sur la nouvelle page courante
@ -858,13 +858,13 @@ void Redo(void)
Download_infos_backup(Principal_Backups);
// 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
// n'est pas utilis la suite d'un Redo. Donc ‡a ne devrait pas
// poser de problŠmes.
// n'est pas utilisé à la suite d'un Redo. Donc ‡a ne devrait pas
// poser de problèmes.
}
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);
// On extrait ensuite les infos sur la nouvelle page courante
Download_infos_page_principal(Principal_Backups->Pages);
@ -872,16 +872,16 @@ void Detruire_la_page_courante(void)
Download_infos_backup(Principal_Backups);
// 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
// n'est pas utilis la suite d'une destruction de page. Donc ‡a ne
// devrait pas poser de problŠmes.
// n'est pas utilisé à la suite d'une destruction de page. Donc ‡a ne
// devrait pas poser de problèmes.
}
void Interchanger_image_principale_et_brouillon(void)
{
S_Liste_de_pages * Liste_tempo;
// 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
// 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
// vieilles valeurs qui datent de mathuzalem.
Upload_infos_page_principal(Principal_Backups->Pages);
Upload_infos_page_brouillon(Brouillon_Backups->Pages);
@ -895,8 +895,8 @@ void Interchanger_image_principale_et_brouillon(void)
// et backup.
/* SECTION GROS CACA PROUT PROUT */
// Auparavant on ruse en mettant dj… … jour les dimensions de la
// nouvelle page courante. Si on ne le fait pas, le "Download" va dtecter
// Auparavant on ruse en mettant déjà à jour les dimensions de la
// 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
// que lors d'un changement de page, on veut bien conserver l'tat du mode
// 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_brouillon =Taille_d_une_page(Brouillon_Backups->Pages);
// Il faut pouvoir loger la zone mmoire ainsi qu'un exemplaire de la page
// courante, en conservant au pire la 1Šre page de brouillon.
// 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.
if ((Taille_immediatement_disponible
+Taille_liste_courante
+Taille_liste_brouillon
@ -940,60 +940,60 @@ void * Emprunter_memoire_de_page(int taille)
int Il_faut_liberer;
S_Liste_de_pages * Liste_a_raboter;
S_Page * Page_a_supprimer;
int Indice;
//int Indice;
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=
(Memoire_libre()-QUANTITE_MINIMALE_DE_MEMOIRE_A_CONSERVER)<taille;
if (!Il_faut_liberer)
{
// 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);
}
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)
{
// 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)
// 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
Liste_a_raboter=Brouillon_Backups;
else
{
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_a_raboter=Principal_Backups;
}
else
{
// Dans cette branche, il tait prvu qu'on obtienne la mmoire
// ncessaire mais on n'arrive pas … la trouver. On indique donc
// Dans cette branche, il était prévu qu'on obtienne la mémoire
// nécessaire mais on n'arrive pas à la trouver. On indique donc
// qu'elle n'est pas disponible, et on aura perdu des backups
// pour rien
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)
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);
// 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)<taille;
@ -1006,8 +1006,8 @@ void * Emprunter_memoire_de_page(int taille)
}
else
{
// Il n'y a pas assez de place pour allouer la mmoire temporaire dans
// la mmoire rserve aux pages.
// Il n'y a pas assez de place pour allouer la mémoire temporaire dans
// la mémoire réservée aux pages.
return 0;
}

120
readini.c
View File

@ -48,9 +48,9 @@ void Charger_INI_Clear_string(char * String)
}
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++;
}
}
@ -63,22 +63,22 @@ int Charger_INI_Seek_pattern(char * Buffer,char * Pattern)
int Indice_buffer;
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++)
{
// On regarde si la chaŒne Pattern est quivalente … la position courante
// de la chaŒne Buffer:
// On regarde si la chaîne Pattern est équivalente … la position courante
// de la chaîne Buffer:
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
// position … laquelle on l'a trouve (+1 pour que si on la trouve au
// dbut ‡a ne renvoie pas la mˆme chose que si on ne l'avait pas
// trouve):
// Si on a trouvé la chaîne Pattern dans la chaîne Buffer, on renvoie la
// position … laquelle on l'a trouvée (+1 pour que si on la trouve au
// début ‡a ne renvoie pas la mˆme chose que si on ne l'avait pas
// trouvée):
if (Pattern[Indice_pattern]=='\0')
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;
}
@ -90,7 +90,7 @@ int Charger_INI_Reach_group(FILE * File,char * Buffer,char * Group)
char * Group_upper;
char * Buffer_upper;
// On alloue les zones de mmoire:
// On alloue les zones de mémoire:
Group_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);
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);
}
while (!Arret);
@ -255,7 +255,7 @@ int Charger_INI_Get_values(FILE * File,char * Buffer,char * Option,int Nb_values
int Indice_buffer;
int Nb_valeurs;
// On alloue les zones de mmoire:
// On alloue les zones de mémoire:
Option_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);
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);
// Si on l'a trouve:
// Si on l'a trouvée:
if (Arret)
{
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,"=");
// Tant qu'on a pas atteint la fin de la ligne
@ -332,7 +332,7 @@ int Charger_INI(struct S_Config * Conf)
FILE * Fichier;
char * Buffer;
int Valeurs[3];
int Indice;
//int Indice;
char * Nom_du_fichier;
int Retour;
@ -340,7 +340,7 @@ int Charger_INI(struct S_Config * Conf)
Ligne_INI=0;
// On alloue les zones de mmoire:
// On alloue les zones de mémoire:
Buffer=(char *)malloc(1024);
Nom_du_fichier=(char *)malloc(256);
@ -351,41 +351,41 @@ int Charger_INI(struct S_Config * Conf)
Fichier=fopen(Nom_du_fichier,"r");
if (Fichier!=0)
{
if (Retour=Charger_INI_Reach_group(Fichier,Buffer,"[MOUSE]"))
if ((Retour=Charger_INI_Reach_group(Fichier,Buffer,"[MOUSE]")))
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;
if ((Valeurs[0]<1) || (Valeurs[0]>255))
goto Erreur_ERREUR_INI_CORROMPU;
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;
if ((Valeurs[0]<1) || (Valeurs[0]>255))
goto Erreur_ERREUR_INI_CORROMPU;
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;
if ((Valeurs[0]<0) || (Valeurs[0]>4))
goto Erreur_ERREUR_INI_CORROMPU;
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;
if ((Valeurs[0]<0) || (Valeurs[0]>4))
goto Erreur_ERREUR_INI_CORROMPU;
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;
if ((Valeurs[0]<1) || (Valeurs[0]>3))
goto Erreur_ERREUR_INI_CORROMPU;
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;
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].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;
if ((Valeurs[0]<0) || (Valeurs[0]>63))
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].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;
if ((Valeurs[0]<0) || (Valeurs[0]>63))
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].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;
if ((Valeurs[0]<0) || (Valeurs[0]>2))
goto Erreur_ERREUR_INI_CORROMPU;
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;
if ((Valeurs[0]<1) || (Valeurs[0]>2))
goto Erreur_ERREUR_INI_CORROMPU;
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;
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;
if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU;
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;
if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU;
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;
if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU;
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;
if ((Valeurs[0]<1) || (Valeurs[0]>256))
goto Erreur_ERREUR_INI_CORROMPU;
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;
if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU;
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;
if ((Valeurs[0]<0) || (Valeurs[0]>2))
goto Erreur_ERREUR_INI_CORROMPU;
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;
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;
if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU;
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;
if ((Valeurs[0]<1) || (Valeurs[0]>2))
goto Erreur_ERREUR_INI_CORROMPU;
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;
if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU;
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;
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;
if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU;
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;
if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU;
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;
if ((Valeurs[0]<1) || (Valeurs[0]>2))
goto Erreur_ERREUR_INI_CORROMPU;
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;
if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU;
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;
if ((Valeurs[0]<1) || (Valeurs[0]>99))
goto Erreur_ERREUR_INI_CORROMPU;
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;
if ((Valeurs[0]<1) || (Valeurs[0]>255))
goto Erreur_ERREUR_INI_CORROMPU;
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;
if ((Valeurs[0]<1) || (Valeurs[0]>255))
goto Erreur_ERREUR_INI_CORROMPU;
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;
if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU;
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;
if ((Valeurs[0]<2) || (Valeurs[0]>16384))
goto Erreur_ERREUR_INI_CORROMPU;
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;
if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU;
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;
if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU;
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;
if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU;
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;
if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU;
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;
if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU;
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;
if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU;
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;
if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU;
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;
if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU;
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;
if ((Valeurs[0]<0) || (Valeurs[0]>1))
goto Erreur_ERREUR_INI_CORROMPU;
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;
if ((Valeurs[0]<MODE_320_200) || (Valeurs[0]>MODE_1024_768))
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 * Buffer_upper;
char * Buffer_resultat;
int Indice_buffer;
//int Indice_buffer;
// On alloue les zones de mmoire:
Option_upper=(char *)malloc(1024);
@ -283,175 +283,175 @@ int Sauver_INI(struct S_Config * Conf)
Nouveau_fichier=fopen(Nom_du_fichier,"w");
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;
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;
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;
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;
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;
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;
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;
Valeurs[0]=Conf->Coul_menu_pref[2].R;
Valeurs[1]=Conf->Coul_menu_pref[2].V;
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;
Valeurs[0]=Conf->Coul_menu_pref[1].R;
Valeurs[1]=Conf->Coul_menu_pref[1].V;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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 "struct.h"
//Set_Mode_SDL();
void Set_Mode_SDL();
void Pixel_SDL (word X,word Y,byte Couleur);
byte Lit_Pixel_SDL (word X,word Y);
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);
SDL_Rect ** Liste_Modes_Videos_SDL;
SDL_Surface* Ecran;
byte* Ecran;
SDL_Event* Evenement_SDL;

View File

@ -3,7 +3,7 @@
#include "const.h"
// Dclaration des types de base /////////////////////////////////////////////
// Déclaration des types de base /////////////////////////////////////////////
typedef unsigned char byte;
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
{
char Nom[13]; // Le nom du fichier ou du rpertoire
byte Type; // Type d'lment : 0 = Fichier, 1 = Rpertoire
char Nom[13]; // Le nom du fichier ou du répertoire
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 * Precedent;
};
// Dclaration d'une section d'aide:
// Déclaration d'une section d'aide:
struct Section_d_aide
{
word Nombre_de_lignes;
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
{
byte Debut; // PremiŠre couleur du dgrad
byte Fin; // DerniŠre couleur du dgrad
int Inverse; // "Le dgrad va de Fin … Debut"
long Melange; // Valeur de mlange du dgrad (0-255)
byte Debut; // PremiŠre couleur du dégradé
byte Fin; // DerniŠre couleur du dégradé
int Inverse; // "Le dégradé va de Fin … Debut"
long Melange; // Valeur de mélange du dégradé (0-255)
int Technique; // Technique … utiliser (0-2)
};
// Dclaration d'une info de shade
// Déclaration d'une info de shade
struct T_Shade
{
word Liste[512]; // Liste de couleurs
byte Pas; // Pas d'incrmentation/dcrmentation
byte Mode; // Mode d'utilisation (Normal/Boucle/Non-satur)
byte Pas; // Pas d'incrémentation/décrémentation
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
{
@ -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
// 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".
typedef struct
@ -180,17 +180,17 @@ typedef struct
char Repertoire_fichier[256]; // |_ Nom complet =
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_Y; // Dcalage en Y 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; // 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_Y; // Le mˆme avant le passage en mode 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
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
word Loupe_Facteur; // Facteur de zoom
@ -204,8 +204,8 @@ typedef struct
typedef struct
{
int Taille_liste; // Nb de S_Page dans le vecteur "Pages"
int Nb_pages_allouees; // Nb de S_Page dsignant des pages alloues
S_Page * Pages; // Liste de pages (Taille_liste lments)
int Nb_pages_allouees; // Nb de S_Page désignant des pages allouées
S_Page * Pages; // Liste de pages (Taille_liste éléments)
} S_Liste_de_pages;