/** text.c **/ #include gint eventDelete(GtkWidget *widget, GdkEvent *event,gpointer data); gint eventDestroy(GtkWidget *widget, GdkEvent *event,gpointer data); gboolean eventDraw(GtkWidget *widget, GdkEvent *event,gpointer data); static void mark(GtkWidget *widget,gint x,gint y); #define WIDTH 420 #define HEIGHT 140 int main(int argc,char *argv[]) { GtkWidget *app; GtkWidget *area; gnome_init("text","1.0",argc,argv); app = gnome_app_new("text","Drawing Text"); 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) { static gchar outString[] = "every character in the string is displayed"; GdkFont *font; font = gdk_font_load("vga"); gdk_draw_string(widget->window, font, widget->style->black_gc, 50,50, outString); gdk_font_unref(font); mark(widget,50,50); font = gdk_font_load("10x20"); gdk_draw_text(widget->window, font, widget->style->black_gc, 50,80, &outString[19], 23); gdk_font_unref(font); mark(widget,50,80); font = gdk_font_load("12x24"); gdk_draw_text(widget->window, font, widget->style->black_gc, 50,110, &outString[6], 9); gdk_font_unref(font); mark(widget,50,110); return(TRUE); } static void mark(GtkWidget *widget,gint x,gint y) { gdk_draw_line(widget->window, widget->style->white_gc, x - 5,y, x + 5,y); gdk_draw_line(widget->window, widget->style->white_gc, x,y-5, x,y+5); } gint eventDelete(GtkWidget *widget, GdkEvent *event,gpointer data) { return(FALSE); } gint eventDestroy(GtkWidget *widget, GdkEvent *event,gpointer data) { gtk_main_quit(); return(0); }