π
<-
Chat plein-écran
[^]

Utiliser une police personnalisée avec nSDL

C, C++, ASM...

Utiliser une police personnalisée avec nSDL

Message non lude Lepzulnag » 22 Avr 2014, 22:38

pierrotdu18 a écrit:Bon, au lieu de recréer un topic, je pose ma question ici mais si cela ne vous vas pas je déplacerai ;)

Je me suis donc mis à nSDL, et j'aimerais afficher du texte. En fait, ce n'est pas vraiment mon problème, le soucis est que je trouve la liste de fonts un peu courte...

Je voudrais donc savoir s'il était possible de charger une police externe, et aussi, s'il était possible de changer la taille de la police, car je ne vois pas cette possibilité apparaître dans la documentation (enfin... comme il n'y en a pas, ( :@ ), la liste des fonctions (ici)).

Merci à vous! ;)


Il ne faut pas avoir peur de créer de nouveaux topics, c'est le bordel sinon :p

Oui, c'est possible d'utiliser ses polices personnalisées, il suffit de s'inspirer du code de nSDL_LoadFont().

Je te donne les deux fichiers qui te seront utiles (et que j'ai trouvés sur le gitHub de Hoffa). J'ai personnellement commenté SDL_tinspirefonts.c afin que tu t'y retrouves un peu. Normalement les indications devraient te suffire, si ce n'est pas le cas où si tu as un autre problème, dis-le.

SDL_tinspirefonts.c
(4.11 Kio) Téléchargé 152 fois

SDL_tinspirefonts.h
(81.66 Kio) Téléchargé 132 fois
Avatar de l’utilisateur
Lepzulnag
Niveau 9: IC (Compteur Infatigable)
Niveau 9: IC (Compteur Infatigable)
Prochain niv.: 78.5%
 
Messages: 151
Inscription: 02 Aoû 2012, 21:15
Localisation: Bretagne
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile
Classe: M2 Maths

Re: Utiliser une police personnalisée avec nSDL

Message non lude pierrotdu18 » 22 Avr 2014, 23:45

Merci beaucoup beaucoup, c'est très clair :)
Mais comment pourrais-je convertir une police en tableau de 256 octets?
Bonjour
Avatar de l’utilisateur
pierrotdu18Premium
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Prochain niv.: 40.5%
 
Messages: 975
Inscription: 07 Nov 2013, 20:18
Localisation: Paris V
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: MP* Lycée Henri IV

Re: Utiliser une police personnalisée avec nSDL

Message non lude Lepzulnag » 23 Avr 2014, 09:01

Hé bien c'est là la principale difficulté. Tu peux créer un éditeur de police oncalc ou sur ordi, ou le faire à la main (dans ce cas tu t'occupes simplement des symboles les plus courants, tu t'embêtes pas du reste).
L'idéal serait de créer un convertisseur similaire à ImagetoNTI, qui prenne en argument une image noir et blanc contenant tous les caractères de ta police (comme ici), et renvoie le tableau. Mais bon, c'est pas facile facile (en tout cas pour moi qui ne suis pas habitué à programmer pour ordi).

Le principe de la conversion est simple : un caractère 8x8 noir et blanc, c'est défini par 8 octets (un par ligne), dont chaque bit défini la couleur (0=blanc, 1=noir).
La lettre 'i' est donc :

00010000 --> 16 --> 0h10
00000000 --> 0 --> 0h00
00110000 --> 48 --> 0h30
00010000 --> 16 --> 0h10
00010000 --> 16 --> 0h10
00010000 --> 16 --> 0h10
00111000 --> 56 --> 0h38
00000000 --> 0 --> 0h00

Tu peux reconnaître avec les '1' la forme du i.
Avatar de l’utilisateur
Lepzulnag
Niveau 9: IC (Compteur Infatigable)
Niveau 9: IC (Compteur Infatigable)
Prochain niv.: 78.5%
 
Messages: 151
Inscription: 02 Aoû 2012, 21:15
Localisation: Bretagne
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile
Classe: M2 Maths

Re: Utiliser une police personnalisée avec nSDL

Message non lude pierrotdu18 » 23 Avr 2014, 10:15

Ah oui ok... Mais donc du coup cela ne fait que des polices extra simple... :/
Impossible j'imagine de faire une police comme ça par exemple :
Image

Ou dans ce cas il faudrait adapter le code pour gérer des tableaux de 256 * 128 * 128... Au moins...
Bonjour
Avatar de l’utilisateur
pierrotdu18Premium
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Prochain niv.: 40.5%
 
Messages: 975
Inscription: 07 Nov 2013, 20:18
Localisation: Paris V
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: MP* Lycée Henri IV

Re: Utiliser une police personnalisée avec nSDL

Message non lude pierrotdu18 » 23 Avr 2014, 10:41

Ah oui et sinon, redéfinir les macros NSP_FONT_WIDTH et NSP_FONT_HEIGHT ne change absolument rien à la taille de la police, en fait, je pense que c'est juste des boucles de setPixel() en fonction de la valeur binaire de chaque byte d'un caractère...

Du coup, la seule façon de changer la taille serait de recréer un système de polices qui prend plus d'octets?... :(
Bonjour
Avatar de l’utilisateur
pierrotdu18Premium
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Prochain niv.: 40.5%
 
Messages: 975
Inscription: 07 Nov 2013, 20:18
Localisation: Paris V
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: MP* Lycée Henri IV

Re: Utiliser une police personnalisée avec nSDL

Message non lude Lepzulnag » 23 Avr 2014, 11:17

Oui toutes tes remarques sont justes :)

