/** pixels.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); #define WIDTH 400 #define HEIGHT 200 int main(int argc,char *argv[]) { GtkWidget *app; GtkWidget *area; gnome_init("pixels","1.0",argc,argv); app = gnome_app_new("pixels","Drawing Pixels"); 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 GdkPoint points[] = { { 50,100 }, { 51,100 }, { 50,101 }, { 51,101 }, { 60,100 }, { 61,100 }, { 60,101 }, { 61,101 }, { 55,105 }, { 56,105 }, { 55,106 }, { 56,106 }, { 50,110 }, { 51,111 }, { 52,112 }, { 53,112 }, { 54,113 }, { 55,113 }, { 56,113 }, { 57,113 }, { 58,112 }, { 59,112 }, { 60,111 }, { 61,110 }, }; gint x = WIDTH/4; gint y = 0; gint i; while(y < HEIGHT) { for(i=0; i<10; i++) { gdk_draw_point(widget->window, widget->style->black_gc, x++, y); } for(i=0; i<10; i++) { gdk_draw_point(widget->window, widget->style->white_gc, x, y++); } } srand(1); for(i=0; i<2000; i++) { x = (int)(((double)rand()*WIDTH)/RAND_MAX); y = (int)(((double)rand()*HEIGHT)/RAND_MAX); gdk_draw_point(widget->window, widget->style->white_gc, x, y); } gdk_draw_points(widget->window, widget->style->black_gc, points, sizeof(points)/sizeof(GdkPoint)); 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); }