Text: tweaked and debugged the screen, Up/Down/Home/End allow easily changing the font

git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@326 416bcca6-2ee7-4201-b75f-2eb2f807beb1
This commit is contained in:
Yves Rizoud 2008-11-05 23:22:33 +00:00
parent 3422eeff46
commit 29dae934f1

View File

@ -5738,9 +5738,10 @@ void Dessiner_selecteur_fontes(short X, short Y, short Debut_liste, short Positi
void Bouton_Texte()
{
static char Chaine[256]="";
static int Taille_police=16;
static int AntiAlias=0;
static short Debut_liste=0, Position_curseur=0; // Selecteur de fonte
static int Taille_police=32;
static int AntiAlias=1;
static short Debut_liste=0; // Indice de le premiere fonte dans le selector
static short Position_curseur=0; // Indice de la ligne active dans le selector
byte * Nouvelle_Brosse=NULL;
int Nouvelle_Largeur;
@ -5751,6 +5752,7 @@ void Bouton_Texte()
struct Fenetre_Bouton_special * Bouton_taille_texte;
struct Fenetre_Bouton_special * Bouton_texte;
struct Fenetre_Bouton_special * Bouton_preview;
struct Fenetre_Bouton_scroller * Scroller_de_fontes;
byte A_redessiner=1;
byte A_previsionner=1;
short Temp;
@ -5771,7 +5773,7 @@ void Bouton_Texte()
// Scroller des fontes
Fenetre_Definir_bouton_scroller(94,33,NB_FONTES*8,Fonte_nombre,NB_FONTES,Debut_liste); // 4
Scroller_de_fontes=Fenetre_Liste_boutons_scroller;
// Liste des fontes disponibles
Fenetre_Definir_bouton_special(111,32,168,NB_FONTES*8); // 5
Fenetre_Afficher_cadre_creux(110, 31, 170, NB_FONTES*8+4);
@ -5855,17 +5857,74 @@ void Bouton_Texte()
Bouton_clicke=Fenetre_Bouton_clicke();
if (Bouton_clicke==0)
{
if (Touche==SDLK_UP && Debut_liste>1)
if (Touche==SDLK_UP && (Position_curseur+Debut_liste)>0)
{
Touche=0;
Bouton_clicke=4;
Fenetre_Attribut2=Debut_liste-1;
Effacer_curseur();
Position_curseur--;
if (Position_curseur<0)
{
Debut_liste=Debut_liste+Position_curseur;
Position_curseur=0;
// Mise à jour du scroller
Scroller_de_fontes->Position=Debut_liste;
Fenetre_Dessiner_jauge(Scroller_de_fontes);
}
A_redessiner=1;
A_previsionner=1;
}
if (Touche==SDLK_DOWN && Debut_liste+1+NB_FONTES<=Fonte_nombre)
if (Touche==SDLK_DOWN && (Position_curseur+Debut_liste)<(Fonte_nombre-1))
{
Touche=0;
Bouton_clicke=4;
Fenetre_Attribut2=Debut_liste+1;
Effacer_curseur();
Position_curseur++;
if (Position_curseur>(NB_FONTES-1))
{
Debut_liste=Debut_liste+Position_curseur-(NB_FONTES-1);
Position_curseur=(NB_FONTES-1);
// Mise à jour du scroller
Scroller_de_fontes->Position=Debut_liste;
Fenetre_Dessiner_jauge(Scroller_de_fontes);
}
A_redessiner=1;
A_previsionner=1;
}
if (Touche==SDLK_HOME && (Position_curseur!=0 || Debut_liste!=0))
{
Touche=0;
Effacer_curseur();
Position_curseur=0;
Debut_liste=0;
// Mise à jour du scroller
Scroller_de_fontes->Position=Debut_liste;
Fenetre_Dessiner_jauge(Scroller_de_fontes);
A_redessiner=1;
A_previsionner=1;
}
if (Touche==SDLK_END && (Position_curseur+Debut_liste)<(Fonte_nombre-1))
{
Touche=0;
Effacer_curseur();
/*
if (Position_curseur<(NB_FONTES-1))
Position_curseur=(NB_FONTES-1);
else
{
Position_curseur+=NB_FONTES;
if (Position_curseur+Debut_liste >= (Fonte_nombre-1))
Position_curseur = Fonte_nombre-1-Debut_liste;
}*/
Position_curseur=(Fonte_nombre-1)-Debut_liste;
if (Position_curseur>(NB_FONTES-1))
{
Debut_liste=Debut_liste+Position_curseur-(NB_FONTES-1);
Position_curseur=(NB_FONTES-1);
// Mise à jour du scroller
Scroller_de_fontes->Position=Debut_liste;
Fenetre_Dessiner_jauge(Scroller_de_fontes);
}
A_redessiner=1;
A_previsionner=1;
}
}
switch(Bouton_clicke)
@ -5953,22 +6012,15 @@ void Bouton_Texte()
case 11: // OK
if (Chaine[0]=='\0')
{
// Pas de texte saisie: on fait seulement le ménage et on sort.
free(Nouvelle_Brosse);
Nouvelle_Brosse=NULL;
}
if (!Nouvelle_Brosse)
{
// Pas de texte saisi, ou echec de rendu.
// Si echec de rendu
Fermer_fenetre();
Desenclencher_bouton(BOUTON_TEXTE);
Afficher_curseur();
Erreur(0);
return;
}
Effacer_curseur();
if (Brosse) free(Brosse);
Brosse=Nouvelle_Brosse;
@ -5976,10 +6028,13 @@ void Bouton_Texte()
Brosse_Hauteur=Nouvelle_Hauteur;
Brosse_Decalage_X=Brosse_Largeur>>1;
Brosse_Decalage_Y=Brosse_Hauteur>>1;
// Fermeture
Fermer_fenetre();
Desenclencher_bouton(BOUTON_TEXTE);
// On passe en brosse:
Afficher_curseur();
if (AntiAlias || !TrueType_fonte(Position_curseur+Debut_liste))
Changer_la_forme_du_pinceau(FORME_PINCEAU_BROSSE_COULEUR);
else
@ -5992,6 +6047,7 @@ void Bouton_Texte()
while (Operation_en_cours!=OPERATION_DESSIN_DISCONTINU)
Enclencher_bouton(BOUTON_DESSIN,A_DROITE);
}
//Afficher_curseur();
return;
case 12: // Cancel