Après, créer une police où chaque caractère fait 256x128 pixels n'est pas très utile pour un écran de 320x240 pixels :p
Le plus simple est de créer ses propres polices 8x8. Personnellement j'ai toujours préféré les petites polices aux grandes.

Tu as raison, redéfinir les macros NSP_FONT_WIDTH et NSP_FONT_HEIGHT ne changera pas la taille des caractères. En même temps c'est tout à fait normal, on utilise pas d'algorithme d'agrandissement ou de rétrécissement lorsque l'on change la taille d'une police (ça donnerait un horrible pâté illisible), on a juste des données pour chaque police et chaque taille.

Cependant si tu veux vraiment créer une police plus grande que 8x8 je "crois" qu'il te suffira créer un tableau de la bonne taille et de changer les valeurs de ces deux macros pour que la fonction en fasse une structure nSDL_Font.

EDIT: J'ai regardé plus en détail la fonction nSDL_LoadFont(), et donner à NSP_FONT_WIDTH une valeur plus grande que 8 ne suffira pas, il faudra changer un peu le code aussi (rien de trop difficile cependant).
Avatar de l’utilisateur
Lepzulnag
Niveau 9: IC (Compteur Infatigable)
Niveau 9: IC (Compteur Infatigable)
Prochain niv.: 78.5%
 
Messages: 151
Inscription: 02 Aoû 2012, 21:15
Localisation: Bretagne
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile
Classe: M2 Maths

Re: Utiliser une police personnalisée avec nSDL

Message non lude pierrotdu18 » 23 Avr 2014, 18:24

C'est vraiment gentil mais là ça ne va pas être possible...
Je dois utiliser la même police, mais dans au moins trois tailles différentes et dans le même programme, ça veut dire que je dois refaire trois fonctions en me basant sur le code de LoadFont(), et refaire le tableau pour chaque taille...

Et ça pour seulement un programme, je rencontrerai le même problème pour mes programmes futurs, je pense que ce n'est pas vraiment une solution envisageable sur le long terme...

