IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SDL Discussion :

fixer les coordonnées de la fenêtre d'affichage ?


Sujet :

SDL

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 134
    Points : 122
    Points
    122
    Par défaut fixer les coordonnées de la fenêtre d'affichage ?
    J'ai actuellement une application dans laquelle j'utilise SDL (software) pour l'affichage de pixels.
    Tout fonctionne à merveille mais j'ai cependant un problème :
    La fenêtre de visualisation générée par la lib SDL s'ouvre un peu n'importe où. N'y a t'il pas moyen de fixer les coordonnées de la fenêtre qui contiendra les formes à afficher ? (Cela m'ennuye d'autant plus que celle-ci est supperposée à une dialogue de paramétrage ...).


    Merci

  2. #2
    mat.M
    Invité(e)
    Par défaut Re: [SDL] fixer les coordonnées de la fenêtre d'affichage ?
    Citation Envoyé par ale2000
    J'ai actuellement une application dans laquelle j'utilise SDL (software) pour l'affichage de pixels.
    Tout fonctionne à merveille mais j'ai cependant un problème :
    La fenêtre de visualisation générée par la lib SDL s'ouvre un peu n'importe où. N'y a t'il pas moyen de fixer les coordonnées de la fenêtre qui contiendra les formes à afficher ? (Cela m'ennuye d'autant plus que celle-ci est supperposée à une dialogue de paramétrage ...).


    Merci
    Le mieux est carrément d'aller bidouiller dans le code source de SDL, de recompiler la dll et mettre les coordonnées voulues....
    c'est la méthode radicale

  3. #3
    mat.M
    Invité(e)
    Par défaut
    Allo y'a quelqu'un ?
    En fait le problème ne vient pas de SDL mais de l'OS.
    Sous Windows il faut appeler des API pour cela mais le code ne sera pas portable.
    Voir à tout hasard dans SDL_video.c

  4. #4
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 134
    Points : 122
    Points
    122
    Par défaut
    Et vive windows ...

    Je vais tanter de modifier SDL, il y a certainenment moyen de fixer les coordonnées car si on peut jouer sur la taille

    Merci du tuyau, je vais gratter un peu plus en avant...

  5. #5
    Membre éprouvé
    Avatar de Zenol
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 812
    Points : 1 054
    Points
    1 054
    Par défaut
    J'avais vu une structure qui contenait les données sur la fenêttre, dans un des header. Peutètre il y a t'il une fonction pour les modifier?(Ce n'était pas dans SDL_video.)
    Mes articles Développez | Dernier article : Raytracer en haskell
    Network library : SedNL | Zenol's Blog : http://zenol.fr

    N'oubliez pas de consulter la FAQ et les cours et tutoriels.

  6. #6
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Visiblement, faut aller dans le code de SDL pour résoudre ce genre de détail, il semble qu'il n'y a aucune façon propre de faire ce genre de chose et je n'ai vu aucune fonction SDL qui permette de faire cela de façon portable.

    Pour X11, j'ai l'impression que l'endroit à modifier est:

    - dans la fonction X11_CreateWindow du fichier src/x11/SDL_video.c

    Dedans, il y a ce code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
            if ( !SDL_windowid ) { 
                    if ( flags & SDL_OPENGL ) {
                            if ( X11_GL_CreateWindow(this, w, h) < 0 ) {
                                    return(-1);
                            } 
                    } else {
                            .....
                            SDL_Window = XCreateWindow(SDL_Display, WMwindow,
                                                    0, 0, w, h, 0, depth,
                                                    InputOutput, SDL_Visual,
                                                    CWBackPixel | CWBorderPixel
                                                    | CWColormap, &swa);
                    }
    Je pense qu'en changeant les deux 0, cela devrait résoudre le problème...
    Remarquez que pour OpenGL, il faut aller dans le fichier SDL_x11gl.c pour retrouver cet appel de fonction:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     SDL_Window = XCreateWindow(SDL_Display, WMwindow,
                            0, 0, w, h, 0, glx_visualinfo->depth,
                            InputOutput, glx_visualinfo->visual,
                            mask, &attributes);

    Sous windows, on a même les variables
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    int SDL_windowX = 0;
    int SDL_windowY = 0;
    définis dans src/wincommon/SDL_sysevents.c mais je ne pense pas qu'une modification direct de ces variables changera la position de la fenêtre (faudrait tester) puisque c'est une simple redondance de l'information par rapport aux entrailles de windows...

    Pour windows, j'ai l'impression que tout se passe dans ce fichier windib/SDL_dibevents.c
    dans la fonction DIB_CreateWindow...

    J'espère avoir aidé pour mettre sur la bonne piste,
    Jc

  7. #7
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 134
    Points : 122
    Points
    122
    Par défaut
    Je viens d'assayer en modifiant les valeurs de SDL_winfowsX et Y et ...
    Ca fonctionne. Ce sont bien ces paramètres qui fixe lors de la constuction, la place de la fenêtre.
    Apparemment, le fait de laisser ces paramètres à 0 laisse Windows gérer l'affichage et comme, par défaut, l'ouvertur se fait en cascade, ...



    Merci bcp...

  8. #8
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Citation Envoyé par ale2000
    Je viens d'assayer en modifiant les valeurs de SDL_winfowsX et Y et ...
    Ca fonctionne. Ce sont bien ces paramètres qui fixe lors de la constuction, la place de la fenêtre.
    Apparemment, le fait de laisser ces paramètres à 0 laisse Windows gérer l'affichage et comme, par défaut, l'ouvertur se fait en cascade, ...



    Merci bcp...
    Est-ce que tu peux donc donner ta solution pour forcer le placement de la fenêtre à un autre endroit que (0,0) et est-ce que cela veut dire que tu peux modifier pendant l'exécution du programme directement la position ou seulement pour la construction?

    Cela pourrait intéresser plus d'un...

    PS: Remarque, toute modification comme celle-ci rend le code non portable, donc faites attention...

  9. #9
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 134
    Points : 122
    Points
    122
    Par défaut
    pour placer, à la création, une fenêtre à un endroit bien précis, j'ai, dans src/wincommon/SDL_sysevents.c initialisé les variables
    int SDL_windowX = 0;
    int SDL_windowY = 0;

    à d'autres valeurs que 0;
    Cependant, il n'est pas possible (en tout cas je n'ai pas encore trouvé le moyen) de modifier la position via soft, de la fenêtre après sa création car ces deux paramètres init la position de la fenêtres lors de la création, mais comme ils sont init dans la dll, c'est en dure et ne sont pas modifiable lors de l'exécution.

    Pour mon appli, qui demande une position constante, ce n'est pas grave, mais je vais creuser le problème un peu plus loin et voire s'il y a moyen de déplacer cette fenêtre dynamiquement et en se rendant indépendant de l'OS ...

    Je signalerai les résultats.

  10. #10
    mat.M
    Invité(e)
    Par défaut
    Attention ! si tu modifies le code source de SDL il faut redistribuer la dll modifiée !

    sinon cela ne focntionnera pas

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment fixer les largeurs des colonnes d'un TStrinGrid
    Par marsupilami34 dans le forum Composants VCL
    Réponses: 6
    Dernier message: 24/08/2005, 13h24
  2. Obtenir les coordonnées réelles
    Par chep dans le forum OpenGL
    Réponses: 2
    Dernier message: 19/04/2005, 12h05
  3. Fixer les marges à l'impression.
    Par roots_man dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 17/11/2004, 10h30
  4. Réponses: 2
    Dernier message: 14/09/2004, 18h00
  5. Récuperer les coordonnées d'un vecteur
    Par kerzut dans le forum OpenGL
    Réponses: 5
    Dernier message: 15/04/2003, 11h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo