/** pixmap.c **/ #include #include "logo.xpm" gint eventDelete(GtkWidget *widget, GdkEvent *event,gpointer data); gint eventDestroy(GtkWidget *widget, GdkEvent *event,gpointer data); gboolean eventDraw(GtkWidget *widget, GdkEvent *event,gpointer data); #define WIDTH 500 #define HEIGHT 300 int main(int argc,char *argv[]) { GtkWidget *app; GtkWidget *area; gnome_init("pixmap","1.0",argc,argv); app = gnome_app_new("pixmap","Pixmaps Etcetera"); gtk_signal_connect(GTK_OBJECT(app),"delete_event", GTK_SIGNAL_FUNC(eventDelete),NULL); gtk_signal_connect(GTK_OBJECT(app),"destroy", GTK_SIGNAL_FUNC(eventDestroy),NULL); area = gtk_drawing_area_new(); gtk_widget_set_usize(area,WIDTH,HEIGHT); gnome_app_set_contents(GNOME_APP(app),area); gtk_signal_connect(GTK_OBJECT(area),"event", GTK_SIGNAL_FUNC(eventDraw),NULL); gtk_widget_show_all(app); gtk_main(); exit(0); } gboolean eventDraw(GtkWidget *widget, GdkEvent *event,gpointer data) { GdkBitmap *mask; GdkPixmap *pixmap; GtkStyle *style; GdkFont *font = gdk_font_load("10x20"); static GdkPoint points[] = { { 210, 253 }, { 220, 245 }, { 220, 252 }, { 295, 252 }, { 295, 254 }, { 220, 254 }, { 220, 260 }, }; style = gtk_widget_get_style(widget); pixmap = gdk_pixmap_create_from_xpm_d(widget->window, &mask,&style->bg[GTK_STATE_NORMAL], (gchar **)logo); gdk_draw_pixmap(widget->window, widget->style->black_gc, pixmap, 0,0, 0,0, 257,303); gdk_draw_pixmap(widget->window, widget->style->black_gc, pixmap, 70,60, 210,50, 90,50); gdk_draw_string(widget->window, font, widget->style->white_gc, 240,75, "Beak"); gdk_draw_pixmap(widget->window, widget->style->black_gc, pixmap, 0,200, 350,105, 100,100); gdk_draw_string(widget->window, font, widget->style->black_gc, 350,210, "Right"); gdk_draw_string(widget->window, font, widget->style->black_gc, 300,260, "Left"); gdk_draw_polygon(widget->window, widget->style->black_gc, TRUE, points, sizeof(points) / sizeof(GdkPoint)); gdk_pixmap_unref(pixmap); gdk_font_unref(font); return(TRUE); } gint eventDelete(GtkWidget *widget, GdkEvent *event,gpointer data) { return(FALSE); } gint eventDestroy(GtkWidget *widget, GdkEvent *event,gpointer data) { gtk_main_quit(); return(0); }