(linux) Fixed signedness issue that caused previous change to behave strangely.

Unsupported modes are no longer listed.
(linux) Fixed a "harmless" signedness warning in LBM loader
Will sort modes tomorrow, with a qsort.


git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@200 416bcca6-2ee7-4201-b75f-2eb2f807beb1
This commit is contained in:
Yves Rizoud 2008-10-05 02:47:28 +00:00
parent 40fe3ccf09
commit 75c772a724
3 changed files with 96 additions and 86 deletions

View File

@ -1215,7 +1215,7 @@ void Afficher_liste_modes(short Debut_liste, short Position_curseur)
if (Position_curseur!=Indice)
{
Couleur_fond =CM_Noir;
if (Mode_video[Mode_courant].Etat<128)
if ((Mode_video[Mode_courant].Etat & 3) != 3)
Couleur_texte=CM_Clair;
else
Couleur_texte=CM_Fonce;
@ -1223,18 +1223,19 @@ void Afficher_liste_modes(short Debut_liste, short Position_curseur)
else
{
Couleur_fond =CM_Fonce;
if (Mode_video[Mode_courant].Etat<128)
if ((Mode_video[Mode_courant].Etat & 3) != 3)
Couleur_texte=CM_Blanc;
else
Couleur_texte=CM_Clair;
}
Num2str(Mode_video[Mode_courant].Largeur,Chaine,4);
Num2str(Mode_video[Mode_courant].Hauteur,Chaine+4,4);
Chaine[4]=' ';
Num2str(Mode_video[Mode_courant].Hauteur,Chaine+5,4);
if(Mode_video[Mode_courant].Fullscreen == 1)
memcpy(Chaine+8," Fullscreen ",15);
memcpy(Chaine+9," Fullscreen ",15);
else
memcpy(Chaine+8," Window ",15);
memcpy(Chaine+9," Window ",15);
if (Mode_video[Mode_courant].Largeur*3 == Mode_video[Mode_courant].Hauteur*4)
Ratio=" 4/3 ";
@ -1244,6 +1245,9 @@ void Afficher_liste_modes(short Debut_liste, short Position_curseur)
Ratio="16/10 ";
else
Ratio=" ";
if (Mode_courant == 0)
Ratio=" ";
strcat(Chaine,Ratio);
Print_dans_fenetre(39,Pos_Y,Chaine,Couleur_texte,Couleur_fond);
@ -1289,7 +1293,7 @@ void Bouton_Resol(void)
Print_dans_fenetre( 12, 37,"Width:" ,CM_Fonce,CM_Clair);
Print_dans_fenetre(108, 37,"Height:" ,CM_Fonce,CM_Clair);
Print_dans_fenetre( 16, 60,"OK" ,CM_Fonce,CM_Clair);
Print_dans_fenetre( 55, 60,"X Y" ,CM_Fonce,CM_Clair);
Print_dans_fenetre( 55, 60,"X Y" ,CM_Fonce,CM_Clair);
Print_dans_fenetre(120, 60,"Win / Full" ,CM_Fonce,CM_Clair);
Print_dans_fenetre(219, 60,"Ratio" ,CM_Fonce,CM_Clair);
Print_dans_fenetre( 30,170,"\03" ,CM_Fonce,CM_Clair);
@ -1438,9 +1442,10 @@ void Bouton_Resol(void)
Mode_video[Temp].Etat=((Mode_video[Temp].Etat&0x7F)+1)&3;
else
Mode_video[Temp].Etat=((Mode_video[Temp].Etat&0x7F)+3)&3;
Effacer_curseur();
Cocher_bouton_mode(19,16+(Bouton_clicke<<3),Mode_video[Temp].Etat);
Afficher_liste_modes(Debut_liste,Position_curseur);
Afficher_curseur();
}
}
@ -1514,7 +1519,7 @@ void Bouton_Resol(void)
|| (Hauteur_choisie!=Principal_Hauteur_image) )
Redimentionner_image(Largeur_choisie,Hauteur_choisie);
if (Mode_video[Mode_choisi].Etat<=2)
if ((Mode_video[Mode_choisi].Etat & 3) != 3)
Initialiser_mode_video(
Mode_video[Mode_choisi].Largeur,
Mode_video[Mode_choisi].Hauteur,
@ -2869,9 +2874,9 @@ int Meilleur_mode_video(void)
Meilleure_hauteur=0;
for (Mode=0; Mode<Nb_modes_video; Mode++)
for (Mode=1; Mode<Nb_modes_video; Mode++)
{
if (Mode_video[Mode].Fullscreen && Mode_video[Mode].Etat<2)
if (Mode_video[Mode].Fullscreen && (Mode_video[Mode].Etat&3)<2)
{
Temp_X=Mode_video[Mode].Largeur;
Temp_Y=Mode_video[Mode].Hauteur;

149
init.c
View File

@ -1301,17 +1301,16 @@ void Initialisation_des_operations(void)
// Définition d'un mode:
void Definir_mode_video(int Numero,
short Largeur,
void Definir_mode_video(short Largeur,
short Hauteur,
byte Mode,
word Fullscreen)
{
byte Supporte = 0;
if (Numero >= MAX_MODES_VIDEO)
if (Nb_modes_video >= MAX_MODES_VIDEO-1)
{
DEBUG("Erreur! Tentative de créer un mode de trop:", Numero);
DEBUG("Erreur! Tentative de créer un mode de trop! Limite:", MAX_MODES_VIDEO);
return;
}
if (!Fullscreen)
@ -1319,13 +1318,17 @@ void Definir_mode_video(int Numero,
else if (SDL_VideoModeOK(Largeur, Hauteur, 8, SDL_FULLSCREEN))
Supporte = 1; // Supporte
else
Supporte = 128+3; // Non supporte, non modifiable
{
// Non supporte : on ne le prend pas
return;
}
Mode_video[Numero].Largeur = Largeur;
Mode_video[Numero].Hauteur = Hauteur;
Mode_video[Numero].Mode = Mode;
Mode_video[Numero].Fullscreen = Fullscreen;
Mode_video[Numero].Etat = Supporte;
Mode_video[Nb_modes_video].Largeur = Largeur;
Mode_video[Nb_modes_video].Hauteur = Hauteur;
Mode_video[Nb_modes_video].Mode = Mode;
Mode_video[Nb_modes_video].Fullscreen = Fullscreen;
Mode_video[Nb_modes_video].Etat = Supporte;
Nb_modes_video ++;
}
@ -1335,67 +1338,69 @@ void Definition_des_modes_video(void)
{ // Numero LargHaut Mode FXFY Ratio Ref WinOnly Pointeur
SDL_Rect** Modes;
Nb_modes_video=0;
Definir_mode_video( Nb_modes_video++, 640,480,MODE_SDL, 0);
Definir_mode_video( Nb_modes_video++, 320,200,MODE_SDL, 1);
Definir_mode_video( Nb_modes_video++, 320,224,MODE_SDL, 1);
Definir_mode_video( Nb_modes_video++, 320,240,MODE_SDL, 1);
Definir_mode_video( Nb_modes_video++, 320,256,MODE_SDL, 1);
Definir_mode_video( Nb_modes_video++, 320,270,MODE_SDL, 1);
Definir_mode_video( Nb_modes_video++, 320,282,MODE_SDL, 1);
Definir_mode_video( Nb_modes_video++, 320,300,MODE_SDL, 1);
Definir_mode_video( Nb_modes_video++, 320,360,MODE_SDL, 1);
Definir_mode_video( Nb_modes_video++, 320,400,MODE_SDL, 1);
Definir_mode_video( Nb_modes_video++, 320,448,MODE_SDL, 1);
Definir_mode_video( Nb_modes_video++, 320,480,MODE_SDL, 1);
Definir_mode_video( Nb_modes_video++, 320,512,MODE_SDL, 1);
Definir_mode_video( Nb_modes_video++, 320,540,MODE_SDL, 1);
Definir_mode_video( Nb_modes_video++, 320,564,MODE_SDL, 1);
Definir_mode_video( Nb_modes_video++, 320,600,MODE_SDL, 1);
Definir_mode_video( Nb_modes_video++, 360,200,MODE_SDL, 1);
Definir_mode_video( Nb_modes_video++, 360,224,MODE_SDL, 1);
Definir_mode_video( Nb_modes_video++, 360,240,MODE_SDL, 1);
Definir_mode_video( Nb_modes_video++, 360,256,MODE_SDL, 1);
Definir_mode_video( Nb_modes_video++, 360,270,MODE_SDL, 1);
Definir_mode_video( Nb_modes_video++, 360,282,MODE_SDL, 1);
Definir_mode_video( Nb_modes_video++, 360,300,MODE_SDL, 1);
Definir_mode_video( Nb_modes_video++, 360,360,MODE_SDL, 1);
Definir_mode_video( Nb_modes_video++, 360,400,MODE_SDL, 1);
Definir_mode_video( Nb_modes_video++, 360,448,MODE_SDL, 1);
Definir_mode_video( Nb_modes_video++, 360,480,MODE_SDL, 1);
Definir_mode_video( Nb_modes_video++, 360,512,MODE_SDL, 1);
Definir_mode_video( Nb_modes_video++, 360,540,MODE_SDL, 1);
Definir_mode_video( Nb_modes_video++, 360,564,MODE_SDL, 1);
Definir_mode_video( Nb_modes_video++, 360,600,MODE_SDL, 1);
Definir_mode_video( Nb_modes_video++, 400,200,MODE_SDL, 1);
Definir_mode_video( Nb_modes_video++, 400,224,MODE_SDL, 1);
Definir_mode_video( Nb_modes_video++, 400,240,MODE_SDL, 1);
Definir_mode_video( Nb_modes_video++, 400,256,MODE_SDL, 1);
Definir_mode_video( Nb_modes_video++, 400,270,MODE_SDL, 1);
Definir_mode_video( Nb_modes_video++, 400,282,MODE_SDL, 1);
Definir_mode_video( Nb_modes_video++, 400,300,MODE_SDL, 1);
Definir_mode_video( Nb_modes_video++, 400,360,MODE_SDL, 1);
Definir_mode_video( Nb_modes_video++, 400,400,MODE_SDL, 1);
Definir_mode_video( Nb_modes_video++, 400,448,MODE_SDL, 1);
Definir_mode_video( Nb_modes_video++, 400,480,MODE_SDL, 1);
Definir_mode_video( Nb_modes_video++, 400,512,MODE_SDL, 1);
Definir_mode_video( Nb_modes_video++, 400,540,MODE_SDL, 1);
Definir_mode_video( Nb_modes_video++, 400,564,MODE_SDL, 1);
Definir_mode_video( Nb_modes_video++, 400,600,MODE_SDL, 1);
Definir_mode_video( Nb_modes_video++, 640,224,MODE_SDL, 1);
Definir_mode_video( Nb_modes_video++, 640,240,MODE_SDL, 1);
Definir_mode_video( Nb_modes_video++, 640,256,MODE_SDL, 1);
Definir_mode_video( Nb_modes_video++, 640,270,MODE_SDL, 1);
Definir_mode_video( Nb_modes_video++, 640,300,MODE_SDL, 1);
Definir_mode_video( Nb_modes_video++, 640,350,MODE_SDL, 1);
Definir_mode_video( Nb_modes_video++, 640,400,MODE_SDL, 1);
Definir_mode_video( Nb_modes_video++, 640,448,MODE_SDL, 1);
Definir_mode_video( Nb_modes_video++, 640,480,MODE_SDL, 1);
Definir_mode_video( Nb_modes_video++, 640,512,MODE_SDL, 1);
Definir_mode_video( Nb_modes_video++, 640,540,MODE_SDL, 1);
Definir_mode_video( Nb_modes_video++, 640,564,MODE_SDL, 1);
Definir_mode_video( Nb_modes_video++, 640,600,MODE_SDL, 1);
Definir_mode_video( Nb_modes_video++, 800,600,MODE_SDL, 1);
Definir_mode_video( Nb_modes_video++,1024,768,MODE_SDL, 1);
// Doit être en premier pour avoir le numéro 0:
Definir_mode_video( 640,480,MODE_SDL, 0);
Definir_mode_video( 320,200,MODE_SDL, 1);
Definir_mode_video( 320,224,MODE_SDL, 1);
Definir_mode_video( 320,240,MODE_SDL, 1);
Definir_mode_video( 320,256,MODE_SDL, 1);
Definir_mode_video( 320,270,MODE_SDL, 1);
Definir_mode_video( 320,282,MODE_SDL, 1);
Definir_mode_video( 320,300,MODE_SDL, 1);
Definir_mode_video( 320,360,MODE_SDL, 1);
Definir_mode_video( 320,400,MODE_SDL, 1);
Definir_mode_video( 320,448,MODE_SDL, 1);
Definir_mode_video( 320,480,MODE_SDL, 1);
Definir_mode_video( 320,512,MODE_SDL, 1);
Definir_mode_video( 320,540,MODE_SDL, 1);
Definir_mode_video( 320,564,MODE_SDL, 1);
Definir_mode_video( 320,600,MODE_SDL, 1);
Definir_mode_video( 360,200,MODE_SDL, 1);
Definir_mode_video( 360,224,MODE_SDL, 1);
Definir_mode_video( 360,240,MODE_SDL, 1);
Definir_mode_video( 360,256,MODE_SDL, 1);
Definir_mode_video( 360,270,MODE_SDL, 1);
Definir_mode_video( 360,282,MODE_SDL, 1);
Definir_mode_video( 360,300,MODE_SDL, 1);
Definir_mode_video( 360,360,MODE_SDL, 1);
Definir_mode_video( 360,400,MODE_SDL, 1);
Definir_mode_video( 360,448,MODE_SDL, 1);
Definir_mode_video( 360,480,MODE_SDL, 1);
Definir_mode_video( 360,512,MODE_SDL, 1);
Definir_mode_video( 360,540,MODE_SDL, 1);
Definir_mode_video( 360,564,MODE_SDL, 1);
Definir_mode_video( 360,600,MODE_SDL, 1);
Definir_mode_video( 400,200,MODE_SDL, 1);
Definir_mode_video( 400,224,MODE_SDL, 1);
Definir_mode_video( 400,240,MODE_SDL, 1);
Definir_mode_video( 400,256,MODE_SDL, 1);
Definir_mode_video( 400,270,MODE_SDL, 1);
Definir_mode_video( 400,282,MODE_SDL, 1);
Definir_mode_video( 400,300,MODE_SDL, 1);
Definir_mode_video( 400,360,MODE_SDL, 1);
Definir_mode_video( 400,400,MODE_SDL, 1);
Definir_mode_video( 400,448,MODE_SDL, 1);
Definir_mode_video( 400,480,MODE_SDL, 1);
Definir_mode_video( 400,512,MODE_SDL, 1);
Definir_mode_video( 400,540,MODE_SDL, 1);
Definir_mode_video( 400,564,MODE_SDL, 1);
Definir_mode_video( 400,600,MODE_SDL, 1);
Definir_mode_video( 640,224,MODE_SDL, 1);
Definir_mode_video( 640,240,MODE_SDL, 1);
Definir_mode_video( 640,256,MODE_SDL, 1);
Definir_mode_video( 640,270,MODE_SDL, 1);
Definir_mode_video( 640,300,MODE_SDL, 1);
Definir_mode_video( 640,350,MODE_SDL, 1);
Definir_mode_video( 640,400,MODE_SDL, 1);
Definir_mode_video( 640,448,MODE_SDL, 1);
Definir_mode_video( 640,480,MODE_SDL, 1);
Definir_mode_video( 640,512,MODE_SDL, 1);
Definir_mode_video( 640,540,MODE_SDL, 1);
Definir_mode_video( 640,564,MODE_SDL, 1);
Definir_mode_video( 640,600,MODE_SDL, 1);
Definir_mode_video( 800,600,MODE_SDL, 1);
Definir_mode_video(1024,768,MODE_SDL, 1);
Modes = SDL_ListModes(NULL, SDL_FULLSCREEN);
if ((Modes != (SDL_Rect**)0) && (Modes!=(SDL_Rect**)-1))
@ -1414,7 +1419,7 @@ void Definition_des_modes_video(void)
if (Indice2 >= Nb_modes_video)
{
// Nouveau mode à ajouter à la liste
Definir_mode_video( Nb_modes_video++,Modes[Indice]->w,Modes[Indice]->h,MODE_SDL, 1);
Definir_mode_video(Modes[Indice]->w,Modes[Indice]->h,MODE_SDL, 1);
}
}
return;

View File

@ -1289,8 +1289,8 @@ typedef struct
{
word Width;
word Height;
short Xorg; // Inutile
short Yorg; // Inutile
word Xorg; // Inutile
word Yorg; // Inutile
byte BitPlanes;
byte Mask;
byte Compression;
@ -1298,8 +1298,8 @@ typedef struct
word Transp_col;
byte Xaspect; // Inutile
byte Yaspect; // Inutile
short Xscreen;
short Yscreen;
word Xscreen;
word Yscreen;
} __attribute__((__packed__)) T_Header_LBM;
// -- Tester si un fichier est au format LBM --------------------------------