Mais c'est la seule façon d'afficher du texte avec la nSDL ?
Ou sinon, je vais devoir opter pour encore une nouvelle librairie, mais bon mets toi à ma place, je suis tout ce qu'il y a de plus débutant, j'ai déjà du changer une fois de lib, apprendre la SDL, et si je dois encore changer... :/
Bonjour
Avatar de l’utilisateur
pierrotdu18Premium
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Prochain niv.: 40.5%
 
Messages: 975
Inscription: 07 Nov 2013, 20:18
Localisation: Paris V
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: MP* Lycée Henri IV

Re: Utiliser une police personnalisée avec nSDL

Message non lude Lepzulnag » 23 Avr 2014, 19:23

Oui tu devras faire un tableau pour chacune de tes fonts, mais avec aucune autre librarire tu ne pourras faire autrement ;)

Par contre tu n'auras besoin que d'une fonction pour toutes les polices, pas d'une par police. Si celle-ci n'est pas débile elle devinera la taille de ta police, ou sinon il te suffit de le la lui passer en argument.

Tu m'as l'air désespéré alors qu'il n'y a pas lieu de l'être :) Garde la SDL, c'est vraiment la meilleure librairie graphique que tu puisses utiliser en C sur nSpire. En plus tu as de la chance parce que ton problème m'intéresse : moi aussi j'ai envie de personnaliser mes polices ; aussi je vais me lancer sur ce problème. Demain je te ferais partager le fruit de mon travail. Normalement tu n'auras plus qu'à créer l'image qui contienne tes caractères, avant de pouvoir les utiliser (une image par taille de police par contre).
Avatar de l’utilisateur
Lepzulnag
Niveau 9: IC (Compteur Infatigable)
Niveau 9: IC (Compteur Infatigable)
Prochain niv.: 78.5%
 
Messages: 151
Inscription: 02 Aoû 2012, 21:15
Localisation: Bretagne
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile
Classe: M2 Maths

Re: Utiliser une police personnalisée avec nSDL

Message non lude pierrotdu18 » 23 Avr 2014, 19:30

Ah bon tu veux vraiment programmer ça sur PC? :o
Bah dis donc, respect :)
Mais comment tu vas faire, du vas passer en argument une NTI ? ;)
Mais du coup ça ne marchera seulement si l'espacement entre les caractères est exactement le même partout, et si ça fait bien du 8*8 pour chaque caractère?
Bonjour
Avatar de l’utilisateur
pierrotdu18Premium
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Prochain niv.: 40.5%
 
Messages: 975
Inscription: 07 Nov 2013, 20:18
Localisation: Paris V
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: MP* Lycée Henri IV

Re: Utiliser une police personnalisée avec nSDL

Message non lude Lepzulnag » 23 Avr 2014, 19:56

Je vais essayer de faire deux fonctions de chargement de polices, l'une qui lira à partir d'une surface (créée à partir d'une image NTI ou d'un fichier BMP), l'autre à partir d'un tableau de caractères. Je créerais donc aussi l'utilitaire de conversion image->tableau. C'est l'occasion pour moi d'apprendre un peu à programmer sur PC :)
Avatar de l’utilisateur
Lepzulnag
Niveau 9: IC (Compteur Infatigable)
Niveau 9: IC (Compteur Infatigable)
Prochain niv.: 78.5%
 
Messages: 151
Inscription: 02 Aoû 2012, 21:15
Localisation: Bretagne
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile
Classe: M2 Maths

Suivante

Retourner vers Native: Ndless, Linux, ...

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 19 invités

-
Rechercher
-
Social TI-Planet
-
Sujets à la une
Comparaisons des meilleurs prix pour acheter sa calculatrice !
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
Phi NumWorks jailbreak
123
-
Faire un don / Premium
Pour plus de concours, de lots, de tests, nous aider à payer le serveur et les domaines...
Faire un don
Découvrez les avantages d'un compte donateur !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partenaires et pub
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
1319 utilisateurs:
>1286 invités
>29 membres
>4 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Autres sites intéressants
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)