From 1f15bfbc3f2ad76dd844fe35d84ad907f83222b8 Mon Sep 17 00:00:00 2001 From: Adrien Destugues Date: Wed, 30 Jul 2008 13:06:44 +0000 Subject: [PATCH] Filling works ! *NEVER* put a ; after a for() ! git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@77 416bcca6-2ee7-4201-b75f-2eb2f807beb1 --- divers.c | 37 +++++++++++++++---------------------- graph.c | 24 ++++++++++-------------- 2 files changed, 25 insertions(+), 36 deletions(-) diff --git a/divers.c b/divers.c index f1d5414d..0d86ee7a 100644 --- a/divers.c +++ b/divers.c @@ -416,8 +416,8 @@ void Copier_une_partie_d_image_dans_une_autre(byte * Source,word S_Pos_X,word S_ memcpy(edi,esi,Largeur); // Passe à la ligne suivante - esi+=Largeur_source - Largeur; - edi+=Largeur_destination - Largeur; + esi+=Largeur_source; + edi+=Largeur_destination; } @@ -491,35 +491,28 @@ void Clip_mouse(void) void Remplacer_toutes_les_couleurs_dans_limites(byte * Table_de_remplacement) { - // ESI pointe sur le début de la ligne d'écran actuelle - byte* esi = Principal_Ecran + Limite_Gauche + - Limite_Haut * Principal_Largeur_image; - - // EDI pointe sur la position actuelle dans l'écran - byte* edi = esi; - - // On place dans CX le nombre de lignes à traiter int Ligne; int Compteur; + byte* Adresse; + + byte Ancien; + +DEBUG("Haut",Limite_Haut); +DEBUG("Bas",Limite_Bas); +DEBUG("Gauche",Limite_Gauche); +DEBUG("Droite",Limite_Droite); // Pour chaque ligne : - for(Ligne = Limite_Haut;Ligne < Limite_Bas; Ligne++) + for(Ligne = Limite_Haut;Ligne <= Limite_Bas; Ligne++) { // Pour chaque pixel sur la ligne : - for (Compteur = Limite_Gauche;Compteur < Limite_Droite;Compteur ++); + for (Compteur = Limite_Gauche;Compteur <= Limite_Droite;Compteur ++) { - if(*edi!=0) DEBUG("c",*edi); - *edi = Table_de_remplacement[*edi]; - edi++; + Adresse = Principal_Ecran+Ligne*Principal_Largeur_image+Compteur; + Ancien=*Adresse; + *Adresse = Table_de_remplacement[Ancien]; } - - // Passage à la ligne suivante - esi += Principal_Largeur_image; - edi = esi; } - - DEBUG("Ligne",Ligne); - DEBUG("Compteur",Compteur); } byte Lit_pixel_dans_ecran_backup (word X,word Y) diff --git a/graph.c b/graph.c index 243a0beb..25038431 100644 --- a/graph.c +++ b/graph.c @@ -3119,6 +3119,7 @@ void Fenetre_Afficher_sprite_drive(word Pos_X,word Pos_Y,byte Type) for (j=0; jLimite_Haut) - Copier_une_partie_d_image_dans_une_autre(Ecran_backup, - Limite_Gauche,Limite_Haut, - (Limite_Droite-Limite_Gauche)+1, - Limite_atteinte_Haut-Limite_Haut, - Principal_Largeur_image,Principal_Ecran, - Limite_Gauche,Limite_Haut,Principal_Largeur_image); + Copier_une_partie_d_image_dans_une_autre(Ecran_backup, // Source + Limite_Gauche,Limite_Haut, // Pos X et Y dans source + (Limite_Droite-Limite_Gauche)+1, // Largeur copie + Limite_atteinte_Haut-Limite_Haut, // Hauteur copie + Principal_Largeur_image, // Largeur de la source + Principal_Ecran, // Destination + Limite_Gauche,Limite_Haut, // Pos X et Y destination + Principal_Largeur_image); // Largeur destination if (Limite_atteinte_Bas