/** visual.c **/ #include gint eventDelete(GtkWidget *widget, GdkEvent *event,gpointer data); gint eventDestroy(GtkWidget *widget, GdkEvent *event,gpointer data); int main(int argc,char *argv[]) { GtkWidget *app; GtkWidget *label; GdkVisual *visual; gchar work[80]; gchar text[4096]; gnome_init("visual","1.0",argc,argv); app = gnome_app_new("visual","GdkVisual"); gtk_container_set_border_width(GTK_CONTAINER(app),30); 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); visual = gdk_visual_get_system(); sprintf(text,"Type: "); switch(visual->type) { case GDK_VISUAL_STATIC_GRAY: strcat(text,"Static Gray\n"); break; case GDK_VISUAL_GRAYSCALE: strcat(text,"Grayscale\n"); break; case GDK_VISUAL_STATIC_COLOR: strcat(text,"Static Color\n"); break; case GDK_VISUAL_PSEUDO_COLOR: strcat(text,"Pseudo Color\n"); break; case GDK_VISUAL_TRUE_COLOR: strcat(text,"True Color\n"); break; case GDK_VISUAL_DIRECT_COLOR: strcat(text,"Direct Color\n"); break; } sprintf(work,"Depth (number of bits per pixel): %d\n", visual->depth); strcat(text,work); strcat(text,"Byte order: "); switch(visual->byte_order) { case GDK_LSB_FIRST: strcat(text,"LSB first\n"); break; case GDK_MSB_FIRST: strcat(text,"MSB first\n"); break; } sprintf(work,"\nSize of colormap array: %d\n", visual->colormap_size); strcat(text,work); sprintf(work,"Colormap bits per RGB: %d\n", visual->bits_per_rgb); strcat(text,work); strcat(text, "\nColor Mask Shift Bits\n"); sprintf(work," red 0x%08X %2d %2d\n", visual->red_mask,visual->red_shift, visual->red_prec); strcat(text,work); sprintf(work,"green 0x%08X %2d %2d\n", visual->green_mask,visual->green_shift, visual->green_prec); strcat(text,work); sprintf(work," blue 0x%08X %2d %2d\n", visual->blue_mask,visual->blue_shift, visual->blue_prec); strcat(text,work); label = gtk_label_new(text); gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_LEFT); gtk_misc_set_padding(GTK_MISC(label),GNOME_PAD,0); gnome_app_set_contents(GNOME_APP(app),label); gtk_widget_show_all(app); gtk_main(); exit(0); } gint eventDelete(GtkWidget *widget, GdkEvent *event,gpointer data) { return(FALSE); } gint eventDestroy(GtkWidget *widget, GdkEvent *event,gpointer data) { gtk_main_quit(); return(0); }