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

Contenu supprimé Contenu ajouté
m using AWB
DannyS712 (discussion | contributions)
m <source> -> <syntaxhighlight> (phab:T237267)
Ligne 5 :
 
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.
<sourcesyntaxhighlight lang="C">
GdkPixmap *gdk_bitmap_create_from_data(GdkWindow *window,
gchar *data,
gint width,
gint height );
</syntaxhighlight>
</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.
<sourcesyntaxhighlight lang="C">
GdkPixmap* gdk_pixmap_create_from_data(GdkWindow *window,
gchar *data,
Ligne 20 :
GdkColor *fg,
GdkColor *bg );
</syntaxhighlight>
</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.
<sourcesyntaxhighlight lang="C">
GdkPixmap* gdk_pixmap_create_from_xpm(GdkWindow *window,
GdkBitmap **mask,
GdkColor *transparent_color,
const gchar *filename );
</syntaxhighlight>
</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.
<sourcesyntaxhighlight lang="C">
GdkPixmap* gdk_pixmap_create_from_xpm_d(GdkWindow *window,
GdkBitmap **mask,
GdkColor *transparent_color,
gchar **data);
</syntaxhighlight>
</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;:
<sourcesyntaxhighlight lang="C">
/* XPM */
static const char * xpm_data[] = {
Ligne 61 :
 
void gdk_pixmap_destroy( GdkPixmap *pixmap );
</syntaxhighlight>
</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;:
<sourcesyntaxhighlight lang="C">
GtkWidget* gtk_pixmap_new(GdkPixmap *pixmap,
GdkBitmap *mask );
</syntaxhighlight>
</source>
Les autres fonctions pour les widgets pixmap sont&nbsp;:
<sourcesyntaxhighlight lang="C">
guint gtk_pixmap_get_type( void );
void gtk_pixmap_set( GtkPixmap *pixmap,
Ligne 78 :
GdkPixmap **val,
GdkBitmap **mask);
</syntaxhighlight>
</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;:
<sourcesyntaxhighlight lang="C">
#include <gtk/gtk.h>
Ligne 170 :
return 0;
}
</syntaxhighlight>
</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;:
<sourcesyntaxhighlight lang="C">
/* Charge un pixmap à partir d'un fichier */
Ligne 181 :
gtk_widget_show( pixmapwid );
gtk_container_add( GTK_CONTAINER(window), pixmapwid );
</syntaxhighlight>
</source>
;Utilisation des formes:
 
Ligne 187 :
 
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.
<sourcesyntaxhighlight lang="C">
#include <gtk/gtk.h>
Ligne 363 :
return 0;
}
</syntaxhighlight>
</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.
<sourcesyntaxhighlight lang="C">
gtk_widget_set_events(window,
gtk_widget_get_events( window ) |
Ligne 372 :
gtk_signal_connect(GTK_OBJECT(window), "button_press_event",
GTK_SIGNAL_FUNC(close_application), NULL );
</syntaxhighlight>
</source>