Fixed all warnings, some little bugs, and improved compatibility with >1GB RAM

git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@54 416bcca6-2ee7-4201-b75f-2eb2f807beb1
This commit is contained in:
Adrien Destugues 2008-07-21 12:47:32 +00:00
parent 750e68ed35
commit 272506e850
17 changed files with 1535 additions and 1584 deletions

View File

@ -1,10 +1,15 @@
CC = distcc powerpc-linux-gnu-gcc CC = gcc
COPT = -Wall -Os -c COPT = -Wall -Os -c -g
LOPT = -lSDL -o grafx2 LOPT = -lSDL -o grafx2
debug: grafx2
@echo --- Everything OK.
release: grafx2
strip grafx2
grafx2 : 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 linux.o op_asm.o grafx2 : 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 linux.o op_asm.o
$(CC) $(LOPT) main.o graph.o divers.o init.o files.o linux.o loadsave.o boutons.o moteur.o sdlscreen.o aide.o palette.o operatio.o op_c.o readline.o special.o op_asm.o $(CC) $(LOPT) main.o graph.o divers.o init.o files.o linux.o loadsave.o boutons.o moteur.o sdlscreen.o aide.o palette.o operatio.o op_c.o readline.o special.o op_asm.o
strip grafx2
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 main.o : graph.o const.h struct.h global.h graph.h divers.h init.h boutons.h moteur.h files.h loadsave.h main.c readini.h saveini.h
$(CC) $(COPT) main.c $(CC) $(COPT) main.c

2
aide.c
View File

@ -220,7 +220,7 @@ void Bouton_Stats(void)
// Affichage de la mmoire restante // Affichage de la mmoire restante
Print_dans_fenetre(10,35,"Free memory:",STATS_COULEUR_TITRES,CM_Noir); Print_dans_fenetre(10,35,"Free memory:",STATS_COULEUR_TITRES,CM_Noir);
sprintf(Buffer,"%ld bytes",Memoire_libre()); sprintf(Buffer,"%d bytes",Memoire_libre());
Print_dans_fenetre(114,35,Buffer,STATS_COULEUR_DONNEES,CM_Noir); Print_dans_fenetre(114,35,Buffer,STATS_COULEUR_DONNEES,CM_Noir);
// Affichage de l'espace disque libre // Affichage de l'espace disque libre

View File

@ -2957,7 +2957,7 @@ void Load_picture(byte Image)
char Nom_fichier_initial[13]; char Nom_fichier_initial[13];
byte Format_fichier_initial; byte Format_fichier_initial;
byte Ne_pas_restaurer; byte Ne_pas_restaurer;
byte Utiliser_palette_brosse; byte Utiliser_palette_brosse = 0;
struct Composantes * Palette_initiale=NULL; struct Composantes * Palette_initiale=NULL;
byte Ancienne_forme_curseur; byte Ancienne_forme_curseur;
short Principal_Largeur_image_initiale=Principal_Largeur_image; short Principal_Largeur_image_initiale=Principal_Largeur_image;
@ -5464,9 +5464,9 @@ void Bouton_Effets(void)
Afficher_curseur(); Afficher_curseur();
break; break;
case 13 : // Feedback (pour Colorize et Shade) case 13 : // Feedback (pour Colorize et Shade)
if (Config.FX_Feedback=!Config.FX_Feedback) //??? // if (Config.FX_Feedback=!Config.FX_Feedback) //???
FX_Feedback_Ecran=Principal_Ecran; // FX_Feedback_Ecran=Principal_Ecran;
else // else
FX_Feedback_Ecran=Ecran_backup; FX_Feedback_Ecran=Ecran_backup;
Effacer_curseur(); Effacer_curseur();
Afficher_etat_feedback(); Afficher_etat_feedback();

View File

