gfx2.dat is now replaced by an editable "skin" file: 'gfx2gui.gif', and a reference INI file: 'gfx2def.ini'.
git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@557 416bcca6-2ee7-4201-b75f-2eb2f807beb1
This commit is contained in:
		
							parent
							
								
									c018c13352
								
							
						
					
					
						commit
						e302f2d26a
					
				
							
								
								
									
										12
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								Makefile
									
									
									
									
									
								
							@ -225,9 +225,9 @@ release : $(BIN) $(CFGBIN)
 | 
			
		||||
# A release zip archive
 | 
			
		||||
ziprelease: version $(BIN) $(BINCFG) release
 | 
			
		||||
	tar cvzf src-svn`svnversion | sed 's/:/-/'`.tgz *.c *.h Makefile Makefile.dep gfx2.ico gfx2cfg.ico
 | 
			
		||||
	$(ZIP) $(ZIPOPT) grafx2-svn`svnversion | sed 's/:/-/'`$(TTFLABEL)-$(PLATFORM).$(ZIP) $(BIN) $(CFGBIN) gfx2.dat gfx2.gif gfx2cfg.gif doc/gpl-2.0.txt fonts/8pxfont.png doc/README-zlib1.txt doc/README-SDL.txt doc/README-SDL_image.txt doc/README-SDL_ttf.txt fonts/Tuffy.ttf src-svn`svnversion | sed 's/:/-/'`.tgz $(PLATFORMFILES)
 | 
			
		||||
	$(ZIP) $(ZIPOPT) grafx2-svn`svnversion | sed 's/:/-/'`$(TTFLABEL)-$(PLATFORM).$(ZIP) $(BIN) $(CFGBIN) gfx2def.ini gfx2gui.gif gfx2.gif gfx2cfg.gif doc/gpl-2.0.txt fonts/8pxfont.png doc/README-zlib1.txt doc/README-SDL.txt doc/README-SDL_image.txt doc/README-SDL_ttf.txt fonts/Tuffy.ttf src-svn`svnversion | sed 's/:/-/'`.tgz $(PLATFORMFILES)
 | 
			
		||||
	$(DELCOMMAND) src-svn`svnversion | sed 's/:/-/'`.tgz
 | 
			
		||||
	tar cvzf grafx2-svn`svnversion | sed 's/:/-/'`$(TTFLABEL)-src.tgz *.c *.h Makefile Makefile.dep gfx2.dat gfx2.ico gfx2cfg.ico gfx2.gif gfx2cfg.gif doc/gpl-2.0.txt fonts/8pxfont.png fonts/Tuffy.ttf
 | 
			
		||||
	tar cvzf grafx2-svn`svnversion | sed 's/:/-/'`$(TTFLABEL)-src.tgz *.c *.h Makefile Makefile.dep gfx2def.ini gfx2gui.gif gfx2.ico gfx2cfg.ico gfx2.gif gfx2cfg.gif doc/gpl-2.0.txt fonts/8pxfont.png fonts/Tuffy.ttf
 | 
			
		||||
 | 
			
		||||
$(BIN) : $(OBJ) $(OBJRES)
 | 
			
		||||
	$(CC) $(OBJ) $(OBJRES) -o $(BIN) $(LOPT)
 | 
			
		||||
@ -249,7 +249,7 @@ $(OBJDIR)/%.o :
 | 
			
		||||
	$(CC) $(COPT) -c $*.c -o $(OBJDIR)/$*.o
 | 
			
		||||
 | 
			
		||||
depend :
 | 
			
		||||
	$(CC) -MM *.c | sed 's:^[^ ]:$$(OBJDIR)/&:' > Makefile.dep
 | 
			
		||||
	$(CC) -MMG *.c | sed 's:^[^ ]:$$(OBJDIR)/&:' > Makefile.dep
 | 
			
		||||
 | 
			
		||||
$(OBJDIR)/winres.o : gfx2.ico
 | 
			
		||||
	echo "1 ICON \"gfx2.ico\"" | $(WINDRES) -o $(OBJDIR)/winres.o
 | 
			
		||||
@ -271,7 +271,8 @@ install : $(BIN) $(CFGBIN)
 | 
			
		||||
	$(if $(wildcard $(datadir)/grafx2),,$(MKDIR) $(datadir)/grafx2)
 | 
			
		||||
	$(CP) $(BIN) $(datadir)/grafx2/
 | 
			
		||||
	$(CP) $(CFGBIN) $(datadir)/grafx2/
 | 
			
		||||
	$(CP) gfx2.dat $(datadir)/grafx2/
 | 
			
		||||
	$(CP) gfx2def.ini $(datadir)/grafx2/
 | 
			
		||||
	$(CP) gfx2gui.gif $(datadir)/grafx2/
 | 
			
		||||
	$(CP) gfx2.gif $(datadir)/grafx2/
 | 
			
		||||
	$(CP) gfx2cfg.gif $(datadir)/grafx2/
 | 
			
		||||
	$(if $(wildcard $(datadir)/grafx2/fonts),,$(MKDIR) $(datadir)/grafx2/fonts)
 | 
			
		||||
