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:
parent
7bf71cd7b0
commit
7ba9a726dc
92
boutons.c
92
boutons.c
@ -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
68
const.h
@ -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
|
||||
|
||||
11
divers.c
11
divers.c
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
2
divers.h
2
divers.h
@ -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
|
||||
|
||||
2
gfx2.ini
2
gfx2.ini
@ -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)
|
||||
|
||||
14
global.h
14
global.h
@ -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
75
graph.c
@ -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;
|
||||
|
||||
2
graph.h
2
graph.h
@ -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
180
init.c
@ -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) ||
|
||||
|
||||
@ -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
9
main.c
@ -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;
|
||||
|
||||
27
moteur.c
27
moteur.c
@ -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;
|
||||
|
||||
22
operatio.c
22
operatio.c
@ -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
|
||||
{
|
||||
|
||||
18
palette.c
18
palette.c
@ -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);
|
||||
|
||||
@ -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];
|
||||
|
||||
|
||||
29
sdlscreen.c
29
sdlscreen.c
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -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;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user