« Programmation GTK/Pixmaps » : différence entre les versions

Contenu supprimé Contenu ajouté
STyx (discussion | contributions)
m wikifié
DCimarosa (discussion | contributions)
m insertion source lang="C"
Ligne 2 :
 
Pour utiliser des pixmaps avec GTK, on doit d'abord construire une structure <code>GdkPixmap</code> en utilisant les fonctions de la couche GDK. Les pixmaps peuvent soit être créés à partir de données en memoire, ou à partir de données lues dans un fichier. Nous utiliserons chacun des appels pour créer un pixmap.
<source lang="C">
 
GdkPixmap *gdk_bitmap_create_from_data(GdkWindow *window,
gchar *data,
gint width,
gint height );
</source>
 
Cette fonction sert à créer un pixmap mono-plan (2 couleurs) à partir de données en mémoire. Chaque bit de la donnée data. width et height sont exprimés en pixels. Le pointeur vers un <code>GdkWindow</code> pointe sur la fenêtre courante car les ressources d'un pixmap n'ont de signification que dans le contexte de l'écran où il doit s'afficher.
<source lang="C">
 
GdkPixmap* gdk_pixmap_create_from_data(GdkWindow *window,
gchar *data,
Ligne 17 :
GdkColor *fg,
GdkColor *bg );
</source>
 
Cette fonction est utilisée pour créer un pixmap d'une profondeur donnée (nombre de couleurs) à partir de la donnée spécifiée pas data. <code>fg</code> et <code>bg</code> sont les couleurs à utiliser pour l'avant et l'arrière-plan.
<source lang="C">
 
GdkPixmap* gdk_pixmap_create_from_xpm(GdkWindow *window,
GdkBitmap **mask,
GdkColor *transparent_color,
const gchar *filename );
</source>
 
Le format XPM est une représentation des pixmaps reconnue par le système X Window. Il est largement utilisé et de nombreux utilitaires pour créer des fichiers d'images à ce format sont disponibles. Le fichier <code>filename</code> doit contenir une image dans ce format qui sera chargée dans la structure pixmap. Le masque <code>mask</code> indique quels sont les bits opaques du pixmap. Tous les autres bits sont colorisés en utilisant la couleur spécifiée par <code>transparent_color</code>. Un exemple d'utilisation est présenté ci-dessous.
<source lang="C">
 
GdkPixmap* gdk_pixmap_create_from_xpm_d(GdkWindow *window,
GdkBitmap **mask,
GdkColor *transparent_color,
gchar **data);
</source>
 
De petites images peuvent être intégrées dans un programme sous la forme de données <code>data</code> au format XPM. Un pixmap est créé en utilisant ces données au lieu de les lire dans un fichier. Un exemple de telles données est&nbsp;:
<source lang="C">
 
/* XPM */
static const char * xpm_data[] = {
Ligne 58 :
 
void gdk_pixmap_destroy( GdkPixmap *pixmap );
</source>
 
Lorsqu'on a utilisé un pixmap et que l'on en a plus besoin tout de suite, il est préférable de libérer la ressource en utilisant un appel à <code>gdk_pixmap_destroy</code>. Les pixmaps doivent être considérées comme une ressource précieuse.
 
Quand le pixmap est créé, on peut l'afficher comme un widget GTK. On doit créer un widget pixmap qui contiendra le pixmap GDK. Ceci est réalisé de la façon suivante&nbsp;:
<source lang="C">
 
GtkWidget* gtk_pixmap_new(GdkPixmap *pixmap,
GdkBitmap *mask );
</source>
 
Les autres fonctions pour les widgets pixmap sont&nbsp;:
<source lang="C">
 
guint gtk_pixmap_get_type( void );
void gtk_pixmap_set( GtkPixmap *pixmap,
Ligne 75 :
GdkPixmap **val,
GdkBitmap **mask);
</source>
 
<code>gtk_pixmap_set</code> sert à changer le pixmap pris en charge par le widget. val est le pixmap créé par le GDK.
 
Voici un exemple illustrant l'utilisation d'un pixmap dans un bouton&nbsp;:
<source lang="C">
 
#include <gtk/gtk.h>
Ligne 167 :
return 0;
}
</source>
 
Pour charger un fichier à partir d'un fichier XPM appelé <code>icon0.xpm</code> se trouvant dans le répertoire courant, on aurait créé le pixmap ainsi&nbsp;:
<source lang="C">
 
/* Charge un pixmap à partir d'un fichier */
Ligne 178 :
gtk_widget_show( pixmapwid );
gtk_container_add( GTK_CONTAINER(window), pixmapwid );
</source>
 
;Utilisation des formes:
 
Ligne 184 :
 
Une fenêtre avec forme est simplement un pixmap dont les pixels du fond sont transparents. Ainsi, lorsque l'image d'arrière-plan est multicolore, on ne la cache pas avec le bord de notre icône. L'exemple suivant affiche une image de brouette sur le bureau.
<source lang="C">
 
#include <gtk/gtk.h>
Ligne 360 :
return 0;
}
</source>
 
Pour rendre l'image de la brouette sensible aux clics, on peut lui attacher le signal "button_press_event" pour lui faire faire quelque chose. Les quelques lignes suivantes font que l'image sera sensible à un clic souris qui provoquera l'arrêt de l'application.
<source lang="C">
 
gtk_widget_set_events(window,
gtk_widget_get_events( window ) |
Ligne 369 :
gtk_signal_connect(GTK_OBJECT(window), "button_press_event",
GTK_SIGNAL_FUNC(close_application), NULL );
</source>
 
[[Catégorie:Programmation GTK plus (livre)]]