Only code formatting (Tabs must die)

git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@372 416bcca6-2ee7-4201-b75f-2eb2f807beb1
This commit is contained in:
Yves Rizoud 2008-12-06 17:28:21 +00:00
parent d6d03dc6c7
commit 8695c31c1b

View File

@ -49,21 +49,21 @@
void Pixel_SDL (word X,word Y,byte Couleur) void Pixel_SDL (word X,word Y,byte Couleur)
/* Affiche un pixel de la Couleur aux coords X;Y à l'écran */ /* Affiche un pixel de la Couleur aux coords X;Y à l'écran */
{ {
*(Ecran + X + Y * Largeur_ecran)=Couleur; *(Ecran + X + Y * Largeur_ecran)=Couleur;
} }
byte Lit_Pixel_SDL (word X,word Y) byte Lit_Pixel_SDL (word X,word Y)
/* On retourne la couleur du pixel aux coords données */ /* On retourne la couleur du pixel aux coords données */
{ {
return *( Ecran + Y * Largeur_ecran + X ); return *( Ecran + Y * Largeur_ecran + X );
} }
void Afficher_partie_de_l_ecran_SDL (word Largeur,word Hauteur,word Largeur_image) void Afficher_partie_de_l_ecran_SDL (word Largeur,word Hauteur,word Largeur_image)
/* Afficher une partie de l'image telle quelle sur l'écran */ /* Afficher une partie de l'image telle quelle sur l'écran */
{ {
byte* Dest=Ecran; //On va se mettre en 0,0 dans l'écran (EDI) byte* Dest=Ecran; //On va se mettre en 0,0 dans l'écran (EDI)
byte* Src=Principal_Decalage_Y*Largeur_image+Principal_Decalage_X+Principal_Ecran; //Coords de départ ds la source (ESI) byte* Src=Principal_Decalage_Y*Largeur_image+Principal_Decalage_X+Principal_Ecran; //Coords de départ ds la source (ESI)
int dx; int dx;
for(dx=Hauteur;dx!=0;dx--) for(dx=Hauteur;dx!=0;dx--)
// Pour chaque ligne // Pour chaque ligne
@ -81,13 +81,13 @@ void Afficher_partie_de_l_ecran_SDL (word Largeur,word Hauteur,word Largeu
void Block_SDL (word Debut_X,word Debut_Y,word Largeur,word Hauteur,byte Couleur) void Block_SDL (word Debut_X,word Debut_Y,word Largeur,word Hauteur,byte Couleur)
/* On affiche un rectangle de la couleur donnée */ /* On affiche un rectangle de la couleur donnée */
{ {
SDL_Rect rectangle; SDL_Rect rectangle;
rectangle.x=Debut_X; rectangle.x=Debut_X;
rectangle.y=Debut_Y; rectangle.y=Debut_Y;
rectangle.w=Largeur; rectangle.w=Largeur;
rectangle.h=Hauteur; rectangle.h=Hauteur;
SDL_FillRect(Ecran_SDL,&rectangle,Couleur); SDL_FillRect(Ecran_SDL,&rectangle,Couleur);
// UpdateRect(Debut_X,Debut_Y,Largeur,Hauteur); // UpdateRect(Debut_X,Debut_Y,Largeur,Hauteur);
} }
void Pixel_Preview_Normal_SDL (word X,word Y,byte Couleur) void Pixel_Preview_Normal_SDL (word X,word Y,byte Couleur)
@ -96,36 +96,35 @@ void Pixel_Preview_Normal_SDL (word X,word Y,byte Couleur)
* Note: si on modifie cette procédure, il faudra penser à faire également * Note: si on modifie cette procédure, il faudra penser à faire également
* la modif dans la procédure Pixel_Preview_Loupe_SDL. */ * la modif dans la procédure Pixel_Preview_Loupe_SDL. */
{ {
// if(X-Principal_Decalage_X >= 0 && Y - Principal_Decalage_Y >= 0) // if(X-Principal_Decalage_X >= 0 && Y - Principal_Decalage_Y >= 0)
Pixel_SDL(X-Principal_Decalage_X,Y-Principal_Decalage_Y,Couleur); Pixel_SDL(X-Principal_Decalage_X,Y-Principal_Decalage_Y,Couleur);
} }
void Pixel_Preview_Loupe_SDL (word X,word Y,byte Couleur) void Pixel_Preview_Loupe_SDL (word X,word Y,byte Couleur)
{ {
// Affiche le pixel dans la partie non zoomée // Affiche le pixel dans la partie non zoomée
Pixel_SDL(X-Principal_Decalage_X,Y-Principal_Decalage_Y,Couleur); Pixel_SDL(X-Principal_Decalage_X,Y-Principal_Decalage_Y,Couleur);
// Regarde si on doit aussi l'afficher dans la partie zoomée // Regarde si on doit aussi l'afficher dans la partie zoomée
if (Y >= Limite_Haut_Zoom && Y <= Limite_visible_Bas_Zoom if (Y >= Limite_Haut_Zoom && Y <= Limite_visible_Bas_Zoom
&& X >= Limite_Gauche_Zoom && X <= Limite_visible_Droite_Zoom) && X >= Limite_Gauche_Zoom && X <= Limite_visible_Droite_Zoom)
{ {
// On est dedans // On est dedans
int hauteur; int hauteur;
int Y_Zoom = Table_mul_facteur_zoom[Y-Loupe_Decalage_Y]; int Y_Zoom = Table_mul_facteur_zoom[Y-Loupe_Decalage_Y];
if (Menu_Ordonnee - Y_Zoom < Loupe_Facteur) if (Menu_Ordonnee - Y_Zoom < Loupe_Facteur)
// On ne doit dessiner qu'un morceau du pixel // On ne doit dessiner qu'un morceau du pixel
// sinon on dépasse sur le menu // sinon on dépasse sur le menu
hauteur = Menu_Ordonnee - Y_Zoom; hauteur = Menu_Ordonnee - Y_Zoom;
else else
hauteur = Loupe_Facteur; hauteur = Loupe_Facteur;
Block_SDL( Block_SDL(
Table_mul_facteur_zoom[X-Loupe_Decalage_X] Table_mul_facteur_zoom[X-Loupe_Decalage_X]+Principal_X_Zoom,
+ Principal_X_Zoom, Y_Zoom, Loupe_Facteur, hauteur, Couleur
Y_Zoom, Loupe_Facteur, hauteur, Couleur );
); }
}
} }
void Ligne_horizontale_XOR_SDL(word Pos_X,word Pos_Y,word Largeur) void Ligne_horizontale_XOR_SDL(word Pos_X,word Pos_Y,word Largeur)
@ -136,50 +135,50 @@ void Ligne_horizontale_XOR_SDL(word Pos_X,word Pos_Y,word Largeur)
int ecx; int ecx;
for (ecx=0;ecx<Largeur;ecx++) for (ecx=0;ecx<Largeur;ecx++)
*(edi+ecx)=~*(edi+ecx); *(edi+ecx)=~*(edi+ecx);
} }
void Ligne_verticale_XOR_SDL (word Pos_X,word Pos_Y,word Hauteur) void Ligne_verticale_XOR_SDL (word Pos_X,word Pos_Y,word Hauteur)
{ {
int i; int i;
byte color; byte color;
for (i=Pos_Y;i<Pos_Y+Hauteur;i++) for (i=Pos_Y;i<Pos_Y+Hauteur;i++)
{ {
color=*(Ecran+Pos_X+i*Largeur_ecran); color=*(Ecran+Pos_X+i*Largeur_ecran);
*(Ecran+Pos_X+i*Largeur_ecran)=~color; *(Ecran+Pos_X+i*Largeur_ecran)=~color;
} }
} }
void Display_brush_Color_SDL (word Pos_X,word Pos_Y,word Decalage_X,word Decalage_Y,word Largeur,word Hauteur,byte Couleur_de_transparence,word Largeur_brosse) void Display_brush_Color_SDL (word Pos_X,word Pos_Y,word Decalage_X,word Decalage_Y,word Largeur,word Hauteur,byte Couleur_de_transparence,word Largeur_brosse)
{ {
// EDI = Position à l'écran // EDI = Position à l'écran
byte* EDI = Ecran + Pos_Y * Largeur_ecran + Pos_X; byte* EDI = Ecran + Pos_Y * Largeur_ecran + Pos_X;
// ESI = Position dans la brosse // ESI = Position dans la brosse
byte* ESI = Brosse + Decalage_Y * Largeur_brosse + Decalage_X; byte* ESI = Brosse + Decalage_Y * Largeur_brosse + Decalage_X;
word DX,CX; word DX,CX;
// Pour chaque ligne // Pour chaque ligne
for(DX = Hauteur;DX > 0; DX--) for(DX = Hauteur;DX > 0; DX--)
{ {
// Pour chaque pixel // Pour chaque pixel
for(CX = Largeur;CX > 0; CX--) for(CX = Largeur;CX > 0; CX--)
{ {
// On vérifie que ce n'est pas la transparence // On vérifie que ce n'est pas la transparence
if(*ESI != Couleur_de_transparence) if(*ESI != Couleur_de_transparence)
{ {
*EDI = *ESI; *EDI = *ESI;
} }
// Pixel suivant // Pixel suivant
ESI++; EDI++; ESI++; EDI++;
} }
// On passe à la ligne suivante // On passe à la ligne suivante
EDI = EDI + Largeur_ecran - Largeur; EDI = EDI + Largeur_ecran - Largeur;
ESI = ESI + Largeur_brosse - Largeur; ESI = ESI + Largeur_brosse - Largeur;
} }
UpdateRect(Pos_X,Pos_Y,Largeur,Hauteur); UpdateRect(Pos_X,Pos_Y,Largeur,Hauteur);
} }
void Display_brush_Mono_SDL (word Pos_X, word Pos_Y, void Display_brush_Mono_SDL (word Pos_X, word Pos_Y,
@ -187,38 +186,38 @@ void Display_brush_Mono_SDL (word Pos_X, word Pos_Y,
byte Couleur_de_transparence, byte Couleur, word Largeur_brosse) byte Couleur_de_transparence, byte Couleur, word Largeur_brosse)
/* On affiche la brosse en monochrome */ /* On affiche la brosse en monochrome */
{ {
byte* Dest=Pos_Y*Largeur_ecran+Pos_X+Ecran; // EDI = adr destination à byte* Dest=Pos_Y*Largeur_ecran+Pos_X+Ecran; // EDI = adr destination à
// l'écran // l'écran
byte* Src=Largeur_brosse*Decalage_Y+Decalage_X+Brosse; // ESI = adr ds byte* Src=Largeur_brosse*Decalage_Y+Decalage_X+Brosse; // ESI = adr ds
// la brosse // la brosse
int dx,cx; int dx,cx;
for(dx=Hauteur;dx!=0;dx--) for(dx=Hauteur;dx!=0;dx--)
//Pour chaque ligne //Pour chaque ligne
{
for(cx=Largeur;cx!=0;cx--)
//Pour chaque pixel
{ {
for(cx=Largeur;cx!=0;cx--) if (*Src!=Couleur_de_transparence)
//Pour chaque pixel *Dest=Couleur;
{
if (*Src!=Couleur_de_transparence)
*Dest=Couleur;
// On passe au pixel suivant // On passe au pixel suivant
Src++; Src++;
Dest++; Dest++;
}
// On passe à la ligne suivante
Src+=Largeur_brosse-Largeur;
Dest+=Largeur_ecran-Largeur;
} }
UpdateRect(Pos_X,Pos_Y,Largeur,Hauteur);
// On passe à la ligne suivante
Src+=Largeur_brosse-Largeur;
Dest+=Largeur_ecran-Largeur;
}
UpdateRect(Pos_X,Pos_Y,Largeur,Hauteur);
} }
void Clear_brush_SDL (word Pos_X,word Pos_Y,__attribute__((unused)) word Decalage_X,__attribute__((unused)) word Decalage_Y,word Largeur,word Hauteur,__attribute__((unused))byte Couleur_de_transparence,word Largeur_image) void Clear_brush_SDL (word Pos_X,word Pos_Y,__attribute__((unused)) word Decalage_X,__attribute__((unused)) word Decalage_Y,word Largeur,word Hauteur,__attribute__((unused))byte Couleur_de_transparence,word Largeur_image)
{ {
byte* Dest=Ecran+Pos_X+Pos_Y*Largeur_ecran; //On va se mettre en 0,0 dans l'écran (EDI) byte* Dest=Ecran+Pos_X+Pos_Y*Largeur_ecran; //On va se mettre en 0,0 dans l'écran (EDI)
byte* Src = ( Pos_Y + Principal_Decalage_Y ) * Largeur_image + Pos_X + Principal_Decalage_X + Principal_Ecran; //Coords de départ ds la source (ESI) byte* Src = ( Pos_Y + Principal_Decalage_Y ) * Largeur_image + Pos_X + Principal_Decalage_X + Principal_Ecran; //Coords de départ ds la source (ESI)
int dx; int dx;
for(dx=Hauteur;dx!=0;dx--) for(dx=Hauteur;dx!=0;dx--)
// Pour chaque ligne // Pour chaque ligne
@ -267,31 +266,31 @@ void Affiche_brosse_SDL(byte * B, word Pos_X,word Pos_Y,word Decalage_X,word Dec
void Remap_screen_SDL (word Pos_X,word Pos_Y,word Largeur,word Hauteur,byte * Table_de_conversion) void Remap_screen_SDL (word Pos_X,word Pos_Y,word Largeur,word Hauteur,byte * Table_de_conversion)
{ {
// EDI = coords a l'écran // EDI = coords a l'écran
byte* EDI = Ecran + Pos_Y * Largeur_ecran + Pos_X; byte* EDI = Ecran + Pos_Y * Largeur_ecran + Pos_X;
int dx,cx; int dx,cx;
// Pour chaque ligne // Pour chaque ligne
for(dx=Hauteur;dx>0;dx--) for(dx=Hauteur;dx>0;dx--)
{ {
// Pour chaque pixel // Pour chaque pixel
for(cx=Largeur;cx>0;cx--) for(cx=Largeur;cx>0;cx--)
{ {
*EDI = Table_de_conversion[*EDI]; *EDI = Table_de_conversion[*EDI];
EDI ++; EDI ++;
} }
EDI = EDI + Largeur_ecran - Largeur; EDI = EDI + Largeur_ecran - Largeur;
} }
UpdateRect(Pos_X,Pos_Y,Largeur,Hauteur); UpdateRect(Pos_X,Pos_Y,Largeur,Hauteur);
} }
void Afficher_une_ligne_ecran_SDL (word Pos_X,word Pos_Y,word Largeur,byte * Ligne) void Afficher_une_ligne_ecran_SDL (word Pos_X,word Pos_Y,word Largeur,byte * Ligne)
/* On affiche toute une ligne de pixels. Utilisé pour les textes. */ /* On affiche toute une ligne de pixels. Utilisé pour les textes. */
{ {
memcpy(Ecran+Pos_X+Pos_Y*Largeur_ecran,Ligne,Largeur); memcpy(Ecran+Pos_X+Pos_Y*Largeur_ecran,Ligne,Largeur);
//UpdateRect(Pos_X,Pos_Y,Largeur,1); //UpdateRect(Pos_X,Pos_Y,Largeur,1);
} }
void Afficher_une_ligne_transparente_mono_a_l_ecran_SDL( void Afficher_une_ligne_transparente_mono_a_l_ecran_SDL(
@ -300,21 +299,21 @@ void Afficher_une_ligne_transparente_mono_a_l_ecran_SDL(
// Affiche une ligne à l'écran avec une couleur + transparence. // Affiche une ligne à l'écran avec une couleur + transparence.
// Utilisé par les brosses en mode zoom // Utilisé par les brosses en mode zoom
{ {
byte* Dest = Ecran+ Pos_Y * Largeur_ecran + Pos_X; byte* Dest = Ecran+ Pos_Y * Largeur_ecran + Pos_X;
int Compteur; int Compteur;
// Pour chaque pixel // Pour chaque pixel
for(Compteur=0;Compteur<Largeur;Compteur++) for(Compteur=0;Compteur<Largeur;Compteur++)
{ {
if (Couleur_transparence!=*Ligne) if (Couleur_transparence!=*Ligne)
*Dest = Couleur; *Dest = Couleur;
Ligne ++; // Pixel suivant Ligne ++; // Pixel suivant
Dest++; Dest++;
} }
} }
void Lire_une_ligne_ecran_SDL (word Pos_X,word Pos_Y,word Largeur,byte * Ligne) void Lire_une_ligne_ecran_SDL (word Pos_X,word Pos_Y,word Largeur,byte * Ligne)
{ {
memcpy(Ligne,Largeur_ecran * Pos_Y + Pos_X + Ecran,Largeur); memcpy(Ligne,Largeur_ecran * Pos_Y + Pos_X + Ecran,Largeur);
} }
void Afficher_partie_de_l_ecran_zoomee_SDL( void Afficher_partie_de_l_ecran_zoomee_SDL(
@ -322,56 +321,56 @@ void Afficher_partie_de_l_ecran_zoomee_SDL(
word Hauteur, // Hauteur zoomée word Hauteur, // Hauteur zoomée
word Largeur_image,byte * Buffer) word Largeur_image,byte * Buffer)
{ {
byte* ESI = Principal_Ecran + Loupe_Decalage_Y * Largeur_image byte* ESI = Principal_Ecran + Loupe_Decalage_Y * Largeur_image
+ Loupe_Decalage_X; + Loupe_Decalage_X;
int EDX = 0; // Ligne en cours de traitement int EDX = 0; // Ligne en cours de traitement
// Pour chaque ligne à zoomer // Pour chaque ligne à zoomer
while(1) while(1)
{ {
int CX; int CX;
// On éclate la ligne // On éclate la ligne
Zoomer_une_ligne(ESI,Buffer,Loupe_Facteur,Largeur); Zoomer_une_ligne(ESI,Buffer,Loupe_Facteur,Largeur);
// On l'affiche Facteur fois, sur des lignes consécutives // On l'affiche Facteur fois, sur des lignes consécutives
CX = Loupe_Facteur; CX = Loupe_Facteur;
// Pour chaque ligne // Pour chaque ligne
do{ do{
// On affiche la ligne zoomée // On affiche la ligne zoomée
Afficher_une_ligne_ecran_SDL( Afficher_une_ligne_ecran_SDL(
Principal_X_Zoom, EDX, Largeur*Loupe_Facteur, Principal_X_Zoom, EDX, Largeur*Loupe_Facteur,
Buffer Buffer
); );
// On passe à la suivante // On passe à la suivante
EDX++; EDX++;
if(EDX==Hauteur) if(EDX==Hauteur)
{ {
UpdateRect(Principal_X_Zoom,0, UpdateRect(Principal_X_Zoom,0,
Largeur*Loupe_Facteur,Hauteur); Largeur*Loupe_Facteur,Hauteur);
return; return;
} }
CX--; CX--;
}while (CX > 0); }while (CX > 0);
ESI += Largeur_image; ESI += Largeur_image;
} }
// ATTENTION on n'arrive jamais ici ! // ATTENTION on n'arrive jamais ici !
} }
void Afficher_une_ligne_transparente_a_l_ecran_SDL(word Pos_X,word Pos_Y,word Largeur,byte* Ligne,byte Couleur_transparence) void Afficher_une_ligne_transparente_a_l_ecran_SDL(word Pos_X,word Pos_Y,word Largeur,byte* Ligne,byte Couleur_transparence)
{ {
byte* ESI = Ligne; byte* ESI = Ligne;
byte* EDI = Ecran + Pos_Y * Largeur_ecran + Pos_X; byte* EDI = Ecran + Pos_Y * Largeur_ecran + Pos_X;
word cx; word cx;
// Pour chaque pixel de la ligne // Pour chaque pixel de la ligne
for(cx = Largeur;cx > 0;cx--) for(cx = Largeur;cx > 0;cx--)
{ {
if(*ESI!=Couleur_transparence) if(*ESI!=Couleur_transparence)
*EDI = *ESI; *EDI = *ESI;
ESI++; ESI++;
EDI++; EDI++;
} }
} }
// Affiche une partie de la brosse couleur zoomée // Affiche une partie de la brosse couleur zoomée
@ -382,28 +381,27 @@ void Display_brush_Color_zoom_SDL (word Pos_X,word Pos_Y,
word Largeur_brosse, // Largeur réelle de la brosse word Largeur_brosse, // Largeur réelle de la brosse
byte * Buffer) byte * Buffer)
{ {
byte* ESI = Brosse+Decalage_Y*Largeur_brosse + Decalage_X; byte* ESI = Brosse+Decalage_Y*Largeur_brosse + Decalage_X;
word DX = Pos_Y; word DX = Pos_Y;
byte bx; byte bx;
// Pour chaque ligne // Pour chaque ligne
while(1) while(1)
{ {
Zoomer_une_ligne(ESI,Buffer,Loupe_Facteur,Largeur); Zoomer_une_ligne(ESI,Buffer,Loupe_Facteur,Largeur);
// On affiche facteur fois la ligne zoomée // On affiche facteur fois la ligne zoomée
for(bx=Loupe_Facteur;bx>0;bx--) for(bx=Loupe_Facteur;bx>0;bx--)
{ {
Afficher_une_ligne_transparente_a_l_ecran_SDL(Pos_X,DX,Largeur*Loupe_Facteur,Buffer,Couleur_de_transparence); Afficher_une_ligne_transparente_a_l_ecran_SDL(Pos_X,DX,Largeur*Loupe_Facteur,Buffer,Couleur_de_transparence);
DX++; DX++;
if(DX==Pos_Y_Fin) if(DX==Pos_Y_Fin)
{ {
return; return;
} }
} }
ESI += Largeur_brosse; ESI += Largeur_brosse;
}
} // ATTENTION zone jamais atteinte
// ATTENTION zone jamais atteinte
} }
void Display_brush_Mono_zoom_SDL (word Pos_X, word Pos_Y, void Display_brush_Mono_zoom_SDL (word Pos_X, word Pos_Y,
@ -416,99 +414,99 @@ void Display_brush_Mono_zoom_SDL (word Pos_X, word Pos_Y,
) )
{ {
byte* ESI = Brosse + Decalage_Y * Largeur_brosse + Decalage_X; byte* ESI = Brosse + Decalage_Y * Largeur_brosse + Decalage_X;
int DX=Pos_Y; int DX=Pos_Y;
//Pour chaque ligne à zoomer : //Pour chaque ligne à zoomer :
while(1) while(1)
{ {
int BX; int BX;
// ESI = Ligne originale // ESI = Ligne originale
// On éclate la ligne // On éclate la ligne
Zoomer_une_ligne(ESI,Buffer,Loupe_Facteur,Largeur); Zoomer_une_ligne(ESI,Buffer,Loupe_Facteur,Largeur);
// On affiche la ligne Facteur fois à l'écran (sur des // On affiche la ligne Facteur fois à l'écran (sur des
// lignes consécutives) // lignes consécutives)
BX = Loupe_Facteur; BX = Loupe_Facteur;
// Pour chaque ligne écran // Pour chaque ligne écran
do do
{ {
// On affiche la ligne zoomée // On affiche la ligne zoomée
Afficher_une_ligne_transparente_mono_a_l_ecran_SDL( Afficher_une_ligne_transparente_mono_a_l_ecran_SDL(
Pos_X, DX, Largeur * Loupe_Facteur, Pos_X, DX, Largeur * Loupe_Facteur,
Buffer, Couleur_de_transparence, Couleur Buffer, Couleur_de_transparence, Couleur
); );
// On passe à la ligne suivante // On passe à la ligne suivante
DX++; DX++;
// On vérifie qu'on est pas à la ligne finale // On vérifie qu'on est pas à la ligne finale
if(DX == Pos_Y_Fin) if(DX == Pos_Y_Fin)
{ {
UpdateRect( Pos_X, Pos_Y, UpdateRect( Pos_X, Pos_Y,
Largeur * Loupe_Facteur, Pos_Y_Fin - Pos_Y ); Largeur * Loupe_Facteur, Pos_Y_Fin - Pos_Y );
return; return;
} }
BX --; BX --;
} }
while (BX > 0); while (BX > 0);
// Passage à la ligne suivante dans la brosse aussi // Passage à la ligne suivante dans la brosse aussi
ESI+=Largeur_brosse; ESI+=Largeur_brosse;
} }
} }
void Clear_brush_zoom_SDL (word Pos_X,word Pos_Y,word Decalage_X,word Decalage_Y,word Largeur,word Pos_Y_Fin,__attribute__((unused)) byte Couleur_de_transparence,word Largeur_image,byte * Buffer) void Clear_brush_zoom_SDL (word Pos_X,word Pos_Y,word Decalage_X,word Decalage_Y,word Largeur,word Pos_Y_Fin,__attribute__((unused)) byte Couleur_de_transparence,word Largeur_image,byte * Buffer)
{ {
// En fait on va recopier l'image non zoomée dans la partie zoomée ! // En fait on va recopier l'image non zoomée dans la partie zoomée !
byte* ESI = Principal_Ecran + Decalage_Y * Largeur_image + Decalage_X; byte* ESI = Principal_Ecran + Decalage_Y * Largeur_image + Decalage_X;
int DX = Pos_Y; int DX = Pos_Y;
int bx; int bx;
// Pour chaque ligne à zoomer // Pour chaque ligne à zoomer
while(1){ while(1){
Zoomer_une_ligne(ESI,Buffer,Loupe_Facteur,Largeur); Zoomer_une_ligne(ESI,Buffer,Loupe_Facteur,Largeur);
bx=Loupe_Facteur; bx=Loupe_Facteur;
// Pour chaque ligne // Pour chaque ligne
do{ do{
Afficher_une_ligne_ecran_SDL(Pos_X,DX, Afficher_une_ligne_ecran_SDL(Pos_X,DX,
Largeur * Loupe_Facteur,Buffer); Largeur * Loupe_Facteur,Buffer);
// Ligne suivante // Ligne suivante
DX++; DX++;
if(DX==Pos_Y_Fin) if(DX==Pos_Y_Fin)
{ {
UpdateRect(Pos_X,Pos_Y, UpdateRect(Pos_X,Pos_Y,
Largeur*Loupe_Facteur,Pos_Y_Fin-Pos_Y); Largeur*Loupe_Facteur,Pos_Y_Fin-Pos_Y);
return; return;
} }
bx--; bx--;
}while(bx!=0); }while(bx!=0);
ESI+= Largeur_image; ESI+= Largeur_image;
} }
} }
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_FULLSCREEN*Plein_ecran|SDL_RESIZABLE); Ecran_SDL=SDL_SetVideoMode(Largeur_ecran,Hauteur_ecran,8,SDL_FULLSCREEN*Plein_ecran|SDL_RESIZABLE);
if(Ecran_SDL != NULL) if(Ecran_SDL != NULL)
{ {
// Vérification du mode obtenu (ce n'est pas toujours celui demandé) // Vérification du mode obtenu (ce n'est pas toujours celui demandé)
if (Ecran_SDL->w != Largeur_ecran || Ecran_SDL->h != Hauteur_ecran) if (Ecran_SDL->w != Largeur_ecran || Ecran_SDL->h != Hauteur_ecran)
{ {
DEBUG("Erreur mode video obtenu différent de celui demandé !!",0); DEBUG("Erreur mode video obtenu différent de celui demandé !!",0);
Largeur_ecran = Ecran_SDL->w; Largeur_ecran = Ecran_SDL->w;
Hauteur_ecran = Ecran_SDL->h; Hauteur_ecran = Ecran_SDL->h;
} }
Ecran=Ecran_SDL->pixels; Ecran=Ecran_SDL->pixels;
} }
else else
DEBUG("Erreur changement de mode video !!",0); DEBUG("Erreur changement de mode video !!",0);
SDL_ShowCursor(0); // Cache le curseur SDL, on le gère en soft SDL_ShowCursor(0); // Cache le curseur SDL, on le gère en soft
} }
// Fonction qui filtre les evenements génériques. // Fonction qui filtre les evenements génériques.