Filling works ! *NEVER* put a ; after a for() !

git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@77 416bcca6-2ee7-4201-b75f-2eb2f807beb1
This commit is contained in:
Adrien Destugues 2008-07-30 13:06:44 +00:00
parent 0bd265706a
commit 1f15bfbc3f
2 changed files with 25 additions and 36 deletions

View File

@ -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)

24
graph.c
View File

@ -3119,6 +3119,7 @@ void Fenetre_Afficher_sprite_drive(word Pos_X,word Pos_Y,byte Type)
for (j=0; j<HAUTEUR_SPRITE_DRIVE; j++)
for (i=0; i<LARGEUR_SPRITE_DRIVE; i++)
Pixel_dans_fenetre(Pos_X+i,Pos_Y+j,SPRITE_DRIVE[Type][j][i]);
SDL_UpdateRect(Ecran_SDL,ToWinX(Pos_X),ToWinY(Pos_Y),ToWinL(LARGEUR_SPRITE_DRIVE),ToWinH(HAUTEUR_SPRITE_DRIVE));
}
@ -3845,12 +3846,11 @@ 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);
// On fait maintenant un remplissage classique de la couleur 1 avec la 2
Fill(&Limite_atteinte_Haut ,&Limite_atteinte_Bas,
Fill(&Limite_atteinte_Haut ,&Limite_atteinte_Bas,
&Limite_atteinte_Gauche,&Limite_atteinte_Droite);
// On s'apprête à faire des opérations qui nécessitent un affichage. Il
@ -3861,12 +3861,14 @@ void Remplir(byte Couleur_de_remplissage)
// Il va maintenant falloir qu'on "turn" ce gros caca "into" un truc qui
// ressemble un peu plus à ce à quoi l'utilisateur peut s'attendre.
if (Limite_atteinte_Haut>Limite_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<Limite_Bas)
Copier_une_partie_d_image_dans_une_autre(Ecran_backup,
Limite_Gauche,Limite_atteinte_Bas+1,
@ -3889,12 +3891,6 @@ 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)