From 75c772a7249f52f2c752e7bc26074b14f95ad552 Mon Sep 17 00:00:00 2001 From: Yves Rizoud Date: Sun, 5 Oct 2008 02:47:28 +0000 Subject: [PATCH] (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 --- boutons.c | 25 +++++---- init.c | 149 +++++++++++++++++++++++++++-------------------------- loadsave.c | 8 +-- 3 files changed, 96 insertions(+), 86 deletions(-) diff --git a/boutons.c b/boutons.c index 3f6e1af5..ce097cef 100644 --- a/boutons.c +++ b/boutons.c @@ -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= 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; diff --git a/loadsave.c b/loadsave.c index 2c1fcf96..df53fd94 100644 --- a/loadsave.c +++ b/loadsave.c @@ -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 --------------------------------