Utiliser une police personnalisée avec nSDL
43 posts
• Page 4 of 5 • 1, 2, 3, 4, 5
Re: Utiliser une police personnalisée avec nSDL
Tu as fait une marge de 1 pixel sur la droite, et non sur la gauche.
-
Lepzulnag
Niveau 9: IC (Compteur Infatigable)- Posts: 151
- Joined: 02 Aug 2012, 21:15
- Location: Bretagne
- Gender:
- Calculator(s):→ MyCalcs profile
- Class: M2 Maths
-
pierrotdu18Premium
Niveau 15: CC (Chevalier des Calculatrices)- Posts: 975
- Joined: 07 Nov 2013, 20:18
- Location: Paris V
- Gender:
- Calculator(s):→ MyCalcs profile
- Class: MP* Lycée Henri IV
Re: Utiliser une police personnalisée avec nSDL
Mais je pense que mon "1" n'est pas au bon endroit, de toute façon pour bien faire, il faudrait que ce soit possible que les caractères n'aient pas tous les même largeur, mais ça doit beaucoup plus compliqué à programmer non?
Bonjour
-
pierrotdu18Premium
Niveau 15: CC (Chevalier des Calculatrices)- Posts: 975
- Joined: 07 Nov 2013, 20:18
- Location: Paris V
- Gender:
- Calculator(s):→ MyCalcs profile
- Class: MP* Lycée Henri IV
Re: Utiliser une police personnalisée avec nSDL
En effet je me suis mal exprimé ^^
Tu as bien fait une marge de 1 pixel sur la gauche pour tous tes chiffres, sauf le '1'. Tu dois le coller sur la gauche, et non sur la droite, en laissant une marge de 1 pixel.
La fonction nSDL_LoadFont aurait pu être encore mieux faite et gérer ton cas, mais je n'ai pas voulu trop changer en créant nSDL_LoadCustomFont. Tu peux avoir des caractères plus petits, mais la convention est qu'ils soient collés sur la gauche.
Tu as bien fait une marge de 1 pixel sur la gauche pour tous tes chiffres, sauf le '1'. Tu dois le coller sur la gauche, et non sur la droite, en laissant une marge de 1 pixel.
pierrotdu18 wrote:Mais je pense que mon "1" n'est pas au bon endroit, de toute façon pour bien faire, il faudrait que ce soit possible que les caractères n'aient pas tous les même largeur, mais ça doit beaucoup plus compliqué à programmer non?
La fonction nSDL_LoadFont aurait pu être encore mieux faite et gérer ton cas, mais je n'ai pas voulu trop changer en créant nSDL_LoadCustomFont. Tu peux avoir des caractères plus petits, mais la convention est qu'ils soient collés sur la gauche.
-
Lepzulnag
Niveau 9: IC (Compteur Infatigable)- Posts: 151
- Joined: 02 Aug 2012, 21:15
- Location: Bretagne
- Gender:
- Calculator(s):→ MyCalcs profile
- Class: M2 Maths
Re: Utiliser une police personnalisée avec nSDL
Dans ce cas il faut dire "laisser une marge sur la droite", puisqu'il faut que la marge elle-même soit sur la droite, c'est-à-dire le nombre lui-même collé à gauche.
-
matref
Niveau 15: CC (Chevalier des Calculatrices)- Posts: 506
- Joined: 11 Dec 2011, 03:08
- Location: France, Châteaurenard
- Gender:
- Calculator(s):→ MyCalcs profile
- Class: Prépa MPSI
Re: Utiliser une police personnalisée avec nSDL
matref wrote:Dans ce cas il faut dire "laisser une marge sur la droite", puisqu'il faut que la marge elle-même soit sur la droite.
Oui c'est ça, il faut "laisser une marge sur la droite" de taille quelconque, et une marge sur la gauche de 1 pixel. (pas plus)
-
Lepzulnag
Niveau 9: IC (Compteur Infatigable)- Posts: 151
- Joined: 02 Aug 2012, 21:15
- Location: Bretagne
- Gender:
- Calculator(s):→ MyCalcs profile
- Class: M2 Maths
Re: Utiliser une police personnalisée avec nSDL
Ca marche parfaitement bien, merci beaucoup! 
J'ai une dernière question : pour faire comme dans le vrai jeu, j'aimerais faire une police avec les contours noirs et un remplissage blanc, comment je pourrais faire?... C'est un peu "contraire" au truc des bits 1 ou 0 non?

