Big cleanup, proper makefile
git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@12 416bcca6-2ee7-4201-b75f-2eb2f807beb1
This commit is contained in:
parent
47b59aa70d
commit
57fa46de8c
60
divers.c
60
divers.c
@ -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 utilis‚es:
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
20
divers.h
20
divers.h
@ -42,12 +42,12 @@ long Freespace(byte Numero_de_lecteur);
|
||||
// 3 : lecteur C:
|
||||
// ... : ...
|
||||
//
|
||||
// R‚sultat = -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)
|
||||
//
|
||||
// R‚sultat = 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)
|
||||
//
|
||||
// Entr‚e: 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: num‚ro repr‚sentant 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
280
global.h
@ -6,7 +6,7 @@
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
// //
|
||||
// Ce fichier contient les d‚claration 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 sp‚ciales
|
||||
// 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 m‚moire LFB
|
||||
dword Taille_LFB; // Taille de la mémoire LFB
|
||||
} VESA_Mode_Infos[4];
|
||||
|
||||
|
||||
|
||||
// Palette par d‚faut
|
||||
// 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 entr‚es
|
||||
// Etat des entrées
|
||||
|
||||
GLOBAL word Mouse_X; // Abscisse de la souris
|
||||
GLOBAL word Mouse_Y; // Ordonn‚e 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;
|
||||
|
||||
// Donn‚es 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; // 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 Curseur_dans_menu; // Booléen "Le curseur se trouve dans le menu"
|
||||
GLOBAL byte Curseur_dans_menu_precedent; // Booléen "Le curseur se trouvait précédemment dans le menu"
|
||||
GLOBAL word Curseur_Decalage_X[NB_SPRITES_CURSEUR]; // Coordonnées X du point sensible de curseurs en sprite
|
||||
GLOBAL word Curseur_Decalage_Y[NB_SPRITES_CURSEUR]; // Coordonnées Y du point sensible de curseurs en sprite
|
||||
GLOBAL byte SPRITE_CURSEUR[NB_SPRITES_CURSEUR][HAUTEUR_SPRITE_CURSEUR][LARGEUR_SPRITE_CURSEUR]; // Dessins des sprites de curseur
|
||||
GLOBAL byte FOND_CURSEUR[HAUTEUR_SPRITE_CURSEUR][LARGEUR_SPRITE_CURSEUR]; // Contenu du dessous du curseur
|
||||
|
||||
// Donn‚es sur le pinceau
|
||||
// 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 affich‚e … 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 zoom‚e … 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;
|
||||
|
||||
// Donn‚es sur les dimensions de l'‚cran
|
||||
// Données sur les dimensions de l'écran
|
||||
|
||||
GLOBAL int Resolution_actuelle; // R‚solution graphique courante
|
||||
GLOBAL short Ecran_original_X; // |_ Dimensions de l'‚cran d'origine de
|
||||
GLOBAL short Ecran_original_Y; // | l'image qui vient d'ˆtre charg‚e.
|
||||
GLOBAL short Largeur_ecran; // Largeur de l'‚cran
|
||||
GLOBAL short Hauteur_ecran; // Hauteur de l'‚cran
|
||||
GLOBAL 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 zoom‚e
|
||||
GLOBAL short Limite_Gauche_Zoom; // | écrire dans la partie zoomée
|
||||
GLOBAL short Limite_Droite_Zoom; // |
|
||||
GLOBAL short Limite_visible_Bas_Zoom; // |_ Derniers points visibles "…
|
||||
GLOBAL short Limite_visible_Droite_Zoom; // | l'image" dans la partie zoom‚e
|
||||
GLOBAL short Limite_visible_Droite_Zoom; // | l'image" dans la partie zoomée
|
||||
|
||||
GLOBAL byte * Buffer_de_ligne_horizontale; // Buffer d'affichage de lignes
|
||||
|
||||
// Donn‚es sur l'image actuelle:
|
||||
// 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‚ 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 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; // 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 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-zoom‚e par rapport … l'‚cran
|
||||
GLOBAL float Principal_Proportion_split; // Proportion de la zone non-zoomée par rapport … l'écran
|
||||
|
||||
// Donn‚es 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 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 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; // 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 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-zoom‚e 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
|
||||
|
||||
|
||||
// Donn‚es 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; // |_ s‚lecteur 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
|
||||
|
||||
// Donn‚es sur le menu
|
||||
// Données sur le menu
|
||||
|
||||
GLOBAL byte Menu_visible; // Le menu est actif … l'‚cran
|
||||
GLOBAL word Menu_Ordonnee; // Ordonn‚e o— commence le menu
|
||||
GLOBAL word Menu_Ordonnee_Texte; // Ordonn‚e o— commence le texte dans le menu
|
||||
GLOBAL byte Menu_visible; // Le menu est actif … l'écran
|
||||
GLOBAL word Menu_Ordonnee; // Ordonnée o— commence le menu
|
||||
GLOBAL word Menu_Ordonnee_Texte; // Ordonnée o— commence le texte dans le menu
|
||||
GLOBAL word Menu_Facteur_X; // Facteur de grossissement du menu en X
|
||||
GLOBAL word Menu_Facteur_Y; // Facteur de grossissement du menu en Y
|
||||
GLOBAL word Menu_Taille_couleur; // Taille d'une couleur de la palette du menu
|
||||
|
||||
|
||||
// Donn‚es sur la fenˆtre de menu
|
||||
// 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; // 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 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;
|
||||
|
||||
|
||||
|
||||
// D‚finition des boutons ////////////////////////////////////////////////////
|
||||
// Définition des boutons ////////////////////////////////////////////////////
|
||||
|
||||
GLOBAL struct
|
||||
{
|
||||
// Informations sur l'aspect du bouton (graphisme):
|
||||
word Decalage_X; // D‚calage par rapport … la gauche du menu
|
||||
word Decalage_Y; // D‚calage par rapport au haut du menu
|
||||
word 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 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
|
||||
fonction_action Gauche; // Action déclenchée par un click gauche sur le bouton
|
||||
fonction_action Droite; // Action déclenchée par un click droit sur le bouton
|
||||
word Raccourci_gauche; // Raccourci clavier équivalent … un click gauche sur le bouton
|
||||
word Raccourci_droite; // Raccourci clavier équivalent … un click droit sur le bouton
|
||||
|
||||
// Informations sur le d‚senclenchement du bouton g‚r‚ par le moteur:
|
||||
fonction_action Desenclencher; // Action appel‚e lors du d‚senclenchement du bouton
|
||||
// Informations sur le désenclenchement du bouton géré par le moteur:
|
||||
fonction_action Desenclencher; // Action appelée lors du désenclenchement du bouton
|
||||
byte Famille; // Ensemble de boutons auquel celui-ci appartient
|
||||
|
||||
} Bouton[NB_BOUTONS];
|
||||
|
||||
|
||||
|
||||
// Informations sur les diff‚rents modes de dessin
|
||||
// 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 op‚ration 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; // Num‚ro 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 prot‚g‚es
|
||||
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 pr‚s‚finies (compact‚es 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; // D‚calage du tiling en X
|
||||
GLOBAL short Tiling_Decalage_Y; // D‚calage 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
|
||||
|
||||
// Donn‚es 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;
|
||||
|
||||
// Donn‚es sur les d‚grad‚s:
|
||||
// Données sur les dégradés:
|
||||
|
||||
GLOBAL short Degrade_Borne_Inferieure; // Plus petite couleur englob‚e par le d‚grad‚
|
||||
GLOBAL short Degrade_Borne_Superieure; // Plus grande couleur englob‚e par le d‚grad‚
|
||||
GLOBAL int Degrade_Inverse; // Bool‚en "Le d‚grad‚ est en r‚alit‚ invers‚"
|
||||
GLOBAL short Degrade_Borne_Inferieure; // Plus petite couleur englobée par le dégradé
|
||||
GLOBAL short Degrade_Borne_Superieure; // Plus grande couleur englobée par le dégradé
|
||||
GLOBAL int Degrade_Inverse; // Booléen "Le dégradé est en réalité inversé"
|
||||
GLOBAL long Degrade_Intervalle_bornes; // = Abs(Degrade_Borne_Inferieure-Degrade_Borne_Superieure)+1
|
||||
GLOBAL long Degrade_Intervalle_total; // Valeur maximum des indices pass‚s … la fonction de d‚grad‚ (!!! >0 !!!)
|
||||
GLOBAL long Degrade_Melange_aleatoire; // Facteur de m‚lange (1-256+) du d‚grad‚
|
||||
GLOBAL fonction_degrade Traiter_degrade; // Fonction de traitement du d‚grad‚, varie selon la m‚thode choisie par l'utilisateur.
|
||||
GLOBAL long Degrade_Intervalle_total; // Valeur maximum des indices passés … la fonction de dégradé (!!! >0 !!!)
|
||||
GLOBAL long Degrade_Melange_aleatoire; // Facteur de mélange (1-256+) du dégradé
|
||||
GLOBAL fonction_degrade Traiter_degrade; // Fonction de traitement du dégradé, varie selon la méthode choisie par l'utilisateur.
|
||||
GLOBAL fonction_afficheur Traiter_pixel_de_degrade; // Redirection de l'affichage
|
||||
|
||||
GLOBAL struct T_Degrade_Tableau Degrade_Tableau[16]; // Donn‚es de tous les d‚grad‚s
|
||||
GLOBAL int Degrade_Courant; // Indice du tableau correspondant au d‚grad‚ courant
|
||||
GLOBAL struct T_Degrade_Tableau Degrade_Tableau[16]; // Données de tous les dégradés
|
||||
GLOBAL int Degrade_Courant; // Indice du tableau correspondant au dégradé courant
|
||||
|
||||
|
||||
|
||||
// Donn‚es sur le Spray:
|
||||
// Données sur le Spray:
|
||||
|
||||
GLOBAL byte Spray_Mode; // Mode Mono(1) ou Multicolore(0)
|
||||
GLOBAL short Spray_Size; // DiamŠtre du spray en pixels
|
||||
GLOBAL byte Spray_Delay; // D‚lai en VBLs entre 2 "pschiitt"
|
||||
GLOBAL byte Spray_Delay; // Délai en VBLs entre 2 "pschiitt"
|
||||
GLOBAL byte Spray_Mono_flow; // Nombre de pixels qui sortent en mˆme temps en mono
|
||||
GLOBAL byte Spray_Multi_flow[256]; // Idem pour chaque couleur
|
||||
|
||||
|
||||
// Donn‚es diverses sur le programme:
|
||||
// Données diverses sur le programme:
|
||||
|
||||
GLOBAL byte Sortir_du_programme;
|
||||
GLOBAL char Repertoire_du_programme[256]; // R‚pertoire dans lequel se trouve le programme
|
||||
GLOBAL char Repertoire_initial[256]; // R‚pertoire … partir duquel … ‚t‚ lanc‚ le programme
|
||||
GLOBAL 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; // utilis‚e uniquement si la variable pr‚c‚dente 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 diff‚rents 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 donn‚es 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; // Num‚ro 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
|
||||
|
||||
// Donn‚es sur les op‚rations
|
||||
// Données sur les opérations
|
||||
|
||||
GLOBAL word Operation_avant_interruption; // Nø de l'op‚ration en cours avant l'utilisation d'une interruption
|
||||
GLOBAL word Operation_en_cours; // Nø de l'op‚ration en cours
|
||||
GLOBAL word Operation_Pile[TAILLE_PILE_OPERATIONS]; // Pile simplifi‚e
|
||||
GLOBAL word Operation_avant_interruption; // Nø de l'opération en cours avant l'utilisation d'une interruption
|
||||
GLOBAL word Operation_en_cours; // Nø de l'opération en cours
|
||||
GLOBAL word Operation_Pile[TAILLE_PILE_OPERATIONS]; // Pile simplifiée
|
||||
GLOBAL byte Operation_Taille_pile; // Taille effective de la pile (0=vide)
|
||||
GLOBAL byte Operation_dans_loupe; // Indique si l'op‚ration a commenc‚ dans la partie Zoom‚e ou non
|
||||
GLOBAL 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 reli‚es
|
||||
FORME_CURSEUR_CIBLE , // Lignes centr‚es
|
||||
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 , // R‚cup‚ration 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 d‚grad‚s
|
||||
FORME_CURSEUR_CIBLE , // Ellipses d‚grad‚es
|
||||
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
|
||||
|
||||
|
||||
// Proc‚dures … appeler: Op‚ration,Mouse_K,Etat de la pile
|
||||
// Procédures … appeler: Opération,Mouse_K,Etat de la pile
|
||||
|
||||
GLOBAL struct
|
||||
{
|
||||
byte Effacer_curseur; // Bool‚en "il faut effacer le curseur pour l'op‚ra."
|
||||
fonction_action Action; // Action appel‚e
|
||||
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'‚l‚ments 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Œn‚e:
|
||||
// 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 v‚rifier 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 consid‚rer que l'image n'est plus modifi‚e
|
||||
// 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: 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
|
||||
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;
|
||||
|
||||
4
graph.h
4
graph.h
@ -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
92
init.c
@ -20,11 +20,11 @@
|
||||
#include <stdlib.h>
|
||||
#include "divers.h"
|
||||
|
||||
// On d‚clare m‚chamment 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 r‚pertoire 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 d‚clare les trucs maintenant
|
||||
// On déclare les trucs maintenant
|
||||
if (Lecteur_de_disquettes==0)
|
||||
{
|
||||
// Situation : On a un lecteur A: qui est r‚el 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 r‚el 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 v‚rifie s'il n'y en a
|
||||
// pas qui seraient ‚mul‚s 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 pr‚sence d'autres lecteurs (HDD, CD, R‚seau)
|
||||
// On les met tous en r‚seau 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 d‚cryptage
|
||||
// Fonction de décryptage
|
||||
|
||||
#define DECRYPT_TAILLE_CLE 14
|
||||
byte Decrypt_compteur=0;
|
||||
@ -206,7 +206,7 @@ void Rechercher_drives(void)
|
||||
return Temp;
|
||||
}
|
||||
|
||||
// D‚cryptage d'une donn‚e
|
||||
// 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: (sp‚ciale 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 diff‚rentes 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 m‚moire:
|
||||
// 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 m‚moire 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 d‚clarations des boutons que l'on sait g‚rer
|
||||
// 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 op‚rations:
|
||||
// Initialisation des opérations:
|
||||
|
||||
// Initialiseur d'une op‚ration:
|
||||
// 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 op‚rations:
|
||||
// Initiliseur de toutes les opérations:
|
||||
|
||||
void Initialisation_des_operations(void)
|
||||
{
|
||||
byte Numero; // Num‚ro 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 op‚rations (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 d‚clarations d‚taill‚es des op‚rations
|
||||
// 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)
|
||||
|
||||
|
||||
|
||||
//-- D‚finition des modes vid‚o: --------------------------------------------
|
||||
//-- Définition des modes vidéo: --------------------------------------------
|
||||
|
||||
// D‚finition 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 op‚rations:
|
||||
// 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, // B‚zier's curves
|
||||
0x200+BOUTON_COURBES, // B‚zier'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, // R‚tr‚cir 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, // B‚zier's curves
|
||||
32, // B‚zier'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, // R‚tr‚cir 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 vid‚o
|
||||
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 d‚grad‚s
|
||||
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 vid‚o
|
||||
// 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 donn‚es du Shade (pr‚c‚d‚es 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 d‚grad‚s
|
||||
// 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 m‚moire utilis‚e 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 diff‚rence:
|
||||
// Pour chacune des 128 positions correspondant … une valeur de différence:
|
||||
for (Indice=0;Indice<128;Indice++)
|
||||
{
|
||||
if (Indice<64)
|
||||
|
||||
5
linux.c
5
linux.c
@ -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");
|
||||
}
|
||||
|
||||
2
linux.h
2
linux.h
@ -6,4 +6,6 @@ struct find_t {
|
||||
char name[256];
|
||||
};
|
||||
|
||||
int filelength(char *);
|
||||
|
||||
#define _A_SUBDIR 1
|
||||
|
||||
582
loadsave.c
582
loadsave.c
File diff suppressed because it is too large
Load Diff
@ -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
116
main.c
@ -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 vid‚os 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 d‚faut
|
||||
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 r‚cupŠre le chemin complet du paramŠtre
|
||||
// On récupŠre le chemin complet du paramŠtre
|
||||
Buffer=realpath(argv[1],NULL);
|
||||
// Et on d‚coupe ce chemin en r‚pertoire(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 d‚sir‚ 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 cr‚e 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 manipul‚es …
|
||||
// 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 pr‚calcul‚e utilis‚e 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
|
||||
// d‚sign‚es au d‚marrage (couleurs du menu, ...)
|
||||
// désignées au démarrage (couleurs du menu, ...)
|
||||
Initialiser_la_table_precalculee_des_distances_de_couleur();
|
||||
|
||||
// On d‚termine dŠs le d‚part 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 d‚tecte les lecteurs qui sont accessibles:
|
||||
// On détecte les lecteurs qui sont accessibles:
|
||||
Rechercher_drives();
|
||||
// On d‚termine le r‚pertoire courant:
|
||||
// On détermine le répertoire courant:
|
||||
Determiner_repertoire_courant();
|
||||
|
||||
// On en profite pour le m‚moriser dans le r‚pertoire principal:
|
||||
// On en profite pour le mémoriser dans le répertoire principal:
|
||||
strcpy(Repertoire_initial,Principal_Repertoire_courant);
|
||||
|
||||
// On initialise les donn‚es 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 donn‚es 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 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
|
||||
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 vid‚o
|
||||
// On initialise tous les modes vidéo
|
||||
Definition_des_modes_video();
|
||||
|
||||
// On initialise les donn‚es sur l'‚tat du programme:
|
||||
// Donn‚e 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;
|
||||
// Donn‚es sur l'‚tat du menu:
|
||||
// Données sur l'état du menu:
|
||||
Pixel_dans_menu=Pixel_dans_barre_d_outil;
|
||||
Menu_visible=1;
|
||||
// Donn‚es sur les couleurs et la palette:
|
||||
// Données sur les couleurs et la palette:
|
||||
Fore_color=15;
|
||||
Back_color=0;
|
||||
Couleur_debut_palette=0;
|
||||
// Donn‚es sur le curseur:
|
||||
// Données sur le curseur:
|
||||
Forme_curseur=FORME_CURSEUR_CIBLE;
|
||||
Cacher_curseur=0;
|
||||
// Donn‚es 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 carr‚s:
|
||||
// On initialise la table des carrés:
|
||||
Initialiser_la_table_des_carres();
|
||||
|
||||
// On initialise tout ce qui concerne les op‚rations 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 charg‚es 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 d‚grad‚s:
|
||||
Traiter_pixel_de_degrade =Afficher_pixel; // Les autres infos sont charg‚es 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 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
|
||||
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 d‚calages 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...
|
||||
|
||||
// R‚cup‚ration 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 am‚ricain
|
||||
// Passer en clavier américain
|
||||
Clavier_americain();
|
||||
|
||||
// Tester la pr‚sence 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 op‚rations
|
||||
// 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 s‚lectionne 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 m‚moire 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;
|
||||
|
||||
// D‚tection 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 m‚moire pour les diff‚rents ‚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 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.
|
||||
// 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 d‚butter 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 d‚bute 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 sp‚cial
|
||||
// On libŠre le pinceau spécial
|
||||
free(Pinceau_Sprite);
|
||||
|
||||
// On libŠre la table pr‚calcul‚e des distances de teintes
|
||||
// On libŠre la table précalculée des distances de teintes
|
||||
free(MC_Table_differences);
|
||||
|
||||
// On libŠre les diff‚rents ‚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 donn‚es 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 r‚pertoire 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 donn‚es 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)
|
||||
}
|
||||
|
||||
|
||||
// -------------------------- Proc‚dure 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;
|
||||
}
|
||||
|
||||
|
||||
44
makefile
44
makefile
@ -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
2
op_c.c
@ -1,6 +1,6 @@
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
#include <fcntl.h>
|
||||
#include <sys/stat.h>
|
||||
|
||||
278
pages.c
278
pages.c
@ -11,7 +11,7 @@
|
||||
#include "pages.h"
|
||||
#include "graph.h"
|
||||
|
||||
// On d‚clare m‚chamment 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 d‚calages 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 d‚j… d‚signer une page allou‚e 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 m‚moire pour le bitmap
|
||||
// On alloue la mémoire pour le bitmap
|
||||
Page->Image=(byte *)malloc(Largeur*Hauteur);
|
||||
|
||||
// On v‚rifie que l'allocation se soit bien pass‚e
|
||||
// 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 allou‚e.
|
||||
// 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 pr‚occupe 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 allou‚e en m‚moire est pr‚c‚d‚e 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 m‚moires: 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 d‚j… d‚signer une liste de
|
||||
// pages allou‚e 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 m‚moire pour la liste
|
||||
// On alloue la mémoire pour la liste
|
||||
Liste->Pages=(S_Page *)malloc(Taille*sizeof(S_Page));
|
||||
|
||||
// On v‚rifie que l'allocation se soit bien pass‚e
|
||||
// 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 allou‚e.
|
||||
// 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 pr‚alablement si n‚cessaire.
|
||||
// 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 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
|
||||
// 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 cr‚e 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‚ effectu‚e 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 d‚truit 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 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
|
||||
// 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 cr‚e 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‚
|
||||
// effectu‚e 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 d‚truit 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 cr‚e 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 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
|
||||
// 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 lib‚rer 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 m‚moire ou la Liste_courante est pleine. Dans tous les
|
||||
// cas, il faut lib‚rer 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 lib‚rer
|
||||
// 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 … lib‚rer 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 d‚truire la derniŠre page allou‚e 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 d‚truire la derniŠre page allou‚e 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 d‚termine 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 r‚cupŠre le bitmap de la page … supprimer (‚vite de faire des
|
||||
// allocations/d‚sallocations 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 allou‚e 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 lib‚rer de la m‚moire 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
|
||||
|
||||
// D‚truire la derniŠre page allou‚e 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 … lib‚rer 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 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.
|
||||
// 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.
|
||||
|
||||
// D‚caler 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 d‚j… la taille demand‚e
|
||||
// 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 exc‚s
|
||||
// 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 d‚truire 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 pr‚c‚dente
|
||||
// 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 d‚truit 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 d‚part.
|
||||
// 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 r‚ussi … allouer deux listes de pages dont la taille correspond …
|
||||
// celle demand‚e par l'utilisateur.
|
||||
// On a réussi à allouer deux listes de pages dont la taille correspond à
|
||||
// celle demandée par l'utilisateur.
|
||||
|
||||
// On cr‚e 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 d‚marrage
|
||||
// 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 cr‚er
|
||||
// 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 cr‚er 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 d‚marrer le programme avec la page
|
||||
// principale et la page de brouillon aux dimensions demand‚e 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 d‚marrer le programme avec ne serait-ce qu'une page
|
||||
// de la dimension souhait‚e, 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 r‚ussi … cr‚er 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 d‚truire 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 cr‚e 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 d‚truit 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 cr‚e 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 d‚truit 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 cr‚e 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 d‚truit 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 d‚truit 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 d‚j… … jour les dimensions de la
|
||||
// nouvelle page courante. Si on ne le fait pas, le "Download" va d‚tecter
|
||||
// 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 m‚moire 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 lib‚rer 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 m‚moire directement.
|
||||
// à supprimer. On peut allouer de la mémoire directement.
|
||||
return malloc(taille);
|
||||
}
|
||||
else
|
||||
{
|
||||
// On manque de m‚moire. Il faut lib‚rer une page...
|
||||
// On manque de mémoire. Il faut libérer une page...
|
||||
|
||||
// Tant qu'il faut lib‚rer
|
||||
// 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 … lib‚rer 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 d‚truire la derniŠre page allou‚e 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 d‚truire la derniŠre page allou‚e 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 pr‚vu qu'on obtienne la m‚moire
|
||||
// n‚cessaire 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 d‚termine 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;
|
||||
|
||||
// D‚truire la derniŠre page allou‚e 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 … lib‚rer 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 m‚moire temporaire dans
|
||||
// la m‚moire r‚serv‚e 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
120
readini.c
@ -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 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):
|
||||
// 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 trouv‚e, 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 m‚moire:
|
||||
// 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 m‚moire:
|
||||
// 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 recherch‚e:
|
||||
// On compare la chaîne avec l'option recherchée:
|
||||
Arret=Charger_INI_Seek_pattern(Buffer_upper,Option_upper);
|
||||
|
||||
// Si on l'a trouv‚e:
|
||||
// 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 m‚moire:
|
||||
// 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;
|
||||
|
||||
86
saveini.c
86
saveini.c
@ -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 m‚moire:
|
||||
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
0
sdlscreen.c
Normal 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;
|
||||
|
||||
|
||||
46
struct.h
46
struct.h
@ -3,7 +3,7 @@
|
||||
|
||||
#include "const.h"
|
||||
|
||||
// D‚claration 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
|
||||
};
|
||||
|
||||
|
||||
// D‚claration du type d'‚l‚ment qu'on va m‚moriser 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 r‚pertoire
|
||||
byte Type; // Type d'‚l‚ment : 0 = Fichier, 1 = R‚pertoire
|
||||
char Nom[13]; // Le nom du fichier ou du répertoire
|
||||
byte Type; // Type d'élément : 0 = Fichier, 1 = Répertoire
|
||||
|
||||
// donn‚es 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;
|
||||
};
|
||||
|
||||
|
||||
|
||||
// D‚claration 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
|
||||
};
|
||||
|
||||
// D‚claration d'une info sur un d‚grad‚
|
||||
// Déclaration d'une info sur un dégradé
|
||||
struct T_Degrade_Tableau
|
||||
{
|
||||
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)
|
||||
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)
|
||||
};
|
||||
|
||||
// D‚claration 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'incr‚mentation/d‚cr‚mentation
|
||||
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 donn‚es 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 utilis‚es 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 manipul‚es … 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; // 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 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-zoom‚e 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 d‚signant des pages allou‚es
|
||||
S_Page * Pages; // Liste de pages (Taille_liste ‚l‚ments)
|
||||
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;
|
||||
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user