Discussion: [Todo] GtkSdl

  1. #1
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    juin 2004
    Messages
    5 842
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : juin 2004
    Messages : 5 842
    Points : 11 316
    Points
    11 316

    Par défaut [Todo] GtkSdl

    Bonjour,

    Merci de poster à la suite les améliorations possible pour la bibliothèque GtkSdl.

    Pour les bugs, merci de poster dans le sujet [Bug Report]GtkSdl.

    Merci.

  2. #2
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    juin 2004
    Messages
    5 842
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : juin 2004
    Messages : 5 842
    Points : 11 316
    Points
    11 316

    Par défaut

    [Amélioration]

    Transmettre les événements gtk à SDL

  3. #3
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    juin 2004
    Messages
    5 842
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : juin 2004
    Messages : 5 842
    Points : 11 316
    Points
    11 316

    Par défaut

    [Amélioration]

    Redimensionner le widget lorsque le widget parent change de taille

  4. #4
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    juin 2004
    Messages
    5 842
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : juin 2004
    Messages : 5 842
    Points : 11 316
    Points
    11 316

    Par défaut

    [Amélioration]

    Rafraichir automatiquement le widget (rendre inutile l'appel à gtk_sdl_display_update)

  5. #5
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    juin 2004
    Messages
    5 842
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : juin 2004
    Messages : 5 842
    Points : 11 316
    Points
    11 316

    Par défaut

    [Amélioration]

    Compléter la doc (compilation, ...)

  6. #6
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    juin 2004
    Messages
    5 842
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : juin 2004
    Messages : 5 842
    Points : 11 316
    Points
    11 316

    Par défaut

    [Fait]

    Créer un fichier .pc pour pkg-config (passer par un fichier .pc.in + autotools)

  7. #7
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    juin 2004
    Messages
    5 842
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : juin 2004
    Messages : 5 842
    Points : 11 316
    Points
    11 316

    Par défaut

    [Fait]

    GTK_SDL_CHECK_VERSION

  8. #8
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    juin 2004
    Messages
    5 842
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : juin 2004
    Messages : 5 842
    Points : 11 316
    Points
    11 316

    Par défaut

    [Amélioration]

    Pouvoir détacher la surface afin de faire du plein écran.

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    août 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : août 2007
    Messages : 21
    Points : 20
    Points
    20

    Par défaut

    Citation Envoyé par gege2061 Voir le message
    [Amélioration]

    Transmettre les événements gtk à SDL
    Quelque idées pour transmettre les evenement gtk vers sdl. Variables globales ou utiliser une strcture(C) ou classe(C++) exterieure depuis un .h
    Qu en pensez vous?

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    août 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : août 2007
    Messages : 21
    Points : 20
    Points
    20

    Par défaut

    Citation Envoyé par gege2061 Voir le message
    [Amélioration]

    Pouvoir détacher la surface afin de faire du plein écran.

    Dans certain cas, comme celui de mon aplication en ce moment, la SDL se lance dans une fenetre à part. Il ne semble pas compliquer alors de détacher a surface pour faire du pleine ecran

  11. #11
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    juin 2004
    Messages
    5 842
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : juin 2004
    Messages : 5 842
    Points : 11 316
    Points
    11 316

    Par défaut

    Citation Envoyé par allergen Voir le message
    Quelque idées pour transmettre les evenement gtk vers sdl. Variables globales ou utiliser une strcture(C) ou classe(C++) exterieure depuis un .h
    Qu en pensez vous?
    Je ne pense pas qu'il y ai besoin de ça, y a déjà une discussion à ce sujet : http://www.developpez.net/forums/sho...d.php?t=364225

    Citation Envoyé par allergen Voir le message
    Dans certain cas, comme celui de mon aplication en ce moment, la SDL se lance dans une fenetre à part. Il ne semble pas compliquer alors de détacher a surface pour faire du pleine ecran
    Oui normalement la SDL à sa propre fenêtre, mais j'ai pas encore compris comme notre prédécesseur avais réussi à l'inclure dans un widget GTK+, donc je ne sais pas comment faire l'inverse

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    août 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : août 2007
    Messages : 21
    Points : 20
    Points
    20

    Par défaut

    Pour le SDL en plein Ecran:

    Que pense tu de mettre le champ SDL_Surface de GtkSDL dans un SDL_Surface.
    Je vois pas pourquoi chercher plus compliqué


    GtkSDL* pSdl;
    /* On initialiseavec sdl_gtk_new etc etc*/
    SDL_Surface *Sdl = pSdl->Surface


    A l'appel de la fonction sdl_main (qui lance le "thread" SDL)
    un simple test sur une variable determinerait si on reste dans la fenetre GTK ou si on veut une SDL avec sa propre fenetre.

  13. #13
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    juin 2004
    Messages
    5 842
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : juin 2004
    Messages : 5 842
    Points : 11 316
    Points
    11 316

    Par défaut

    Reprise du projet en Vala.

    Voici un exemple simple en SDL qui sera inclue dans une interface GTK+ avec des boutons pour la rotation et le zoom.

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    public class GtkSdl
    {
      public static int main (string[] argv)
      {
        if (SDL.init(SDL.InitFlag.VIDEO) >= 0)
        {
          weak SDL.Screen screen = SDL.Screen.set_video_mode (640, 480, 16, SDL.SurfaceFlag.HWSURFACE | SDL.SurfaceFlag.DOUBLEBUF);
          if (screen != null)
          {
            Environment.atexit (SDL.quit);
     
            SDL.Surface bmp = SDL.Surface.load_bmp ("gtksdl.bmp");
            if (bmp != null)
            {
              bool done = false;
              double zoom = 1.0;
              double angle = 0.0;
     
              while (!done)
              {
                SDL.Event event;
     
                while (SDL.Event.poll (event))
                {
                  switch (event.type)
                  {
                    case SDL.EventType.QUIT:
                      done = true;
                    break;
     
                    case SDL.EventType.KEYDOWN:
                      switch (event.key.keysym.sym)
                      {
                        case SDL.KeySymbol.ESCAPE:
                          done = true;
                        break;
                        case SDL.KeySymbol.LEFT:
                          angle += 2.0;
                        break;
                        case SDL.KeySymbol.RIGHT:
                          angle -= 2.0;
                        break;
                        case SDL.KeySymbol.UP:
                          zoom += 0.1;
                        break;
                        case SDL.KeySymbol.DOWN:
                          zoom -= 0.1;
                        break;
                      }
                    break;
                  }
                }
     
                /* DRAWING STARTS HERE */
     
                screen.fill (null, screen.format.map_rgb (0, 0, 0));
     
                SDL.Surface tmp = SDLGraphics.RotoZoom.rotozoom (bmp, angle, zoom, 1);
     
                SDL.Rect dstrect;
                dstrect.x = (int16)(screen.w - tmp.w) / 2;
                dstrect.y = (int16)(screen.h - tmp.h) / 2;
     
                tmp.blit_surface (null, screen, dstrect);
     
                /* DRAWING ENDS HERE */
     
                screen.flip ();
              }
            }
            else
            {
              print ("Unable to load bitmap: %s\n", SDL.get_error ());
            }
          }
          else
          {
            print ("Unable to set 640x480 video: %s\n", SDL.get_error ());
          }
        }
        else
        {
          print ("Unable to init SDL: %s\n", SDL.get_error ());
        }
        return 0;
      }
    }

    compilation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    valac --pkg sdl --pkg sdl-gfx main.vala

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