Implemented window sizing (and re-sizing) by draggin window edges.

Unfinished, more work needed in:
* command-line arguments (grafx2 myimage.pcx -width 640 -height 480)
* querying SDL for best modes
* detecting bad modes and recovering (though shift+return restores to window)
* saving settings in gfx2.ini.
Also, now the window's close button triggers Quit. Both events (quit, resize)
are only taken into account when all menus are closed.


git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@188 416bcca6-2ee7-4201-b75f-2eb2f807beb1
This commit is contained in:
Yves Rizoud 2008-10-03 01:06:42 +00:00
parent 7bf71cd7b0
commit 7ba9a726dc
18 changed files with 284 additions and 274 deletions

View File

@ -1206,6 +1206,7 @@ void Afficher_liste_modes(short Debut_liste, short Position_curseur)
short Pos_Y;
byte Couleur_texte,Couleur_fond;
char Chaine[29];
char *Ratio;
for (Mode_courant=Debut_liste,Indice=0; Indice<12; Indice++,Mode_courant++)
{
@ -1230,38 +1231,21 @@ void Afficher_liste_modes(short Debut_liste, short Position_curseur)
}
Num2str(Mode_video[Mode_courant].Largeur,Chaine,4);
Num2str(Mode_video[Mode_courant].Hauteur,Chaine+4,4);
switch (Mode_video[Mode_courant].Mode)
{
case MODE_SDL :
memcpy(Chaine+8," SDL ",10);
break;
}
if(Mode_video[Mode_courant].Fullscreen == 1)
memcpy(Chaine+13,"Full",4);
memcpy(Chaine+8," Fullscreen ",15);
else
memcpy(Chaine+13,"Win ",4);
memcpy(Chaine+8," Window ",15);
if (Mode_video[Mode_courant].Refresh>0)
{
Num2str(Mode_video[Mode_courant].Refresh,Chaine+18,2);
Chaine[20]=' ';
}
if (Mode_video[Mode_courant].Largeur*3 == Mode_video[Mode_courant].Hauteur*4)
Ratio=" 4/3 ";
else if (Mode_video[Mode_courant].Largeur*9 == Mode_video[Mode_courant].Hauteur*16)
Ratio="16/9 ";
else if (Mode_video[Mode_courant].Largeur*10 == Mode_video[Mode_courant].Hauteur*16)
Ratio="16/10 ";
else
{
if (Mode_video[Mode_courant].Refresh==-1)
memcpy(Chaine+18," ",3);
else
{
Num2str(-Mode_video[Mode_courant].Refresh,Chaine+18,2);
Chaine[20]='i';
}
}
memcpy(Chaine+21," ",2);
memcpy(Chaine+23,Mode_video[Mode_courant].Ratio,4);
Chaine[27]=' ';
Chaine[28]=0;
Ratio=" ";
strcat(Chaine,Ratio);
Print_dans_fenetre(39,Pos_Y,Chaine,Couleur_texte,Couleur_fond);
}
@ -1308,8 +1292,7 @@ void Bouton_Resol(void)
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(104, 60,"Mode Full" ,CM_Fonce,CM_Clair);
Print_dans_fenetre(183, 60,"Hz" ,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);
Print_dans_fenetre( 62,170,"OK" ,CM_Fonce,CM_Clair);
@ -1330,14 +1313,14 @@ void Bouton_Resol(void)
if (Mode_choisi>=6)
{
if (Mode_choisi<2*NB_MODES_VIDEO-6)
if (Mode_choisi<NB_MODES_VIDEO-6)
{
Debut_liste=Mode_choisi-5;
Position_curseur=5;
}
else
{
Debut_liste=2*NB_MODES_VIDEO-12;
Debut_liste=NB_MODES_VIDEO-12;
Position_curseur=Mode_choisi-Debut_liste;
}
}
@ -1347,7 +1330,7 @@ void Bouton_Resol(void)
Position_curseur=Mode_choisi;
}
Fenetre_Definir_bouton_scroller(271,69,97,2*NB_MODES_VIDEO,12,Debut_liste); // 6
Fenetre_Definir_bouton_scroller(271,69,97,NB_MODES_VIDEO,12,Debut_liste); // 6
// Les 12 petits boutons indiquant l'état des modes
for (Temp=0; Temp<12; Temp++)
@ -1450,7 +1433,7 @@ void Bouton_Resol(void)
default: // Boutons de tag des états des modes
Temp=Debut_liste+Bouton_clicke-7;
if (Temp) // On n'a pas le droit de cocher le mode 0 (320x200)
if (Temp) // On n'a pas le droit de cocher le mode fenêtré
{
Temp2=(Mode_video[Temp].Etat & 0x80)?128:0;
@ -1480,7 +1463,7 @@ void Bouton_Resol(void)
if (Position_curseur<11)
Position_curseur++;
else
if (Debut_liste<2*NB_MODES_VIDEO-12)
if (Debut_liste<NB_MODES_VIDEO-12)
Debut_liste++;
Scroller_la_liste_des_modes(Debut_liste,Position_curseur,&Mode_choisi);
break;
@ -1501,10 +1484,10 @@ void Bouton_Resol(void)
Position_curseur=11;
else
{
if (Debut_liste<2*NB_MODES_VIDEO-23)
if (Debut_liste<NB_MODES_VIDEO-23)
Debut_liste+=11;
else
Debut_liste=2*NB_MODES_VIDEO-12;
Debut_liste=NB_MODES_VIDEO-12;
}
Scroller_la_liste_des_modes(Debut_liste,Position_curseur,&Mode_choisi);
break;
@ -1514,7 +1497,7 @@ void Bouton_Resol(void)
Scroller_la_liste_des_modes(Debut_liste,Position_curseur,&Mode_choisi);
break;
case SDLK_END : // End
Debut_liste=2*NB_MODES_VIDEO-12;
Debut_liste=NB_MODES_VIDEO-12;
Position_curseur=11;
Scroller_la_liste_des_modes(Debut_liste,Position_curseur,&Mode_choisi);
break;
@ -1535,16 +1518,26 @@ void Bouton_Resol(void)
Redimentionner_image(Largeur_choisie,Hauteur_choisie);
if (Mode_video[Mode_choisi].Etat<=2)
Initialiser_mode_video(Mode_choisi);
Initialiser_mode_video(
Mode_video[Mode_choisi].Largeur,
Mode_video[Mode_choisi].Hauteur,
Mode_video[Mode_choisi].Fullscreen);
else
{
Erreur(0); // On signale à l'utilisateur que c'est un mode invalide
Initialiser_mode_video(Resolution_actuelle);
Initialiser_mode_video(
Mode_video[Resolution_actuelle].Largeur,
Mode_video[Resolution_actuelle].Hauteur,
Mode_video[Resolution_actuelle].Fullscreen);
}
Afficher_menu();
Afficher_ecran();
}
Mouse_X = Largeur_ecran >> 1;
Mouse_Y = Hauteur_ecran >> 1;
Set_mouse_position();
Desenclencher_bouton(BOUTON_RESOL);
Afficher_curseur();
@ -1556,7 +1549,8 @@ void Bouton_Safety_resol(void)
Effacer_curseur();
Desenclencher_bouton(BOUTON_LOUPE);
Initialiser_mode_video(MODE_320_200);
Initialiser_mode_video(640, 400, 0);
Resolution_actuelle=0;
Afficher_menu();
Afficher_ecran();
@ -2857,6 +2851,10 @@ int Meilleur_mode_video(void)
short Temp_X,Temp_Y;
int Mode;
// Si mode fenêtre, on reste dans ce mode.
if (Resolution_actuelle == 0)
return 0;
// On commence par borner les dimensions, ou du moins les rendre cohérentes
if ((Ecran_original_X<=0) || (Config.Set_resolution_according_to==2))
Ecran_original_X=Principal_Largeur_image;
@ -2882,9 +2880,9 @@ int Meilleur_mode_video(void)
Meilleure_hauteur=0;
for (Mode=MODE_320_200; Mode<=MODE_1024_768; Mode++)
for (Mode=0; Mode<=NB_MODES_VIDEO; Mode++)
{
if (Mode_video[Mode].Etat<2)
if (Mode_video[Mode].Fullscreen && Mode_video[Mode].Etat<2)
{
Temp_X=Mode_video[Mode].Largeur;
Temp_Y=Mode_video[Mode].Hauteur;
@ -3091,7 +3089,10 @@ void Load_picture(byte Image)
Nouveau_mode=Meilleur_mode_video();
if ((Config.Auto_set_res) && (Nouveau_mode!=Resolution_actuelle))
{
Initialiser_mode_video(Nouveau_mode);
Initialiser_mode_video(
Mode_video[Nouveau_mode].Largeur,
Mode_video[Nouveau_mode].Hauteur,
Mode_video[Nouveau_mode].Fullscreen);
Afficher_menu();
}
else
@ -3177,7 +3178,10 @@ void Bouton_Reload(void)
if ( ((Config.Auto_set_res) && (Nouveau_mode!=Resolution_actuelle)) &&
(!Une_resolution_a_ete_passee_en_parametre) )
{
Initialiser_mode_video(Nouveau_mode);
Initialiser_mode_video(
Mode_video[Nouveau_mode].Largeur,
Mode_video[Nouveau_mode].Hauteur,
Mode_video[Nouveau_mode].Fullscreen);
Afficher_menu();
}
else

68
const.h
View File

@ -15,7 +15,7 @@
#define BETA2 0 // |
#define ALPHA_BETA "ß" // Type de la version "Þ" ou "ß"
#define DAT_DEBUT_INI_PAR_DEFAUT 0xF385 // Dans gfx2.dat, début du fichier gfx2.ini standard
#define NB_MODES_VIDEO 60 // Nombre de modes vidéo
#define NB_MODES_VIDEO 61 // Nombre de modes vidéo
#define NB_BOUTONS 38 // Nombre de boutons à gérer
#define NB_TOUCHES 134 // Nombre de combinaisons de touches
#define NB_TOUCHES_SPECIALES 72 // Nombre de touches spéciales
@ -120,72 +120,6 @@ enum TYPES_DE_MODES_VIDEO
MODE_XVESA // que les 2 plus grandes valeurs soient ces 2 modes!*/
};
// Les différents modes vidéos (avec leur nø d'ordre)
enum MODES_VIDEO
{
MODE_320_200, // !!! MODE 0 !!!
MODE_320_224,
MODE_320_240,
MODE_320_256,
MODE_320_270,
MODE_320_282,
MODE_320_300,
MODE_320_360,
MODE_320_400,
MODE_320_448,
MODE_320_480,
MODE_320_512,
MODE_320_540,
MODE_320_564,
MODE_320_600,
MODE_360_200, // 15
MODE_360_224,
MODE_360_240,
MODE_360_256,
MODE_360_270,
MODE_360_282,
MODE_360_300,
MODE_360_360,
MODE_360_400,
MODE_360_448,
MODE_360_480,
MODE_360_512,
MODE_360_540,
MODE_360_564,
MODE_360_600,
MODE_400_200, // 30
MODE_400_224,
MODE_400_240,
MODE_400_256,
MODE_400_270,
MODE_400_282,
MODE_400_300,
MODE_400_360,
MODE_400_400,
MODE_400_448,
MODE_400_480,
MODE_400_512,
MODE_400_540,
MODE_400_564,
MODE_400_600,
MODE_640_224, // 45
MODE_640_240,
MODE_640_256,
MODE_640_270,
MODE_640_300,
MODE_640_350,
MODE_640_400,
MODE_640_448,
MODE_640_480,
MODE_640_512,
MODE_640_540,
MODE_640_564,
MODE_640_600,
MODE_800_600,
MODE_1024_768 // 59
};
// Les différentes catégories de bouton:
enum FAMILLES_DE_BOUTONS

View File

@ -10,6 +10,7 @@
#include "moteur.h"
#include "divers.h"
#include "clavier.h"
#include "sdlscreen.h"
// Gestion du mode texte de départ (pour pouvoir y retourner en cas de problème
byte Recuperer_nb_lignes(void)
@ -69,7 +70,12 @@ void Attendre_fin_de_click(void)
//On attend que l'utilisateur relache la souris. Tous les autres évènements
//sont ignorés
while(SDL_PollEvent(&event) && event.type == SDL_MOUSEBUTTONUP);
while(SDL_PollEvent(&event))
{
Gere_Evenement_SDL(&event);
if (event.type == SDL_MOUSEBUTTONUP)
break;
}
//On indique à la gestion des E/S que le bouton est laché et on rend la main
Mouse_K=0;
@ -119,6 +125,7 @@ void Get_input(void)
if( SDL_PollEvent(&event)) /* Il y a un évènement en attente */
{
Gere_Evenement_SDL(&event);
switch( event.type)
{
case SDL_MOUSEMOTION:
@ -869,6 +876,8 @@ word Get_key(void)
{
return Conversion_ANSI(event.key.keysym);
}
else
Gere_Evenement_SDL(&event);
}
}

View File

@ -59,7 +59,7 @@ byte Disk_map(byte Numero_de_lecteur);
// Renseigne sur la lettre logique d'un lecteur
// (utile pour tester si un lecteur de disquette est A: ou B: aux yeux du DOS)
//
// Entrée: Octet = nø du lecteur (1=A, 2=B ...)
// Entrée: Octet = n° du lecteur (1=A, 2=B ...)
//
// Sortie: Octet = 0FFh : Pas de lecteur (???)
// sinon: numéro représenatan la lettre logique du lecteur

BIN
gfx2.cfg

Binary file not shown.

View File

@ -286,4 +286,4 @@
; Number of the default video mode | Numéro du mode vidéo par défaut au
; at startup (see the list by typing| démarrage (voir la liste en tapant
; "gfx2 /?" at the DOS prompt). | "gfx2 /?" sur la ligne de commande).
Default_video_mode = 53 ; (default 0)
Default_video_mode = 0 ; (default 0)

View File

@ -68,15 +68,10 @@ struct S_Mode_video
short Largeur;
short Hauteur;
byte Mode;
word Facteur_X;
word Facteur_Y;
char Ratio[5];
signed char Refresh; // <0 => entrelacé
word Fullscreen;
void * Pointeur;
byte Etat; // 0:Cool 1:OK ; 2:Bof ; 3:Naze ; si on rajoute +128 => incompatible
};
GLOBAL struct S_Mode_video Mode_video[2*NB_MODES_VIDEO];
GLOBAL struct S_Mode_video Mode_video[NB_MODES_VIDEO];
GLOBAL struct
@ -115,6 +110,7 @@ GLOBAL Uint8* Etat_Du_Clavier; // Scancode de la touche en cours et etat des to
#define MOD_SHIFT 0x1000
#define MOD_CTRL 0x2000
#define MOD_ALT 0x4000
GLOBAL byte Quit_demande; // !=0 lorsque l'utilisateur demande la fermeture de fenêtre.
GLOBAL byte Mouse_Facteur_de_correction_X;
GLOBAL byte Mouse_Facteur_de_correction_Y;
@ -182,6 +178,8 @@ GLOBAL fonction_display_brush_Color_zoom Clear_brush_zoom;
// Données sur les dimensions de l'écran
GLOBAL int Resize_Largeur; // \__ Positionnées lorsque l'utilisateur tire
GLOBAL int Resize_Hauteur; // / un bord de la fenêtre.
GLOBAL int Resolution_actuelle; // Résolution graphique courante
GLOBAL short Ecran_original_X; // |_ Dimensions de l'écran d'origine de
GLOBAL short Ecran_original_Y; // | l'image qui vient d'être chargée.
@ -559,8 +557,8 @@ GLOBAL word Position_d_aide_en_cours; // Num
// Données sur les opérations
GLOBAL word Operation_avant_interruption; // Nø de l'opération en cours avant l'utilisation d'une interruption
GLOBAL word Operation_en_cours; // Nø de l'opération en cours
GLOBAL word Operation_avant_interruption; // N° de l'opération en cours avant l'utilisation d'une interruption
GLOBAL word Operation_en_cours; // N° de l'opération en cours
GLOBAL word Operation_Pile[TAILLE_PILE_OPERATIONS]; // Pile simplifiée
GLOBAL byte Operation_Taille_pile; // Taille effective de la pile (0=vide)
GLOBAL byte Operation_dans_loupe; // Indique si l'opération a commencé dans la partie Zoomée ou non

