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.
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.
[Amélioration]
Transmettre les événements gtk à SDL
[Amélioration]
Redimensionner le widget lorsque le widget parent change de taille
[Amélioration]
Rafraichir automatiquement le widget (rendre inutile l'appel à gtk_sdl_display_update)
[Amélioration]
Compléter la doc (compilation, ...)
[Fait]
Créer un fichier .pc pour pkg-config (passer par un fichier .pc.in + autotools)
[Fait]
GTK_SDL_CHECK_VERSION
[Amélioration]
Pouvoir détacher la surface afin de faire du plein écran.
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
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
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.
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
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager