/** setgc.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 GdkGC *functionCreateGC(GdkWindow *window); static GdkGC *valueCreateGC(GdkWindow *window); #define WIDTH 300 #define HEIGHT 100 int main(int argc,char *argv[]) { GtkWidget *app; GtkWidget *area; gnome_init("setgc","1.0",argc,argv); app = gnome_app_new("setgc","Setting GdkGC Values"); 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),area); gtk_widget_show_all(app); gtk_main(); exit(0); } gboolean eventDraw(GtkWidget *widget, GdkEvent *event,gpointer data) { GdkGC *gc; GtkWidget *area; area = GTK_WIDGET(data); gc = functionCreateGC(area->window); /**** gc = valueCreateGC(area->window); ****/ gdk_draw_line(area->window, gc, 20,HEIGHT/2, WIDTH-20,HEIGHT/2); return(TRUE); } static GdkGC *functionCreateGC(GdkWindow *window) { GdkGC *gc; GdkColormap *colormap; GdkColor foreground; gchar dash[2] = { 1, 20 }; gc = gdk_gc_new(window); colormap = gdk_colormap_get_system(); if(gdk_color_parse("white",&foreground)) { gdk_color_alloc(colormap,&foreground); gdk_gc_set_foreground(gc,&foreground); } gdk_gc_set_line_attributes(gc, 15, GDK_LINE_ON_OFF_DASH, GDK_CAP_ROUND, GDK_JOIN_MITER); gdk_gc_set_dashes(gc,0,dash,2); return(gc); } static GdkGC *valueCreateGC(GdkWindow *window) { GdkGC *gc; GdkColormap *colormap; GdkColor foreground; gchar dash[2] = { 1, 20 }; GdkGCValues values; colormap = gdk_colormap_get_system(); if(gdk_color_parse("white",&foreground)) gdk_color_alloc(colormap,&foreground); values.foreground = foreground; values.line_width = 15; values.line_style = GDK_LINE_ON_OFF_DASH; values.cap_style = GDK_CAP_ROUND; values.join_style = GDK_JOIN_MITER; gc = gdk_gc_new_with_values(window,&values, GDK_GC_FOREGROUND | GDK_GC_LINE_WIDTH | GDK_GC_LINE_STYLE | GDK_GC_CAP_STYLE | GDK_GC_JOIN_STYLE); gdk_gc_set_dashes(gc,0,dash,2); return(gc); } gint eventDelete(GtkWidget *widget, GdkEvent *event,gpointer data) { return(FALSE); } gint eventDestroy(GtkWidget *widget, GdkEvent *event,gpointer data) { gtk_main_quit(); return(0); }