@ -283,7 +284,8 @@ uninstall :
 | 
			
		||||
	$(DELCOMMAND) $(bindir)/gfxcfg
 | 
			
		||||
	$(DELCOMMAND) $(datadir)/grafx2/$(BIN)
 | 
			
		||||
	$(DELCOMMAND) $(datadir)/grafx2/$(CFGBIN)
 | 
			
		||||
	$(DELCOMMAND) $(datadir)/grafx2/gfx2.dat
 | 
			
		||||
	$(DELCOMMAND) $(datadir)/grafx2/gfx2def.ini
 | 
			
		||||
	$(DELCOMMAND) $(datadir)/grafx2/gfx2gui.gif
 | 
			
		||||
	$(DELCOMMAND) $(datadir)/grafx2/gfx2.gif
 | 
			
		||||
	$(DELCOMMAND) $(datadir)/grafx2/gfx2cfg.gif
 | 
			
		||||
	$(DELCOMMAND) $(datadir)/grafx2/fonts/*
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										41
									
								
								aide.c
									
									
									
									
									
								
							
							
						
						
									
										41
									
								
								aide.c
									
									
									
									
									
								
							@ -87,7 +87,7 @@ void Afficher_aide(void)
 | 
			
		||||
  short  Repeat_Menu_Facteur_Y;
 | 
			
		||||
  short  Pos_Reel_X;
 | 
			
		||||
  short  Pos_Reel_Y;
 | 
			
		||||
  int    Curseur;
 | 
			
		||||
  byte * Curseur;
 | 
			
		||||
  short  Largeur;             // Largeur physique d'une ligne de texte
 | 
			
		||||
  char   TypeLigne;           // N: Normale, T: Titre, S: Sous-titre
 | 
			
		||||
                              // -: Ligne inférieur de sous-titre
 | 
			
		||||
@ -143,29 +143,38 @@ void Afficher_aide(void)
 | 
			
		||||
      // On crée une nouvelle ligne à splotcher
 | 
			
		||||
      for (Indice_de_caractere=0;Indice_de_caractere<Largeur;Indice_de_caractere++)
 | 
			
		||||
      {
 | 
			
		||||
        // Recherche du caractère dans la fonte de 315 symboles.
 | 
			
		||||
        // Recherche du caractère dans les fontes de l'aide.
 | 
			
		||||
        // Ligne titre : Si l'indice est impair on dessine le quart de caractère
 | 
			
		||||
        // qui va a gauche, sinon celui qui va a droite.
 | 
			
		||||
        
 | 
			
		||||
        if (TypeLigne=='T')
 | 
			
		||||
          Curseur=Caracteres_Aide_Titre_haut[(unsigned char)(Ligne[Indice_de_caractere/2])-' '] + (Indice_de_caractere & 1);
 | 
			
		||||
        else if (TypeLigne=='-')
 | 
			
		||||
          Curseur=Caracteres_Aide_Titre_bas[(unsigned char)(Ligne[Indice_de_caractere/2])-' '] + (Indice_de_caractere & 1);
 | 
			
		||||
        else if (TypeLigne=='S')
 | 
			
		||||
          Curseur=Caracteres_Aide_S[(unsigned char)(Ligne[Indice_de_caractere])-' '];
 | 
			
		||||
        else if (TypeLigne=='N' || TypeLigne=='K')
 | 
			
		||||
          Curseur=Caracteres_Aide_N[(unsigned char)(Ligne[Indice_de_caractere])-' '];
 | 
			
		||||
        {
 | 
			
		||||
          if (Ligne[Indice_de_caractere/2]>'_' || Ligne[Indice_de_caractere/2]<' ')
 | 
			
		||||
            Curseur=&(Fonte_help_norm['!'][0][0]); // Caractère pas géré
 | 
			
		||||
          else if (Indice_de_caractere & 1)
 | 
			
		||||
            Curseur=&(Fonte_help_t2[(unsigned char)(Ligne[Indice_de_caractere/2])-' '][0][0]);
 | 
			
		||||
          else
 | 
			
		||||
          Curseur=1; // Un garde-fou en cas de probleme
 | 
			
		||||
          
 | 
			
		||||
        // Un deuxième garde-fou
 | 
			
		||||
        if (Curseur < 0 || Curseur > 315)
 | 
			
		||||
          Curseur = 1; // '!' affiché pour les caractères non prévus
 | 
			
		||||
            Curseur=&(Fonte_help_t1[(unsigned char)(Ligne[Indice_de_caractere/2])-' '][0][0]);
 | 
			
		||||
        }
 | 
			
		||||
        else if (TypeLigne=='-')
 | 
			
		||||
        {
 | 
			
		||||
          if (Ligne[Indice_de_caractere/2]>'_' || Ligne[Indice_de_caractere/2]<' ')
 | 
			
		||||
            Curseur=&(Fonte_help_norm['!'][0][0]); // Caractère pas géré
 | 
			
		||||
          else if (Indice_de_caractere & 1)
 | 
			
		||||
            Curseur=&(Fonte_help_t4[(unsigned char)(Ligne[Indice_de_caractere/2])-' '][0][0]);
 | 
			
		||||
          else
 | 
			
		||||
            Curseur=&(Fonte_help_t3[(unsigned char)(Ligne[Indice_de_caractere/2])-' '][0][0]);
 | 
			
		||||
        }
 | 
			
		||||
        else if (TypeLigne=='S')
 | 
			
		||||
          Curseur=&(Fonte_help_bold[(unsigned char)(Ligne[Indice_de_caractere])][0][0]);
 | 
			
		||||
        else if (TypeLigne=='N' || TypeLigne=='K')
 | 
			
		||||
          Curseur=&(Fonte_help_norm[(unsigned char)(Ligne[Indice_de_caractere])][0][0]);
 | 
			
		||||
        else
 | 
			
		||||
          Curseur=&(Fonte_help_norm['!'][0][0]); // Un garde-fou en cas de probleme
 | 
			
		||||
          
 | 
			
		||||
        for (X=0;X<6;X++)
 | 
			
		||||
          for (Repeat_Menu_Facteur_X=0;Repeat_Menu_Facteur_X<Menu_Facteur_X;Repeat_Menu_Facteur_X++)
 | 
			
		||||
          {
 | 
			
		||||
            byte Couleur = Fonte_help[Curseur][X][Y];
 | 
			
		||||
            byte Couleur = *(Curseur+X+Y*6);
 | 
			
		||||
            // Surlignement pour liens
 | 
			
		||||
            if (TypeLigne=='K' && Indice_de_caractere>=Position_lien
 | 
			
		||||
              && Indice_de_caractere<(Position_lien+Taille_lien))
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										7
									
								
								const.h
									
									
									
									
									
								
							
							
						
						
									
										7
									
								
								const.h
									
									
									
									
									
								
							@ -28,14 +28,12 @@
 | 
			
		||||
 | 
			
		||||
#define M_2PI 6.28318530717958647692528676656
 | 
			
		||||
 | 
			
		||||
// Note: La taille du fichier GFX2.DAT est définie au début de INIT.C !
 | 
			
		||||
#define POURCENTAGE_VERSION     "98.0%" // Libellé du pourcentage de la version ß
 | 
			
		||||
#define VERSION1                  2     // |
 | 
			
		||||
#define VERSION2                  0     // |_ Numéro de version découpé en
 | 
			
		||||
#define BETA1                     97    // |  plusieurs parties => 2.0 ß95.5%
 | 
			
		||||
#define BETA2                     0     // |  (utilisé pour le fichier de config)
 | 
			
		||||
#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 MAX_MODES_VIDEO           100   // Nombre de modes vidéo maxi
 | 
			
		||||
#define NB_BOUTONS                38    // Nombre de boutons à gérer
 | 
			
		||||
#define NB_TOUCHES                134   // Nombre de combinaisons de touches
 | 
			
		||||
@ -118,8 +116,9 @@ enum FORMATS_RECONNUS
 | 
			
		||||
enum CODES_D_ERREURS
 | 
			
		||||
{
 | 
			
		||||
  // 0 = Flash rouge de l'écran, erreur non critique
 | 
			
		||||
  ERREUR_DAT_ABSENT=1,          // Le fichier GFX2.DAT est absent
 | 
			
		||||
  ERREUR_DAT_CORROMPU,          // Mauvais fichier GFX2.DAT
 | 
			
		||||
  ERREUR_GUI_ABSENT=1,          // Le fichier gfx2gui.gif est absent
 | 
			
		||||
  ERREUR_GUI_CORROMPU,          // Mauvais fichier gfx2gui.gif
 | 
			
		||||
  ERREUR_INI_ABSENT,            // Le fichier gfx2def.ini est absent
 | 
			
		||||
  ERREUR_CFG_ABSENT,            // Le fichier GFX2.CFG est absent
 | 
			
		||||
  ERREUR_CFG_CORROMPU,          // Mauvais fichier GFX2.CFG
 | 
			
		||||
  ERREUR_CFG_ANCIEN,            // Ancienne version du fichier GFX2.CFG
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										292
									
								
								gfx2def.ini
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										292
									
								
								gfx2def.ini
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,292 @@
 | 
			
		||||
###### GrafX2 initialization file ###### Fichier d'initialisation de GrafX2 ##
 | 
			
		||||
#                                     #                                      #                                                                          #
 | 
			
		||||
# You may modify this file with any   # Vous pouvez modifier ce fichier avec #
 | 
			
		||||
# standard ASCII text editor.         # n'importe quel éditeur de texte      #
 | 
			
		||||
#                                     # ASCII standard.                      #
 | 
			
		||||
#                                     #                                      #
 | 
			
		||||
# Comments are preceded by ';' or     # Les commentaires sont précédés par   #
 | 
			
		||||
# '#'.                                # ';' ou '#'.                          #
 | 
			
		||||
#                                     #                                      #
 | 
			
		||||
# Options are not case sensitive and  # Les options ne sont pas sensibles à  #
 | 
			
		||||
# spaces are ignored.                 # la casse et les espaces sont ignorés.#
 | 
			
		||||
#                                     #                                      #
 | 
			
		||||
# You must not change the order of    # Vous ne devez pas changer l'ordre    #
 | 
			
		||||
# the sections and their options.     # des sections et de leurs options.    #
 | 
			
		||||
# You must not delete or put into     # Vous ne devez pas effacer ou mettre  #
 | 
			
		||||
# comment any section nor option.     # en commentaire une section ou option.#
 | 
			
		||||
#                                     #                                      #
 | 
			
		||||
# Each option is preceded by a        # Chaque option est précédée par un    #
 | 
			
		||||
# comment which explains its meaning. # commentaire qui explique sa fonction.#
 | 
			
		||||
#                                     #                                      #
 | 
			
		||||
##############################################################################
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
[MOUSE]                               # [SOURIS]
 | 
			
		||||
 | 
			
		||||
  ; The sensitivity of the mouse can  | La sensibilité de la souris peut
 | 
			
		||||
  ; take values from 1 to 64. The     | prendre des valeurs de 1 à 64. Plus
 | 
			
		||||
  ; smaller values, the faster.       | les valeurs sont petites, plus c'est
 | 
			
		||||
  ;                                   | rapide.
 | 
			
		||||
  X_sensitivity = 1	; (default 3)
 | 
			
		||||
  Y_sensitivity = 1	; (default 3)
 | 
			
		||||
 | 
			
		||||
  ; Due to the fact that those stupid | A cause du fait que ces imbéciles de
 | 
			
		||||
  ; mouse drivers' makers don't care  | programmeurs de gestionnaires de
 | 
			
		||||
  ; if the mouse moves by steps of 2, | souris se fichent que votre souris se
 | 
			
		||||
  ; 4 or even 8 pixels, we have to    | deplace par pas de 2, 4 ou même 8
 | 
			
		||||
  ; stretch the virtual area of the   | pixels, nous devons élargir la zone
 | 
			
		||||
  ; mouse and divide coordinates to   | virtuelle de la souris et diviser les
 | 
			
		||||
  ; get a one-pixel step motion.      | coordonnées pour obtenir un pas de 1.
 | 
			
		||||
  ; (Warning: the mouse movement can  | (Attention: le déplacement de la
 | 
			
		||||
  ; be correct in some video modes    | souris peut être correct dans certains
 | 
			
		||||
  ; but not in others... But all the  | modes vidéos mais pas dans d'autres...
 | 
			
		||||
  ; "Modes X" should behave the same  | Mais tout les Modes X devraient se
 | 
			
		||||
  ; way, so you won't have to test    | comporter de la même manière, donc
 | 
			
		||||
  ; them all).                        | vous n'aurez pas à tous les tester.
 | 
			
		||||
  ; A correction factor of 0 means    | Un facteur de correction de 0 signifie
 | 
			
		||||
  ; that you are very lucky because   | que vous avez de la chace car votre
 | 
			
		||||
  ; your driver doesn't need any      | driver n'a pas besoin de correction.
 | 
			
		||||
  ; correction. If you set the        | Si vous définissez le facteur de
 | 
			
		||||
  ; correction factor to 1, it means  | correction à 1, cela signifie que
 | 
			
		||||
  ; that your mouse moves by steps of | votre souris se déplace par pas de 2
 | 
			
		||||
  ; 2 pixels; 2 for 4; 3 for 8, etc...| pixels; 2 pour 4; 3 pour 8, etc...
 | 
			
		||||
  ; If you want to use GrafX2 in a    | Si vous désirez lancer GrafX2 dans une
 | 
			
		||||
  ; Win95 window, you should turn     | fenêtre Windows95, vous devriez passer
 | 
			
		||||
  ; these values to 0 (and increase X | ces valeurs à 0 (et augmenter les sen-
 | 
			
		||||
  ; and Y sensitivities above).       | sibilités X et Y définies plus haut).
 | 
			
		||||
  X_correction_factor = 0	; (default 0)
 | 
			
		||||
  Y_correction_factor = 0	; (default 0)
 | 
			
		||||
 | 
			
		||||
  ; Aspect of the main cursor (cross) | Aspect du curseur principal (croix)
 | 
			
		||||
  ; 1: Solid                          | 1: Solide
 | 
			
		||||
  ; 2: Transparent                    | 2: Transparent
 | 
			
		||||
  ; 3: Thin (solid)                   | 3: Fin (solide)
 | 
			
		||||
  Cursor_aspect = 1	; (default 1)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
[MENU]                                # [MENU]
 | 
			
		||||
 | 
			
		||||
  ; Colors of the menus (the black    | Couleurs des menus (la couleur noire
 | 
			
		||||
  ; and the white colors cannot be    | et la couleur blanche ne peuvent pas
 | 
			
		||||
  ; modified).                        | être modifiées).
 | 
			
		||||
  ; Values are in {Red,Green,Blue}    | Les valeurs sont dans l'ordre {Rouge,
 | 
			
		||||
  ; order and are between 0 and 63.   | Vert,Bleu} et vont de 0 à 63.
 | 
			
		||||
  Light_color = 42,42,42	; (default 42,42,42)
 | 
			
		||||
  Dark_color  = 27,27,27	; (default 27,27,27)
 | 
			
		||||
  ;
 | 
			
		||||
  ;  Light_color = 24,25,30	; \_ Nightmare
 | 
			
		||||
  ;  Dark_color  = 13,14,19	; /
 | 
			
		||||
  ;
 | 
			
		||||
  ;  Light_color = 10,45,28	; \_ Forest
 | 
			
		||||
  ;  Dark_color  =  5,27,12	; /
 | 
			
		||||
  ;
 | 
			
		||||
  ;  Light_color = 48,41,26	; \_ Gold
 | 
			
		||||
  ;  Dark_color  = 26,22,15	; /
 | 
			
		||||
  ;
 | 
			
		||||
  ;  Light_color = 10,40,55	; \_ Oceanic
 | 
			
		||||
  ;  Dark_color  = 10,20,32	; /
 | 
			
		||||
 | 
			
		||||
  ; Aspect ratio and size of the      | Proportion des menus et de la barre
 | 
			
		||||
  ; menus and the tool-bar.           | d'outils.
 | 
			
		||||
  ; Possible values:                  | Valeurs possibles:
 | 
			
		||||
  ; 0: Do not adapt (pixels are not   | 0: Ne pas adapter (les pixels ne sont
 | 
			
		||||
  ;    stretched)                     |    pas étirés)
 | 
			
		||||
  ; 1: Adapt the menus and the tool-  | 1: Adapter les menus et la barre
 | 
			
		||||
  ;    bar according to the resolution|    d'outils suivant la résolution
 | 
			
		||||
  ; 2: Slightly adapt the ratio of    | 2: Adapter légèrement les proportions
 | 
			
		||||
  ;    the menus and tool-bar         |    des menus et de la barre d'outils
 | 
			
		||||
  Menu_ratio = 1	; (default 1)
 | 
			
		||||
 | 
			
		||||
  ; Font:                             | Police de caractères (fonte):
 | 
			
		||||
  ; 1: Classic                        | 1: Classique
 | 
			
		||||
  ; 2: Fun                            | 2: Fun
 | 
			
		||||
  Font = 1	; (default 1)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
[FILE_SELECTOR]                       # [SELECTEUR_DE_FICHIERS]
 | 
			
		||||
 | 
			
		||||
  ; Show hidden files and             | Afficher les fichiers et répertoires
 | 
			
		||||
  ; directories (values are 'yes' or  | cachés (les valeurs sont 'yes' ou
 | 
			
		||||
  ; 'no').                            | 'no').
 | 
			
		||||
  Show_hidden_files       = no	; (default 'no')
 | 
			
		||||
  Show_hidden_directories = no	; (default 'no')
 | 
			
		||||
 | 
			
		||||
  ; Delay before displaying a preview | Délai avant d'afficher une preview
 | 
			
		||||
  ; in file-selectors (in 18.2th of   | dans les sélecteurs de fichiers (en
 | 
			
		||||
  ; second). Possible values range    | 18.2èmes de seconde) Les valeurs
 | 
			
		||||
  ; from 1 to 256.                    | possibles vont de 1 à 256.
 | 
			
		||||
  Preview_delay = 8	; (default 8)
 | 
			
		||||
 | 
			
		||||
  ; Maximize the preview of the       | Maximiser la preview des images pour
 | 
			
		||||
  ; pictures so that it is as big as  | qu'elle soit aussi grande que
 | 
			
		||||
  ; possible. If you're not in the    | possible.
 | 
			
		||||
  ; same resolution as the picture's  | Si vous n'êtes pas dans la même réso-
 | 
			
		||||
  ; one, it can try to correct the    | lution que celle de l'image, cela peut
 | 
			
		||||
  ; aspect ratio, but if the picture  | essayer de corriger les proportions,
 | 
			
		||||
  ; does not fill the whole screen,   | mais si l'image ne prend pas tout
 | 
			
		||||
  ; it can be worse.                  | l'écran, cela peut être pire.
 | 
			
		||||
  Maximize_preview = no	; (default 'no')
 | 
			
		||||
 | 
			
		||||
  ; This option is used to place the  | Cette option est utilisée pour placer
 | 
			
		||||
  ; selection bar on a filename by    | la barre de sélection sur un nom de
 | 
			
		||||
  ; typing its first letters.         | fichier en tapant ses 1ères lettres.
 | 
			
		||||
  ; For example, if you want to find  | Par exemple, si vous voulez trouver le
 | 
			
		||||
  ; the "PICTURE.PKM" in a directory  | fichier "PICTURE.PKM" dans un réper-
 | 
			
		||||
  ; that also contains "PALETTE.PAL", | toire contenant également le fichier
 | 
			
		||||
  ; you'll just have to type P and I. | "PALETTE.PAL", vous n'aurez qu'à taper
 | 
			
		||||
  ; The different values of "FFF"     | P puis I.
 | 
			
		||||
  ; indicate if you want to find the  | Les different valeurs de "FFF"
 | 
			
		||||
  ; name in both files and directories| indiquent si vous voulez trouvez le nom
 | 
			
		||||
  ; or just in only one of these:     | dans les fichiers ET les répertoires ou
 | 
			
		||||
  ; 0: files and directories          | simplement dans l'un OU l'autre.
 | 
			
		||||
  ; 1: files only                     | 0: fichiers et répertoires
 | 
			
		||||
  ; 2: directories only               | 1: fichiers seulement
 | 
			
		||||
  ;                                   | 2: répertoires seulement
 | 
			
		||||
  Find_file_fast = 0	; (default 0)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
[LOADING]                             # [CHARGEMENT]
 | 
			
		||||
 | 
			
		||||
  ; Automatically set the resolution  | Passer automatiquement dans la bonne
 | 
			
		||||
  ; when loading a picture.           | résolution lors du chargement d'une
 | 
			
		||||
  ; You should set this value to      | image.
 | 
			
		||||
  ; 'yes' after disabling the video   | Vous devriez définir cette option à
 | 
			
		||||
  ; modes that are not supported by   | 'yes' après avoir inhibé les modes
 | 
			
		||||
  ; your video card or monitor.       | vidéo qui ne sont pas supportés par
 | 
			
		||||
  ;                                   | votre matériel.
 | 
			
		||||
  Auto_set_resolution = no	; (default 'no')
 | 
			
		||||
 | 
			
		||||
  ; If the variable above is set to   | Si la variable ci-dessus est à 'yes',
 | 
			
		||||
  ; 'yes', this one tells if you want | celle-ci indique si vous voulez
 | 
			
		||||
  ; to set the resolution according   | définir la résolution suivant:
 | 
			
		||||
  ; to:                               | 1: les dimensions de "l'écran
 | 
			
		||||
  ; 1: the internal "original screen" |    d'origine" internes à l'image
 | 
			
		||||
  ;    dimensions of the picture      | 2: les véritables dimensions de
 | 
			
		||||
  ; 2: the actual dimensions of the   |    l'image
 | 
			
		||||
  ;    picture                        |
 | 
			
		||||
  Set_resolution_according_to = 1	; (default 1)
 | 
			
		||||
 | 
			
		||||
  ; If you load a picture with a      | Si vous chargez une image ayant une
 | 
			
		||||
  ; palette of less than 256 colors,  | palette de moins de 256 couleurs,
 | 
			
		||||
  ; this option defines if you want   | cette option indique si vous souhaitez
 | 
			
		||||
  ; to clear the palette or to keep   | effacer la palette ou bien conserver
 | 
			
		||||
  ; the colors of the previous        | les couleurs de l'image précédente qui
 | 
			
		||||
  ; picture that are over the number  | se situent au-delà du nombre de la
 | 
			
		||||
  ; of colors of the new picture.     | nouvelle image.
 | 
			
		||||
  ; For example, if you load a        | Par exemple, si vous chargez une image
 | 
			
		||||
  ; 32-color picture, the colors 32   | de 32 couleurs, les couleurs 32 à 255
 | 
			
		||||
  ; to 255 will be set to black if    | seront passées en noir si cette option
 | 
			
		||||
  ; this option is set to 'yes', or   | est à 'yes', ou bien elles resteront
 | 
			
		||||
  ; they will be kept unchanged if    | inchangées si elle est à 'no'.
 | 
			
		||||
  ; this option is set to 'no'.       |
 | 
			
		||||
  Clear_palette = yes	; (default 'yes')
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
[MISCELLANEOUS]                       # [DIVERS]
 | 
			
		||||
 | 
			
		||||
  ; Draw the limits of the picture.   | Afficher les limites de l'image
 | 
			
		||||
  Draw_limits = yes	; (default 'yes')
 | 
			
		||||
 | 
			
		||||
  ; Adjust the brush grabbing in      | Ajuster la capture de brosse en mode
 | 
			
		||||
  ; "grid" mode.                      | "grille".
 | 
			
		||||
  Adjust_brush_pick = yes	; (default 'yes')
 | 
			
		||||
 | 
			
		||||
  ; Coordinates:                      | Coordonnées:
 | 
			
		||||
  ; 1: Relative                       | 1: Relatives
 | 
			
		||||
  ; 2: Absolute                       | 2: Absolues
 | 
			
		||||
  Coordinates = 1	; (default 1)
 | 
			
		||||
 | 
			
		||||
  ; Create a backup file when saving. | Créer un fichier backup lors des
 | 
			
		||||
  ;                                   | sauvegardes.
 | 
			
		||||
  Backup = no	; (default 'no')
 | 
			
		||||
 | 
			
		||||
  ; Number of pages stored in memory  | Nombre de pages stockées en mémoire
 | 
			
		||||
  ; for "undoing".                    | destinées à annuler les dernières
 | 
			
		||||
  ; Values are between 1 and 99.      | modifications. Valeurs entre 1 et 99.
 | 
			
		||||
  Undo_pages = 4	; (default 4)
 | 
			
		||||
 | 
			
		||||
  ; Speed of the scroll-bars (in VBLs | Vitesse des barre de défilement (en
 | 
			
		||||
  ; waited) while clicking with the   | VBLs attendus) lorsque l'un des
 | 
			
		||||
  ; left or right button of the mouse.| boutons de la souris est enfoncé.
 | 
			
		||||
  ; Values can be between 1 and 255.  | Les valeurs sont comprises entre 1 et
 | 
			
		||||
  ; The bigger values, the slower.    | 255. Plus elles sont grandes, plus
 | 
			
		||||
  ;                                   | c'est lent.
 | 
			
		||||
  Gauges_scrolling_speed_Left  = 10	; (default 10)
 | 
			
		||||
  Gauges_scrolling_speed_Right = 3	; (default 3)
 | 
			
		||||
 | 
			
		||||
  ; Automatically save the configu-   | Enregistre automatiquement la configu-
 | 
			
		||||
  ; ration when exiting the program.  | ration lorsqu'on quitte le programme.
 | 
			
		||||
  Auto_save = yes	; (default 'yes')
 | 
			
		||||
 | 
			
		||||
  ; Maximum number of vertices used   | Nombre maximum de vertex utilisés dans
 | 
			
		||||
  ; in filled polygons and polyforms, | les polygônes et polyformes pleins, et
 | 
			
		||||
  ; and lasso. Possible values range  | le lasso. Les valeurs possibles vont
 | 
			
		||||
  ; from 2 to 16384.                  | de 2 à 16384.
 | 
			
		||||
  ; Each vertex takes 4 bytes.        | Chaque vertex prend 4 octets.
 | 
			
		||||
  Vertices_per_polygon = 1024	; (default 1024)
 | 
			
		||||
 | 
			
		||||
  ; Automatically zoom into the       | Zoomer automatiquement la zone pointée
 | 
			
		||||
  ; pointed area when you press the   | par la souris lorsque vous appuyez sur
 | 
			
		||||
  ; short-key of the Magnifier button | la touche de raccourci de la loupe.
 | 
			
		||||
  ; while being above the picture.    |
 | 
			
		||||
  Fast_zoom = yes	; (default 'yes')
 | 
			
		||||
 | 
			
		||||
  ; Separate the colors in the tool-  | Séparer les couleurs dans la barre
 | 
			
		||||
  ; bar by a black squaring.          | d'outils par un quadrillage noir.
 | 
			
		||||
  Separate_colors = no	; (default 'no')
 | 
			
		||||
 | 
			
		||||
  ; Initial value of the feedback for | Valeur initiale du "feedback" pour les
 | 
			
		||||
  ; the drawing modes (cf. docs).     | modes de dessin (cf. docs).
 | 
			
		||||
  FX_feedback = yes	; (default 'yes')
 | 
			
		||||
 | 
			
		||||
  ; When you reduce the palette or    | Si vous réduisez la palette ou "zappez"
 | 
			
		||||
  ; "zap" some colors out of it, it is| quelques couleurs, il est possible
 | 
			
		||||
  ; possible that there are not enough| qu'il ne reste pas assez de couleurs
 | 
			
		||||
  ; colors left to draw the menus.    | pour afficher les menus. Mettre cette
 | 
			
		||||
  ; Switching the following variable  | variable à 'yes' ramènera automatiquent
 | 
			
		||||
  ; on will bring back the colors of  | les couleurs du menu s'il reste moins
 | 
			
		||||
  ; the menu if there are less than 4 | de 4 couleurs après une "réduction" ou
 | 
			
		||||
  ; colors left after "reducing" or   | un "zapping".
 | 
			
		||||
  ; "zapping".                        |
 | 
			
		||||
  Safety_colors = yes	; (default 'yes')
 | 
			
		||||
 | 
			
		||||
  ; Display a message at startup      | Afficher un message au démarrage
 | 
			
		||||
  ; telling the version number of the | indiquant le numéro de version du
 | 
			
		||||
  ; program.                          | programme.
 | 
			
		||||
  Opening_message = yes	; (default 'yes')
 | 
			
		||||
 | 
			
		||||
  ; Take the Stencil into account when| Prendre le Stencil en compte lorsqu'on
 | 
			
		||||
  ; clearing the image.               | efface l'image.
 | 
			
		||||
  Clear_with_stencil = yes	; (default 'yes')
 | 
			
		||||
 | 
			
		||||
  ; Directly set the discontinuous    | Passer automatiquement en mode de
 | 
			
		||||
  ; freehand drawing mode after brush | dessin discontinu après la prise d'une
 | 
			
		||||
  ; grabbing.                         | brosse.
 | 
			
		||||
  Auto_discontinuous = no	; (default 'no')
 | 
			
		||||
 | 
			
		||||
  ; Save the screen dimensions in GIF | Sauver les dimensions de l'écran dans
 | 
			
		||||
  ; files. If you want to read these  | les fichiers GIF. Si vous voulez lire
 | 
			
		||||
  ; files with Photoshop or Alchemy,  | ces fichiers avec Photoshop ou Alchemy,
 | 
			
		||||
  ; and maybe some other programs, you| et peut-être d'autres programmes, vous
 | 
			
		||||
  ; must set this option to 'no'.     | devez mettre cette option à 'no'.
 | 
			
		||||
  Save_screen_size_in_GIF = no	; (default 'no')
 | 
			
		||||
 | 
			
		||||
  ; Automaticaly count the number of  | Compter automatiquement le nombre de
 | 
			
		||||
  ; different colors used when opening| couleurs différentes utilisées lors de
 | 
			
		||||
  ; the palette editor window. (Set it| d'ouverture de la fenêtre d'édition de
 | 
			
		||||
  ; to 'no' if you have a slow PC or  | la palette. (Mettez-le à 'no' si vous
 | 
			
		||||
  ; if you edit huge pictures)        | avez un PC lent ou bien si vous éditez
 | 
			
		||||
  ;                                   | d'énormes images).
 | 
			
		||||
  Auto_nb_colors_used = yes     ; (default 'yes')
 | 
			
		||||
 | 
			
		||||
  ; Default video mode at startup     | Numéro du mode vidéo par défaut au
 | 
			
		||||
  ; (see the list by running the      | démarrage (voir la liste en lançant
 | 
			
		||||
  ; program with argument "/?".       | le programme avec l'option "/?".
 | 
			
		||||
  Default_video_mode = window	; (default 'window')
 | 
			
		||||
 | 
			
		||||
  ; Window dimensions. The program    | Dimensions de la fenêtre en mode 
 | 
			
		||||
  ; remembers the last window size.   | fenêtré.
 | 
			
		||||
  Default_window_size = 640,480	; (default '640,480')
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								gfx2gui.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								gfx2gui.gif
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 20 KiB  | 
							
								
								
									
										9
									
								
								global.h
									
									
									
									
									
								
							
							
						
						
									
										9
									
								
								global.h
									
									
									
									
									
								
							@ -560,7 +560,14 @@ GFX2_GLOBAL byte * Logo_GrafX2;
 | 
			
		||||
 | 
			
		||||
GFX2_GLOBAL byte Fonte_systeme[256*8*8];
 | 
			
		||||
GFX2_GLOBAL byte Fonte_fun    [256*8*8];
 | 
			
		||||
GFX2_GLOBAL byte Fonte_help   [315][6][8];
 | 
			
		||||
GFX2_GLOBAL byte Fonte_help_norm [256][6][8];
 | 
			
		||||
GFX2_GLOBAL byte Fonte_help_bold [256][6][8];
 | 
			
		||||
// 12
 | 
			
		||||
// 34
 | 
			
		||||
GFX2_GLOBAL byte Fonte_help_t1 [64][6][8];
 | 
			
		||||
GFX2_GLOBAL byte Fonte_help_t2 [64][6][8];
 | 
			
		||||
GFX2_GLOBAL byte Fonte_help_t3 [64][6][8];
 | 
			
		||||
GFX2_GLOBAL byte Fonte_help_t4 [64][6][8];
 | 
			
		||||
GFX2_GLOBAL byte * Fonte;
 | 
			
		||||
 | 
			
		||||
  // Les données de l'aide:
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										483
									
								
								init.c
									
									
									
									
									
								
							
							
						
						
									
										483
									
								
								init.c
									
									
									
									
									
								
							@ -32,6 +32,7 @@
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <errno.h>
 | 
			
		||||
#include <SDL_byteorder.h>
 | 
			
		||||
#include <SDL_image.h>
 | 
			
		||||
#if defined(__WIN32__)
 | 
			
		||||
  #include <windows.h> // GetLogicalDrives(), GetDriveType(), DRIVE_*
 | 
			
		||||
#endif
 | 
			
		||||
@ -57,6 +58,7 @@
 | 
			
		||||
#include "files.h"
 | 
			
		||||
#include "setup.h"
 | 
			
		||||
#include "windows.h"
 | 
			
		||||
#include "sdlscreen.h"
 | 
			
		||||
#include "mountlist.h" // read_file_system_list
 | 
			
		||||
 | 
			
		||||
// Ajouter un lecteur à la liste de lecteurs
 | 
			
		||||
@ -185,114 +187,439 @@ int ActiverLecteur(int NumeroLecteur)
 | 
			
		||||
  return chdir(Drive[NumeroLecteur].Chemin);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Fonctions de lecture dans la skin de l'interface graphique
 | 
			
		||||
void Chercher_bas(SDL_Surface *GUI, int *Debut_X, int *Debut_Y, byte Couleur_neutre,char * Section)
 | 
			
		||||
{
 | 
			
		||||
  byte Couleur;
 | 
			
		||||
  int Y;
 | 
			
		||||
  Y=*Debut_Y;
 | 
			
		||||
  *Debut_X=0;
 | 
			
		||||
  do
 | 
			
		||||
  {
 | 
			
		||||
    Couleur=Sdl_Get_pixel_8(GUI,*Debut_X,Y);
 | 
			
		||||
    if (Couleur!=Couleur_neutre)
 | 
			
		||||
    {
 | 
			
		||||
      *Debut_Y=Y;
 | 
			
		||||
      return;
 | 
			
		||||
    }
 | 
			
		||||
    Y++;
 | 
			
		||||
  } while (Y<GUI->h);
 | 
			
		||||
  
 | 
			
		||||
  printf("Error in skin file: Was looking down from %d,%d for a '%s', and reached the end of the image\n",
 | 
			
		||||
    *Debut_X, *Debut_Y, Section);
 | 
			
		||||
  Erreur(ERREUR_GUI_CORROMPU);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Chercher_droite(SDL_Surface *GUI, int *Debut_X, int Debut_Y, byte Couleur_neutre, char * Section)
 | 
			
		||||
{
 | 
			
		||||
  byte Couleur;
 | 
			
		||||
  int X;
 | 
			
		||||
  X=*Debut_X;
 | 
			
		||||
  
 | 
			
		||||
  do
 | 
			
		||||
  {
 | 
			
		||||
    Couleur=Sdl_Get_pixel_8(GUI,X,Debut_Y);
 | 
			
		||||
    if (Couleur!=Couleur_neutre)
 | 
			
		||||
    {
 | 
			
		||||
      *Debut_X=X;
 | 
			
		||||
      return;
 | 
			
		||||
    }
 | 
			
		||||
    X++;
 | 
			
		||||
  } while (X<GUI->w);
 | 
			
		||||
  
 | 
			
		||||
  printf("Error in skin file: Was looking right from %d,%d for a '%s', and reached the edege of the image\n",
 | 
			
		||||
    *Debut_X, Debut_Y, Section);
 | 
			
		||||
  Erreur(ERREUR_GUI_CORROMPU);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Lire_bloc(SDL_Surface *GUI, int Debut_X, int Debut_Y, void *Dest, int Largeur, int Hauteur, char * Section, int Type)
 | 
			
		||||
{
 | 
			
		||||
  // Type: 0 = normal GUI element, only 4 colors allowed
 | 
			
		||||
  // Type: 1 = mouse cursor, 4 colors allowed + transparent
 | 
			
		||||
  // Type: 2 = brush icon or sieve pattern (only CM_Blanc and CM_Trans)
 | 
			
		||||
  // Type: 3 = raw bitmap (splash screen)
 | 
			
		||||
  
 | 
			
		||||
  byte * Ptr=Dest;
 | 
			
		||||
  int X,Y;
 | 
			
		||||
  byte Couleur;
 | 
			
		||||
 | 
			
		||||
  // Verification taille
 | 
			
		||||
  if (Debut_Y+Hauteur>=GUI->h || Debut_X+Largeur>=GUI->w)
 | 
			
		||||
  {
 | 
			
		||||
    printf("Error in skin file: Was looking at %d,%d for a %d*%d object (%s) but it doesn't fit the image.\n",
 | 
			
		||||
      Debut_X, Debut_Y, Hauteur, Largeur, Section);
 | 
			
		||||
    Erreur(ERREUR_GUI_CORROMPU);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  for (Y=Debut_Y; Y<Debut_Y+Hauteur; Y++)
 | 
			
		||||
  {
 | 
			
		||||
    for (X=Debut_X; X<Debut_X+Largeur; X++)
 | 
			
		||||
    {
 | 
			
		||||
      Couleur=Sdl_Get_pixel_8(GUI,X,Y);
 | 
			
		||||
      if (Type==0 && (Couleur != CM_Noir && Couleur != CM_Fonce && Couleur != CM_Clair && Couleur != CM_Blanc))
 | 
			
		||||
      {
 | 
			
		||||
        printf("Error in skin file: Was looking at %d,%d for a %d*%d object (%s) but at %d,%d a pixel was found with color %d which isn't one of the GUI colors (which were detected as %d,%d,%d,%d.\n",
 | 
			
		||||
          Debut_X, Debut_Y, Hauteur, Largeur, Section, X, Y, Couleur, CM_Noir, CM_Fonce, CM_Clair, CM_Blanc);
 | 
			
		||||
        Erreur(ERREUR_GUI_CORROMPU);
 | 
			
		||||
      }
 | 
			
		||||
      if (Type==1 && (Couleur != CM_Noir && Couleur != CM_Fonce && Couleur != CM_Clair && Couleur != CM_Blanc && Couleur != CM_Trans))
 | 
			
		||||
      {
 | 
			
		||||
        printf("Error in skin file: Was looking at %d,%d for a %d*%d object (%s) but at %d,%d a pixel was found with color %d which isn't one of the mouse colors (which were detected as %d,%d,%d,%d,%d.\n",
 | 
			
		||||
          Debut_X, Debut_Y, Hauteur, Largeur, Section, X, Y, Couleur, CM_Noir, CM_Fonce, CM_Clair, CM_Blanc, CM_Trans);
 | 
			
		||||
        Erreur(ERREUR_GUI_CORROMPU);
 | 
			
		||||
      }
 | 
			
		||||
      if (Type==2)
 | 
			
		||||
      {
 | 
			
		||||
        if (Couleur != CM_Blanc && Couleur != CM_Trans)
 | 
			
		||||
        {
 | 
			
		||||
          printf("Error in skin file: Was looking at %d,%d for a %d*%d object (%s) but at %d,%d a pixel was found with color %d which isn't one of the brush colors (which were detected as %d on %d.\n",
 | 
			
		||||
            Debut_X, Debut_Y, Hauteur, Largeur, Section, X, Y, Couleur, CM_Blanc, CM_Trans);
 | 
			
		||||
          Erreur(ERREUR_GUI_CORROMPU);
 | 
			
		||||
        }
 | 
			
		||||
        // Conversion en 0/1 pour les brosses monochromes internes
 | 
			
		||||
        Couleur = (Couleur != CM_Trans);
 | 
			
		||||
      }
 | 
			
		||||
      *Ptr=Couleur;
 | 
			
		||||
      Ptr++;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Lire_trame(SDL_Surface *GUI, int Debut_X, int Debut_Y, word *Dest, char * Section)
 | 
			
		||||
{
 | 
			
		||||
  byte Buffer[256];
 | 
			
		||||
  int X,Y;
 | 
			
		||||
  
 | 
			
		||||
  Lire_bloc(GUI, Debut_X, Debut_Y, Buffer, 16, 16, Section, 2);
 | 
			
		||||
 | 
			
		||||
  for (Y=0; Y<16; Y++)
 | 
			
		||||
  {
 | 
			
		||||
    *Dest=0;
 | 
			
		||||
    for (X=0; X<16; X++)
 | 
			
		||||
    {
 | 
			
		||||
      *Dest=*Dest | Buffer[Y*16+X]<<X;
 | 
			
		||||
    }
 | 
			
		||||
    Dest++;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void Charger_DAT(void)
 | 
			
		||||
{
 | 
			
		||||
  FILE*  Handle;
 | 
			
		||||
  int  Taille_fichier;
 | 
			
		||||
  int  Indice;
 | 
			
		||||
  char Nom_du_fichier[TAILLE_CHEMIN_FICHIER];
 | 
			
		||||
  byte * Fonte_temporaire;
 | 
			
		||||
  byte Pos_X;
 | 
			
		||||
  byte Pos_Y;
 | 
			
		||||
 | 
			
		||||
  struct stat Informations_Fichier;
 | 
			
		||||
  SDL_Surface * GUI;
 | 
			
		||||
  SDL_Palette * SDLPal;
 | 
			
		||||
  int i;
 | 
			
		||||
  int Curseur_X=0,Curseur_Y=0;
 | 
			
		||||
  byte Couleur;
 | 
			
		||||
  byte CM_Neutre; // Couleur neutre utilisée pour délimiter les éléments GUI
 | 
			
		||||
  int Car_1=0;  // Indices utilisés pour les 4 "fontes" qui composent les
 | 
			
		||||
  int Car_2=0;  // grands titres de l'aide. Chaque indice avance dans 
 | 
			
		||||
  int Car_3=0;  // l'une des fontes dans l'ordre :  1 2
 | 
			
		||||
  int Car_4=0;  //                                  3 4
 | 
			
		||||
  
 | 
			
		||||
  // Lecture du fichier "skin"
 | 
			
		||||
  strcpy(Nom_du_fichier,Repertoire_des_donnees);
 | 
			
		||||
  strcat(Nom_du_fichier,"gfx2.dat");
 | 
			
		||||
  strcat(Nom_du_fichier,"gfx2gui.gif");
 | 
			
		||||
  GUI=IMG_Load(Nom_du_fichier);
 | 
			
		||||
  if (!GUI)
 | 
			
		||||
  {
 | 
			
		||||
    Erreur(ERREUR_GUI_ABSENT);
 | 
			
		||||
  }
 | 
			
		||||
  if (!GUI->format || GUI->format->BitsPerPixel != 8)
 | 
			
		||||
  {
 | 
			
		||||
    printf("Not a 8-bit image");
 | 
			
		||||
    Erreur(ERREUR_GUI_CORROMPU);
 | 
			
		||||
  }
 | 
			
		||||
  SDLPal=GUI->format->palette;
 | 
			
		||||
  if (!SDLPal || SDLPal->ncolors!=256)
 | 
			
		||||
  {
 | 
			
		||||
    printf("Not a 256-color palette");
 | 
			
		||||
    Erreur(ERREUR_GUI_CORROMPU);
 | 
			
		||||
  }
 | 
			
		||||
  // Lecture de la palette par défaut
 | 
			
		||||
  for (i=0; i<256; i++)
 | 
			
		||||
  {
 | 
			
		||||
    Palette_defaut[i].R=SDLPal->colors[i].r;
 | 
			
		||||
    Palette_defaut[i].V=SDLPal->colors[i].g;
 | 
			
		||||
    Palette_defaut[i].B=SDLPal->colors[i].b;
 | 
			
		||||
  }
 | 
			
		||||
  
 | 
			
		||||
  if(stat(Nom_du_fichier,&Informations_Fichier))
 | 
			
		||||
  // Carré "noir"
 | 
			
		||||
  CM_Noir = Sdl_Get_pixel_8(GUI,Curseur_X,Curseur_Y);
 | 
			
		||||
  do
 | 
			
		||||
  {
 | 
			
		||||
    switch(errno)
 | 
			
		||||
    if (++Curseur_X>=GUI->w)
 | 
			
		||||
    {
 | 
			
		||||
      case EACCES: puts("La permission de parcours est refusée pour un des répertoires contenu dans le chemin path."); break;
 | 
			
		||||
      case EBADF:  puts("filedes est un mauvais descripteur."); break;
 | 
			
		||||
      case EFAULT: puts("Un pointeur se trouve en dehors de l'espace d'adressage."); break;
 | 
			
		||||
      case ENAMETOOLONG: puts("Nom de fichier trop long."); break;
 | 
			
		||||
      case ENOENT: puts("The file path is empty or points to a non-existing directory."); break;
 | 
			
		||||
      case ENOMEM: puts("Pas assez de mémoire pour le noyau."); break;
 | 
			
		||||
      case ENOTDIR: puts("Un composant du chemin d'accès n'est pas un répertoire."); break;
 | 
			
		||||
      #ifdef ELOOP
 | 
			
		||||
          case ELOOP:  puts("Trop de liens symboliques rencontrés dans le chemin d'accès."); break;
 | 
			
		||||
      #endif
 | 
			
		||||
      printf("Error in GUI skin file: should start with 5 consecutive squares for black, dark, light, white, transparent, then a neutral color\n");
 | 
			
		||||
      Erreur(ERREUR_GUI_CORROMPU);
 | 
			
		||||
    }
 | 
			
		||||
    Couleur=Sdl_Get_pixel_8(GUI,Curseur_X,Curseur_Y);
 | 
			
		||||
  } while(Couleur==CM_Noir);
 | 
			
		||||
  // Carré "foncé"
 | 
			
		||||
  CM_Fonce=Couleur;
 | 
			
		||||
  do
 | 
			
		||||
  {
 | 
			
		||||
    if (++Curseur_X>=GUI->w)
 | 
			
		||||
    {
 | 
			
		||||
      printf("Error in GUI skin file: should start with 5 consecutive squares for black, dark, light, white, transparent, then a neutral color\n");
 | 
			
		||||
      Erreur(ERREUR_GUI_CORROMPU);
 | 
			
		||||
    }
 | 
			
		||||
    Couleur=Sdl_Get_pixel_8(GUI,Curseur_X,Curseur_Y);
 | 
			
		||||
  } while(Couleur==CM_Fonce);
 | 
			
		||||
  // Carré "clair"
 | 
			
		||||
  CM_Clair=Couleur;
 | 
			
		||||
  do
 | 
			
		||||
  {
 | 
			
		||||
    if (++Curseur_X>GUI->w)
 | 
			
		||||
    {
 | 
			
		||||
      printf("Error in GUI skin file: should start with 5 consecutive squares for black, dark, light, white, transparent, then a neutral color\n");
 | 
			
		||||
      Erreur(ERREUR_GUI_CORROMPU);
 | 
			
		||||
    }
 | 
			
		||||
    Couleur=Sdl_Get_pixel_8(GUI,Curseur_X,Curseur_Y);
 | 
			
		||||
  } while(Couleur==CM_Clair);
 | 
			
		||||
  // Carré "blanc"
 | 
			
		||||
  CM_Blanc=Couleur;
 | 
			
		||||
  do
 | 
			
		||||
  {
 | 
			
		||||
    if (++Curseur_X>=GUI->w)
 | 
			
		||||
    {
 | 
			
		||||
      printf("Error in GUI skin file: should start with 5 consecutive squares for black, dark, light, white, transparent, then a neutral color\n");
 | 
			
		||||
      Erreur(ERREUR_GUI_CORROMPU);
 | 
			
		||||
    }
 | 
			
		||||
    Couleur=Sdl_Get_pixel_8(GUI,Curseur_X,Curseur_Y);
 | 
			
		||||
  } while(Couleur==CM_Blanc);
 | 
			
		||||
  // Carré "transparent"
 | 
			
		||||
  CM_Trans=Couleur;
 | 
			
		||||
  do
 | 
			
		||||
  {
 | 
			
		||||
    if (++Curseur_X>=GUI->w)
 | 
			
		||||
    {
 | 
			
		||||
      printf("Error in GUI skin file: should start with 5 consecutive squares for black, dark, light, white, transparent, then a neutral color\n");
 | 
			
		||||
      Erreur(ERREUR_GUI_CORROMPU);
 | 
			
		||||
    }
 | 
			
		||||
    Couleur=Sdl_Get_pixel_8(GUI,Curseur_X,Curseur_Y);
 | 
			
		||||
  } while(Couleur==CM_Trans);
 | 
			
		||||
  // Reste : couleur neutre
 | 
			
		||||
  CM_Neutre=Couleur;
 | 
			
		||||
 | 
			
		||||
  
 | 
			
		||||
  Curseur_X=0;
 | 
			
		||||
  Curseur_Y=1;
 | 
			
		||||
  while ((Couleur=Sdl_Get_pixel_8(GUI,Curseur_X,Curseur_Y))==CM_Noir)
 | 
			
		||||
  {
 | 
			
		||||
    Curseur_Y++;
 | 
			
		||||
    if (Curseur_Y>=GUI->h)
 | 
			
		||||
    {
 | 
			
		||||
      printf("Error in GUI skin file: should start with 5 consecutive squares for black, dark, light, white, transparent, then a neutral color\n");
 | 
			
		||||
      Erreur(ERREUR_GUI_CORROMPU);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  
 | 
			
		||||
  Taille_fichier=Informations_Fichier.st_size;
 | 
			
		||||
  if (Taille_fichier<DAT_DEBUT_INI_PAR_DEFAUT)
 | 
			
		||||
  // Menu
 | 
			
		||||
  Chercher_bas(GUI, &Curseur_X, &Curseur_Y, CM_Neutre, "menu");
 | 
			
		||||
  Lire_bloc(GUI, Curseur_X, Curseur_Y, BLOCK_MENU, LARGEUR_MENU, HAUTEUR_MENU,"menu",0);
 | 
			
		||||
  Curseur_Y+=HAUTEUR_MENU;
 | 
			
		||||
 | 
			
		||||
  // Effets
 | 
			
		||||
  for (i=0; i<NB_SPRITES_EFFETS; i++)
 | 
			
		||||
  {
 | 
			
		||||
    DEBUG("Taille",0);
 | 
			
		||||
    Erreur(ERREUR_DAT_CORROMPU);
 | 
			
		||||
    if (i==0)
 | 
			
		||||
      Chercher_bas(GUI, &Curseur_X, &Curseur_Y, CM_Neutre, "effect sprite");
 | 
			
		||||
    else
 | 
			
		||||
      Chercher_droite(GUI, &Curseur_X, Curseur_Y, CM_Neutre, "effect sprite");
 | 
			
		||||
    Lire_bloc(GUI, Curseur_X, Curseur_Y, SPRITE_EFFET[i], LARGEUR_SPRITE_MENU, HAUTEUR_SPRITE_MENU, "effect sprite",0);
 | 
			
		||||
    Curseur_X+=LARGEUR_SPRITE_MENU;
 | 
			
		||||
  }
 | 
			
		||||
  Curseur_Y+=HAUTEUR_SPRITE_MENU;
 | 
			
		||||
  
 | 
			
		||||
  Handle=fopen(Nom_du_fichier,"rb");
 | 
			
		||||
  if (Handle==NULL)
 | 
			
		||||
  // Curseurs souris
 | 
			
		||||
  for (i=0; i<NB_SPRITES_CURSEUR; i++)
 | 
			
		||||
  {
 | 
			
		||||
        DEBUG("Absent",0);
 | 
			
		||||
        Erreur(ERREUR_DAT_ABSENT);
 | 
			
		||||
    if (i==0)
 | 
			
		||||
      Chercher_bas(GUI, &Curseur_X, &Curseur_Y, CM_Neutre, "mouse cursor");
 | 
			
		||||
    else
 | 
			
		||||
      Chercher_droite(GUI, &Curseur_X, Curseur_Y, CM_Neutre, "mouse cursor");
 | 
			
		||||
    Lire_bloc(GUI, Curseur_X, Curseur_Y, SPRITE_CURSEUR[i], LARGEUR_SPRITE_CURSEUR, HAUTEUR_SPRITE_CURSEUR, "mouse cursor",1);
 | 
			
		||||
    Curseur_X+=LARGEUR_SPRITE_CURSEUR;
 | 
			
		||||
  }
 | 
			
		||||
  Curseur_Y+=HAUTEUR_SPRITE_CURSEUR;
 | 
			
		||||
  
 | 
			
		||||
  if (!read_bytes(Handle, Palette_defaut,sizeof(T_Palette)))
 | 
			
		||||
    Erreur(ERREUR_DAT_CORROMPU);
 | 
			
		||||
  Palette_64_to_256(Palette_defaut);
 | 
			
		||||
  // Sprites menu
 | 
			
		||||
  for (i=0; i<NB_SPRITES_MENU; i++)
 | 
			
		||||
  {
 | 
			
		||||
    if (i==0)
 | 
			
		||||
      Chercher_bas(GUI, &Curseur_X, &Curseur_Y, CM_Neutre, "menu sprite");
 | 
			
		||||
    else
 | 
			
		||||
      Chercher_droite(GUI, &Curseur_X, Curseur_Y, CM_Neutre, "menu sprite");
 | 
			
		||||
    Lire_bloc(GUI, Curseur_X, Curseur_Y, SPRITE_MENU[i], LARGEUR_SPRITE_MENU, HAUTEUR_SPRITE_MENU, "menu sprite",1);
 | 
			
		||||
    Curseur_X+=LARGEUR_SPRITE_MENU;
 | 
			
		||||
  }
 | 
			
		||||
  Curseur_Y+=HAUTEUR_SPRITE_MENU;
 | 
			
		||||
  
 | 
			
		||||
  if (!read_bytes(Handle, BLOCK_MENU,LARGEUR_MENU*HAUTEUR_MENU))
 | 
			
		||||
    Erreur(ERREUR_DAT_CORROMPU);
 | 
			
		||||
  // Icones des Pinceaux
 | 
			
		||||
  for (i=0; i<NB_SPRITES_PINCEAU; i++)
 | 
			
		||||
  {
 | 
			
		||||
    // Rangés par ligne de 12
 | 
			
		||||
    if ((i%12)==0)
 | 
			
		||||
    {
 | 
			
		||||
      if (i!=0)
 | 
			
		||||
        Curseur_Y+=HAUTEUR_PINCEAU;
 | 
			
		||||
      Chercher_bas(GUI, &Curseur_X, &Curseur_Y, CM_Neutre, "brush icon");
 | 
			
		||||
    }
 | 
			
		||||
    else
 | 
			
		||||
    {
 | 
			
		||||
      Chercher_droite(GUI, &Curseur_X, Curseur_Y, CM_Neutre, "brush icon");
 | 
			
		||||
    }
 | 
			
		||||
    Lire_bloc(GUI, Curseur_X, Curseur_Y, SPRITE_PINCEAU[i], LARGEUR_PINCEAU, HAUTEUR_PINCEAU, "brush icon",2);
 | 
			
		||||
    Curseur_X+=LARGEUR_PINCEAU;
 | 
			
		||||
  }
 | 
			
		||||
  Curseur_Y+=HAUTEUR_PINCEAU;
 | 
			
		||||
 | 
			
		||||
  if (!read_bytes(Handle, SPRITE_EFFET,LARGEUR_SPRITE_MENU*HAUTEUR_SPRITE_MENU*NB_SPRITES_EFFETS))
 | 
			
		||||
    Erreur(ERREUR_DAT_CORROMPU);
 | 
			
		||||
 | 
			
		||||
  if (!read_bytes(Handle, SPRITE_CURSEUR,LARGEUR_SPRITE_CURSEUR*HAUTEUR_SPRITE_CURSEUR*NB_SPRITES_CURSEUR))
 | 
			
		||||
    Erreur(ERREUR_DAT_CORROMPU);
 | 
			
		||||
 | 
			
		||||
  if (!read_bytes(Handle, SPRITE_MENU,LARGEUR_SPRITE_MENU*HAUTEUR_SPRITE_MENU*NB_SPRITES_MENU))
 | 
			
		||||
    Erreur(ERREUR_DAT_CORROMPU);
 | 
			
		||||
 | 
			
		||||
  if (!read_bytes(Handle, SPRITE_PINCEAU,LARGEUR_PINCEAU*HAUTEUR_PINCEAU*NB_SPRITES_PINCEAU))
 | 
			
		||||
    Erreur(ERREUR_DAT_CORROMPU);
 | 
			
		||||
 | 
			
		||||
  if (!read_bytes(Handle, SPRITE_DRIVE,LARGEUR_SPRITE_DRIVE*HAUTEUR_SPRITE_DRIVE*NB_SPRITES_DRIVES))
 | 
			
		||||
    Erreur(ERREUR_DAT_CORROMPU);
 | 
			
		||||
  // Sprites drive
 | 
			
		||||
  for (i=0; i<NB_SPRITES_DRIVES; i++)
 | 
			
		||||
  {
 | 
			
		||||
    if (i==0)
 | 
			
		||||
      Chercher_bas(GUI, &Curseur_X, &Curseur_Y, CM_Neutre, "sprite drive");
 | 
			
		||||
    else
 | 
			
		||||
      Chercher_droite(GUI, &Curseur_X, Curseur_Y, CM_Neutre, "sprite drive");
 | 
			
		||||
    Lire_bloc(GUI, Curseur_X, Curseur_Y, SPRITE_DRIVE[i], LARGEUR_SPRITE_DRIVE, HAUTEUR_SPRITE_DRIVE, "sprite drive",1);
 | 
			
		||||
    Curseur_X+=LARGEUR_SPRITE_DRIVE;
 | 
			
		||||
  }
 | 
			
		||||
  Curseur_Y+=HAUTEUR_SPRITE_DRIVE;
 | 
			
		||||
 | 
			
		||||
  // Logo splash screen
 | 
			
		||||
  if (!(Logo_GrafX2=(byte *)malloc(231*56)))
 | 
			
		||||
    Erreur(ERREUR_MEMOIRE);
 | 
			
		||||
  if (!read_bytes(Handle, Logo_GrafX2,231*56))
 | 
			
		||||
    Erreur(ERREUR_DAT_CORROMPU);
 | 
			
		||||
 | 
			
		||||
  if (!read_bytes(Handle, TRAME_PREDEFINIE,2*16*NB_TRAMES_PREDEFINIES))
 | 
			
		||||
    Erreur(ERREUR_DAT_CORROMPU);
 | 
			
		||||
  Chercher_bas(GUI, &Curseur_X, &Curseur_Y, CM_Neutre, "logo menu");
 | 
			
		||||
  Lire_bloc(GUI, Curseur_X, Curseur_Y, Logo_GrafX2, 231, 56, "logo menu",3);
 | 
			
		||||
  Curseur_Y+=56;
 | 
			
		||||
  
 | 
			
		||||
  // Lecture des fontes 8x8:
 | 
			
		||||
  if (!(Fonte_temporaire=(byte *)malloc(2048)))
 | 
			
		||||
    Erreur(ERREUR_MEMOIRE);
 | 
			
		||||
 | 
			
		||||
  // Lecture de la fonte système
 | 
			
		||||
  if (!read_bytes(Handle, Fonte_temporaire,2048))
 | 
			
		||||
    Erreur(ERREUR_DAT_CORROMPU);
 | 
			
		||||
  for (Indice=0;Indice<256;Indice++)
 | 
			
		||||
    for (Pos_X=0;Pos_X<8;Pos_X++)
 | 
			
		||||
      for (Pos_Y=0;Pos_Y<8;Pos_Y++)
 | 
			
		||||
        Fonte_systeme[(Indice<<6)+(Pos_X<<3)+Pos_Y]=( ((*(Fonte_temporaire+(Indice*8)+Pos_Y))&(0x80>>Pos_X)) ? 1 : 0);
 | 
			
		||||
 | 
			
		||||
  // Lecture de la fonte alternative
 | 
			
		||||
  if (!read_bytes(Handle, Fonte_temporaire,2048))
 | 
			
		||||
    Erreur(ERREUR_DAT_CORROMPU);
 | 
			
		||||
  for (Indice=0;Indice<256;Indice++)
 | 
			
		||||
    for (Pos_X=0;Pos_X<8;Pos_X++)
 | 
			
		||||
      for (Pos_Y=0;Pos_Y<8;Pos_Y++)
 | 
			
		||||
        Fonte_fun[(Indice<<6)+(Pos_X<<3)+Pos_Y]=( ((*(Fonte_temporaire+(Indice*8)+Pos_Y))&(0x80>>Pos_X)) ? 1 : 0);
 | 
			
		||||
 | 
			
		||||
  free(Fonte_temporaire);
 | 
			
		||||
  // Trames
 | 
			
		||||
  for (i=0; i<NB_TRAMES_PREDEFINIES; i++)
 | 
			
		||||
  {
 | 
			
		||||
    if (i==0)
 | 
			
		||||
      Chercher_bas(GUI, &Curseur_X, &Curseur_Y, CM_Neutre, "sieve pattern");
 | 
			
		||||
    else
 | 
			
		||||
      Chercher_droite(GUI, &Curseur_X, Curseur_Y, CM_Neutre, "sieve pattern");
 | 
			
		||||
    Lire_trame(GUI, Curseur_X, Curseur_Y, TRAME_PREDEFINIE[i],"sieve pattern");
 | 
			
		||||
    Curseur_X+=16;
 | 
			
		||||
  }
 | 
			
		||||
  Curseur_Y+=16;
 | 
			
		||||
  
 | 
			
		||||
  // Fonte Système
 | 
			
		||||
  for (i=0; i<256; i++)
 | 
			
		||||
  {
 | 
			
		||||
    // Rangés par ligne de 32
 | 
			
		||||
    if ((i%32)==0)
 | 
			
		||||
    {
 | 
			
		||||
      if (i!=0)
 | 
			
		||||
        Curseur_Y+=8;
 | 
			
		||||
      Chercher_bas(GUI, &Curseur_X, &Curseur_Y, CM_Neutre, "system font");
 | 
			
		||||
    }
 | 
			
		||||
    else
 | 
			
		||||
    {
 | 
			
		||||
      Chercher_droite(GUI, &Curseur_X, Curseur_Y, CM_Neutre, "system font");
 | 
			
		||||
    }
 | 
			
		||||
    Lire_bloc(GUI, Curseur_X, Curseur_Y, &Fonte_systeme[i*64], 8, 8, "system font",2);
 | 
			
		||||
    Curseur_X+=8;
 | 
			
		||||
  }
 | 
			
		||||
  Curseur_Y+=8;
 | 
			
		||||
  Fonte=Fonte_systeme;
 | 
			
		||||
 | 
			
		||||
  // Lecture de la fonte 6x8: (spéciale aide)
 | 
			
		||||
  if (!read_bytes(Handle, Fonte_help,315*6*8))
 | 
			
		||||
    Erreur(ERREUR_DAT_CORROMPU);
 | 
			
		||||
  // Fonte Fun
 | 
			
		||||
  for (i=0; i<256; i++)
 | 
			
		||||
  {
 | 
			
		||||
    // Rangés par ligne de 32
 | 
			
		||||
    if ((i%32)==0)
 | 
			
		||||
    {
 | 
			
		||||
      if (i!=0)
 | 
			
		||||
        Curseur_Y+=8;
 | 
			
		||||
      Chercher_bas(GUI, &Curseur_X, &Curseur_Y, CM_Neutre, "fun font");
 | 
			
		||||
    }
 | 
			
		||||
    else
 | 
			
		||||
    {
 | 
			
		||||
      Chercher_droite(GUI, &Curseur_X, Curseur_Y, CM_Neutre, "fun font");
 | 
			
		||||
    }
 | 
			
		||||
    Lire_bloc(GUI, Curseur_X, Curseur_Y, &Fonte_fun[i*64], 8, 8, "fun font",2);
 | 
			
		||||
    Curseur_X+=8;
 | 
			
		||||
  }
 | 
			
		||||
  Curseur_Y+=8;
 | 
			
		||||
 | 
			
		||||
  // Le reste est actuellement une copie du fichier INI par défaut:
 | 
			
		||||
  // Pas besoin ici.
 | 
			
		||||
  // Fonte help normale
 | 
			
		||||
  for (i=0; i<256; i++)
 | 
			
		||||
  {
 | 
			
		||||
    // Rangés par ligne de 32
 | 
			
		||||
    if ((i%32)==0)
 | 
			
		||||
    {
 | 
			
		||||
      if (i!=0)
 | 
			
		||||
        Curseur_Y+=8;
 | 
			
		||||
      Chercher_bas(GUI, &Curseur_X, &Curseur_Y, CM_Neutre, "help font (norm)");
 | 
			
		||||
    }
 | 
			
		||||
    else
 | 
			
		||||
    {
 | 
			
		||||
      Chercher_droite(GUI, &Curseur_X, Curseur_Y, CM_Neutre, "help font (norm)");
 | 
			
		||||
    }
 | 
			
		||||
    Lire_bloc(GUI, Curseur_X, Curseur_Y, &(Fonte_help_norm[i][0][0]), 6, 8, "help font (norm)",0);
 | 
			
		||||
    Curseur_X+=6;
 | 
			
		||||
  }
 | 
			
		||||
  Curseur_Y+=8;
 | 
			
		||||
  
 | 
			
		||||
  fclose(Handle);
 | 
			
		||||
  // Fonte help bold
 | 
			
		||||
  for (i=0; i<256; i++)
 | 
			
		||||
  {
 | 
			
		||||
    // Rangés par ligne de 32
 | 
			
		||||
    if ((i%32)==0)
 | 
			
		||||
    {
 | 
			
		||||
      if (i!=0)
 | 
			
		||||
        Curseur_Y+=8;
 | 
			
		||||
      Chercher_bas(GUI, &Curseur_X, &Curseur_Y, CM_Neutre, "help font (bold)");
 | 
			
		||||
    }
 | 
			
		||||
    else
 | 
			
		||||
    {
 | 
			
		||||
      Chercher_droite(GUI, &Curseur_X, Curseur_Y, CM_Neutre, "help font (bold)");
 | 
			
		||||
    }
 | 
			
		||||
    Lire_bloc(GUI, Curseur_X, Curseur_Y, &(Fonte_help_bold[i][0][0]), 6, 8, "help font (bold)",0);
 | 
			
		||||
    Curseur_X+=6;
 | 
			
		||||
  }
 | 
			
		||||
  Curseur_Y+=8;
 | 
			
		||||
 | 
			
		||||
  // Fonte help titre
 | 
			
		||||
  for (i=0; i<256; i++)
 | 
			
		||||
  {
 | 
			
		||||
    byte * Dest;
 | 
			
		||||
    // Rangés par ligne de 64
 | 
			
		||||
    if ((i%64)==0)
 | 
			
		||||
    {
 | 
			
		||||
      if (i!=0)
 | 
			
		||||
        Curseur_Y+=8;
 | 
			
		||||
      Chercher_bas(GUI, &Curseur_X, &Curseur_Y, CM_Neutre, "help font (title)");
 | 
			
		||||
    }
 | 
			
		||||
    else
 | 
			
		||||
    {
 | 
			
		||||
      Chercher_droite(GUI, &Curseur_X, Curseur_Y, CM_Neutre, "help font (title)");
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    if (i&1)
 | 
			
		||||
      if (i&64)
 | 
			
		||||
        Dest=&(Fonte_help_t4[Car_4++][0][0]);
 | 
			
		||||
      else
 | 
			
		||||
        Dest=&(Fonte_help_t2[Car_2++][0][0]);
 | 
			
		||||
    else
 | 
			
		||||
      if (i&64)
 | 
			
		||||
        Dest=&(Fonte_help_t3[Car_3++][0][0]);
 | 
			
		||||
      else
 | 
			
		||||
        Dest=&(Fonte_help_t1[Car_1++][0][0]);
 | 
			
		||||
    
 | 
			
		||||
    Lire_bloc(GUI, Curseur_X, Curseur_Y, Dest, 6, 8, "help font (title)",0);
 | 
			
		||||
    Curseur_X+=6;
 | 
			
		||||
  }
 | 
			
		||||
  Curseur_Y+=8;
 | 
			
		||||
  
 | 
			
		||||
  // Terminé: libération de l'image skin
 | 
			
		||||
  SDL_FreeSurface(GUI);
 | 
			
		||||
 | 
			
		||||
  Section_d_aide_en_cours=0;
 | 
			
		||||
  Position_d_aide_en_cours=0;
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										20
									
								
								main.c
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								main.c
									
									
									
									
									
								
							@ -105,12 +105,15 @@ void Erreur_fonction(int Code, const char *Nom_fichier, int Numero_ligne, const
 | 
			
		||||
  {
 | 
			
		||||
    switch (Code)
 | 
			
		||||
    {
 | 
			
		||||
      case ERREUR_DAT_ABSENT         : printf("Error: File GFX2.DAT is missing!\n");
 | 
			
		||||
      case ERREUR_GUI_ABSENT         : printf("Error: File gfx2gui.gif is missing!\n");
 | 
			
		||||
                                       printf("This program cannot run without this file.\n");
 | 
			
		||||
                                       break;
 | 
			
		||||
      case ERREUR_DAT_CORROMPU       : printf("Error: File GFX2.DAT is corrupt!\n");
 | 
			
		||||
      case ERREUR_GUI_CORROMPU       : printf("Error: File gfx2gui.gif is corrupt!\n");
 | 
			
		||||
                                       printf("This program cannot run without a correct version of this file.\n");
 | 
			
		||||
                                       break;
 | 
			
		||||
      case ERREUR_INI_ABSENT         : printf("Error: File gfx2def.ini is missing!\n");
 | 
			
		||||
                                       printf("This program cannot run without this file.\n");
 | 
			
		||||
                                       break;
 | 
			
		||||
      case ERREUR_CFG_ABSENT         : printf("Error: File GFX2.CFG is missing!\n");
 | 
			
		||||
                                       printf("Please run GFXCFG to create it.\n");
 | 
			
		||||
                                       break;
 | 
			
		||||
@ -496,17 +499,12 @@ void Initialisation_du_programme(int argc,char * argv[])
 | 
			
		||||
 | 
			
		||||
  // Transfert des valeurs du .INI qui ne changent pas dans des variables
 | 
			
		||||
  // plus accessibles:
 | 
			
		||||
  Palette_defaut[252]=Coul_menu_pref[0]=Config.Coul_menu_pref[0];
 | 
			
		||||
  Palette_defaut[253]=Coul_menu_pref[1]=Config.Coul_menu_pref[1];
 | 
			
		||||
  Palette_defaut[254]=Coul_menu_pref[2]=Config.Coul_menu_pref[2];
 | 
			
		||||
  Palette_defaut[255]=Coul_menu_pref[3]=Config.Coul_menu_pref[3];
 | 
			
		||||
  Palette_defaut[CM_Noir] =Coul_menu_pref[0]=Config.Coul_menu_pref[0];
 | 
			
		||||
  Palette_defaut[CM_Fonce]=Coul_menu_pref[1]=Config.Coul_menu_pref[1];
 | 
			
		||||
  Palette_defaut[CM_Clair]=Coul_menu_pref[2]=Config.Coul_menu_pref[2];
 | 
			
		||||
  Palette_defaut[CM_Blanc]=Coul_menu_pref[3]=Config.Coul_menu_pref[3];
 | 
			
		||||
  memcpy(Principal_Palette,Palette_defaut,sizeof(T_Palette));
 | 
			
		||||
 | 
			
		||||
  CM_Noir =0;
 | 
			
		||||
  CM_Fonce=25;
 | 
			
		||||
  CM_Clair=7;
 | 
			
		||||
  CM_Blanc=15;
 | 
			
		||||
  CM_Trans=1;
 | 
			
		||||
  Calculer_couleurs_menu_optimales(Palette_defaut);
 | 
			
		||||
 | 
			
		||||
  // Infos sur les trames (Sieve)
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										13
									
								
								readini.c
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								readini.c
									
									
									
									
									
								
							@ -411,22 +411,15 @@ int Charger_INI(struct S_Config * Conf)
 | 
			
		||||
  Fichier=fopen(Nom_du_fichier,"rb");
 | 
			
		||||
  if (Fichier==0)
 | 
			
		||||
  {
 | 
			
		||||
    // Si le fichier ini est absent on le relit depuis gfx2.dat
 | 
			
		||||
    // Si le fichier ini est absent on le relit depuis gfx2def.ini
 | 
			
		||||
    strcpy(Nom_du_fichier,Repertoire_des_donnees);
 | 
			
		||||
    strcat(Nom_du_fichier,"gfx2.dat");
 | 
			
		||||
    strcat(Nom_du_fichier,"gfx2def.ini");
 | 
			
		||||
    Fichier=fopen(Nom_du_fichier,"rb");
 | 
			
		||||
    if (Fichier == 0)
 | 
			
		||||
    {
 | 
			
		||||
      free(Nom_du_fichier);
 | 
			
		||||
      free(Buffer);
 | 
			
		||||
      return ERREUR_DAT_ABSENT;
 | 
			
		||||
    }
 | 
			
		||||
    if (fseek(Fichier, DAT_DEBUT_INI_PAR_DEFAUT ,SEEK_SET))
 | 
			
		||||
    {
 | 
			
		||||
      fclose(Fichier);
 | 
			
		||||
      free(Nom_du_fichier);
 | 
			
		||||
      free(Buffer);
 | 
			
		||||
      return ERREUR_DAT_CORROMPU;
 | 
			
		||||
      return ERREUR_INI_ABSENT;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										11
									
								
								saveini.c
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								saveini.c
									
									
									
									
									
								
							@ -415,19 +415,14 @@ int Sauver_INI(struct S_Config * Conf)
 | 
			
		||||
      goto Erreur_ERREUR_SAUVEGARDE_INI;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  // On récupère un fichier INI "propre" dans GFX2.DAT
 | 
			
		||||
  // On récupère un fichier INI "propre" à partir de gfx2def.ini
 | 
			
		||||
  strcpy(Nom_du_fichier_DAT,Repertoire_des_donnees);
 | 
			
		||||
  strcat(Nom_du_fichier_DAT,"gfx2.dat");
 | 
			
		||||
  strcat(Nom_du_fichier_DAT,"gfx2def.ini");
 | 
			
		||||
  Ancien_fichier=fopen(Nom_du_fichier_DAT,"rb");
 | 
			
		||||
  if (Ancien_fichier==0)
 | 
			
		||||
  {
 | 
			
		||||
    fclose(Ancien_fichier);
 | 
			
		||||
    return ERREUR_DAT_ABSENT;
 | 
			
		||||
  }
 | 
			
		||||
  if (fseek(Ancien_fichier, DAT_DEBUT_INI_PAR_DEFAUT, SEEK_SET))
 | 
			
		||||
  {
 | 
			
		||||
    fclose(Ancien_fichier);
 | 
			
		||||
    return ERREUR_DAT_CORROMPU;
 | 
			
		||||
    return ERREUR_INI_ABSENT;
 | 
			
		||||
  }
 | 
			
		||||
  Nouveau_fichier=fopen(Nom_du_fichier,"wb");
 | 
			
		||||
  if (Nouveau_fichier==0)
 | 
			
		||||
 | 
			
		||||
@ -182,3 +182,10 @@ SDL_Color Conversion_couleur_SDL(byte Index)
 | 
			
		||||
  Couleur.unused = 255;
 | 
			
		||||
  return Couleur;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Lecture d'un pixel pour une surface SDL.
 | 
			
		||||
// Attention, ne fonctionne que pour les surfaces 8-bit
 | 
			
		||||
byte Sdl_Get_pixel_8(SDL_Surface *Bmp, int X, int Y)
 | 
			
		||||
{
 | 
			
		||||
  return ((byte *)(Bmp->pixels))[(Y*Bmp->pitch+X)];
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -34,5 +34,6 @@
 | 
			
		||||
  void Flush_update(void);
 | 
			
		||||
  byte * Surface_en_bytefield(SDL_Surface *Source, byte * Destination);
 | 
			
		||||
  SDL_Color Conversion_couleur_SDL(byte);
 | 
			
		||||
  byte Sdl_Get_pixel_8(SDL_Surface *Bmp, int X, int Y);
 | 
			
		||||
  
 | 
			
		||||
#endif // SDLSCREEN_H_INCLUDED
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										153
									
								
								tables_aide.h
									
									
									
									
									
								
							
							
						
						
									
										153
									
								
								tables_aide.h
									
									
									
									
									
								
							@ -21,159 +21,6 @@
 | 
			
		||||
 | 
			
		||||
#include "const.h" // Utilise les enumerations BOUTON_ et SPECIAL_
 | 
			
		||||
 | 
			
		||||
// Les tables suivantes servent de table de conversion entre un caractère ASCII
 | 
			
		||||
// et le sprite qui le représente dans la Fonte
 | 
			
		||||
 | 
			
		||||
// Table de caractères Normaux
 | 
			
		||||
static const int Caracteres_Aide_N[] = { // Commence à ' '
 | 
			
		||||
    0,     1,     2,     3,     4,     5,     6,     7,     8,     9,
 | 
			
		||||
   10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
 | 
			
		||||
   20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
 | 
			
		||||
   30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
 | 
			
		||||
   40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
 | 
			
		||||
   50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
 | 
			
		||||
   60,    61,     0,    62,    63,    64,    65,    66,    67,    68,
 | 
			
		||||
   69,    70,    71,    72,    73,    74,    75,    76,    77,    78,
 | 
			
		||||
   79,    80,    81,    82,    83,    84,    85,    86,    87,    88,
 | 
			
		||||
   89,    90,    91,    92,     0,     0,    93,    94,    95,    96,
 | 
			
		||||
    0,    97,     0,    98,    99,   100,   101,     0,     0,     0,
 | 
			
		||||
    0,     0,     0,   102,     0,   103,     0,     0,   104,   105};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// Table de caractères Sous-Titres
 | 
			
		||||
static const int Caracteres_Aide_S[] = { // Commence à ' '
 | 
			
		||||
    0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 | 
			
		||||
    0,     0,     0,   132,   133,   134,   135,   136,   137,   138,
 | 
			
		||||
  139,   140,   141,   142,   143,   144,   145,     0,     0,     0,
 | 
			
		||||
    0,   146,     0,   106,   107,   108,   109,   110,   111,   112,
 | 
			
		||||
  113,   114,   115,   116,   117,   118,   119,   120,   121,   122,
 | 
			
		||||
  123,   124,   125,   126,   127,   128,   129,   130,   131 };
 | 
			
		||||
  // Table de caractères Titres (demi-ligne supérieure)
 | 
			
		||||
static const int Caracteres_Aide_Titre_haut[] = { // Commence à ' '
 | 
			
		||||
  126+147,
 | 
			
		||||
  126+147,
 | 
			
		||||
  126+147,
 | 
			
		||||
  126+147,
 | 
			
		||||
  126+147,
 | 
			
		||||
  126+147,
 | 
			
		||||
  126+147,
 | 
			
		||||
  126+147,
 | 
			
		||||
  126+147,
 | 
			
		||||
  126+147,
 | 
			
		||||
  126+147,
 | 
			
		||||
  126+147,
 | 
			
		||||
  126+147,
 | 
			
		||||
   96+147, // -
 | 
			
		||||
   98+147, // .
 | 
			
		||||
  100+147, // /
 | 
			
		||||
  102+147, // 0
 | 
			
		||||
  104+147, // 1
 | 
			
		||||
  106+147, // 2
 | 
			
		||||
  108+147, // 3
 | 
			
		||||
  110+147, // 4
 | 
			
		||||
  112+147, // 5
 | 
			
		||||
  114+147, // 6
 | 
			
		||||
  116+147, // 7
 | 
			
		||||
  118+147, // 8
 | 
			
		||||
  120+147, // 9
 | 
			
		||||
  122+147, // :
 | 
			
		||||
  126+147,
 | 
			
		||||
  126+147,
 | 
			
		||||
  126+147,
 | 
			
		||||
  126+147,
 | 
			
		||||
  124+147,  // ?// ?
 | 
			
		||||
  126+147,
 | 
			
		||||
    0+147, // A
 | 
			
		||||
    2+147, // B
 | 
			
		||||
    4+147, // C
 | 
			
		||||
    6+147, // D
 | 
			
		||||
    8+147, // E
 | 
			
		||||
   10+147, // F
 | 
			
		||||
   12+147, // G
 | 
			
		||||
   14+147, // H
 | 
			
		||||
   16+147, // I
 | 
			
		||||
   18+147, // J
 | 
			
		||||
   20+147, // K
 | 
			
		||||
   22+147, // L
 | 
			
		||||
   24+147, // M
 | 
			
		||||
   26+147, // N
 | 
			
		||||
   28+147, // O
 | 
			
		||||
   30+147, // P
 | 
			
		||||
   32+147, // Q
 | 
			
		||||
   34+147, // R
 | 
			
		||||
   36+147, // S
 | 
			
		||||
   38+147, // T
 | 
			
		||||
   40+147, // U
 | 
			
		||||
   42+147, // V
 | 
			
		||||
   88+147, // W
 | 
			
		||||
   90+147, // X
 | 
			
		||||
   92+147, // Y
 | 
			
		||||
   94+147  // Z
 | 
			
		||||
};
 | 
			
		||||
  // Table de caractères Titres (demi-ligne supérieure)
 | 
			
		||||
static const int Caracteres_Aide_Titre_bas[] = { // Commence à ' '
 | 
			
		||||
  126+147+40,
 | 
			
		||||
  126+147+40,
 | 
			
		||||
  126+147+40,
 | 
			
		||||
  126+147+40,
 | 
			
		||||
  126+147+40,
 | 
			
		||||
  126+147+40,
 | 
			
		||||
  126+147+40,
 | 
			
		||||
  126+147+40,
 | 
			
		||||
  126+147+40,
 | 
			
		||||
  126+147+40,
 | 
			
		||||
  126+147+40,
 | 
			
		||||
  126+147+40,
 | 
			
		||||
  126+147+40,
 | 
			
		||||
   96+147+40, // -
 | 
			
		||||
   98+147+40, // .
 | 
			
		||||
  100+147+40, // /
 | 
			
		||||
  102+147+40, // 0
 | 
			
		||||
  104+147+40, // 1
 | 
			
		||||
  106+147+40, // 2
 | 
			
		||||
  108+147+40, // 3
 | 
			
		||||
  110+147+40, // 4
 | 
			
		||||
  112+147+40, // 5
 | 
			
		||||
  114+147+40, // 6
 | 
			
		||||
  116+147+40, // 7
 | 
			
		||||
  118+147+40, // 8
 | 
			
		||||
  120+147+40, // 9
 | 
			
		||||
  122+147+40, // :
 | 
			
		||||
  126+147+40,
 | 
			
		||||
  126+147+40,
 | 
			
		||||
  126+147+40,
 | 
			
		||||
  126+147+40,
 | 
			
		||||
  124+147+40, // ?
 | 
			
		||||
  126+147+40,
 | 
			
		||||
    0+147+44, // A
 | 
			
		||||
    2+147+44, // B
 | 
			
		||||
    4+147+44, // C
 | 
			
		||||
    6+147+44, // D
 | 
			
		||||
    8+147+44, // E
 | 
			
		||||
   10+147+44, // F
 | 
			
		||||
   12+147+44, // G
 | 
			
		||||
   14+147+44, // H
 | 
			
		||||
   16+147+44, // I
 | 
			
		||||
   18+147+44, // J
 | 
			
		||||
   20+147+44, // K
 | 
			
		||||
   22+147+44, // L
 | 
			
		||||
   24+147+44, // M
 | 
			
		||||
   26+147+44, // N
 | 
			
		||||
   28+147+44, // O
 | 
			
		||||
   30+147+44, // P
 | 
			
		||||
   32+147+44, // Q
 | 
			
		||||
   34+147+44, // R
 | 
			
		||||
   36+147+44, // S
 | 
			
		||||
   38+147+44, // T
 | 
			
		||||
   40+147+44, // U
 | 
			
		||||
   42+147+44, // V
 | 
			
		||||
   88+147+40, // W
 | 
			
		||||
   90+147+40, // X
 | 
			
		||||
   92+147+40, // Y
 | 
			
		||||
   94+147+40  // Z
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// Quelques formules magiques:
 | 
			
		||||
#define AIDE_TEXTE(x) {'N', x, 0},
 | 
			
		||||
// Génère une ligne 'N' (Normale)
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										35
									
								
								windows.c
									
									
									
									
									
								
							
							
						
						
									
										35
									
								
								windows.c
									
									
									
									
									
								
							@ -321,14 +321,14 @@ void Print_general(short X,short Y,char * Chaine,byte Couleur_texte,byte Couleur
 | 
			
		||||
  byte Repeat_Menu_Facteur_Y;
 | 
			
		||||
 | 
			
		||||
  Reel_Y=Y;
 | 
			
		||||
  for (Pos_Y=0;Pos_Y<8;Pos_Y++)
 | 
			
		||||
  for (Pos_Y=0;Pos_Y<8<<3;Pos_Y+=1<<3)
 | 
			
		||||
  {
 | 
			
		||||
    Reel_X=0; // Position dans le buffer
 | 
			
		||||
    for (Indice=0;Chaine[Indice]!='\0';Indice++)
 | 
			
		||||
    {
 | 
			
		||||
      // Pointeur sur le premier pixel du caractère
 | 
			
		||||
      Caractere=Fonte+(((unsigned char)Chaine[Indice])<<6);
 | 
			
		||||
      for (Pos_X=0;Pos_X<8<<3;Pos_X+=1<<3)
 | 
			
		||||
      for (Pos_X=0;Pos_X<8;Pos_X+=1)
 | 
			
		||||
        for (Repeat_Menu_Facteur_X=0;Repeat_Menu_Facteur_X<Menu_Facteur_X*Pixel_width;Repeat_Menu_Facteur_X++)
 | 
			
		||||
          Buffer_de_ligne_horizontale[Reel_X++]=*(Caractere+Pos_X+Pos_Y)?Couleur_texte:Couleur_fond;
 | 
			
		||||
    }
 | 
			
		||||
@ -363,10 +363,10 @@ void Print_char_transparent_dans_fenetre(short Pos_X,short Pos_Y,unsigned char C
 | 
			
		||||
  Pos_X=(Pos_X*Menu_Facteur_X)+Fenetre_Pos_X;
 | 
			
		||||
  Pos_Y=(Pos_Y*Menu_Facteur_Y)+Fenetre_Pos_Y;
 | 
			
		||||
 | 
			
		||||
  for (X=0;X<8;X++)
 | 
			
		||||
  for (Y=0;Y<8;Y++)
 | 
			
		||||
    for (X=0;X<8;X++)
 | 
			
		||||
    {
 | 
			
		||||
      if (*(Fonte+((int)Caractere<<6)+(X<<3)+Y))
 | 
			
		||||
      if (*(Fonte+((int)Caractere<<6)+(Y<<3)+X))
 | 
			
		||||
        Block(Pos_X+(X*Menu_Facteur_X), Pos_Y+(Y*Menu_Facteur_Y),
 | 
			
		||||
              Menu_Facteur_X, Menu_Facteur_Y, Couleur);
 | 
			
		||||
    }
 | 
			
		||||
@ -2349,11 +2349,32 @@ void Calculer_couleurs_menu_optimales(struct Composantes * Palette)
 | 
			
		||||
      for (J=0; J<HAUTEUR_SPRITE_MENU; J++)
 | 
			
		||||
        for (I=0; I<LARGEUR_SPRITE_MENU; I++)
 | 
			
		||||
          Remap_pixel(&SPRITE_EFFET[K][J][I]);
 | 
			
		||||
      // Fonte de l'aide
 | 
			
		||||
    for (K=0; K<315; K++)
 | 
			
		||||
    // Fontes de l'aide
 | 
			
		||||
    for (K=0; K<256; K++)
 | 
			
		||||
      for (J=0; J<8; J++)
 | 
			
		||||
        for (I=0; I<6; I++)
 | 
			
		||||
          Remap_pixel(&Fonte_help[K][I][J]);
 | 
			
		||||
          Remap_pixel(&Fonte_help_norm[K][I][J]);
 | 
			
		||||
    for (K=0; K<256; K++)
 | 
			
		||||
      for (J=0; J<8; J++)
 | 
			
		||||
        for (I=0; I<6; I++)
 | 
			
		||||
          Remap_pixel(&Fonte_help_bold[K][I][J]);
 | 
			
		||||
    for (K=0; K<64; K++)
 | 
			
		||||
      for (J=0; J<8; J++)
 | 
			
		||||
        for (I=0; I<6; I++)
 | 
			
		||||
          Remap_pixel(&Fonte_help_t1[K][I][J]);
 | 
			
		||||
    for (K=0; K<64; K++)
 | 
			
		||||
      for (J=0; J<8; J++)
 | 
			
		||||
        for (I=0; I<6; I++)
 | 
			
		||||
          Remap_pixel(&Fonte_help_t2[K][I][J]);
 | 
			
		||||
    for (K=0; K<64; K++)
 | 
			
		||||
      for (J=0; J<8; J++)
 | 
			
		||||
        for (I=0; I<6; I++)
 | 
			
		||||
          Remap_pixel(&Fonte_help_t3[K][I][J]);
 | 
			
		||||
    for (K=0; K<64; K++)
 | 
			
		||||
      for (J=0; J<8; J++)
 | 
			
		||||
        for (I=0; I<6; I++)
 | 
			
		||||
          Remap_pixel(&Fonte_help_t4[K][I][J]);
 | 
			
		||||
        
 | 
			
		||||
    // Sprites de lecteurs (drives)
 | 
			
		||||
    for (K=0; K<NB_SPRITES_DRIVES; K++)
 | 
			
		||||
      for (J=0; J<HAUTEUR_SPRITE_DRIVE; J++)
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user