Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: La classe Text manque de fonctionnalités  (Lu 3331 fois)

0 Membres et 1 Invité sur ce sujet

Phanoo

  • Full Member
  • ***
  • Messages: 136
    • Voir le profil
La classe Text manque de fonctionnalités
« le: Avril 26, 2014, 10:04:43 pm »
C'est un constat qui me vient en réalisant mon projet, j'aurais besoin de plusieurs fonctions en plus, qui selon moi manquent cruellement :

- Une fonction setLineSpacing, pour définir l'espacement des lignes d'un texte. Actuellement si je veux afficher un texte multiligne avec un espacement différent de la valeur par défaut il faut que je crée un objet Text par ligne

- Une fonction ou un paramètre de setStyle permettant de choisir entre un texte aligné à gauche, centré, aligné à droite ou justifié.

PS: je vois après recherche que quelqu'un a déjà demandé une fonction d'alignement du texte et que vous avez refusé. Pourquoi ? Raison technique?

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : La classe Text manque de fonctionnalités
« Réponse #1 le: Avril 27, 2014, 12:21:42 pm »
Citer
- Une fonction setLineSpacing, pour définir l'espacement des lignes d'un texte. Actuellement si je veux afficher un texte multiligne avec un espacement différent de la valeur par défaut il faut que je crée un objet Text par ligne
L'espacement prévu pour la police ne convient pas ? C'est-à-dire que si tu utilises cette police dans un éditeur de texte ou autre, ça ne te conviendra pas ? :P

Citer
- Une fonction ou un paramètre de setStyle permettant de choisir entre un texte aligné à gauche, centré, aligné à droite ou justifié.
Aligné par rapport à quoi ? sf::Text n'a pas de notion de conteneur dans lequel s'aligner.
Laurent Gomila - SFML developer

Phanoo

  • Full Member
  • ***
  • Messages: 136
    • Voir le profil
Re : Re : La classe Text manque de fonctionnalités
« Réponse #2 le: Avril 28, 2014, 04:04:16 pm »
L'espacement prévu pour la police ne convient pas ? C'est-à-dire que si tu utilises cette police dans un éditeur de texte ou autre, ça ne te conviendra pas ? :P

Oui exactement. Soit juste pour des raisons esthétiques, soit dans mon cas avec le logiciel que je développe j'utilise plusieurs sf::Text verticalement ("0 \ n1 \n 2 \n 3 \n... etc") donc la hauteur de ligne doit correspondre à la hauteur de ligne de mon interface

J'ai contourné le problème en adaptant mon interface à la hauteur de ligne de la police, mais c'est pas normal de devoir faire ça normalement c'est la police qu'on devrait pouvoir adapter^^ Ca me semble être une fonctionnalité basique qui mériterait d'etre implémentée, elle n'est pas redondante avec aucune autre fonction donc ça ne ferait que rendre la SFML plus polyvalente sans pour autant cradifier son interface

Aligné par rapport à quoi ? sf::Text n'a pas de notion de conteneur dans lequel s'aligner.
L'alignement d'un texte (multiligne) c'est par rapport à lui même :
- un texte centré positionne toutes ses lignes par rapport à la largeur de la ligne la plus large
- un texte à gauche positionne toutes ses ligne à x=position x de l'objet (la seule option possible actuellement dans SFML)
- un texte à droite positionne toutes ses ligne à x=position x de l'objet + largeur de la ligne la plus large - largeur de la ligne courante

Du coup il n'y a pas vraiment de conteneur, ou alors il s'agit d'un conteneur virtuel, dont la largeur = largeur de la ligne la plus large, et la hauteur = hauteur de ligne*nombre de lignes (c'est juste la surface d'affichage qu'occupe le texte quoi)

exemple pour le calcul du positionnement d'un texte centré:


bien sur ça n'a aucun sens pour un texte mono-ligne, le centrer sur lui meme le laissera à la même place  ;D
Il me semble que cette façon de faire est clean non ? Je pense que tu voyais pas le conteneur de cette façon mais plutot comme une zone que l'utilisateur aurait du définir lui meme ? (ce qui serait possible aussi - on ne centre plus le texte par rapport à lui meme mais par rapport à un Rect). L'avantage de ma méthode c'est qu'elle ne nécessite rien d'autre de la part de l'utilisateur que de choisir l'alignement. Pas de zone ou autre à définir

Après c'est pareil, il s'agit de fonctions qui faciliteraient énormément la vie des développeurs. C'est possible de coder soi même son centrage de texte avec un objet Text par ligne puis calcul des positions etc, mais c'est pas très "Simple and Fast" quand meme  ;D (et puis le nom "Text" par définition implique du multi-ligne, donc autant aller jusqu'au bout en proposant tout pour bien gérer ce multi ligne  :) )

Si on revient à mon premier screen, par exemple l'option centrage a droite m'aurait été très utile pour les chiffres à gauche (alignement des chiffres < 10). Bref, plein d'utilisations possibles


please need implementation  :-[
« Modifié: Avril 28, 2014, 04:42:27 pm par ratatax »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : La classe Text manque de fonctionnalités
« Réponse #3 le: Avril 28, 2014, 04:45:32 pm »
Y a de l'idée. On s'en souviendra quand on retravaillera prochainement sur la classe sf::Text ;)

Merci.
Laurent Gomila - SFML developer