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

Auteur Sujet: Zone de texte  (Lu 3715 fois)

0 Membres et 1 Invité sur ce sujet

cChaD

  • Full Member
  • ***
  • Messages: 117
    • Voir le profil
Zone de texte
« le: Août 20, 2013, 01:31:03 pm »
Bonjour,

je suis en train de réaliser un widget de type "zone de texte" avec les retours à la lignes.
Seulement, j'aimerais savoir si mon texte est plus petit que ma zone à l’écran, pour la première ligne c'est assez simple je récupère le Rect.right mais quand il y a plusieurs lignes, je ne sais pas comment récuperer la longueur du rect après le '\n'


Cordialement.

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Zone de texte
« Réponse #1 le: Août 20, 2013, 01:48:15 pm »
Ta description est assez confuse. Tu veux calculer la taille de chaque ligne de texte, c'est ça ?
Laurent Gomila - SFML developer

cChaD

  • Full Member
  • ***
  • Messages: 117
    • Voir le profil
Re : Zone de texte
« Réponse #2 le: Août 20, 2013, 02:06:03 pm »
Oui voilà.

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Zone de texte
« Réponse #3 le: Août 20, 2013, 02:19:23 pm »
Il faut utiliser la fonction Text::getCharacterPos. La taille des lignes étant simplement la position des \n.
Laurent Gomila - SFML developer

cChaD

  • Full Member
  • ***
  • Messages: 117
    • Voir le profil
Re : Zone de texte
« Réponse #4 le: Août 20, 2013, 02:24:15 pm »
Je sais récupérer le nombre de caractères mais moi ce que je veut c'est le rect.

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Zone de texte
« Réponse #5 le: Août 20, 2013, 02:29:08 pm »
getCharacterPos renvoie la position en pixels, donc ça te donne bien la taille de tes lignes.

Est-ce que tu as au moins lu la documentation de cette fonction ?

Au fait, pourquoi as-tu besoin de calculer la taille de chaque ligne individuellement ?
Laurent Gomila - SFML developer

cChaD

  • Full Member
  • ***
  • Messages: 117
    • Voir le profil
Re : Zone de texte
« Réponse #6 le: Août 20, 2013, 02:49:18 pm »
Pour vérifier si elle ne dépasse pas la zone.

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Zone de texte
« Réponse #7 le: Août 20, 2013, 03:04:25 pm »
Et pourquoi ligne par ligne plutôt que globalement pour tout le texte ?
Laurent Gomila - SFML developer

cChaD

  • Full Member
  • ***
  • Messages: 117
    • Voir le profil
Re : Zone de texte
« Réponse #8 le: Août 20, 2013, 03:36:20 pm »
C'est ce que j'avais essayé mais je ne rentrer jamais dans la condition pour les autres lignes, car le rect.right est toujours fixe :/

if(position.x + dimensions.width + padding.left + label->GetTextRect().right  <
   position.x + dimensions.width - padding.right)
{
     textEntered.insert(barPosition, EngineManager::GetInstance()->Event->GetTextEntered)
     barPosition++;
     ...
}
else
{
   textEntered.insert(barPosititon, '\n');
   barPosititon = 0;
   ...
}
 

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Zone de texte
« Réponse #9 le: Août 20, 2013, 03:44:35 pm »
Je comprends vraiment rien.

Arrête deux secondes de parler des détails de ton code avec des références ultra vagues que toi seul sait remettre dans leur contexte, et prends le temps de bien nous expliquer ce que tu es en train de faire. Parce que là il n'y a que toi qui te comprend ; nous on débarque on ne sait rien de ton projet ;)

Bon... Tu veux découper ton texte (insérer des sauts de ligne) de manière à ce que rien ne dépasse de son cadre ? C'est ça ??
Laurent Gomila - SFML developer

cChaD

  • Full Member
  • ***
  • Messages: 117
    • Voir le profil
Re : Zone de texte
« Réponse #10 le: Août 20, 2013, 03:49:45 pm »
Désole, oui c'est exactement ça.

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Zone de texte
« Réponse #11 le: Août 20, 2013, 04:08:31 pm »
Citer
oui c'est exactement ça.
Alors pourquoi tu l'as pas dit comme ça tout de suite ? ??? On aurait gagné du temps.

Bref, l'algorithme serait un truc qui ressemble à ça :

for (int i = 0; i < string.size(); ++i)
{
    if (text.getCharacterPos(i).x > cadre.right)
    {
        string.insert(i, '\n');
        ++i;
    }
}

(n'essaye pas de le copier-coller, c'est juste pour donner l'idée générale)
Laurent Gomila - SFML developer

cChaD

  • Full Member
  • ***
  • Messages: 117
    • Voir le profil
Re : Zone de texte
« Réponse #12 le: Août 20, 2013, 04:22:59 pm »
Super, merci ! ;)

 

anything