75
graph.c
View File

@ -908,35 +908,46 @@ char * Libelle_mode(int Mode)
void * Mode_X_Ptr; // Pointeur sur la table à utiliser pour le changement de
// mode vidéo X
void Initialiser_mode_video(int Numero)
void Initialiser_mode_video(int Largeur, int Hauteur, int Fullscreen)
{
int Sensibilite_X;
int Sensibilite_Y;
int Indice;
// Valeurs raisonnables: minimum 320x200
if (Largeur < 320)
Largeur = 320;
if (Hauteur < 200)
Hauteur = 200;
// La largeur doit être un multiple de 4
Largeur = (Largeur + 3 ) & 0xFFFFFFFC;
if (Resolution_actuelle != Numero)
if (Largeur_ecran!=Largeur ||
Hauteur_ecran!=Hauteur ||
Mode_video[Resolution_actuelle].Fullscreen != Fullscreen)
{
Largeur_ecran = Mode_video[Numero].Largeur;
Hauteur_ecran = Mode_video[Numero].Hauteur;
Plein_ecran = Mode_video[Numero].Fullscreen;
// Taille des menus
int Facteur;
if (Largeur/320 > Hauteur/200)
Facteur=Hauteur/200;
else
Facteur=Largeur/320;
Largeur_ecran = Largeur;
Hauteur_ecran = Hauteur;
Plein_ecran = Fullscreen;
switch (Config.Ratio)
{
case 1: // adapter tout
Menu_Facteur_X=Mode_video[Numero].Facteur_X;
Menu_Facteur_Y=Mode_video[Numero].Facteur_Y;
Menu_Facteur_X=Facteur;
Menu_Facteur_Y=Facteur;
break;
case 2: // adapter légèrement
Menu_Facteur_X=Mode_video[Numero].Facteur_X-1;
Menu_Facteur_X=Facteur-1;
if (Menu_Facteur_X<1) Menu_Facteur_X=1;
Menu_Facteur_Y=Mode_video[Numero].Facteur_Y-1;
Menu_Facteur_Y=Facteur-1;
if (Menu_Facteur_Y<1) Menu_Facteur_Y=1;
if ( (Mode_video[Numero].Facteur_X<Mode_video[Numero].Facteur_Y)
&& (Menu_Facteur_X==Menu_Facteur_Y) )
Menu_Facteur_Y++;
else
if ( (Mode_video[Numero].Facteur_X>Mode_video[Numero].Facteur_Y)
&& (Menu_Facteur_X==Menu_Facteur_Y) )
Menu_Facteur_X++;
break;
default: // ne pas adapter
Menu_Facteur_X=1;
@ -948,7 +959,7 @@ void Initialiser_mode_video(int Numero)
Buffer_de_ligne_horizontale=(byte *)malloc((Largeur_ecran>Principal_Largeur_image)?Largeur_ecran:Principal_Largeur_image);
switch (Mode_video[Numero].Mode)
switch (MODE_SDL)
{
case MODE_SDL:
Pixel = Pixel_SDL;
@ -977,7 +988,19 @@ void Initialiser_mode_video(int Numero)
Set_palette(Principal_Palette);
Resolution_actuelle = Numero;
if (!Fullscreen)
Resolution_actuelle=0;
else
for (Indice=1; Indice<NB_MODES_VIDEO; Indice++)
{
if (Mode_video[Indice].Largeur==Largeur_ecran &&
Mode_video[Indice].Hauteur==Hauteur_ecran)
{
Resolution_actuelle=Indice;
break;
}
}
//Resolution_actuelle = ?
Menu_Taille_couleur = ((Largeur_ecran/Menu_Facteur_X)-(LARGEUR_MENU+2)) >> 3;
Menu_Ordonnee = Hauteur_ecran;
@ -986,13 +1009,8 @@ void Initialiser_mode_video(int Numero)
Menu_Ordonnee_Texte = Hauteur_ecran-(Menu_Facteur_Y<<3);
Bouton[BOUTON_CHOIX_COL].Largeur=(Menu_Taille_couleur<<3)-1;
Clip_mouse();
Mouse_X = Largeur_ecran >> 1;
Mouse_Y = Hauteur_ecran >> 1;
Set_mouse_position();
Sensibilite_X = Config.Indice_Sensibilite_souris_X / Mode_video[Numero].Facteur_X;
Sensibilite_Y = Config.Indice_Sensibilite_souris_Y / Mode_video[Numero].Facteur_Y;
Sensibilite_X = Config.Indice_Sensibilite_souris_X;
Sensibilite_Y = Config.Indice_Sensibilite_souris_Y;
Sensibilite_X>>=Mouse_Facteur_de_correction_X;
Sensibilite_Y>>=Mouse_Facteur_de_correction_Y;
Sensibilite_souris(Sensibilite_X?Sensibilite_X:1,Sensibilite_Y?Sensibilite_Y:1);
@ -1010,6 +1028,9 @@ void Initialiser_mode_video(int Numero)
Calculer_donnees_loupe();
Calculer_limites();
Calculer_coordonnees_pinceau();
Resize_Largeur=0;
Resize_Hauteur=0;
}
@ -3737,7 +3758,7 @@ void Fill(short * Limite_atteinte_Haut , short * Limite_atteinte_Bas,
for (Ligne=Limite_courante_Haut;Ligne<=Limite_courante_Bas;Ligne++)
{
Ligne_modifiee=0;
// On va traiter le cas de la ligne nø Ligne.
// On va traiter le cas de la ligne n° Ligne.
// On commence le traitement à la gauche de l'écran
Debut_X=Limite_Gauche;
@ -3817,7 +3838,7 @@ void Fill(short * Limite_atteinte_Haut , short * Limite_atteinte_Bas,
for (Ligne=Limite_courante_Bas;Ligne>=Limite_courante_Haut;Ligne--)
{
Ligne_modifiee=0;
// On va traiter le cas de la ligne nø Ligne.
// On va traiter le cas de la ligne n° Ligne.
// On commence le traitement à la gauche de l'écran
Debut_X=Limite_Gauche;

View File

@ -28,7 +28,7 @@ void Calculer_coordonnees_pinceau(void);
char* Libelle_mode(int Mode);
void Initialiser_mode_video(int Numero);
void Initialiser_mode_video(int Largeur, int Hauteur, int Fullscreen);
void Pixel_dans_barre_d_outil(word X,word Y,byte Couleur);
void Pixel_dans_fenetre(word X,word Y,byte Couleur);
void Encadrer_couleur_menu(byte Couleur);

180
init.c
View File

@ -1308,34 +1308,12 @@ void Initialisation_des_operations(void)
void Definir_mode_video(int Numero,
short Largeur, short Hauteur,
byte Mode,
word Facteur_X, word Facteur_Y,
char * Ratio,
unsigned char Refresh,
word Plein_Ecran,
void * Pointeur)
word Plein_Ecran)
{
Mode_video[Numero].Largeur = Largeur;
Mode_video[Numero].Hauteur = Hauteur;
Mode_video[Numero].Mode = Mode;
Mode_video[Numero].Facteur_X = Facteur_X;
Mode_video[Numero].Facteur_Y = Facteur_Y;
strcpy(Mode_video[Numero].Ratio,Ratio);
Mode_video[Numero].Refresh = Refresh;
Mode_video[Numero].Fullscreen = 0;
Mode_video[Numero].Pointeur = Pointeur;
// On passe aux modes plein écran
Numero += NB_MODES_VIDEO;
Mode_video[Numero].Largeur = Largeur;
Mode_video[Numero].Hauteur = Hauteur;
Mode_video[Numero].Mode = Mode;
Mode_video[Numero].Facteur_X = Facteur_X;
Mode_video[Numero].Facteur_Y = Facteur_Y;
strcpy(Mode_video[Numero].Ratio,Ratio);
Mode_video[Numero].Refresh = Refresh;
Mode_video[Numero].Fullscreen = 1;
Mode_video[Numero].Pointeur = Pointeur;
Mode_video[Numero].Fullscreen = Plein_Ecran;
}
@ -1343,71 +1321,89 @@ void Definir_mode_video(int Numero,
void Definition_des_modes_video(void)
{ // Numero LargHaut Mode FXFY Ratio Ref WinOnly Pointeur
Definir_mode_video( MODE_320_200, 320,200,MODE_SDL ,1,1,"0.85", 71,0 ,NULL);
Definir_mode_video( MODE_320_224, 320,224,MODE_SDL ,1,1,"1.20", 51,0 ,NULL);
Definir_mode_video( MODE_320_240, 320,240,MODE_SDL ,1,1,"1.00", 60,0 ,NULL);
Definir_mode_video( MODE_320_256, 320,256,MODE_SDL ,1,1,"1.10", 58,0 ,NULL);
Definir_mode_video( MODE_320_270, 320,270,MODE_SDL ,1,1,"1.15", 64,0 ,NULL);
Definir_mode_video( MODE_320_282, 320,282,MODE_SDL ,1,1,"1.20", 52,0 ,NULL);
Definir_mode_video( MODE_320_300, 320,300,MODE_SDL ,1,1,"1.20",-49,0 ,NULL);
Definir_mode_video( MODE_320_360, 320,360,MODE_SDL ,1,1,"1.65", 71,0 ,NULL);
Definir_mode_video( MODE_320_400, 320,400,MODE_SDL ,1,2,"1.70", 71,0 ,NULL);
Definir_mode_video( MODE_320_448, 320,448,MODE_SDL ,1,2,"2.20", 51,0 ,NULL);
Definir_mode_video( MODE_320_480, 320,480,MODE_SDL ,1,2,"2.00", 60,0 ,NULL);
Definir_mode_video( MODE_320_512, 320,512,MODE_SDL ,1,2,"2.20", 58,0 ,NULL);
Definir_mode_video( MODE_320_540, 320,540,MODE_SDL ,1,2,"2.25", 64,0 ,NULL);
Definir_mode_video( MODE_320_564, 320,564,MODE_SDL ,1,2,"2.40", 59,0 ,NULL);
Definir_mode_video( MODE_320_600, 320,600,MODE_SDL ,1,2,"2.80", 51,0 ,NULL);
SDL_Rect** Modes;
int Indice=0;
Definir_mode_video( Indice++, 640,480,MODE_SDL, 0);
Definir_mode_video( Indice++, 320,200,MODE_SDL, 1);
Definir_mode_video( Indice++, 320,224,MODE_SDL, 1);
Definir_mode_video( Indice++, 320,240,MODE_SDL, 1);
Definir_mode_video( Indice++, 320,256,MODE_SDL, 1);
Definir_mode_video( Indice++, 320,270,MODE_SDL, 1);
Definir_mode_video( Indice++, 320,282,MODE_SDL, 1);
Definir_mode_video( Indice++, 320,300,MODE_SDL, 1);
Definir_mode_video( Indice++, 320,360,MODE_SDL, 1);
Definir_mode_video( Indice++, 320,400,MODE_SDL, 1);
Definir_mode_video( Indice++, 320,448,MODE_SDL, 1);
Definir_mode_video( Indice++, 320,480,MODE_SDL, 1);
Definir_mode_video( Indice++, 320,512,MODE_SDL, 1);
Definir_mode_video( Indice++, 320,540,MODE_SDL, 1);
Definir_mode_video( Indice++, 320,564,MODE_SDL, 1);
Definir_mode_video( Indice++, 320,600,MODE_SDL, 1);
Definir_mode_video( Indice++, 360,200,MODE_SDL, 1);
Definir_mode_video( Indice++, 360,224,MODE_SDL, 1);
Definir_mode_video( Indice++, 360,240,MODE_SDL, 1);
Definir_mode_video( Indice++, 360,256,MODE_SDL, 1);
Definir_mode_video( Indice++, 360,270,MODE_SDL, 1);
Definir_mode_video( Indice++, 360,282,MODE_SDL, 1);
Definir_mode_video( Indice++, 360,300,MODE_SDL, 1);
Definir_mode_video( Indice++, 360,360,MODE_SDL, 1);
Definir_mode_video( Indice++, 360,400,MODE_SDL, 1);
Definir_mode_video( Indice++, 360,448,MODE_SDL, 1);
Definir_mode_video( Indice++, 360,480,MODE_SDL, 1);
Definir_mode_video( Indice++, 360,512,MODE_SDL, 1);
Definir_mode_video( Indice++, 360,540,MODE_SDL, 1);
Definir_mode_video( Indice++, 360,564,MODE_SDL, 1);
Definir_mode_video( Indice++, 360,600,MODE_SDL, 1);
Definir_mode_video( Indice++, 400,200,MODE_SDL, 1);
Definir_mode_video( Indice++, 400,224,MODE_SDL, 1);
Definir_mode_video( Indice++, 400,240,MODE_SDL, 1);
Definir_mode_video( Indice++, 400,256,MODE_SDL, 1);
Definir_mode_video( Indice++, 400,270,MODE_SDL, 1);
Definir_mode_video( Indice++, 400,282,MODE_SDL, 1);
Definir_mode_video( Indice++, 400,300,MODE_SDL, 1);
Definir_mode_video( Indice++, 400,360,MODE_SDL, 1);
Definir_mode_video( Indice++, 400,400,MODE_SDL, 1);
Definir_mode_video( Indice++, 400,448,MODE_SDL, 1);
Definir_mode_video( Indice++, 400,480,MODE_SDL, 1);
Definir_mode_video( Indice++, 400,512,MODE_SDL, 1);
Definir_mode_video( Indice++, 400,540,MODE_SDL, 1);
Definir_mode_video( Indice++, 400,564,MODE_SDL, 1);
Definir_mode_video( Indice++, 400,600,MODE_SDL, 1);
Definir_mode_video( Indice++, 640,224,MODE_SDL, 1);
Definir_mode_video( Indice++, 640,240,MODE_SDL, 1);
Definir_mode_video( Indice++, 640,256,MODE_SDL, 1);
Definir_mode_video( Indice++, 640,270,MODE_SDL, 1);
//Definir_mode_video( Indice++, 640,282,MODE_SDL, 1);
Definir_mode_video( Indice++, 640,300,MODE_SDL, 1);
Definir_mode_video( Indice++, 640,350,MODE_SDL, 1);
//Definir_mode_video( Indice++, 640,360,MODE_SDL, 1);
Definir_mode_video( Indice++, 640,400,MODE_SDL, 1);
Definir_mode_video( Indice++, 640,448,MODE_SDL, 1);
Definir_mode_video( Indice++, 640,480,MODE_SDL, 1);
Definir_mode_video( Indice++, 640,512,MODE_SDL, 1);
Definir_mode_video( Indice++, 640,540,MODE_SDL, 1);
Definir_mode_video( Indice++, 640,564,MODE_SDL, 1);
Definir_mode_video( Indice++, 640,600,MODE_SDL, 1);
Definir_mode_video( Indice++, 800,600,MODE_SDL, 1);
Definir_mode_video(Indice++,1024,768,MODE_SDL, 1);
Definir_mode_video( MODE_360_200, 360,200,MODE_SDL ,1,1,"0.80", 72,0 ,NULL);
Definir_mode_video( MODE_360_224, 360,224,MODE_SDL ,1,1,"1.10", 51,0 ,NULL);
Definir_mode_video( MODE_360_240, 360,240,MODE_SDL ,1,1,"0.90", 61,0 ,NULL);
Definir_mode_video( MODE_360_256, 360,256,MODE_SDL ,1,1,"1.00", 57,0 ,NULL);
Definir_mode_video( MODE_360_270, 360,270,MODE_SDL ,1,1,"0.95", 57,0 ,NULL);
Definir_mode_video( MODE_360_282, 360,282,MODE_SDL ,1,1,"1.10", 52,0 ,NULL);
Definir_mode_video( MODE_360_300, 360,300,MODE_SDL ,1,1,"1.10",-49,0 ,NULL);
Definir_mode_video( MODE_360_360, 360,360,MODE_SDL ,1,1,"1.50", 72,0 ,NULL);
Definir_mode_video( MODE_360_400, 360,400,MODE_SDL ,1,2,"1.60", 72,0 ,NULL);
Definir_mode_video( MODE_360_448, 360,448,MODE_SDL ,1,2,"2.20", 51,0 ,NULL);
Definir_mode_video( MODE_360_480, 360,480,MODE_SDL ,1,2,"1.80", 61,0 ,NULL);
Definir_mode_video( MODE_360_512, 360,512,MODE_SDL ,1,2,"2.00", 57,0 ,NULL);
Definir_mode_video( MODE_360_540, 360,540,MODE_SDL ,1,2,"1.85", 57,0 ,NULL);
Definir_mode_video( MODE_360_564, 360,564,MODE_SDL ,1,2,"2.20", 60,0 ,NULL);
Definir_mode_video( MODE_360_600, 360,600,MODE_SDL ,1,2,"2.40", 45,0 ,NULL);
Modes = SDL_ListModes(NULL, SDL_FULLSCREEN);
if ((Modes != (SDL_Rect**)0) && (Modes!=(SDL_Rect**)-1))
{
for (Indice=0; Modes[Indice]; Indice++)
{
int Indice2;
for (Indice2=0; Indice2 < NB_MODES_VIDEO; Indice2++)
if (Modes[Indice]->w == Mode_video[Indice2].Largeur &&
Modes[Indice]->h == Mode_video[Indice2].Hauteur)
{
Mode_video[Indice2].Etat = 1;
break;
}
}
return;
}
Definir_mode_video( MODE_400_200, 400,200,MODE_SDL ,1,1,"0.75", 68,0 ,NULL);
Definir_mode_video( MODE_400_224, 400,224,MODE_SDL ,1,1,"1.00", 49,0 ,NULL);
Definir_mode_video( MODE_400_240, 400,240,MODE_SDL ,1,1,"0.85", 58,0 ,NULL);
Definir_mode_video( MODE_400_256, 400,256,MODE_SDL ,1,1,"0.90", 55,0 ,NULL);
Definir_mode_video( MODE_400_270, 400,270,MODE_SDL ,1,1,"0.90", 54,0 ,NULL);
Definir_mode_video( MODE_400_282, 400,282,MODE_SDL ,1,1,"1.00", 50,0 ,NULL);
Definir_mode_video( MODE_400_300, 400,300,MODE_SDL ,1,1,"1.00",-46,0 ,NULL);
Definir_mode_video( MODE_400_360, 400,360,MODE_SDL ,1,1,"1.40", 68,0 ,NULL);
Definir_mode_video( MODE_400_400, 400,400,MODE_SDL ,1,2,"1.50", 67,0 ,NULL);
Definir_mode_video( MODE_400_448, 400,448,MODE_SDL ,1,2,"1.95", 49,0 ,NULL);
Definir_mode_video( MODE_400_480, 400,480,MODE_SDL ,1,2,"1.70", 58,0 ,NULL);
Definir_mode_video( MODE_400_512, 400,512,MODE_SDL ,1,2,"1.80", 55,0 ,NULL);
Definir_mode_video( MODE_400_540, 400,540,MODE_SDL ,1,2,"1.90", 54,0 ,NULL);
Definir_mode_video( MODE_400_564, 400,564,MODE_SDL ,1,2,"2.00", 57,0 ,NULL);
Definir_mode_video( MODE_400_600, 400,600,MODE_SDL ,1,2,"2.20", 43,0 ,NULL);
Definir_mode_video( MODE_640_224, 640,224,MODE_SDL ,2,1,"0.60", -1,0 ,NULL);
Definir_mode_video( MODE_640_240, 640,240,MODE_SDL ,2,1,"0.50", -1,0 ,NULL);
Definir_mode_video( MODE_640_256, 640,256,MODE_SDL ,2,1,"0.55", -1,0 ,NULL);
Definir_mode_video( MODE_640_270, 640,270,MODE_SDL ,2,1,"0.60", -1,0 ,NULL);
//Definir_mode_video( MODE_640_282, 640,282,MODE_SDL ,2,1,"?.??", -1,0 ,NULL);
Definir_mode_video( MODE_640_300, 640,300,MODE_SDL ,2,1,"0.60", -1,0 ,NULL);
Definir_mode_video( MODE_640_350, 640,350,MODE_SDL ,2,1,"0.75", -1,0 ,NULL);
//Definir_mode_video( MODE_640_360, 640,360,MODE_SDL ,2,1,"?.??", -1,0 ,NULL);
Definir_mode_video( MODE_640_400, 640,400,MODE_SDL ,2,2,"0.85", -1,0 ,NULL);
Definir_mode_video( MODE_640_448, 640,448,MODE_SDL ,2,2,"1.20", -1,0 ,NULL);
Definir_mode_video( MODE_640_480, 640,480,MODE_SDL ,2,2,"1.00", -1,0 ,NULL);
Definir_mode_video( MODE_640_512, 640,512,MODE_SDL ,2,2,"1.10", -1,0 ,NULL);
Definir_mode_video( MODE_640_540, 640,540,MODE_SDL ,2,2,"1.15", -1,0 ,NULL);
Definir_mode_video( MODE_640_564, 640,564,MODE_SDL ,2,2,"1.25", -1,0 ,NULL);
Definir_mode_video( MODE_640_600, 640,600,MODE_SDL ,2,2,"1.45", -1,0 ,NULL);
Definir_mode_video( MODE_800_600, 800,600,MODE_SDL ,2,2,"1.00", -1,0 ,NULL);
Definir_mode_video(MODE_1024_768,1024,768,MODE_SDL ,3,3,"1.00", -1,0 ,NULL);
}
//---------------------------------------------------------------------------
@ -1493,8 +1489,8 @@ word Ordonnancement[NB_TOUCHES]=
0x200+BOUTON_BROSSE, // Restore brush
SPECIAL_FLIP_X, // Flip X
SPECIAL_FLIP_Y, // Flip Y
SPECIAL_ROTATE_90, // 90ø brush rotation
SPECIAL_ROTATE_180, // 180ø brush rotation
SPECIAL_ROTATE_90, // 90° brush rotation
SPECIAL_ROTATE_180, // 180° brush rotation
SPECIAL_STRETCH, // Stretch brush
SPECIAL_DISTORT, // Distort brush
SPECIAL_OUTLINE, // Outline brush
@ -1631,8 +1627,8 @@ byte Numero_option[NB_TOUCHES]=
69, // Restore brush
70, // Flip X
71, // Flip Y
72, // 90ø brush rotation
73, // 180ø brush rotation
72, // 90° brush rotation
73, // 180° brush rotation
74, // Stretch brush
75, // Distort brush
76, // Outline brush
@ -1789,8 +1785,6 @@ int Charger_CFG(int Tout_charger)
}
break;
case CHUNK_MODES_VIDEO: // Modes vidéo
if ((Chunk.Taille/sizeof(CFG_Mode_video))!=NB_MODES_VIDEO)
goto Erreur_lecture_config;
for (Indice=1; Indice<=NB_MODES_VIDEO; Indice++)
{
if (!read_byte(Handle, &CFG_Mode_video.Etat) ||

View File

@ -4601,7 +4601,7 @@ void PI1_8b_to_16p(byte * Src,byte * Dst)
w3=(((word)Src[6])<<8) | Src[7];
for (i=0;i<16;i++)
{
// Pour décoder le pixel nøi, il faut traiter les 4 words sur leur bit
// Pour décoder le pixel n°i, il faut traiter les 4 words sur leur bit
// correspondant à celui du masque
Dst[i]=((w0 & masque)?0x01:0x00) |
@ -4624,7 +4624,7 @@ void PI1_16p_to_8b(byte * Src,byte * Dst)
w0=w1=w2=w3=0;
for (i=0;i<16;i++)
{
// Pour coder le pixel nøi, il faut modifier les 4 words sur leur bit
// Pour coder le pixel n°i, il faut modifier les 4 words sur leur bit
// correspondant à celui du masque
w0|=(Src[i] & 0x01)?masque:0x00;

9
main.c
View File

@ -261,11 +261,12 @@ void Analyse_de_la_ligne_de_commande(int argc,char * argv[])
Afficher_syntaxe();
exit(0);
}
/*
Resolution_actuelle=Str2num(argv[Option2]); // Mode désiré par l'utilisateur
if ( (Resolution_actuelle<MODE_320_200) || (Resolution_actuelle>MODE_1024_768) )
Erreur(ERREUR_NUMERO_MODE);
Une_resolution_a_ete_passee_en_parametre=Un_fichier_a_ete_passe_en_parametre;
*/
}
break;
@ -385,6 +386,7 @@ void Initialisation_du_programme(int argc,char * argv[])
// On initialise les données sur l'état du programme:
// Donnée sur la sortie du programme:
Quit_demande=0;
Sortir_du_programme=0;
// Données sur l'état du menu:
Pixel_dans_menu=Pixel_dans_barre_d_outil;
@ -548,7 +550,10 @@ void Initialisation_du_programme(int argc,char * argv[])
Buffer_de_ligne_horizontale=NULL;
Resolution_actuelle=-1; // On n'était pas dans un mode graphique
Initialiser_mode_video(Mode_dans_lequel_on_demarre);
Initialiser_mode_video(
Mode_video[Mode_dans_lequel_on_demarre].Largeur,
Mode_video[Mode_dans_lequel_on_demarre].Hauteur,
Mode_video[Mode_dans_lequel_on_demarre].Fullscreen);
Principal_Largeur_image=Largeur_ecran;
Principal_Hauteur_image=Hauteur_ecran;

View File

@ -441,8 +441,27 @@ void Gestion_principale(void)
{
Get_input();
// Redimensionnement demandé
if (Resize_Largeur || Resize_Hauteur)
{
Effacer_curseur();
Initialiser_mode_video(Resize_Largeur, Resize_Hauteur, 0);
Mode_video[0].Largeur = Largeur_ecran;
Mode_video[0].Hauteur = Hauteur_ecran;
// Remise à zero des variables indiquant le Redimensionnement demandé
Afficher_menu();
Afficher_ecran();
Afficher_curseur();
}
// Evenement de fermeture
if (Quit_demande)
{
Quit_demande=0;
Bouton_Quit();
}
// Gestion des touches
if (Touche)
{
for (Indice_Touche=0;(Indice_Touche<NB_TOUCHES_SPECIALES) && (Touche!=Config_Touche[Indice_Touche]);Indice_Touche++);
@ -584,12 +603,12 @@ void Gestion_principale(void)
Flip_Y_LOWLEVEL();
Afficher_curseur();
break;
case SPECIAL_ROTATE_90 : // 90ø brush rotation
case SPECIAL_ROTATE_90 : // 90° brush rotation
Effacer_curseur();
Rotate_90_deg();
Afficher_curseur();
break;
case SPECIAL_ROTATE_180 : // 180ø brush rotation
case SPECIAL_ROTATE_180 : // 180° brush rotation
Effacer_curseur();
if (Brosse_Hauteur&1)
{
@ -1101,7 +1120,7 @@ void Fenetre_Dessiner_bouton_palette(word Pos_X,word Pos_Y)
// -------------------- Effacer les TAGs sur les palette ---------------------
// Cette fonctø ne sert plus que lorsqu'on efface les tags dans le menu Spray.
// Cette fonct° ne sert plus que lorsqu'on efface les tags dans le menu Spray.
void Fenetre_Effacer_tags(void)
{
word Origine_X;

View File

@ -1808,18 +1808,18 @@ void Calculer_courbe_3_points(short X1, short Y1, short X4, short Y4,
short * X2, short * Y2, short * X3, short * Y3)
{
float CX,CY; // Centre de (X1,Y1) et (X4,Y4)
float BX,BY; // Intersectø des dtes ((X1,Y1),(X2,Y2)) et ((X3,Y3),(X4,Y4))
float BX,BY; // Intersect. des dtes ((X1,Y1),(X2,Y2)) et ((X3,Y3),(X4,Y4))
CX=(float)(X1+X4)/2.0; // P1*--_ Légende:
CY=(float)(Y1+Y4)/2.0; // ú \úú P2 -_\|/ : courbe
// ú \ ú*ú * : point important
BX=CX+((8.0/3.0)*(Pinceau_X-CX));// ú | úú ú : pointillé
BY=CY+((8.0/3.0)*(Pinceau_Y-CY));// ú |P úú B
// C *úúúúú*úúúúúúúúú* P=Pos. du pinceau
*X2=Round((BX+X1)/2.0); // ú | úú C=milieu de [P1,P4]
*Y2=Round((BY+Y1)/2.0); // ú | úú B=point tel que
// ú / ú*ú C->B=(8/3) * C->P
*X3=Round((BX+X4)/2.0); // ú _/úú P3 P2=milieu de [P1,B]
CY=(float)(Y1+Y4)/2.0; // · \·· P2 -_\|/ : courbe
// · \ ·*· * : point important
BX=CX+((8.0/3.0)*(Pinceau_X-CX));// · | ·· · : pointillÚ
BY=CY+((8.0/3.0)*(Pinceau_Y-CY));// · |P ·· B
// C *·····*·········* P=Pos. du pinceau
*X2=Round((BX+X1)/2.0); // · | ·· C=milieu de [P1,P4]
*Y2=Round((BY+Y1)/2.0); // · | ·· B=point tel que
// · / ·*· C->B=(8/3) * C->P
*X3=Round((BX+X4)/2.0); // · _/·· P3 P2=milieu de [P1,B]
*Y3=Round((BY+Y4)/2.0); // P4*-- P3=milieu de [P4,B]
}
@ -3320,7 +3320,7 @@ void Tourner_brosse_12_0(void)
Operation_PUSH(1); // Etat précédent
if ((Config.Coords_rel) && (Menu_visible))
Print_dans_menu("Angle: 0ø ",0);
Print_dans_menu("Angle: 0° ",0);
}
else
{

View File

@ -829,7 +829,7 @@ void Bouton_Palette(void)
Fore_color=Premiere_couleur=Derniere_couleur=Debut_block=Fin_block=Couleur_temporaire;
Tagger_intervalle_palette(Debut_block,Fin_block);
// Affichage du nø de la couleur sélectionnée
// Affichage du n° de la couleur sélectionnée
Block(Fenetre_Pos_X+(Menu_Facteur_X*261),Fenetre_Pos_Y+(Menu_Facteur_Y*58),Menu_Facteur_X*32,Menu_Facteur_Y*7,CM_Clair);
Num2str(Fore_color,Chaine,3);
Print_dans_fenetre(237,58,Chaine,CM_Noir,CM_Clair);
@ -856,7 +856,7 @@ void Bouton_Palette(void)
Debut_block=Premiere_couleur;
Fin_block=Couleur_temporaire;
// Affichage du nø de la couleur sélectionnée
// Affichage du n° de la couleur sélectionnée
Num2str(Debut_block,Chaine ,3);
Num2str(Fin_block ,Chaine+4,3);
Chaine[3]=26; // Flèche vers la droite
@ -873,7 +873,7 @@ void Bouton_Palette(void)
Debut_block=Couleur_temporaire;
Fin_block=Premiere_couleur;
// Affichage du nø de la couleur sélectionnée
// Affichage du n° de la couleur sélectionnée
Num2str(Debut_block,Chaine ,3);
Num2str(Fin_block ,Chaine+4,3);
Chaine[3]=26; // Flèche vers la droite
@ -890,7 +890,7 @@ void Bouton_Palette(void)
Debut_block=Fin_block=Premiere_couleur;
Block(Fenetre_Pos_X+(Menu_Facteur_X*176),Fenetre_Pos_Y+(Menu_Facteur_Y*172),Menu_Facteur_X*84,Menu_Facteur_Y*7,CM_Clair);
// Affichage du nø de la couleur sélectionnée
// Affichage du n° de la couleur sélectionnée
Block(Fenetre_Pos_X+(Menu_Facteur_X*261),Fenetre_Pos_Y+(Menu_Facteur_Y*58),Menu_Facteur_X*32,Menu_Facteur_Y*7,CM_Clair);
Num2str(Fore_color,Chaine,3);
Print_dans_fenetre(237,58,Chaine,CM_Noir,CM_Clair);
@ -1082,7 +1082,7 @@ void Bouton_Palette(void)
// On déplace le bloc vers les modifs:
Derniere_couleur=Fin_block=Couleur_temporaire+Premiere_couleur-1;
Fore_color=Premiere_couleur=Debut_block=Couleur_temporaire;
// On raffiche le nø des bornes du bloc:
// On raffiche le n° des bornes du bloc:
if (Debut_block!=Fin_block)
{
// Cas d'un bloc multi-couleur
@ -1124,7 +1124,7 @@ void Bouton_Palette(void)
// On déplace le bloc vers les modifs:
Derniere_couleur=Fin_block=((Couleur_temporaire+Fin_block-Debut_block<=255)?(Couleur_temporaire+Fin_block-Debut_block):255);
Fore_color=Premiere_couleur=Debut_block=Couleur_temporaire;
// On raffiche le nø des bornes du bloc:
// On raffiche le n° des bornes du bloc:
if (Debut_block!=Fin_block)
{
// Cas d'un bloc multi-couleur
@ -1606,7 +1606,7 @@ void Bouton_Palette(void)
Palette_Reafficher_jauges(Jauge_rouge,Jauge_verte,Jauge_bleue,Palette_de_travail,Debut_block,Fin_block);
Effacer_curseur();
Tagger_intervalle_palette(Debut_block,Fin_block);
// Affichage du nø de la couleur sélectionnée
// Affichage du n° de la couleur sélectionnée
Num2str(Fore_color,Chaine,3);
Print_dans_fenetre(237,58,Chaine,CM_Noir,CM_Clair);
// Affichage dans le block de visu de la couleur en cours
@ -1626,7 +1626,7 @@ void Bouton_Palette(void)
Palette_Reafficher_jauges(Jauge_rouge,Jauge_verte,Jauge_bleue,Palette_de_travail,Debut_block,Fin_block);
Effacer_curseur();
Tagger_intervalle_palette(Debut_block,Fin_block);
// Affichage du nø de la couleur sélectionnée
// Affichage du n° de la couleur sélectionnée
Num2str(Fore_color,Chaine,3);
Print_dans_fenetre(237,58,Chaine,CM_Noir,CM_Clair);
// Affichage dans le block de visu de la couleur en cours
@ -1695,7 +1695,7 @@ void Bouton_Palette(void)
Fore_color=Premiere_couleur=Derniere_couleur=Debut_block=Fin_block=Couleur;
Tagger_intervalle_palette(Debut_block,Fin_block);
// Affichage du nø de la couleur sélectionnée
// Affichage du n° de la couleur sélectionnée
Block(Fenetre_Pos_X+(Menu_Facteur_X*261),Fenetre_Pos_Y+(Menu_Facteur_Y*58),Menu_Facteur_X*32,Menu_Facteur_Y*7,CM_Clair);
Num2str(Fore_color,Chaine,3);
Print_dans_fenetre(237,58,Chaine,CM_Noir,CM_Clair);

View File

@ -606,7 +606,7 @@ int Charger_INI(struct S_Config * Conf)
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Default_video_mode",1,Valeurs)))
goto Erreur_Retour;
if ((Valeurs[0]<MODE_320_200) || (Valeurs[0]>MODE_1024_768))
if ((Valeurs[0]<0) || (Valeurs[0]>NB_MODES_VIDEO))
goto Erreur_ERREUR_INI_CORROMPU;
Conf->Resolution_par_defaut=Valeurs[0];

View File

@ -436,12 +436,37 @@ void Clear_brush_zoom_SDL (word Pos_X,word Pos_Y,word Decalage_X,word Dec
void Set_Mode_SDL()
/* On règle la résolution de l'écran */
{
Ecran_SDL=SDL_SetVideoMode(Largeur_ecran,Hauteur_ecran,8,SDL_FULLSCREEN*Plein_ecran);
Ecran_SDL=SDL_SetVideoMode(Largeur_ecran,Hauteur_ecran,8,SDL_FULLSCREEN*Plein_ecran|SDL_RESIZABLE);
if(Ecran_SDL != NULL)
Ecran=Ecran_SDL->pixels;
{
// Vérification du mode obtenu (ce n'est pas toujours celui demandé)
if (Ecran_SDL->w != Largeur_ecran || Ecran_SDL->h != Hauteur_ecran)
{
DEBUG("Erreur mode video obtenu différent de celui demandé !!",0);
Largeur_ecran = Ecran_SDL->w;
Hauteur_ecran = Ecran_SDL->h;
}
Ecran=Ecran_SDL->pixels;
}
else
DEBUG("Erreur changement de mode video !!",0);
SDL_ShowCursor(0); // Cache le curseur SDL, on le gère en soft
}
// Fonction qui filtre les evenements génériques.
void Gere_Evenement_SDL(SDL_Event * event)
{
// Redimensionnement fenetre
if (event->type == SDL_VIDEORESIZE )
{
Resize_Largeur = event->resize.w;
Resize_Hauteur = event->resize.h;
}
// Fermeture
if (event->type == SDL_QUIT )
{
Quit_demande=1;
}
}

View File

@ -25,6 +25,7 @@
void Display_brush_Mono_zoom_SDL (word Pos_X,word Pos_Y,word Decalage_X,word Decalage_Y,word Largeur,word Pos_Y_Fin,byte Couleur_de_transparence,byte Couleur,word Largeur_brosse,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,byte Couleur_de_transparence,word Largeur_image,byte * Buffer);
void Set_Mode_SDL();
void Gere_Evenement_SDL(SDL_Event * event);
SDL_Rect ** Liste_Modes_Videos_SDL;
byte* Ecran;