J'ai une dernière question : pour faire comme dans le vrai jeu, j'aimerais faire une police avec les contours noirs et un remplissage blanc, comment je pourrais faire?... C'est un peu "contraire" au truc des bits 1 ou 0 non?
Bonjour
-
pierrotdu18Premium
Niveau 15: CC (Chevalier des Calculatrices)- Posts: 975
- Joined: 07 Nov 2013, 20:18
- Location: Paris V
- Gender:
- Calculator(s):→ MyCalcs profile
- Class: MP* Lycée Henri IV
Re: Utiliser une police personnalisée avec nSDL
Ce que je te conseille de faire, c'est de créer ta propre fonction pour charger ta police. Premièrement elle n'a que dix caractères, ce serait bête de créer les 246 autres. Ensuite tu as raison, la fonction actuelle ne permet pas d'avoir une police poly-chromatique.
---> Création de la police poly-chromatique
Comme c'est une image avec plusieurs couleurs, tu utilises simplement ImageToNTI pour obtenir l'image de chacun de tes caractères. Définis-toi une couleur transparente (j'utilise souvent R=255,G=0,B=0).
---> Chargement de la police
Tu créées ta propre fonction. Elle sera plus simple, heureusement.
Le but est de créer et remplir une structure nSDL_Font :
Pour les caractères que tu n'utilises pas, mets NULL comme surface et 0 comme largeur ; sinon tu utilises nSDL_LoadImage et ta structure NTI.
Ensuite tu l'utilises !
---> Création de la police poly-chromatique
Comme c'est une image avec plusieurs couleurs, tu utilises simplement ImageToNTI pour obtenir l'image de chacun de tes caractères. Définis-toi une couleur transparente (j'utilise souvent R=255,G=0,B=0).
---> Chargement de la police
Tu créées ta propre fonction. Elle sera plus simple, heureusement.
Le but est de créer et remplir une structure nSDL_Font :
- Code: Select all
struct nSDL_Font {
SDL_Surface *chars[256];
int char_width[256];
int hspacing; // set to 0
int vspacing; // set to 1
int monospaced; // set to SDL_FALSE
}
Pour les caractères que tu n'utilises pas, mets NULL comme surface et 0 comme largeur ; sinon tu utilises nSDL_LoadImage et ta structure NTI.
Ensuite tu l'utilises !

-
Lepzulnag
Niveau 9: IC (Compteur Infatigable)- Posts: 151
- Joined: 02 Aug 2012, 21:15
- Location: Bretagne
- Gender:
- Calculator(s):→ MyCalcs profile
- Class: M2 Maths
Re: Utiliser une police personnalisée avec nSDL
Ah oui ok, mais après, une fois que j'ai ma police qui contient des images en NTI, comment je peux afficher du texte?...
Bonjour
-
pierrotdu18Premium
Niveau 15: CC (Chevalier des Calculatrices)- Posts: 975
- Joined: 07 Nov 2013, 20:18
- Location: Paris V
- Gender:
- Calculator(s):→ MyCalcs profile
- Class: MP* Lycée Henri IV
Re: Utiliser une police personnalisée avec nSDL
Avec nSDL_DrawStringCF
Tout ce que fait cette fonction, c'est lire la chaine de caractères passée en argument, et dessiner à l'écran la surface correspondante à chaque caractère.
Et ta police ne contient pas des images en NTI, elle contient des surfaces qui ont été obtenues par des images au format NTI (un caractère = une image NTI --> tu créées la surface de ton caractère grâce à nSDL_LoadImage). Il te faut juste remplir la structure nSDL_Font avec tes caractères-surfaces, et dans ton cas ça ne va pas être très dur

Et ta police ne contient pas des images en NTI, elle contient des surfaces qui ont été obtenues par des images au format NTI (un caractère = une image NTI --> tu créées la surface de ton caractère grâce à nSDL_LoadImage). Il te faut juste remplir la structure nSDL_Font avec tes caractères-surfaces, et dans ton cas ça ne va pas être très dur

-
Lepzulnag
Niveau 9: IC (Compteur Infatigable)- Posts: 151
- Joined: 02 Aug 2012, 21:15
- Location: Bretagne
- Gender:
- Calculator(s):→ MyCalcs profile
- Class: M2 Maths
43 posts
• Page 4 of 5 • 1, 2, 3, 4, 5
Return to Native: Ndless, Linux, ...
Who is online
Users browsing this forum: ClaudeBot [spider] and 12 guests