diff --git a/divers.c b/divers.c index 52e9979c..654e6130 100644 --- a/divers.c +++ b/divers.c @@ -318,24 +318,8 @@ void Get_input(void) void Initialiser_chrono(dword Delai) // Démarrer le chrono { - puts("Initialiser_chrono non implémenté!"); -/* - push ebp - mov ebp,esp - - arg Delai:dword - - mov eax,Delai - mov Chrono_delay,eax - - xor ah,ah - int 1Ah - mov word ptr[Chrono_cmp+0],dx - mov word ptr[Chrono_cmp+2],cx - - mov esp,ebp - pop ebp -*/ + Chrono_delay = Delai; + Chrono_cmp = SDL_GetTicks()/55; return; } @@ -379,7 +363,7 @@ word Detection_souris(void) byte Lit_pixel_dans_ecran_courant (word X,word Y) { - return (*(Principal_Ecran+Y*Principal_Largeur_image+X)); + return *(Principal_Ecran+Y*Principal_Largeur_image+X); } void Pixel_dans_ecran_courant (word X,word Y,byte Couleur) @@ -512,14 +496,15 @@ void Remplacer_toutes_les_couleurs_dans_limites(byte * Table_de_remplacement) // On place dans CX le nombre de lignes à traiter int Ligne; + int Compteur; // Pour chaque ligne : for(Ligne = Limite_Haut;Ligne < Limite_Bas; Ligne++) { - int Compteur; // Pour chaque pixel sur la ligne : for (Compteur = Limite_Gauche;Compteur < Limite_Droite;Compteur ++); { + if(*edi!=0) DEBUG("c",*edi); *edi = Table_de_remplacement[*edi]; edi++; } @@ -528,6 +513,9 @@ void Remplacer_toutes_les_couleurs_dans_limites(byte * Table_de_remplacement) esi += Principal_Largeur_image; edi = esi; } + + DEBUG("Ligne",Ligne); + DEBUG("Compteur",Compteur); } byte inline Lit_pixel_dans_ecran_backup (word X,word Y) diff --git a/erreurs.h b/erreurs.h new file mode 100644 index 00000000..d39d5909 --- /dev/null +++ b/erreurs.h @@ -0,0 +1,12 @@ +// Affcihenom fichier, n° ligne, nom fonction, une chaine et un entier. +#define DEBUG(y,z) printf("%s %d %s | %s : %d###\n",__FILE__,__LINE__,__func__,y,(unsigned int)z) + +// DEBUG en hexadécimal +#define DEBUGX(y,z) printf("%s %d %s | %s : %X###\n",__FILE__,__LINE__,__func__,y,(unsigned int)z) + +#define UNIMPLEMENTED printf("%s %d %s non implémenté !\n",__FILE__,__LINE__,__func__); + +#define UNTESTED printf("%s %d %s à tester !\n",__FILE__,__LINE__,__func__); + +void Erreur(int); + diff --git a/graph.c b/graph.c index ebaf8231..d4ad2450 100644 --- a/graph.c +++ b/graph.c @@ -3655,8 +3655,9 @@ void Fill(short * Limite_atteinte_Haut , short * Limite_atteinte_Bas, while (Debut_X<=Limite_Droite) { // On cherche son début - for (;(Debut_X<=Limite_Droite) && - (Lit_pixel_dans_ecran_courant(Debut_X,Ligne)!=1);Debut_X++); + while((Debut_X<=Limite_Droite) && + (Lit_pixel_dans_ecran_courant(Debut_X,Ligne)!=1)) + Debut_X++; if (Debut_X<=Limite_Droite) { @@ -3840,6 +3841,7 @@ void Remplir(byte Couleur_de_remplissage) // On va maintenant "épurer" la zone visible de l'image: memset(Table_de_remplacement,0,256); + DEBUG("Num couleur",Lit_pixel_dans_ecran_courant(Pinceau_X,Pinceau_Y)); Table_de_remplacement[Lit_pixel_dans_ecran_courant(Pinceau_X,Pinceau_Y)]=1; Remplacer_toutes_les_couleurs_dans_limites(Table_de_remplacement); @@ -3883,6 +3885,12 @@ void Remplir(byte Couleur_de_remplissage) Principal_Largeur_image,Principal_Ecran, Limite_atteinte_Droite+1,Limite_atteinte_Haut,Principal_Largeur_image); + DEBUG("Haut",Limite_atteinte_Haut); + DEBUG("Bas",Limite_atteinte_Bas); + + DEBUG("Gauche",Limite_atteinte_Gauche); + DEBUG("Droite",Limite_atteinte_Droite); + for (Pos_Y=Limite_atteinte_Haut;Pos_Y<=Limite_atteinte_Bas;Pos_Y++) for (Pos_X=Limite_atteinte_Gauche;Pos_X<=Limite_atteinte_Droite;Pos_X++) if (Lit_pixel_dans_ecran_courant(Pos_X,Pos_Y)==2) diff --git a/graph.h b/graph.h index d7645189..7d1572eb 100644 --- a/graph.h +++ b/graph.h @@ -146,7 +146,6 @@ void Detruire_les_listes_de_backups_en_fin_de_programme(void); void Nouveau_nombre_de_backups(int Nouveau); int Backup_avec_nouvelles_dimensions(int Upload,int Largeur,int Hauteur); int Backuper_et_redimensionner_brouillon(int Largeur,int Hauteur); -void Backup(void); void Undo(void); void Redo(void); void Detruire_la_page_courante(void); diff --git a/moteur.c b/moteur.c index abc832e4..5c82113b 100644 --- a/moteur.c +++ b/moteur.c @@ -269,8 +269,8 @@ void Tracer_cadre_de_bouton_du_menu(byte Numero,byte Enfonce) SDL_UpdateRect(Ecran_SDL, Debut_X*Menu_Facteur_X, Debut_Y*Menu_Facteur_Y + Menu_Ordonnee, - (Fin_X-Debut_X)*Menu_Facteur_X, - (Fin_Y-Debut_Y)*Menu_Facteur_Y); + (Fin_X+1-Debut_X)*Menu_Facteur_X, + (Fin_Y+1-Debut_Y)*Menu_Facteur_Y); } diff --git a/operatio.c b/operatio.c index 13a4f8a1..fdb27c5d 100644 --- a/operatio.c +++ b/operatio.c @@ -7,6 +7,7 @@ #include "graph.h" #include "operatio.h" #include "boutons.h" +#include "pages.h" void Demarrer_pile_operation(word Operation_demandee) { diff --git a/pages.c b/pages.c index 3501f7a4..9f26a803 100644 --- a/pages.c +++ b/pages.c @@ -10,10 +10,7 @@ #include "global.h" #include "pages.h" #include "graph.h" - -// On déclare méchamment le prototype de Erreur pour éviter de faire un -// fichier "main.h": -void Erreur(int Code); +#include "erreurs.h" /// /// GESTION DES PAGES @@ -52,6 +49,7 @@ void Initialiser_S_Page(S_Page * Page) } void Download_infos_page_principal(S_Page * Page) +// Affiche la page à l'écran { //int Indice_facteur; int Dimensions_modifiees; @@ -111,6 +109,7 @@ void Download_infos_page_principal(S_Page * Page) } void Upload_infos_page_principal(S_Page * Page) +// Sauve l'écran courant dans la page { if (Page!=NULL) { @@ -805,10 +804,12 @@ int Backuper_et_redimensionner_brouillon(int Largeur,int Hauteur) } void Backup(void) +// Sauve la page courante comme première page de backup et crée une nouvelle page +// pur continuer à dessiner. Utilisé par exemple pour le fill { 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); @@ -823,7 +824,7 @@ void Backup(void) Download_infos_backup(Principal_Backups); // On copie l'image du backup vers la page courante: - memcpy(Principal_Ecran,Ecran_backup,Principal_Largeur_image*Principal_Hauteur_image); + memcpy(Ecran_backup,Principal_Ecran,Principal_Largeur_image*Principal_Hauteur_image); // On détruit le descripteur de la page courante free(Nouvelle_page); diff --git a/palette.c b/palette.c index 6e0086c2..40b9ee0f 100644 --- a/palette.c +++ b/palette.c @@ -7,6 +7,7 @@ #include "moteur.h" #include "readline.h" #include "boutons.h" +#include "pages.h" // --------------------------- Menu des palettes ----------------------------- char * Libelle_reduction_palette[7]=