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

Auteur Sujet: sf::Text saut de ligne  (Lu 5589 fois)

0 Membres et 1 Invité sur ce sujet

Samuel Proulx

  • Full Member
  • ***
  • Messages: 118
    • Voir le profil
sf::Text saut de ligne
« le: Août 31, 2012, 12:37:09 am »
Bonjour à tous et à toutes :)

La classe sf::Text ne semble pas posséder de méthode afin de créer un retour à la ligne automatique dès que le GlobalBounds dépasse une certaine taille.

Existe-t-il une solution à se problème ou je dois mesurer la taille de X caractères et mettre un \n quand ça excède la taille désiré ?

Merci et bonne journée :)

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : sf::Text saut de ligne
« Réponse #1 le: Août 31, 2012, 12:43:57 am »
Citer
Existe-t-il une solution à se problème ou je dois mesurer la taille de X caractères et mettre un \n quand ça excède la taille désiré ?
2ème option, désolé :(
Laurent Gomila - SFML developer

Samuel Proulx

  • Full Member
  • ***
  • Messages: 118
    • Voir le profil
Re : sf::Text saut de ligne
« Réponse #2 le: Août 31, 2012, 12:59:31 am »
Bof, c'est pas si grave puisque ma GUI a déjà une classe Label qui est une simple couche par dessus un sf::Text pour être capable de dessiner comme n'importe quel Widget (label.draw() au lieu de app.draw(label)). Je dois juste ajouter une GlobalBounds définie par l'utilisateur afin de mettre les \n dans le texte en fonction de cette boîte. Pas si compliqué que ça quand même :)

En plus, ma classe abstraite Widget contient déjà les GlobalBounds puisque tout widget a forcément une taille. Suffit d'arranger un peu Label pour ça :)

je crois que ça serait une bonne option à ajouter directement dans sf::Text pour une prochaine version :)
« Modifié: Août 31, 2012, 01:01:35 am par neo007 »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : sf::Text saut de ligne
« Réponse #3 le: Août 31, 2012, 10:57:50 am »
Oui, c'est prévu.
Laurent Gomila - SFML developer

Samuel Proulx

  • Full Member
  • ***
  • Messages: 118
    • Voir le profil
Re : sf::Text saut de ligne
« Réponse #4 le: Septembre 01, 2012, 06:24:14 pm »
Voilà pour ceux que ça intéresse un petit code de base pour effectuer des retour à la ligne dans un sf::Text :

//on fait le tour des caractères du sf::Text
for(int i=0;i<m_text.getString().getSize();i++)
    {
        //Si le caractère dépasse la boundingbox définit et que le caractère n'est pas égal à un retour à la ligne
        if(findCharacterPos(i).x > m_globalBounds.left+m_globalBounds.width && m_text.getString()[i] != 10)
        {
            //On va chercher le dernier caractère espace afin de faire des retour à la ligne par mot et non par caractère
            while(m_text.getString()[i] != 32)--i;
            //On ajoute le caractère de retour à la ligne en remplacent l'espace entre les deux mots par \n
            String str1 = m_text.getString().toWideString().substr(0,i);
            str1 += "\n";
            str1 += m_text.getString().toWideString().substr(i+1);
            m_text.setString(str1);
        }
    }
 

J'ignore s'il s'agit de la façon la plus optimisé de faire, mais elle fonctionne très bien :)

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : sf::Text saut de ligne
« Réponse #5 le: Septembre 01, 2012, 08:14:48 pm »
Deux choses :
- ' ' et '\n', c'est plus sympa que 32 et 10
- utilise la fonction sf::String::insert au lieu de faire plein de découpages et de réassemblages

Sinon pour la logique, c'est effectivement exactement ce qu'il faut faire (pour le moment) ;)
Laurent Gomila - SFML developer

Sipige

  • Newbie
  • *
  • Messages: 20
    • Voir le profil
Re: sf::Text saut de ligne
« Réponse #6 le: Décembre 16, 2017, 04:28:57 pm »
Et maintenant ?

Guillaume__

  • Newbie
  • *
  • Messages: 42
    • Voir le profil
Re: sf::Text saut de ligne
« Réponse #7 le: Décembre 16, 2017, 09:09:55 pm »
Bonsoir,

Aujourd'hui encore on procède de cette manière.

Cordialement G
Rejoignez-nous sur le serveur
Discord SFML