From e302f2d26a3728ca57ab712e69a811be2818e9b0 Mon Sep 17 00:00:00 2001 From: Yves Rizoud Date: Tue, 27 Jan 2009 00:10:02 +0000 Subject: [PATCH] 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 --- Makefile | 12 +- aide.c | 35 ++-- const.h | 7 +- gfx2.dat | Bin 78682 -> 0 bytes gfx2def.ini | 292 +++++++++++++++++++++++++++++ gfx2gui.gif | Bin 0 -> 20541 bytes global.h | 9 +- init.c | 499 +++++++++++++++++++++++++++++++++++++++++--------- main.c | 20 +- readini.c | 13 +- saveini.c | 11 +- sdlscreen.c | 7 + sdlscreen.h | 3 +- tables_aide.h | 153 ---------------- windows.c | 47 +++-- 15 files changed, 803 insertions(+), 305 deletions(-) delete mode 100644 gfx2.dat create mode 100644 gfx2def.ini create mode 100644 gfx2gui.gif diff --git a/Makefile b/Makefile index d4d03371..94616602 100644 --- a/Makefile +++ b/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/* diff --git a/aide.c b/aide.c index 5de66893..5fbd770a 100644 --- a/aide.c +++ b/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'_' || 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=&(Fonte_help_t1[(unsigned char)(Ligne[Indice_de_caractere/2])-' '][0][0]); + } else if (TypeLigne=='-') - Curseur=Caracteres_Aide_Titre_bas[(unsigned char)(Ligne[Indice_de_caractere/2])-' '] + (Indice_de_caractere & 1); + { + 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=Caracteres_Aide_S[(unsigned char)(Ligne[Indice_de_caractere])-' ']; + Curseur=&(Fonte_help_bold[(unsigned char)(Ligne[Indice_de_caractere])][0][0]); else if (TypeLigne=='N' || TypeLigne=='K') - Curseur=Caracteres_Aide_N[(unsigned char)(Ligne[Indice_de_caractere])-' ']; + Curseur=&(Fonte_help_norm[(unsigned char)(Ligne[Indice_de_caractere])][0][0]); else - Curseur=1; // Un garde-fou en cas de probleme + Curseur=&(Fonte_help_norm['!'][0][0]); // 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 - for (X=0;X<6;X++) for (Repeat_Menu_Facteur_X=0;Repeat_Menu_Facteur_X=Position_lien && Indice_de_caractere<(Position_lien+Taille_lien)) diff --git a/const.h b/const.h index 8774c12c..4c8a5706 100644 --- a/const.h +++ b/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 diff --git a/gfx2.dat b/gfx2.dat deleted file mode 100644 index 54f80b6a4cdbcf2742f8e10bee33263fa4d99706..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 78682 zcmeHwTWp=zmEJ!|M)Jf;M2Qr6coR>kBvfo!rY@ElNr~b}R$^36G`doxBhd>DWP#8fGOpQU2js}D2JPf7= z>N5SlZ>{~`&N(DyNtR{LmU#BR_g;Ig^{u`3+L!-OiXx@Sr=MQG ze*G7}_{Bp}bRddejG{eJ^n4UO8%0A=v@MDTqNq2Dx}vB(iZ({k(^0fOioO^{hYm#t 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 diff --git a/gfx2def.ini b/gfx2def.ini new file mode 100644 index 00000000..9f43a596 --- /dev/null +++ b/gfx2def.ini @@ -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') diff --git a/gfx2gui.gif b/gfx2gui.gif new file mode 100644 index 0000000000000000000000000000000000000000..09d073ce66aec1e07874b4352439291fcd6f1df0 GIT binary patch literal 20541 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 PzZG1=Ra~nzAOHY66OU^> literal 0 HcmV?d00001 diff --git a/global.h b/global.h index b00d5fb4..47502213 100644 --- a/global.h +++ b/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: diff --git a/init.c b/init.c index 92871de4..9b7a8996 100644 --- a/init.c +++ b/init.c @@ -32,6 +32,7 @@ #include #include #include +#include #if defined(__WIN32__) #include // 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); } -void Charger_DAT(void) +// 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) { - 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; - - strcpy(Nom_du_fichier,Repertoire_des_donnees); - strcat(Nom_du_fichier,"gfx2.dat"); - - if(stat(Nom_du_fichier,&Informations_Fichier)) + byte Couleur; + int Y; + Y=*Debut_Y; + *Debut_X=0; + do { - switch(errno) + Couleur=Sdl_Get_pixel_8(GUI,*Debut_X,Y); + if (Couleur!=Couleur_neutre) { - 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 + *Debut_Y=Y; + return; + } + Y++; + } while (Yh); + + 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 (Xw); + + 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; Yformat || 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; + } + + // Carré "noir" + CM_Noir = Sdl_Get_pixel_8(GUI,Curseur_X,Curseur_Y); + 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_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; - if (!read_bytes(Handle, Palette_defaut,sizeof(T_Palette))) - Erreur(ERREUR_DAT_CORROMPU); - Palette_64_to_256(Palette_defaut); + + 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); + } + } + + // 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; - if (!read_bytes(Handle, BLOCK_MENU,LARGEUR_MENU*HAUTEUR_MENU)) - Erreur(ERREUR_DAT_CORROMPU); + // Effets + for (i=0; i>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); + 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; + + // Trames + for (i=0; ipixels))[(Y*Bmp->pitch+X)]; +} diff --git a/sdlscreen.h b/sdlscreen.h index 20373759..0ed1081f 100644 --- a/sdlscreen.h +++ b/sdlscreen.h @@ -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 diff --git a/tables_aide.h b/tables_aide.h index 670362d5..82712bb9 100644 --- a/tables_aide.h +++ b/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) diff --git a/windows.c b/windows.c index 6474a10f..ba6489ea 100644 --- a/windows.c +++ b/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