@ -3,6 +3,7 @@
#include "sdlscreen.h" #include "sdlscreen.h"
#include "global.h" #include "global.h"
#include "graph.h" //Afficher_curseur #include "graph.h" //Afficher_curseur
#include "erreurs.h"
// Gestion du mode texte de départ (pour pouvoir y retourner en cas de problème // Gestion du mode texte de départ (pour pouvoir y retourner en cas de problème
byte Recuperer_nb_lignes(void) byte Recuperer_nb_lignes(void)
@ -48,16 +49,14 @@ word Palette_Compter_nb_couleurs_utilisees(dword* Tableau)
void Set_palette(T_Palette Palette) void Set_palette(T_Palette Palette)
{ {
SDL_Color PaletteSDL[255]; register int i;
byte i=0; SDL_Color PaletteSDL[256];
do for(i=0;i<256;i++)
{ {
PaletteSDL[i].r=Palette[i].R*4; //Les couleurs VGA ne vont que de 0 à 63 PaletteSDL[i].r=Palette[i].R*4; //Les couleurs VGA ne vont que de 0 à 63
PaletteSDL[i].g=Palette[i].V*4; PaletteSDL[i].g=Palette[i].V*4;
PaletteSDL[i].b=Palette[i].B*4; PaletteSDL[i].b=Palette[i].B*4;
i++;
} }
while(i!=0);
SDL_SetPalette(Ecran_SDL,SDL_PHYSPAL|SDL_LOGPAL,PaletteSDL,0,256); SDL_SetPalette(Ecran_SDL,SDL_PHYSPAL|SDL_LOGPAL,PaletteSDL,0,256);
} }

61
files.c
View File

