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

Auteur Sujet: Problème avec les View : setSize  (Lu 2895 fois)

0 Membres et 1 Invité sur ce sujet

gaulois94

  • Sr. Member
  • ****
  • Messages: 259
    • Voir le profil
Problème avec les View : setSize
« le: Novembre 02, 2012, 03:26:34 pm »
Bonjours,

voila j'essaye de comprendre un peu le fonctionnement des vues, et j'ai un tout petit problème avec cette vu : rien ne s'affiche. Voici un code d'exemple :

#include <SFML/Graphics.hpp>

int main()
{
    sf::RenderWindow window(sf::VideoMode(800, 600), "teste");
    sf::RectangleShape shape(sf::Vector2f(50, 50));
    window.setFramerateLimit(60);
    shape.setFillColor(sf::Color(255, 0, 0));

        sf::View view = window.getView();
        view.setSize(400, 200);
        window.setView(view);

    while(window.isOpen())
    {
        window.draw(shape);
        window.display();
        window.clear();
    }
}

Voila, je crois que j'ai tout dis :) . Merci d'avance.

ps : je travaille avec les dernières sources de la sfml en date.

gaulois94

  • Sr. Member
  • ****
  • Messages: 259
    • Voir le profil
Re : Problème avec les View : setSize
« Réponse #1 le: Novembre 02, 2012, 03:50:53 pm »
Tiens, j'ai encore un trucs plus affolant la taille de la view de la fenêtre est toujours égale à 1. Voici le code correspondant :

#include <SFML/Graphics.hpp>
#include <iostream>

int main()
{
    sf::RenderWindow window(sf::VideoMode(800, 600), "teste");
    sf::RectangleShape shape(sf::Vector2f(50, 50));
    window.setFramerateLimit(60);
    shape.setFillColor(sf::Color(255, 0, 0));

    while(window.isOpen())
    {
        std::cout << window.getView().getViewport().width << std::endl;
        window.draw(shape);
        window.display();
        window.clear();
    }
}

merci d'avance.

édit : arf, je n'ai pas vu que Viewport retournait le pourcentage de la taille initialise. Cependant, viewport.left retourne toujours 0, or je veux récupéré la position de la vue. Comment faire ?
« Modifié: Novembre 02, 2012, 04:09:49 pm par gaulois94 »

G.

  • Hero Member
  • *****
  • Messages: 1592
    • Voir le profil
Re : Problème avec les View : setSize
« Réponse #2 le: Novembre 02, 2012, 04:59:32 pm »
Je crois que le code minimal pour qu'une fenêtre fonctionne correctement comporte une boucle d'évènements.

Pour connaitre la position de la vue, récupère la position de son centre. (getCenter)

gaulois94

  • Sr. Member
  • ****
  • Messages: 259
    • Voir le profil
Re : Problème avec les View : setSize
« Réponse #3 le: Novembre 02, 2012, 07:00:52 pm »
Seul soucis avec le centre, c'est qu'il retourne bien le centre de la vue, mais moi je veux connaître son coin supèrieur droit. Pourquoi je ne ferai pas un setCenter(0, 0) ? Car l'utilisateur après (je développe une lib) pourra faire un setCenter(ceQuilVeut) et donc casser tout mon algorythme....

Enfaîte ce que je veux est très simple : je veux obtenir un sf::FloatRect de la vue, rien de plus.
« Modifié: Novembre 02, 2012, 07:09:23 pm par gaulois94 »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : Problème avec les View : setSize
« Réponse #4 le: Novembre 02, 2012, 08:35:57 pm »
C'est pas dur, getCenter() - getSize() / 2 te donne le coin haut gauche. Je te laisse deviner comment avoir les 3 autres ;)

Note que là ça ne marchera pas s'il y a une rotation, mais bon apparemment tout le monde s'en fiche ;D
« Modifié: Novembre 02, 2012, 08:37:51 pm par Laurent »
Laurent Gomila - SFML developer

gaulois94

  • Sr. Member
  • ****
  • Messages: 259
    • Voir le profil
Re : Problème avec les View : setSize
« Réponse #5 le: Novembre 02, 2012, 09:43:10 pm »
La rotation, je m'en fiche un peu :p . Le soucis est qu'il est possible de faire des setCenter (bien que je ne vois aucun cas où je devrais en faire). M'enfin bon, on verra cela plus tard :) .

édit : je pense qu'il serait bon, si c'est possible, de rajouter une méthode à la view, du style getViewRect() ainsi qu'un setViewPosition(const sf::Vector2f newPos). À voir si c'est possible ;) .
« Modifié: Novembre 02, 2012, 09:47:14 pm par gaulois94 »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : Problème avec les View : setSize
« Réponse #6 le: Novembre 02, 2012, 10:05:19 pm »
Citer
Le soucis est qu'il est possible de faire des setCenter
Hum ?

Citer
getViewRect()
Pas possible à cause de la rotation.

Citer
setViewPosition
Ca ferait quoi de plus que setCenter ?
Laurent Gomila - SFML developer

gaulois94

  • Sr. Member
  • ****
  • Messages: 259
    • Voir le profil
Re : Problème avec les View : setSize
« Réponse #7 le: Novembre 02, 2012, 10:13:29 pm »
Avec les sf::View, il est possible de changé le "centre" de la view, non ? Ça change ça position, ou bien ça change l'origine de la vue ? (comme pour les sf::Sprite) (très important cette question).

Ensuite tu me dis qu'il est impossible de faire de getViewRect(), pourtant je peux le faire avec les sf::Sprite qui eux aussi possède une rotation. C'est simplement un rectangle qui englobe  le vue, en comptant la rotation, rien de plus ;) .

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : Problème avec les View : setSize
« Réponse #8 le: Novembre 02, 2012, 10:19:00 pm »
Citer
Avec les sf::View, il est possible de changé le "centre" de la view, non ? Ça change ça position, ou bien ça change l'origine de la vue ? (comme pour les sf::Sprite) (très important cette question).
Non c'est différent : setCenter modifie la position de la vue, et on ne peut pas changer son "origine" : c'est toujours le centre (d'où le nom de la fonction).

Citer
Ensuite tu me dis qu'il est impossible de faire de getViewRect(), pourtant je peux le faire avec les sf::Sprite qui eux aussi possède une rotation. C'est simplement un rectangle qui englobe  le vue, en comptant la rotation, rien de plus
Mouais. Ca peut se défendre :P

De toute façon je ne suis pas satisfait de la classe sf::View, ce sera sûrement l'un des premiers trucs à subir un lifting quand j'attaquerai SFML 3.
Laurent Gomila - SFML developer