Text: Implemented Bold and Italic, redid the screen layout.
GUI: Generalized the system that right-clicking an input area empties it while entering edit mode, since it was indeed a very good idea, it saves a lot of time once you do it intuitively. (Esc still cancels and restores) Added a bitmap font, GrafX2_Classic.gif. Helpful for prototyping GUI screens. git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@353 416bcca6-2ee7-4201-b75f-2eb2f807beb1
This commit is contained in:
parent
3c06848a8f
commit
54ca84e094
94
boutons.c
94
boutons.c
@ -2720,12 +2720,6 @@ byte Bouton_Load_ou_Save(byte Load, byte Image)
|
|||||||
// Save the filename
|
// Save the filename
|
||||||
strcpy(Nom_fichier_Save, Principal_Nom_fichier);
|
strcpy(Nom_fichier_Save, Principal_Nom_fichier);
|
||||||
|
|
||||||
// Erase the content when the right mouse button is used.
|
|
||||||
|
|
||||||
if (Mouse_K==2)
|
|
||||||
{
|
|
||||||
Principal_Nom_fichier[0] = '\0';
|
|
||||||
}
|
|
||||||
if (Readline(13+9*8,90,Principal_Nom_fichier,27,2))
|
if (Readline(13+9*8,90,Principal_Nom_fichier,27,2))
|
||||||
{
|
{
|
||||||
// On regarde s'il faut rajouter une extension. C'est-à-dire s'il
|
// On regarde s'il faut rajouter une extension. C'est-à-dire s'il
|
||||||
@ -5818,6 +5812,8 @@ void Bouton_Texte()
|
|||||||
static int AntiAlias=1;
|
static int AntiAlias=1;
|
||||||
static short Debut_liste=0; // Indice de le premiere fonte dans le selector
|
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
|
static short Position_curseur=0; // Indice de la ligne active dans le selector
|
||||||
|
static short Style_Bold=0;
|
||||||
|
static short Style_Italic=0;
|
||||||
|
|
||||||
byte * Nouvelle_Brosse=NULL;
|
byte * Nouvelle_Brosse=NULL;
|
||||||
int Nouvelle_Largeur;
|
int Nouvelle_Largeur;
|
||||||
@ -5836,40 +5832,43 @@ void Bouton_Texte()
|
|||||||
Ouvrir_fenetre(288,180,"Text");
|
Ouvrir_fenetre(288,180,"Text");
|
||||||
|
|
||||||
// Texte saisi
|
// Texte saisi
|
||||||
Print_dans_fenetre(6,19,"Txt:",CM_Fonce,CM_Clair);
|
Print_dans_fenetre(6,20,"Text:",CM_Fonce,CM_Clair);
|
||||||
Fenetre_Definir_bouton_saisie(41,18,30); // 1
|
Fenetre_Definir_bouton_saisie(48,18,29); // 1
|
||||||
Bouton_texte=Fenetre_Liste_boutons_special;
|
Bouton_texte=Fenetre_Liste_boutons_special;
|
||||||
|
|
||||||
// Bouton 'Clear Text'
|
// TrueType options
|
||||||
Fenetre_Definir_bouton_normal(9,33,80,14,"Clear Txt",0,1,SDLK_LAST); // 2
|
Fenetre_Afficher_cadre_creux(182,34,100,68);
|
||||||
|
Print_dans_fenetre(199,31,"TrueType", CM_Fonce, CM_Clair);
|
||||||
// AA
|
// AA
|
||||||
Fenetre_Definir_bouton_normal(9,51,80,14,"",0,1,SDLK_LAST); // 3
|
Fenetre_Definir_bouton_normal(188,58,13,11,AntiAlias?"X":" ",0,1,SDLK_a); // 2
|
||||||
Print_dans_fenetre(13,54,AntiAlias?" No AA ":"AntiAlias", CM_Noir, CM_Clair);
|
Print_dans_fenetre(206,60,"AntiAlias", CM_Fonce, CM_Clair);
|
||||||
|
// Bold
|
||||||
|
Fenetre_Definir_bouton_normal(188,72,13,11,Style_Bold?"X":" ",0,1,SDLK_b); // 3
|
||||||
|
Print_dans_fenetre(206,75,"Bold", CM_Fonce, CM_Clair);
|
||||||
|
// Italic
|
||||||
|
Fenetre_Definir_bouton_normal(188,86,13,11,Style_Italic?"X":" ",0,1,SDLK_i); // 4
|
||||||
|
Print_dans_fenetre(206,89,"Italic", CM_Fonce, CM_Clair);
|
||||||
|
|
||||||
// Scroller des fontes
|
// Scroller des fontes
|
||||||
Fenetre_Definir_bouton_scroller(94,33,NB_FONTES*8,Fonte_nombre,NB_FONTES,Debut_liste); // 4
|
Fenetre_Definir_bouton_scroller(165,35,NB_FONTES*8,Fonte_nombre,NB_FONTES,Debut_liste); // 5
|
||||||
Scroller_de_fontes=Fenetre_Liste_boutons_scroller;
|
Scroller_de_fontes=Fenetre_Liste_boutons_scroller;
|
||||||
// Liste des fontes disponibles
|
// Liste des fontes disponibles
|
||||||
Fenetre_Definir_bouton_special(111,32,168,NB_FONTES*8); // 5
|
Fenetre_Definir_bouton_special(8,34,152,NB_FONTES*8); // 6
|
||||||
Fenetre_Afficher_cadre_creux(110, 31, 170, NB_FONTES*8+4);
|
Fenetre_Afficher_cadre_creux(7, 33, 154, NB_FONTES*8+4);
|
||||||
|
|
||||||
// Taille texte
|
// Taille texte
|
||||||
Print_dans_fenetre(32,71,"Size:",CM_Fonce,CM_Clair);
|
Fenetre_Definir_bouton_saisie(220,43,3); // 7
|
||||||
Fenetre_Definir_bouton_saisie(35,84,3); // 6
|
|
||||||
Bouton_taille_texte=Fenetre_Liste_boutons_special;
|
Bouton_taille_texte=Fenetre_Liste_boutons_special;
|
||||||
Fenetre_Definir_bouton_normal(18,84,14,11,"-",0,1,SDLK_LAST); // 7
|
Fenetre_Definir_bouton_normal(202,43,13,11,"-",0,1,SDLK_LAST); // 8
|
||||||
Fenetre_Definir_bouton_normal(64,84,14,11,"+",0,1,SDLK_LAST); // 8
|
Fenetre_Definir_bouton_normal(251,43,13,11,"+",0,1,SDLK_LAST); // 9
|
||||||
|
|
||||||
// Preview
|
// Preview
|
||||||
Fenetre_Definir_bouton_special(7,105,276,50); // 9
|
Fenetre_Definir_bouton_special(8,106,273,50); // 10
|
||||||
Bouton_preview=Fenetre_Liste_boutons_special;
|
Bouton_preview=Fenetre_Liste_boutons_special;
|
||||||
Fenetre_Afficher_cadre_creux(6, 104, 278, 52);
|
Fenetre_Afficher_cadre_creux(7, 105, 275, 52);
|
||||||
|
|
||||||
Fenetre_Definir_bouton_special(0,0,1,1); // 10 ???
|
Fenetre_Definir_bouton_normal(8,160,40,14,"OK",0,1,SDLK_RETURN); // 11
|
||||||
|
Fenetre_Definir_bouton_normal(54,160,60,14,"Cancel",0,1,SDLK_ESCAPE); // 12
|
||||||
Fenetre_Definir_bouton_normal(7,161,40,14,"OK",0,1,SDLK_RETURN); // 11
|
|
||||||
Fenetre_Definir_bouton_normal(53,161,60,14,"Cancel",0,1,SDLK_ESCAPE); // 12
|
|
||||||
Display_Window(288,180);
|
Display_Window(288,180);
|
||||||
|
|
||||||
// Chaine texte
|
// Chaine texte
|
||||||
@ -5886,7 +5885,7 @@ void Bouton_Texte()
|
|||||||
Num2str(Taille_police,Buffer_taille,3);
|
Num2str(Taille_police,Buffer_taille,3);
|
||||||
Fenetre_Contenu_bouton_saisie(Bouton_taille_texte,Buffer_taille);
|
Fenetre_Contenu_bouton_saisie(Bouton_taille_texte,Buffer_taille);
|
||||||
// Selecteur de fonte
|
// Selecteur de fonte
|
||||||
Dessiner_selecteur_fontes(111, 33, Debut_liste, Position_curseur, NB_FONTES);
|
Dessiner_selecteur_fontes(8, 35, Debut_liste, Position_curseur, NB_FONTES);
|
||||||
}
|
}
|
||||||
if (A_previsionner)
|
if (A_previsionner)
|
||||||
{
|
{
|
||||||
@ -5903,7 +5902,7 @@ void Bouton_Texte()
|
|||||||
Bouton_preview->Largeur*Menu_Facteur_X,
|
Bouton_preview->Largeur*Menu_Facteur_X,
|
||||||
Bouton_preview->Hauteur*Menu_Facteur_Y,
|
Bouton_preview->Hauteur*Menu_Facteur_Y,
|
||||||
CM_Clair);
|
CM_Clair);
|
||||||
Nouvelle_Brosse = Rendu_Texte(Chaine_preview, Position_curseur+Debut_liste, Taille_police, AntiAlias, &Nouvelle_Largeur, &Nouvelle_Hauteur);
|
Nouvelle_Brosse = Rendu_Texte(Chaine_preview, Position_curseur+Debut_liste, Taille_police, AntiAlias, Style_Bold, Style_Italic, &Nouvelle_Largeur, &Nouvelle_Hauteur);
|
||||||
if (Nouvelle_Brosse)
|
if (Nouvelle_Brosse)
|
||||||
{
|
{
|
||||||
Affiche_brosse_SDL(
|
Affiche_brosse_SDL(
|
||||||
@ -6048,25 +6047,32 @@ void Bouton_Texte()
|
|||||||
{
|
{
|
||||||
case 1: // Texte saisi
|
case 1: // Texte saisi
|
||||||
Effacer_curseur();
|
Effacer_curseur();
|
||||||
Readline_ex(43,20,Chaine,30,250,0);
|
Readline_ex(50,20,Chaine,29,250,0);
|
||||||
A_previsionner=1;
|
A_previsionner=1;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 2: // Clear
|
case 2: // AA
|
||||||
Chaine[0]='\0';
|
|
||||||
Effacer_curseur();
|
|
||||||
Fenetre_Effacer_bouton_saisie(Bouton_texte);
|
|
||||||
A_previsionner=1;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 3: // AA
|
|
||||||
AntiAlias = (AntiAlias==0);
|
AntiAlias = (AntiAlias==0);
|
||||||
Effacer_curseur();
|
Effacer_curseur();
|
||||||
Print_dans_fenetre(13,54,AntiAlias?" No AA ":"AntiAlias", CM_Noir, CM_Clair);
|
Print_dans_fenetre(191,60,AntiAlias?"X":" ", CM_Noir, CM_Clair);
|
||||||
A_previsionner=1;
|
A_previsionner=1;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 4: // Scroller des fontes
|
case 3: // Bold
|
||||||
|
Style_Bold = (Style_Bold==0);
|
||||||
|
Effacer_curseur();
|
||||||
|
Print_dans_fenetre(191,74,Style_Bold?"X":" ", CM_Noir, CM_Clair);
|
||||||
|
A_previsionner=1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 4: // Italic
|
||||||
|
Style_Italic = (Style_Italic==0);
|
||||||
|
Effacer_curseur();
|
||||||
|
Print_dans_fenetre(191,88,Style_Italic?"X":" ", CM_Noir, CM_Clair);
|
||||||
|
A_previsionner=1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 5: // Scroller des fontes
|
||||||
if (Debut_liste!=Fenetre_Attribut2)
|
if (Debut_liste!=Fenetre_Attribut2)
|
||||||
{
|
{
|
||||||
Position_curseur+=Debut_liste;
|
Position_curseur+=Debut_liste;
|
||||||
@ -6078,7 +6084,7 @@ void Bouton_Texte()
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 5: // Selecteur de fonte
|
case 6: // Selecteur de fonte
|
||||||
Temp=(((Mouse_Y-Fenetre_Pos_Y)/Menu_Facteur_Y)-32)>>3;
|
Temp=(((Mouse_Y-Fenetre_Pos_Y)/Menu_Facteur_Y)-32)>>3;
|
||||||
if (Temp!=Position_curseur && Temp < Fonte_nombre)
|
if (Temp!=Position_curseur && Temp < Fonte_nombre)
|
||||||
{
|
{
|
||||||
@ -6090,9 +6096,9 @@ void Bouton_Texte()
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 6: // Taille du texte (nombre)
|
case 7: // Taille du texte (nombre)
|
||||||
Effacer_curseur();
|
Effacer_curseur();
|
||||||
Readline(37,86,Buffer_taille,3,1);
|
Readline(222,45,Buffer_taille,3,1);
|
||||||
Taille_police=atoi(Buffer_taille);
|
Taille_police=atoi(Buffer_taille);
|
||||||
// On corrige les dimensions
|
// On corrige les dimensions
|
||||||
if (Taille_police < 1)
|
if (Taille_police < 1)
|
||||||
@ -6107,7 +6113,7 @@ void Bouton_Texte()
|
|||||||
A_previsionner=1;
|
A_previsionner=1;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 7: // Taille -
|
case 8: // Taille -
|
||||||
if (Taille_police > 1)
|
if (Taille_police > 1)
|
||||||
{
|
{
|
||||||
Taille_police--;
|
Taille_police--;
|
||||||
@ -6117,7 +6123,7 @@ void Bouton_Texte()
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 8: // Taille +
|
case 9: // Taille +
|
||||||
if (Taille_police < 255)
|
if (Taille_police < 255)
|
||||||
{
|
{
|
||||||
Taille_police++;
|
Taille_police++;
|
||||||
|
|||||||
BIN
fonts/GrafX2_Classic.gif
Normal file
BIN
fonts/GrafX2_Classic.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.7 KiB |
@ -153,9 +153,11 @@ byte Readline_ex(word Pos_X,word Pos_Y,char * Chaine,byte Taille_affichee,byte T
|
|||||||
// Mise à jour des variables se rapportant à la chaîne en fonction de la chaîne initiale
|
// Mise à jour des variables se rapportant à la chaîne en fonction de la chaîne initiale
|
||||||
strcpy(Chaine_initiale,Chaine);
|
strcpy(Chaine_initiale,Chaine);
|
||||||
|
|
||||||
if (Type_saisie==1)
|
// Si on a commencé à editer par un clic-droit, on vide la chaine.
|
||||||
|
if (Mouse_K==A_DROITE)
|
||||||
|
Chaine[0]='\0';
|
||||||
|
else if (Type_saisie==1)
|
||||||
snprintf(Chaine,10,"%d",atoi(Chaine)); // On tasse la chaine à gauche
|
snprintf(Chaine,10,"%d",atoi(Chaine)); // On tasse la chaine à gauche
|
||||||
// Chaine[0]='\0'; // On efface la chaîne si c'est valeur numérique
|
|
||||||
|
|
||||||
|
|
||||||
Taille=strlen(Chaine);
|
Taille=strlen(Chaine);
|
||||||
|
|||||||
26
texte.c
26
texte.c
@ -155,15 +155,15 @@ void Ajout_fonte(const char *Nom)
|
|||||||
Fonte->Nom = (char *)malloc(Taille);
|
Fonte->Nom = (char *)malloc(Taille);
|
||||||
strcpy(Fonte->Nom, Nom);
|
strcpy(Fonte->Nom, Nom);
|
||||||
// Libelle
|
// Libelle
|
||||||
strcpy(Fonte->Libelle, " ");
|
strcpy(Fonte->Libelle, " ");
|
||||||
if (Fonte->EstTrueType)
|
if (Fonte->EstTrueType)
|
||||||
Fonte->Libelle[19]=Fonte->Libelle[20]='T'; // Logo TT
|
Fonte->Libelle[17]=Fonte->Libelle[18]='T'; // Logo TT
|
||||||
Nom_fonte=Position_dernier_slash(Fonte->Nom);
|
Nom_fonte=Position_dernier_slash(Fonte->Nom);
|
||||||
if (Nom_fonte==NULL)
|
if (Nom_fonte==NULL)
|
||||||
Nom_fonte=Fonte->Nom;
|
Nom_fonte=Fonte->Nom;
|
||||||
else
|
else
|
||||||
Nom_fonte++;
|
Nom_fonte++;
|
||||||
for (Indice=0; Indice < 19 && Nom_fonte[Indice]!='\0' && Nom_fonte[Indice]!='.'; Indice++)
|
for (Indice=0; Indice < 17 && Nom_fonte[Indice]!='\0' && Nom_fonte[Indice]!='.'; Indice++)
|
||||||
Fonte->Libelle[Indice]=Nom_fonte[Indice];
|
Fonte->Libelle[Indice]=Nom_fonte[Indice];
|
||||||
|
|
||||||
// Gestion Liste
|
// Gestion Liste
|
||||||
@ -228,13 +228,13 @@ char * Nom_fonte(int Indice)
|
|||||||
|
|
||||||
|
|
||||||
// Trouve le libellé d'affichage d'une fonte par son numéro
|
// Trouve le libellé d'affichage d'une fonte par son numéro
|
||||||
// Renvoie un pointeur sur un buffer statique de 22 caracteres.
|
// Renvoie un pointeur sur un buffer statique de 20 caracteres.
|
||||||
char * Libelle_fonte(int Indice)
|
char * Libelle_fonte(int Indice)
|
||||||
{
|
{
|
||||||
T_FONTE *Fonte;
|
T_FONTE *Fonte;
|
||||||
static char Libelle[22];
|
static char Libelle[20];
|
||||||
|
|
||||||
strcpy(Libelle, " ");
|
strcpy(Libelle, " ");
|
||||||
|
|
||||||
// Recherche de la fonte
|
// Recherche de la fonte
|
||||||
Fonte = Liste_fontes_debut;
|
Fonte = Liste_fontes_debut;
|
||||||
@ -352,13 +352,14 @@ int Support_TrueType()
|
|||||||
|
|
||||||
|
|
||||||
#ifndef NOTTF
|
#ifndef NOTTF
|
||||||
byte *Rendu_Texte_TTF(const char *Chaine, int Numero_fonte, int Taille, int AntiAlias, int *Largeur, int *Hauteur)
|
byte *Rendu_Texte_TTF(const char *Chaine, int Numero_fonte, int Taille, int AntiAlias, int Bold, int Italic, int *Largeur, int *Hauteur)
|
||||||
{
|
{
|
||||||
TTF_Font *Fonte;
|
TTF_Font *Fonte;
|
||||||
SDL_Surface * TexteColore;
|
SDL_Surface * TexteColore;
|
||||||
SDL_Surface * Texte8Bit;
|
SDL_Surface * Texte8Bit;
|
||||||
byte * BrosseRetour;
|
byte * BrosseRetour;
|
||||||
int Indice;
|
int Indice;
|
||||||
|
int Style;
|
||||||
|
|
||||||
SDL_Color Couleur_Avant;
|
SDL_Color Couleur_Avant;
|
||||||
SDL_Color Couleur_Arriere;
|
SDL_Color Couleur_Arriere;
|
||||||
@ -369,6 +370,13 @@ byte *Rendu_Texte_TTF(const char *Chaine, int Numero_fonte, int Taille, int Anti
|
|||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
// Style
|
||||||
|
Style=0;
|
||||||
|
if (Italic)
|
||||||
|
Style|=TTF_STYLE_ITALIC;
|
||||||
|
if (Bold)
|
||||||
|
Style|=TTF_STYLE_BOLD;
|
||||||
|
TTF_SetFontStyle(Fonte, Style);
|
||||||
// Couleurs
|
// Couleurs
|
||||||
if (AntiAlias)
|
if (AntiAlias)
|
||||||
{
|
{
|
||||||
@ -477,7 +485,7 @@ byte *Rendu_Texte_SFont(const char *Chaine, int Numero_fonte, int *Largeur, int
|
|||||||
// Crée une brosse à partir des paramètres de texte demandés.
|
// Crée une brosse à partir des paramètres de texte demandés.
|
||||||
// Si cela réussit, la fonction place les dimensions dans Largeur et Hauteur,
|
// Si cela réussit, la fonction place les dimensions dans Largeur et Hauteur,
|
||||||
// et retourne l'adresse du bloc d'octets.
|
// et retourne l'adresse du bloc d'octets.
|
||||||
byte *Rendu_Texte(const char *Chaine, int Numero_fonte, int Taille, int AntiAlias, int *Largeur, int *Hauteur)
|
byte *Rendu_Texte(const char *Chaine, int Numero_fonte, int Taille, int AntiAlias, int Bold, int Italic, int *Largeur, int *Hauteur)
|
||||||
{
|
{
|
||||||
T_FONTE *Fonte = Liste_fontes_debut;
|
T_FONTE *Fonte = Liste_fontes_debut;
|
||||||
int Indice=Numero_fonte;
|
int Indice=Numero_fonte;
|
||||||
@ -491,7 +499,7 @@ byte *Rendu_Texte(const char *Chaine, int Numero_fonte, int Taille, int AntiAlia
|
|||||||
if (Fonte->EstTrueType)
|
if (Fonte->EstTrueType)
|
||||||
{
|
{
|
||||||
#ifndef NOTTF
|
#ifndef NOTTF
|
||||||
return Rendu_Texte_TTF(Chaine, Numero_fonte, Taille, AntiAlias, Largeur, Hauteur);
|
return Rendu_Texte_TTF(Chaine, Numero_fonte, Taille, AntiAlias, Bold, Italic, Largeur, Hauteur);
|
||||||
#else
|
#else
|
||||||
return NULL;
|
return NULL;
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
2
texte.h
2
texte.h
@ -27,7 +27,7 @@ int Support_TrueType(void);
|
|||||||
// Ajout d'une fonte à la liste.
|
// Ajout d'une fonte à la liste.
|
||||||
void Ajout_fonte(char *Nom);
|
void Ajout_fonte(char *Nom);
|
||||||
// Crée une brosse à partir des paramètres de texte demandés.
|
// Crée une brosse à partir des paramètres de texte demandés.
|
||||||
byte *Rendu_Texte(const char *Chaine, int Numero_fonte, int Taille, int AntiAlias, int *Largeur, int *Hauteur);
|
byte *Rendu_Texte(const char *Chaine, int Numero_fonte, int Taille, int AntiAlias, int Bold, int Italic, int *Largeur, int *Hauteur);
|
||||||
// Trouve le libellé d'affichage d'une fonte par son numéro
|
// Trouve le libellé d'affichage d'une fonte par son numéro
|
||||||
char * Libelle_fonte(int Indice);
|
char * Libelle_fonte(int Indice);
|
||||||
// Trouve le nom d'une fonte par son numéro
|
// Trouve le nom d'une fonte par son numéro
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user