@ -64,7 +64,7 @@ int Fichier_existe(char * Fichier)
// Dtermine si un fichier pass en paramŠtre existe ou non dans le // Dtermine si un fichier pass en paramŠtre existe ou non dans le
// rpertoire courant. // rpertoire courant.
{ {
struct stat* buf; struct stat* buf = NULL;
int Resultat; int Resultat;
Resultat=stat(Fichier,buf); Resultat=stat(Fichier,buf);
@ -161,15 +161,12 @@ void Lire_liste_des_fichiers(byte Format_demande)
// Cette procdure charge dans la liste chaine les fichiers dont l'extension // Cette procdure charge dans la liste chaine les fichiers dont l'extension
// correspond au format demand. // correspond au format demand.
{ {
int Attribut; // Attribut des fichiers/rpertoires … lire
DIR* Repertoire_Courant; //Répertoire courant DIR* Repertoire_Courant; //Répertoire courant
struct dirent* Enreg; // Structure de lecture des lments struct dirent* Enreg; // Structure de lecture des éléments
char Filtre[6]="*."; // Place pour crire "*.XXX" et un '\0' char Filtre[6]="*."; // Place pour écrire "*.XXX" et un '\0'
char Chaine[20]; // Tout d'abord, on déduit du format demandé un filtre à utiliser:
if (Format_demande) // Format (extension) spécifique
// Tout d'abord, on dduit du format demand un filtre … utiliser:
if (Format_demande) // Format (extension) spcifique
strcat(Filtre,Format_Extension[Format_demande-1]); strcat(Filtre,Format_Extension[Format_demande-1]);
else // *.* else // *.*
strcat(Filtre,"*"); strcat(Filtre,"*");
@ -177,54 +174,38 @@ void Lire_liste_des_fichiers(byte Format_demande)
// Ensuite, on vide la liste actuelle: // Ensuite, on vide la liste actuelle:
Detruire_liste_du_fileselect(); Detruire_liste_du_fileselect();
// AprŠs effacement, il ne reste ni fichier ni rpertoire dans la liste // Après effacement, il ne reste ni fichier ni répertoire dans la liste
Liste_Nb_fichiers=0; Liste_Nb_fichiers=0;
Liste_Nb_repertoires=0; Liste_Nb_repertoires=0;
// On lit tous les rpertoires: // On lit tous les répertoires:
Repertoire_Courant=opendir(getcwd(NULL,0)); Repertoire_Courant=opendir(getcwd(NULL,0));
/*
Ceci est à revoir... pas tout à fait géré pareil sous linux...
Attribut=(_A_NORMAL|_A_SUBDIR|//_A_RDONLY|_A_ARCH|
(_A_HIDDEN & Config.Lire_les_repertoires_caches)|
(_A_SYSTEM & Config.Lire_les_repertoires_systemes));
*/
Enreg=readdir(Repertoire_Courant); Enreg=readdir(Repertoire_Courant);
while (Enreg) while (Enreg)
{ {
// Si l'lment n'est pas le rpertoire courant // Si l'élément n'est pas le répertoire courant
if ( (strcmp(Enreg->d_name,".")!=0) && if ( (Enreg->d_name[0]!='.') && (Enreg->d_name[1] != 0))
// et que l'lment trouv est rellement un rpertoire
(Enreg->d_type == DT_DIR) )
{ {
// On rajoute le rpertore … la liste // et que l'élément trouvé est un répertoire
if( (Enreg->d_type == DT_DIR) &&
// et qu'il n'est pas caché
(Enreg->d_name[0]!='.' || Config.Lire_les_repertoires_caches))
{
// On rajoute le répertore à la liste
Ajouter_element_a_la_liste(Enreg); Ajouter_element_a_la_liste(Enreg);
Liste_Nb_repertoires++; Liste_Nb_repertoires++;
} }
// On cherche l'lment suivant else if ((Enreg->d_type==DT_REG) //Il s'agit d'un fichier
Enreg=readdir(Repertoire_Courant); && (Enreg->d_name[0]!='.' || Config.Lire_les_fichiers_caches)) //Il n'est pas caché
}
// Enfin, on lit les fichiers du format demand:
/*
Ici aussi, à revoir...
Attribut=(_A_NORMAL|_A_SYSTEM|//_A_RDONLY|_A_ARCH|
(_A_HIDDEN & Config.Lire_les_fichiers_caches));
*/
rewinddir(Repertoire_Courant);
Enreg=readdir(Repertoire_Courant);
while (Enreg)
{ {
if (Enreg->d_type==DT_REG) //Il s'agit bien d'un fichier // On rajoute le fichier à la liste
{
// On rajoute le fichier … la liste
Ajouter_element_a_la_liste(Enreg); Ajouter_element_a_la_liste(Enreg);
Liste_Nb_fichiers++; Liste_Nb_fichiers++;
} }
// On cherche l'lment suivant }
// On cherche l'élément suivant
Enreg=readdir(Repertoire_Courant); Enreg=readdir(Repertoire_Courant);
} }

BIN
gfx2.cfg

Binary file not shown.

102
graph.c
View File

@ -11,7 +11,8 @@
#include "boutons.h" #include "boutons.h"
#include "pages.h" #include "pages.h"
#include "global.h" #include "global.h"
#include "struct.h"
#include "erreurs.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": // fichier "main.h":
@ -837,13 +838,11 @@ void Initialiser_mode_video(int Numero)
{ {
int Sensibilite_X; int Sensibilite_X;
int Sensibilite_Y; int Sensibilite_Y;
//int Indice_VESA;
if (Resolution_actuelle != Numero)
if (Resolution_actuelle!=Numero)
{ {
Largeur_ecran=Mode_video[Numero].Largeur; Largeur_ecran = Mode_video[Numero].Largeur;
Hauteur_ecran=Mode_video[Numero].Hauteur; Hauteur_ecran = Mode_video[Numero].Hauteur;
switch (Config.Ratio) switch (Config.Ratio)
{ {
@ -877,72 +876,39 @@ void Initialiser_mode_video(int Numero)
switch (Mode_video[Numero].Mode) switch (Mode_video[Numero].Mode)
{ {
case MODE_SDL: case MODE_SDL:
Pixel= Pixel_SDL; Pixel = Pixel_SDL;
Lit_pixel= Lit_Pixel_SDL; Lit_pixel= Lit_Pixel_SDL;
Clear_screen= Effacer_Tout_l_Ecran_SDL; Clear_screen = Effacer_Tout_l_Ecran_SDL;
Display_screen= Afficher_partie_de_l_ecran_SDL; Display_screen = Afficher_partie_de_l_ecran_SDL;
Block = Block_SDL; Block = Block_SDL;
Block_Fast = Block_SDL_Fast; Block_Fast = Block_SDL_Fast;
Pixel_Preview_Normal= Pixel_Preview_Normal_SDL; Pixel_Preview_Normal = Pixel_Preview_Normal_SDL;
Pixel_Preview_Loupe=Pixel_Preview_Loupe_SDL; Pixel_Preview_Loupe = Pixel_Preview_Loupe_SDL;
Ligne_horizontale_XOR=Ligne_horizontale_XOR_SDL; Ligne_horizontale_XOR = Ligne_horizontale_XOR_SDL;
Ligne_verticale_XOR=Ligne_verticale_XOR_SDL; Ligne_verticale_XOR = Ligne_verticale_XOR_SDL;
Display_brush_Color=Display_brush_Color_SDL; Display_brush_Color = Display_brush_Color_SDL;
Display_brush_Mono=Display_brush_Mono_SDL; Display_brush_Mono = Display_brush_Mono_SDL;
Clear_brush=Clear_brush_SDL; Clear_brush = Clear_brush_SDL;
Remap_screen=Remap_screen_SDL; Remap_screen = Remap_screen_SDL;
Afficher_ligne=Afficher_une_ligne_ecran_SDL; Afficher_ligne = Afficher_une_ligne_ecran_SDL;
Lire_ligne=Lire_une_ligne_ecran_SDL; Lire_ligne = Lire_une_ligne_ecran_SDL;
Display_zoomed_screen=Afficher_partie_de_l_ecran_zoomee_SDL; Display_zoomed_screen = Afficher_partie_de_l_ecran_zoomee_SDL;
Display_brush_Color_zoom=Display_brush_Color_zoom_SDL; Display_brush_Color_zoom = Display_brush_Color_zoom_SDL;
Display_brush_Mono_zoom=Display_brush_Mono_zoom_SDL; Display_brush_Mono_zoom = Display_brush_Mono_zoom_SDL;
Clear_brush_zoom=Clear_brush_zoom_SDL; Clear_brush_zoom = Clear_brush_zoom_SDL;
Set_Mode_SDL(); Set_Mode_SDL();
break; break;
/*
switch(Mode_video[Numero].Mode_VESA_de_base)
{
case 0x100 : Indice_VESA=0; // 640x400
break;
case 0x101 : Indice_VESA=1; // 640x480
break;
case 0x103 : Indice_VESA=2; // 800x600
break;
default : Indice_VESA=3; // 1024x768
} }
// On regarde si le mode supporte le LFB
if (VESA_Mode_Infos[Indice_VESA].Adresse_physique_LFB!=0)
{
// C'est le cas => on va s'en servir
Set_VESA_mode(Mode_video[Numero].Mode_VESA_de_base | 0x4000);
Initialiser_le_LFB(VESA_Mode_Infos[Indice_VESA].Adresse_physique_LFB,
VESA_Mode_Infos[Indice_VESA].Taille_LFB);
if (Mode_X_Ptr!=NULL)
Retoucher_CRTC();
}
else
{
// Ce n'est pas le cas, on continue comme si de rien n'était
Granularite =VESA_Mode_Infos[Indice_VESA].Granularite;
VESA_WinFuncPtr=VESA_Mode_Infos[Indice_VESA].WinFuncPtr;
Initialiser_mode_video_VESA(Mode_video[Numero].Mode_VESA_de_base);
if (Mode_X_Ptr!=NULL)
Retoucher_CRTC();
}
*/
}
Set_palette(Principal_Palette); Set_palette(Principal_Palette);
Resolution_actuelle=Numero; Resolution_actuelle = Numero;
Menu_Taille_couleur=((Largeur_ecran/Menu_Facteur_X)-(LARGEUR_MENU+2)) >> 3; Menu_Taille_couleur = ((Largeur_ecran/Menu_Facteur_X)-(LARGEUR_MENU+2)) >> 3;
Menu_Ordonnee=Hauteur_ecran; Menu_Ordonnee = Hauteur_ecran;
if (Menu_visible) if (Menu_visible)
Menu_Ordonnee-=HAUTEUR_MENU*Menu_Facteur_Y; Menu_Ordonnee -= HAUTEUR_MENU * Menu_Facteur_Y;
Menu_Ordonnee_Texte=Hauteur_ecran-(Menu_Facteur_Y<<3); Menu_Ordonnee_Texte = Hauteur_ecran-(Menu_Facteur_Y<<3);
Bouton[BOUTON_CHOIX_COL].Largeur=(Menu_Taille_couleur<<3)-1; Bouton[BOUTON_CHOIX_COL].Largeur=(Menu_Taille_couleur<<3)-1;
Clip_mouse(); Clip_mouse();
@ -950,8 +916,8 @@ void Initialiser_mode_video(int Numero)
Mouse_Y = Hauteur_ecran >> 1; Mouse_Y = Hauteur_ecran >> 1;
Set_mouse_position(); Set_mouse_position();
Sensibilite_X=Config.Indice_Sensibilite_souris_X/Mode_video[Numero].Facteur_X; Sensibilite_X = Config.Indice_Sensibilite_souris_X / Mode_video[Numero].Facteur_X;
Sensibilite_Y=Config.Indice_Sensibilite_souris_Y/Mode_video[Numero].Facteur_Y; Sensibilite_Y = Config.Indice_Sensibilite_souris_Y / Mode_video[Numero].Facteur_Y;
Sensibilite_X>>=Mouse_Facteur_de_correction_X; Sensibilite_X>>=Mouse_Facteur_de_correction_X;
Sensibilite_Y>>=Mouse_Facteur_de_correction_Y; Sensibilite_Y>>=Mouse_Facteur_de_correction_Y;
Sensibilite_souris(Sensibilite_X?Sensibilite_X:1,Sensibilite_Y?Sensibilite_Y:1); Sensibilite_souris(Sensibilite_X?Sensibilite_X:1,Sensibilite_Y?Sensibilite_Y:1);
@ -3804,13 +3770,13 @@ void Remplir(byte Couleur_de_remplissage)
fonction_afficheur Pixel_figure; fonction_afficheur Pixel_figure;
// Affichage d'un point de façon définitive (utilisation du pinceau) // Affichage d'un point de façon définitive (utilisation du pinceau)
void Pixel_figure_Definitif(short Pos_X,short Pos_Y,byte Couleur) void Pixel_figure_Definitif(word Pos_X,word Pos_Y,byte Couleur)
{ {
Afficher_pinceau(Pos_X,Pos_Y,Couleur,0); Afficher_pinceau(Pos_X,Pos_Y,Couleur,0);
} }
// Affichage d'un point pour une preview // Affichage d'un point pour une preview
void Pixel_figure_Preview(short Pos_X,short Pos_Y,byte Couleur) void Pixel_figure_Preview(word Pos_X,word Pos_Y,byte Couleur)
{ {
if ( (Pos_X>=Limite_Gauche) && if ( (Pos_X>=Limite_Gauche) &&
(Pos_X<=Limite_Droite) && (Pos_X<=Limite_Droite) &&
@ -3820,7 +3786,7 @@ void Remplir(byte Couleur_de_remplissage)
} }
// Affichage d'un point pour une preview en xor // Affichage d'un point pour une preview en xor
void Pixel_figure_Preview_xor(short Pos_X,short Pos_Y,byte Couleur) void Pixel_figure_Preview_xor(word Pos_X,word Pos_Y,byte Couleur)
{ {
if ( (Pos_X>=Limite_Gauche) && if ( (Pos_X>=Limite_Gauche) &&
(Pos_X<=Limite_Droite) && (Pos_X<=Limite_Droite) &&
@ -3831,7 +3797,7 @@ void Remplir(byte Couleur_de_remplissage)
} }
// Effacement d'un point de preview // Effacement d'un point de preview
void Pixel_figure_Effacer_preview(short Pos_X,short Pos_Y,byte Couleur) void Pixel_figure_Effacer_preview(word Pos_X,word Pos_Y,byte Couleur)
{ {
if ( (Pos_X>=Limite_Gauche) && if ( (Pos_X>=Limite_Gauche) &&
(Pos_X<=Limite_Droite) && (Pos_X<=Limite_Droite) &&
@ -3841,7 +3807,7 @@ void Remplir(byte Couleur_de_remplissage)
} }
// Affichage d'un point dans la brosse // Affichage d'un point dans la brosse
void Pixel_figure_Dans_brosse(short Pos_X,short Pos_Y,byte Couleur) void Pixel_figure_Dans_brosse(word Pos_X,word Pos_Y,byte Couleur)
{ {
Pos_X-=Brosse_Decalage_X; Pos_X-=Brosse_Decalage_X;
Pos_Y-=Brosse_Decalage_Y; Pos_Y-=Brosse_Decalage_Y;

View File

@ -98,8 +98,8 @@ void Nibble_brush(void);
void Remplir(byte Couleur_de_remplissage); void Remplir(byte Couleur_de_remplissage);
void Remplacer(byte Nouvelle_couleur); void Remplacer(byte Nouvelle_couleur);
void Pixel_figure_Preview (short Pos_X,short Pos_Y,byte Couleur); void Pixel_figure_Preview (word Pos_X,word Pos_Y,byte Couleur);
void Pixel_figure_Preview_xor(short Pos_X,short Pos_Y,byte Couleur); void Pixel_figure_Preview_xor(word Pos_X,word Pos_Y,byte Couleur);
void Tracer_cercle_vide_Definitif(short Centre_X,short Centre_Y,short Rayon,byte Couleur); void Tracer_cercle_vide_Definitif(short Centre_X,short Centre_Y,short Rayon,byte Couleur);
void Tracer_cercle_vide_Preview (short Centre_X,short Centre_Y,short Rayon,byte Couleur); void Tracer_cercle_vide_Preview (short Centre_X,short Centre_Y,short Rayon,byte Couleur);
@ -142,7 +142,7 @@ void Upload_infos_page_principal(S_Page * Page);
void Download_infos_page_brouillon(S_Page * Page); void Download_infos_page_brouillon(S_Page * Page);
void Upload_infos_page_brouillon(S_Page * Page); void Upload_infos_page_brouillon(S_Page * Page);
void Download_infos_backup(S_Liste_de_pages * Liste); void Download_infos_backup(S_Liste_de_pages * Liste);
int Initialiser_les_listes_de_backups_en_debut_de_programme(int Taille,int Largeur,int Hauteur); // int Initialiser_les_listes_de_backups_en_debut_de_programme(int Taille,int Largeur,int Hauteur); // pages.h
void Detruire_les_listes_de_backups_en_fin_de_programme(void); void Detruire_les_listes_de_backups_en_fin_de_programme(void);
void Nouveau_nombre_de_backups(int Nouveau); void Nouveau_nombre_de_backups(int Nouveau);
int Backup_avec_nouvelles_dimensions(int Upload,int Largeur,int Hauteur); int Backup_avec_nouvelles_dimensions(int Upload,int Largeur,int Hauteur);

View File

@ -451,7 +451,7 @@ void Modif_Erreur_fichier(int Nouvelle_valeur)
void Charger_image(byte Image) void Charger_image(byte Image)
{ {
int Indice; // Indice de balayage des formats int Indice; // Indice de balayage des formats
int Format; // Format du fichier à charger int Format=0; // Format du fichier à charger
// On place par défaut Erreur_fichier à vrai au cas o— on ne sache pas // On place par défaut Erreur_fichier à vrai au cas o— on ne sache pas
@ -2168,7 +2168,7 @@ void Load_BMP(void)
byte * Buffer; byte * Buffer;
word Indice; word Indice;
byte Palette_locale[256][4]; // R,V,B,0 byte Palette_locale[256][4]; // R,V,B,0
word Nb_Couleurs; word Nb_Couleurs = 0;
short Pos_X; short Pos_X;
short Pos_Y; short Pos_Y;
word Taille_ligne; word Taille_ligne;

6
main.c
View File

@ -21,6 +21,7 @@
#include "files.h" #include "files.h"
#include "loadsave.h" #include "loadsave.h"
#include "sdlscreen.h" #include "sdlscreen.h"
#include "erreurs.h"
byte Ancien_nb_lignes; // Ancien nombre de lignes de l'écran byte Ancien_nb_lignes; // Ancien nombre de lignes de l'écran
@ -503,17 +504,18 @@ void Initialisation_du_programme(int argc,char * argv[])
Mode_dans_lequel_on_demarre=Resolution_actuelle; Mode_dans_lequel_on_demarre=Resolution_actuelle;
Buffer_de_ligne_horizontale=NULL; Buffer_de_ligne_horizontale=NULL;
Resolution_actuelle=-1; // On n'était pas dans un mode graphique Resolution_actuelle=-1; // On n'était pas dans un mode graphique
Initialiser_mode_video(Mode_dans_lequel_on_demarre); Initialiser_mode_video(Mode_dans_lequel_on_demarre);
Principal_Largeur_image=Largeur_ecran; Principal_Largeur_image=Largeur_ecran;
Principal_Hauteur_image=Hauteur_ecran; Principal_Hauteur_image=Hauteur_ecran;
Brouillon_Largeur_image=Largeur_ecran; Brouillon_Largeur_image=Largeur_ecran;
Brouillon_Hauteur_image=Hauteur_ecran; Brouillon_Hauteur_image=Hauteur_ecran;
DEBUG("Avant init",0);
// 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) if (Initialiser_les_listes_de_backups_en_debut_de_programme(Config.Nb_pages_Undo+1,Largeur_ecran,Hauteur_ecran)==0)
Erreur(ERREUR_MEMOIRE); Erreur(ERREUR_MEMOIRE);
DEBUG("Apres init",1);
// On remet le nom par défaut pour la page de brouillon car il été modifié // On remet le nom par défaut pour la page de brouillon car il été modifié
// par le passage d'un fichier en paramètre lors du traitement précédent. // par le passage d'un fichier en paramètre lors du traitement précédent.
// Note: le fait que l'on ne modifie que les variables globales Brouillon_* // Note: le fait que l'on ne modifie que les variables globales Brouillon_*

View File

@ -426,7 +426,7 @@ void Gestion_principale(void)
int Indice_bouton_precedent=0; // Numéro de bouton de menu sur lequel on était précédemment int Indice_bouton_precedent=0; // Numéro de bouton de menu sur lequel on était précédemment
byte Blink; // L'opération demande un effacement du curseur byte Blink; // L'opération demande un effacement du curseur
int Bouton_Touche; // Bouton à enclencher d'après la touche de raccourci enfoncée int Bouton_Touche; // Bouton à enclencher d'après la touche de raccourci enfoncée
byte Bouton_Cote; // C“té du bouton à enclencher d'après la touche de raccourci enfoncée byte Bouton_Cote = 0; // Côté du bouton à enclencher d'après la touche de raccourci enfoncée
int Indice_Touche; // Indice du tableau de touches spéciales correspondant à la touche enfoncée int Indice_Touche; // Indice du tableau de touches spéciales correspondant à la touche enfoncée
char Chaine[25]; char Chaine[25];
byte Temp; byte Temp;

3
op_c.c
View File

@ -1,4 +1,4 @@
#include <unistd.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <stdio.h> #include <stdio.h>
@ -290,7 +290,6 @@ void Cluster_Analyser(Cluster * c,Table_occurence * to)
{ {
int rmin,rmax,vmin,vmax,bmin,bmax; int rmin,rmax,vmin,vmax,bmin,bmax;
int r,v,b; int r,v,b;
int nbocc;
// On cherche les mins et les maxs de chaque composante sur la couverture // On cherche les mins et les maxs de chaque composante sur la couverture

40
pages.c
View File

@ -416,12 +416,12 @@ void Avancer_dans_une_liste_de_pages(S_Liste_de_pages * Liste)
int Nouvelle_page_possible(S_Page * Nouvelle_page,S_Liste_de_pages * Liste_courante,S_Liste_de_pages * Liste_secondaire) int Nouvelle_page_possible(S_Page * Nouvelle_page,S_Liste_de_pages * Liste_courante,S_Liste_de_pages * Liste_secondaire)
{ {
int Taille_immediatement_disponible; unsigned int Taille_immediatement_disponible;
int Taille_liste_courante; unsigned int Taille_liste_courante;
int Taille_liste_brouillon; unsigned int Taille_liste_brouillon;
int Taille_page_courante; unsigned int Taille_page_courante;
int Taille_page_brouillon; unsigned int Taille_page_brouillon;
int Taille_nouvelle_page; unsigned int Taille_nouvelle_page;
Taille_immediatement_disponible=Memoire_libre()-QUANTITE_MINIMALE_DE_MEMOIRE_A_CONSERVER; Taille_immediatement_disponible=Memoire_libre()-QUANTITE_MINIMALE_DE_MEMOIRE_A_CONSERVER;
Taille_liste_courante =Taille_d_une_liste_de_pages(Liste_courante); Taille_liste_courante =Taille_d_une_liste_de_pages(Liste_courante);
@ -434,7 +434,10 @@ int Nouvelle_page_possible(S_Page * Nouvelle_page,S_Liste_de_pages * Liste_coura
// courante, en conservant au pire la 1ère page de brouillon. // courante, en conservant au pire la 1ère page de brouillon.
if ((Taille_immediatement_disponible+Taille_liste_courante+ if ((Taille_immediatement_disponible+Taille_liste_courante+
Taille_liste_brouillon-Taille_page_brouillon)<(2*Taille_nouvelle_page)) Taille_liste_brouillon-Taille_page_brouillon)<(2*Taille_nouvelle_page))
{
DEBUG("A",0);
return 0; return 0;
}
// Il faut pouvoir loger le brouillon et son backup dans la page de // Il faut pouvoir loger le brouillon et son backup dans la page de
// brouillon, en conservant au pire un exemplaire de la nouvelle page dans // brouillon, en conservant au pire un exemplaire de la nouvelle page dans
@ -442,7 +445,10 @@ int Nouvelle_page_possible(S_Page * Nouvelle_page,S_Liste_de_pages * Liste_coura
// brouillon) // brouillon)
if ((Taille_immediatement_disponible+Taille_liste_courante+ if ((Taille_immediatement_disponible+Taille_liste_courante+
Taille_liste_brouillon-Taille_nouvelle_page)<(2*Taille_page_brouillon)) Taille_liste_brouillon-Taille_nouvelle_page)<(2*Taille_page_brouillon))
{
DEBUG("B",1);
return 0; return 0;
}
return 1; return 1;
} }
@ -677,26 +683,18 @@ int Initialiser_les_listes_de_backups_en_debut_de_programme(int Taille,int Large
Retour=1; Retour=1;
} }
else else
{ {DEBUG("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",0);
// Il n'est pas possible de démarrer le programme avec la page Retour=0;
// principale et la page de brouillon aux dimensions demandée par }
// l'utilisateur. ==> On l'envoie ballader }
else
{DEBUG("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.",0);
Retour=0; Retour=0;
} }
} }
else else
{ {
// On ne peut pas démarrer le programme avec ne serait-ce qu'une page DEBUG("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.",0);
// 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
// peine de continuer : l'utilisateur ne pourra jamais rien faire, autant
// avorter le chargement du programme.
Retour=0; Retour=0;
} }

View File

@ -35,7 +35,7 @@ void Charger_INI_Clear_string(char * String)
{ {
// Suppression d'un espace ou d'un tab: // Suppression d'un espace ou d'un tab:
strcpy(String+Indice,String+Indice+1); memmove(String+Indice,String+Indice+1,strlen(String+Indice));
} }
else else
if ((String[Indice]==';') || if ((String[Indice]==';') ||

View File

@ -1,29 +1,29 @@
/************************************************************************
* *
* READLINE (procdure permettant de saisir une chaŒne de caractŠres) *
* *
************************************************************************/
#include "const.h" #include "const.h"
#include "struct.h" #include "struct.h"
#include "global.h" #include "global.h"
#include "graph.h" #include "graph.h"
#include "divers.h" #include "divers.h"
#include "linux.h"
//ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ void Erreur(int code);
//Û Û°
//Û READLINE (procdure permettant de saisir une chaŒne de caractŠres) Û°
//Û Û°
//ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ°
// °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
#define COULEUR_TEXTE CM_Noir #define COULEUR_TEXTE CM_Noir
#define COULEUR_FOND CM_Clair #define COULEUR_FOND CM_Clair
#define COULEUR_TEXTE_CURSEUR CM_Noir #define COULEUR_TEXTE_CURSEUR CM_Noir
#define COULEUR_FOND_CURSEUR CM_Fonce #define COULEUR_FOND_CURSEUR CM_Fonce
// Vérification de la validité d'un nom de fichier
// Vrification de la validit d'un nom de fichier
byte Chaine_valide(char * Chaine) byte Chaine_valide(char * Chaine)
{ {
byte Point_trouve=0; // Boolen "on a trouv un point dans la chaine" byte Point_trouve=0; // Booléen "on a trouvé un point dans la chaine"
byte Taille_racine=0; // Taille de la racine du nom de fichier byte Taille_racine=0; // Taille de la racine du nom de fichier
byte Taille_extension=0; // Taille de l'extension du nom de fichier byte Taille_extension=0; // Taille de l'extension du nom de fichier
byte Position; // Position du caractŠre dans la chaŒne en cours d'tude byte Position; // Position du caractère dans la chaîne en cours d'étude
for (Position=0;Chaine[Position]!='\0';Position++) for (Position=0;Chaine[Position]!='\0';Position++)
{ {

View File

@ -193,6 +193,6 @@ void Clear_brush_zoom_SDL (word Pos_X,word Pos_Y,word Decalage_X,word Dec
void Set_Mode_SDL() void Set_Mode_SDL()
/* On règle la résolution de l'écran */ /* On règle la résolution de l'écran */
{ {
Ecran_SDL=SDL_SetVideoMode(Largeur_ecran,Hauteur_ecran,8,SDL_HWSURFACE|SDL_FULLSCREEN); Ecran_SDL=SDL_SetVideoMode(Largeur_ecran,Hauteur_ecran,8,SDL_HWSURFACE/*|SDL_FULLSCREEN*/);
Ecran=Ecran_SDL->pixels; Ecran=Ecran_SDL->pixels;
} }

View File

@ -1,13 +1,14 @@
#ifndef _STRUCT_H_ #ifndef _STRUCT_H_
#define _STRUCT_H_ #define _STRUCT_H_
#include <stdint.h>
#include "const.h" #include "const.h"
// Déclaration des types de base ///////////////////////////////////////////// // Déclaration des types de base /////////////////////////////////////////////
typedef unsigned char byte; typedef uint8_t byte;
typedef unsigned short word; typedef uint16_t word;
typedef unsigned long dword; typedef uint32_t dword;
typedef void (* fonction_action) (void); typedef void (* fonction_action) (void);
typedef void (* fonction_afficheur) (word,word,byte); typedef void (* fonction_afficheur) (word,word,byte);