From 4db445479404429e9f52014e1cc95d93ec0e2c51 Mon Sep 17 00:00:00 2001 From: Yves Rizoud Date: Sat, 21 Feb 2009 02:59:55 +0000 Subject: [PATCH] Added 00ai99 to credits gfx2gui.gif: Resized the drive icons series to 8x8 and added bookmark and dropdown. More work on dropdown controls, used in Load screen. Stable. git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@650 416bcca6-2ee7-4201-b75f-2eb2f807beb1 --- boutons.c | 13 +++-- const.h | 6 +-- gfx2gui.gif | Bin 21494 -> 21534 bytes moteur.c | 144 ++++++++++++++++++++++++++++++++++---------------- moteur.h | 2 +- struct.h | 6 ++- tables_aide.h | 3 +- 7 files changed, 118 insertions(+), 56 deletions(-) diff --git a/boutons.c b/boutons.c index 72cef973..44a501f3 100644 --- a/boutons.c +++ b/boutons.c @@ -2534,7 +2534,10 @@ byte Bouton_Load_ou_Save(byte Load, byte Image) Scroller_de_fichiers = Fenetre_Definir_bouton_scroller(110,89+FILENAMESPACE,82,1,10,0); // 5 // Dropdown pour les formats de fichier - Dropdown_des_formats=Fenetre_Definir_bouton_dropdown(12,56,94,11,"",1); // 6 + Dropdown_des_formats= + Fenetre_Definir_bouton_dropdown(70,56,36,16,0, + (Principal_Format==0)?"*.*":FormatFichier[Principal_Format-1].Extension, + 1,0,1,A_DROITE|A_GAUCHE); // 6 if (Load) Fenetre_Dropdown_choix(Dropdown_des_formats,0,"*.*"); for (Temp=0;TempPos_X+2,Dropdown_des_formats->Pos_Y+2,"Format",CM_Noir,CM_Clair); - Print_Format(Dropdown_des_formats); + Print_dans_fenetre(12,61,"Format:",CM_Fonce,CM_Clair); + + //Print_dans_fenetre(Dropdown_des_formats->Pos_X+2,Dropdown_des_formats->Pos_Y+2,"Format",CM_Noir,CM_Clair); + //Print_Format(Dropdown_des_formats); // Texte de commentaire des dessins Print_dans_fenetre(7,174+FILENAMESPACE,"Txt:",CM_Fonce,CM_Clair); @@ -2757,7 +2762,7 @@ byte Bouton_Load_ou_Save(byte Load, byte Image) // On met à jour le format de browsing du fileselect: Principal_Format=Fenetre_Attribut2; // On affiche le nouveau format de lecture: - Print_Format(Dropdown_des_formats); + //Print_Format(Dropdown_des_formats); // Comme on change de liste, on se place en début de liste: Principal_File_list_Position=0; Principal_File_list_Decalage=0; diff --git a/const.h b/const.h index 357b24c0..e129cd62 100644 --- a/const.h +++ b/const.h @@ -52,9 +52,9 @@ #define LARGEUR_PINCEAU 16 // Largeur d'un sprite de pinceau prédéfini #define HAUTEUR_PINCEAU 16 // Hauteur d'un sprite de pinceau prédéfini #define TAILLE_MAXI_PINCEAU 127 // Taille maxi des pinceaux -#define NB_SPRITES_DRIVES 5 // Nombre de sprites de drives -#define LARGEUR_SPRITE_DRIVE 7 // Largeur d'un sprite de drive en pixels -#define HAUTEUR_SPRITE_DRIVE 7 // Hauteur d'un sprite de drive en pixels +#define NB_SPRITES_DRIVES 7 // Nombre de sprites de drives +#define LARGEUR_SPRITE_DRIVE 8 // Largeur d'un sprite de drive en pixels +#define HAUTEUR_SPRITE_DRIVE 8 // Hauteur d'un sprite de drive en pixels #define NB_SPRITES_PINCEAU 48 // Nombre de sprites de pinceau #define NB_TRAMES_PREDEFINIES 12 // Nombre de trames prédéfinies #define TAILLE_PILE_OPERATIONS 16 // Nombre maximum d'éléments utilisés par les opérations diff --git a/gfx2gui.gif b/gfx2gui.gif index 09cc16b43edc04aed05ca685da5c18b0f6d95bd6..4b328cb7ef7b50ecf202a7d6154b9d40871c41c8 100644 GIT binary patch delta 14202 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 QuIHMr>pCI>0|Ed5JHY!Q@&Et; delta 14162 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 =Pos_Y; Temp->Largeur =Largeur; Temp->Hauteur =Hauteur; - Temp->AfficheChoix =Affiche_choix; + Temp->Affiche_choix =Affiche_choix; Temp->Premier_choix=NULL; + Temp->Largeur_choix=Largeur_choix?Largeur_choix:Largeur; + Temp->Affiche_centre=Affiche_centre; + Temp->Affiche_fleche=Affiche_fleche; + Temp->Bouton_actif=Bouton_actif; Temp->Next=Fenetre_Liste_boutons_dropdown; Fenetre_Liste_boutons_dropdown=Temp; - Fenetre_Dessiner_bouton_normal(Pos_X,Pos_Y,Largeur,Hauteur,Libelle,-1,1); + Fenetre_Dessiner_bouton_normal(Pos_X,Pos_Y,Largeur,Hauteur,"",-1,1); + if (Libelle && Libelle[0]) + Print_dans_fenetre(Temp->Pos_X+2,Temp->Pos_Y+(Temp->Hauteur-7)/2,Libelle,CM_Noir,CM_Clair); + if (Affiche_fleche) + Fenetre_Afficher_sprite_drive(Temp->Pos_X+Temp->Largeur-10,Temp->Pos_Y+(Temp->Hauteur-7)/2,6); + return Temp; } @@ -1650,6 +1659,7 @@ void Ouvrir_popup(word Pos_X, word Pos_Y, word Largeur,word Hauteur) // Sauvegarde de ce que la fenêtre remplace Sauve_fond(&(Fond_fenetre[Fenetre-1]), Fenetre_Pos_X, Fenetre_Pos_Y, Largeur, Hauteur); +/* // Fenêtre grise Block(Fenetre_Pos_X+1*Menu_Facteur_X, Fenetre_Pos_Y+1*Menu_Facteur_Y, @@ -1657,7 +1667,7 @@ void Ouvrir_popup(word Pos_X, word Pos_Y, word Largeur,word Hauteur) // Cadre noir puis en relief Fenetre_Afficher_cadre_mono(0,0,Largeur,Hauteur,CM_Blanc); - +*/ if (Fenetre == 1) { Menu_visible_avant_fenetre=Menu_visible; @@ -2099,6 +2109,10 @@ short Fenetre_Dropdown_click(struct Fenetre_Bouton_dropdown *Bouton) short Ancien_Indice_selectionne; short Hauteur_boite; struct Bouton_dropdown_choix *Choix; + // Taille de l'ombre portée (en plus des dimensions normales) + #define OMBRE_DROITE 3 + #define OMBRE_BAS 4 + // Comptage des items pour calculer la taille Nb_choix=0; @@ -2106,24 +2120,44 @@ short Fenetre_Dropdown_click(struct Fenetre_Bouton_dropdown *Bouton) { Nb_choix++; } - Hauteur_boite=2+Nb_choix*8+1; + Hauteur_boite=3+Nb_choix*8+1; Effacer_curseur(); Fenetre_Enfoncer_bouton_normal(Bouton->Pos_X,Bouton->Pos_Y,Bouton->Largeur,Bouton->Hauteur); Ouvrir_popup( Fenetre_Pos_X+(Bouton->Pos_X)*Menu_Facteur_X, Fenetre_Pos_Y+(Bouton->Pos_Y+Bouton->Hauteur)*Menu_Facteur_Y, - Bouton->Largeur, - Hauteur_boite); - + Bouton->Largeur_choix+OMBRE_DROITE, + Hauteur_boite+OMBRE_BAS); + + // Dessin de la boite + + // Bord gauche + Block(Fenetre_Pos_X,Fenetre_Pos_Y,Menu_Facteur_X,Hauteur_boite*Menu_Facteur_Y,CM_Noir); + // Cadre fonce et blanc + Fenetre_Afficher_cadre_bombe(1,0,Bouton->Largeur_choix-1,Hauteur_boite); + // Ombre portée + if (OMBRE_BAS) + Block(Fenetre_Pos_X+OMBRE_DROITE*Menu_Facteur_X, + Fenetre_Pos_Y+Hauteur_boite*Menu_Facteur_Y, + Bouton->Largeur_choix*Menu_Facteur_X, + OMBRE_BAS*Menu_Facteur_Y, + CM_Noir); + if (OMBRE_DROITE) + Block(Fenetre_Pos_X+Bouton->Largeur_choix*Menu_Facteur_X, + Fenetre_Pos_Y+OMBRE_BAS*Menu_Facteur_Y, + OMBRE_DROITE*Menu_Facteur_X, + (Hauteur_boite-OMBRE_BAS)*Menu_Facteur_Y, + CM_Noir); + Indice_selectionne=-1; while (1) { Ancien_Indice_selectionne = Indice_selectionne; // Fenêtre grise - Block(Fenetre_Pos_X+1*Menu_Facteur_X, - Fenetre_Pos_Y+1*Menu_Facteur_Y, - (Bouton->Largeur-2)*Menu_Facteur_X,(Hauteur_boite-2)*Menu_Facteur_Y,CM_Clair); + Block(Fenetre_Pos_X+2*Menu_Facteur_X, + Fenetre_Pos_Y+2*Menu_Facteur_Y, + (Bouton->Largeur_choix-3)*Menu_Facteur_X,(Hauteur_boite-3)*Menu_Facteur_Y,CM_Clair); // Affichage des items for(Choix=Bouton->Premier_choix,Indice_choix=0; Choix!=NULL; Choix=Choix->Next,Indice_choix++) { @@ -2133,16 +2167,16 @@ short Fenetre_Dropdown_click(struct Fenetre_Bouton_dropdown *Bouton) { C1=CM_Blanc; C2=CM_Fonce; - Block(Fenetre_Pos_X+2*Menu_Facteur_X, - Fenetre_Pos_Y+((1+Indice_choix*8)*Menu_Facteur_Y), - (Bouton->Largeur-4)*Menu_Facteur_X,(8)*Menu_Facteur_Y,CM_Fonce); + Block(Fenetre_Pos_X+3*Menu_Facteur_X, + Fenetre_Pos_Y+((2+Indice_choix*8)*Menu_Facteur_Y), + (Bouton->Largeur_choix-5)*Menu_Facteur_X,(8)*Menu_Facteur_Y,CM_Fonce); } else { C1=CM_Noir; C2=CM_Clair; } - Print_dans_fenetre(3,1+Indice_choix*8,Choix->Libelle,C1,C2); + Print_dans_fenetre(3,2+Indice_choix*8,Choix->Libelle,C1,C2); } UpdateRect(Fenetre_Pos_X,Fenetre_Pos_Y,Fenetre_Largeur*Menu_Facteur_X,Fenetre_Hauteur*Menu_Facteur_Y); Afficher_curseur(); @@ -2153,8 +2187,8 @@ short Fenetre_Dropdown_click(struct Fenetre_Bouton_dropdown *Bouton) if(!Get_input()) Wait_VBL(); // Mise à jour du survol - Indice_selectionne=Fenetre_click_dans_zone(1,1,Bouton->Largeur-1,Hauteur_boite-1)? - (((Mouse_Y-Fenetre_Pos_Y)/Menu_Facteur_Y-1)>>3) : -1; + Indice_selectionne=Fenetre_click_dans_zone(2,2,Bouton->Largeur_choix-2,Hauteur_boite-1)? + (((Mouse_Y-Fenetre_Pos_Y)/Menu_Facteur_Y-2)>>3) : -1; } while (Mouse_K && Indice_selectionne==Ancien_Indice_selectionne); @@ -2175,11 +2209,51 @@ short Fenetre_Dropdown_click(struct Fenetre_Bouton_dropdown *Bouton) for(Choix=Bouton->Premier_choix; Indice_selectionne; Choix=Choix->Next,Indice_selectionne--) ; Fenetre_Attribut2=Choix->Numero; + if (Bouton->Affiche_choix) + { + // Mettre à jour automatiquement le libellé de la dropdown + Print_dans_fenetre(Bouton->Pos_X+2,Bouton->Pos_Y+(Bouton->Hauteur-7)/2,Choix->Libelle,CM_Noir,CM_Clair); + } return Bouton->Numero; } return 0; } +// --- Fonction de clic sur un bouton a peu près ordinaire: +// Attend que l'on relache le bouton, et renvoie le numero du bouton si on +// est resté dessus, 0 si on a annulé en sortant du bouton. +short Fenetre_bouton_normal_click(word Pos_X, word Pos_Y, word Largeur, word Hauteur, short Numero) +{ + while(1) + { + Effacer_curseur(); + Fenetre_Enfoncer_bouton_normal(Pos_X,Pos_Y,Largeur,Hauteur); + Afficher_curseur(); + while (Fenetre_click_dans_zone(Pos_X,Pos_Y,Pos_X+Largeur-1,Pos_Y+Hauteur-1)) + { + if(!Get_input()) + Wait_VBL(); + if (!Mouse_K) + { + Effacer_curseur(); + Fenetre_Desenfoncer_bouton_normal(Pos_X,Pos_Y,Largeur,Hauteur); + Afficher_curseur(); + return Numero; + } + } + Effacer_curseur(); + Fenetre_Desenfoncer_bouton_normal(Pos_X,Pos_Y,Largeur,Hauteur); + Afficher_curseur(); + while (!(Fenetre_click_dans_zone(Pos_X,Pos_Y,Pos_X+Largeur-1,Pos_Y+Hauteur-1))) + { + if(!Get_input()) + Wait_VBL(); + if (!Mouse_K) + return 0; + } + } +} + // --- Renvoie le numéro du bouton clicke (-1:hors de la fenêtre, 0:aucun) --- short Fenetre_Numero_bouton_clicke(void) { @@ -2210,34 +2284,7 @@ short Fenetre_Numero_bouton_clicke(void) Afficher_curseur(); return Temp1->Numero; } - while(1) - { - Effacer_curseur(); - Fenetre_Enfoncer_bouton_normal(Temp1->Pos_X,Temp1->Pos_Y,Temp1->Largeur,Temp1->Hauteur); - Afficher_curseur(); - while (Fenetre_click_dans_zone(Temp1->Pos_X,Temp1->Pos_Y,Temp1->Pos_X+Temp1->Largeur-1,Temp1->Pos_Y+Temp1->Hauteur-1)) - { - if(!Get_input()) - Wait_VBL(); - if (!Mouse_K) - { - Effacer_curseur(); - Fenetre_Desenfoncer_bouton_normal(Temp1->Pos_X,Temp1->Pos_Y,Temp1->Largeur,Temp1->Hauteur); - Afficher_curseur(); - return Temp1->Numero; - } - } - Effacer_curseur(); - Fenetre_Desenfoncer_bouton_normal(Temp1->Pos_X,Temp1->Pos_Y,Temp1->Largeur,Temp1->Hauteur); - Afficher_curseur(); - while (!(Fenetre_click_dans_zone(Temp1->Pos_X,Temp1->Pos_Y,Temp1->Pos_X+Temp1->Largeur-1,Temp1->Pos_Y+Temp1->Hauteur-1))) - { - if(!Get_input()) - Wait_VBL(); - if (!Mouse_K) - return 0; - } - } + return Fenetre_bouton_normal_click(Temp1->Pos_X,Temp1->Pos_Y,Temp1->Largeur,Temp1->Hauteur,Temp1->Numero); } } @@ -2369,7 +2416,12 @@ short Fenetre_Numero_bouton_clicke(void) for (Temp5=Fenetre_Liste_boutons_dropdown; Temp5; Temp5=Temp5->Next) { if (Fenetre_click_dans_zone(Temp5->Pos_X,Temp5->Pos_Y,Temp5->Pos_X+Temp5->Largeur-1,Temp5->Pos_Y+Temp5->Hauteur-1)) - return Fenetre_Dropdown_click(Temp5); + { + if (Mouse_K & Temp5->Bouton_actif) + return Fenetre_Dropdown_click(Temp5); + else + return Fenetre_bouton_normal_click(Temp5->Pos_X,Temp5->Pos_Y,Temp5->Largeur,Temp5->Hauteur,Temp5->Numero); + } } return 0; diff --git a/moteur.h b/moteur.h index e97a2114..a63d8548 100644 --- a/moteur.h +++ b/moteur.h @@ -65,7 +65,7 @@ struct Fenetre_Bouton_scroller * Fenetre_Definir_bouton_scroller(word Pos_X, wor word Position_initiale); struct Fenetre_Bouton_special * Fenetre_Definir_bouton_special(word Pos_X,word Pos_Y,word Largeur,word Hauteur); struct Fenetre_Bouton_special * Fenetre_Definir_bouton_saisie(word Pos_X,word Pos_Y,word Largeur_en_caracteres); -struct Fenetre_Bouton_dropdown * Fenetre_Definir_bouton_dropdown(word Pos_X,word Pos_Y,word Largeur,word Hauteur,char *Libelle,byte Affiche_choix); +struct Fenetre_Bouton_dropdown * Fenetre_Definir_bouton_dropdown(word Pos_X,word Pos_Y,word Largeur,word Hauteur,word Largeur_choix,char *Libelle,byte Affiche_choix,byte Affiche_centre,byte Affiche_fleche,byte Bouton_actif); void Fenetre_Dropdown_choix(struct Fenetre_Bouton_dropdown * Dropdown, word Numero, const char *Libelle); byte Fenetre_click_dans_zone(short Debut_X,short Debut_Y,short Fin_X,short Fin_Y); diff --git a/struct.h b/struct.h index b952b003..25914b4d 100644 --- a/struct.h +++ b/struct.h @@ -123,7 +123,11 @@ struct Fenetre_Bouton_dropdown word Pos_Y; word Largeur; word Hauteur; - byte AfficheChoix; + byte Affiche_choix; // The selected item's label is printed in the dropdown area + byte Affiche_centre; // Center labels (otherwise, align left) + byte Affiche_fleche; // Display a "down" arrow box in top right + byte Bouton_actif; // Mouse button: A_GAUCHE || A_DROITE || (A_GAUCHE|A_DROITE) + word Largeur_choix; // 0 for "same as control" struct Bouton_dropdown_choix * Premier_choix; struct Fenetre_Bouton_dropdown * Next; }; diff --git a/tables_aide.h b/tables_aide.h index 89d3e917..83b6e157 100644 --- a/tables_aide.h +++ b/tables_aide.h @@ -271,6 +271,7 @@ static const T_TABLEAIDE TableAideCredits[] = AIDE_TEXTE("") AIDE_TEXTE(" GrafX2 logo by Made (www.m4de.com)") // AIDE_TEXTE(" Icons and fonts by X-Man ") // + AIDE_TEXTE(" Additional graphics by iLKke") AIDE_TEXTE("") AIDE_TEXTE(" Pixelled all the graphics") // AIDE_TEXTE("") @@ -314,7 +315,7 @@ static const T_TABLEAIDE TableAideCredits[] = AIDE_TEXTE(" iLKke keito kusma ") AIDE_TEXTE(" Lord Graga mind MooZ ") AIDE_TEXTE(" richienyhus tempest Timo Kurrpa") - AIDE_TEXTE(" titus^Rab Tobé") + AIDE_TEXTE(" titus^Rab Tobé 00ai99") AIDE_TEXTE("") AIDE_TEXTE(" Posted the annoying bugreports") AIDE_TEXTE("")