#ifndef __V5D_CALLBACKS__ #define __V5D_CALLBACKS__ 1 #include #if defined(HAVE_OPENGL) # ifndef WORDS_BIGENDIAN # define PACK_COLOR(R,G,B,A) ( (A)<<24 | (B)<<16 | (G)<<8 | (R) ) # define UNPACK_RED(X) ( (X) & 0xff ) # define UNPACK_GREEN(X) ( ( (X) >> 8 ) & 0xff ) # define UNPACK_BLUE(X) ( ( (X) >> 16 ) & 0xff ) # define UNPACK_ALPHA(X) ( ( (X) >> 24 ) & 0xff ) # else # define PACK_COLOR(R,G,B,A) ( (R)<<24 | (G)<<16 | (B)<<8 | (A) ) # define UNPACK_RED(X) ( ( (X) >> 24 ) & 0xff ) # define UNPACK_GREEN(X) ( ( (X) >> 16 ) & 0xff ) # define UNPACK_BLUE(X) ( ( (X) >> 8 ) & 0xff ) # define UNPACK_ALPHA(X) ( (X) & 0xff ) # endif #endif typedef enum { HSLICE=0, CHSLICE, VSLICE, CVSLICE, ISOSURF, VOLUME } v5d_graph_type; typedef struct { GtkWidget *preview; /* the colors array is always of length one or 256, ncolors refers to the number of colors requested by the user not to the size of the array */ gchar *name; gint ncolors; guint *colors; guchar *orig_alpha; guchar *buffer; } preview_area; typedef struct { int labelid; v5d_graph_type gtype; gpointer data; } graph_label; typedef struct { gint v5d_display_context; gint beginx,beginy; /* position of mouse */ float zoom; /* field of view in degrees */ GtkWidget *GtkGlArea; int animate; guint32 animate_speed; gint timeout_id; gint stepsize; int timestep; int numtimes; int vcs; int label_count; GPtrArray *vinfo_array; GList *graph_label_list; GtkWidget *ProcedureDialog; } v5d_info; typedef struct { gfloat min, max, interval, level, height, pressure; gdouble color[4]; gint linewidth; gint stipplefactor; gushort stipple; gboolean onscreen; graph_label *label; preview_area *sample; guint alpha_adjust; GtkWidget *level_value; /* the vertical level label */ gchar *var; /* should be a reference used for procedure saving */ } hslicecontrols; typedef struct { gfloat min, max, interval; gfloat r0, r1, c0, c1; gdouble color[4]; gint linewidth; gint stipplefactor; gushort stipple; gboolean onscreen; gchar *colortable; graph_label *label; preview_area *sample; guint alpha_adjust; gchar *var; /* should be a reference used for procedure saving */ } vslicecontrols; typedef struct { v5d_graph_type type; gpointer data; } controls; typedef struct { gint v5d_data_context; gint varid; v5d_info *info; gint maxlevel; gchar vname[10]; GList *ControlList; hslicecontrols *hs, *chs; vslicecontrols *vs, *cvs; GtkWidget *VarGraphicsDialog; } v5d_var_info; typedef enum { DATA_FILE, PROCEDURE_FILE, TOPO_FILE, MAP_FILE, SAVE_PROCEDURE_FILE } openwhatfile; void on_fileselect_ok (GtkButton *button, gpointer user_data); void on_fileselect_cancel (GtkButton *button, gpointer user_data); void on_fontselectionbutton_clicked (GtkButton *button, gpointer user_data); void on_ColorSelectionOk_clicked (GtkButton *button, gpointer user_data); void on_ColorSelectionCancel_clicked (GtkButton *button, gpointer user_data); GtkWidget * new_ColorSelectionDialog(void); void Invoke_VerifyDialog(gchar *label, GtkSignalFunc on_okay, gpointer okay_data, GtkSignalFunc on_cancel, gpointer cancel_data); #endif