From cab835a95f60e25d90c1793cc614046132c98f80 Mon Sep 17 00:00:00 2001 From: Oliver Schinagl Date: Thu, 10 Jan 2008 13:57:36 +0000 Subject: fixed isolines dataset selection --- Smoke/gtk_isolines.c | 74 +++++++++++++++++++++++++++------------------------- Smoke/isolines.c | 19 +++++++++++--- Smoke/isolines.h | 3 +++ 3 files changed, 57 insertions(+), 39 deletions(-) diff --git a/Smoke/gtk_isolines.c b/Smoke/gtk_isolines.c index d0662e4..296cfe4 100644 --- a/Smoke/gtk_isolines.c +++ b/Smoke/gtk_isolines.c @@ -56,6 +56,16 @@ static gboolean select_alpha(GtkRange *adjustment, gpointer data) return TRUE; } +static gboolean set_dataset(GtkToggleButton *button, gpointer data) +{ + if (gtk_toggle_button_get_active(button)) { + isolines_set_dataset((int)data); + } + + return TRUE; +} + + GtkWidget *create_isolines_page(void) { @@ -73,49 +83,41 @@ GtkWidget *create_isolines_page(void) page = gtk_vbox_new(FALSE, 0); - frame = gtk_frame_new("Scalarset"); + frame = gtk_frame_new("Dataset"); box = gtk_hbox_new(FALSE, 0); button = gtk_radio_button_new_with_label (NULL, "Rho"); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), TRUE); - g_signal_connect (G_OBJECT(button), "clicked", G_CALLBACK(set_glyph_scalar), (gpointer)SCALAR_RHO); - gtk_box_pack_start(GTK_BOX(box), button, TRUE, TRUE, 0); + if (isolines_get_dataset() == DATASET_RHO) { + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), TRUE); + } else { + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), FALSE); + } + g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(set_dataset), (gpointer)DATASET_RHO); + gtk_box_pack_start(GTK_BOX(box), button, TRUE, TRUE, 0); gtk_widget_show(button); dataset_group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(button)); button = gtk_radio_button_new_with_label(dataset_group, "Velocity"); - g_signal_connect (G_OBJECT(button), "clicked", G_CALLBACK(set_glyph_scalar), (gpointer)SCALAR_VEL); - gtk_box_pack_start(GTK_BOX(box), button, TRUE, TRUE, 0); + if (isolines_get_dataset() == DATASET_VEL) { + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), TRUE); + } else { + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), FALSE); + } + g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(set_dataset), (gpointer)DATASET_VEL); + gtk_box_pack_start(GTK_BOX(box), button, TRUE, TRUE, 0); gtk_widget_show(button); button = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(button), "Force"); - g_signal_connect (G_OBJECT(button), "clicked", G_CALLBACK(set_glyph_scalar), (gpointer)SCALAR_FORCE); - gtk_box_pack_start(GTK_BOX(box), button, TRUE, TRUE, 0); - gtk_widget_show(button); - - gtk_container_add(GTK_CONTAINER(frame), box); - gtk_widget_show(box); - - gtk_box_pack_start (GTK_BOX(page), frame, FALSE, TRUE, 0); - gtk_widget_show(frame); - - frame = gtk_frame_new("Vectorset"); - - box = gtk_hbox_new(FALSE, 0); - - button = gtk_radio_button_new_with_label(NULL, "Velocity"); - // g_signal_connect (G_OBJECT(button), "clicked", G_CALLBACK(set_glyph_vector), (gpointer)VECTOR_VEL); - gtk_box_pack_start(GTK_BOX(box), button, TRUE, TRUE, 0); - gtk_widget_show(button); - - dataset_group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(button)); - - button = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(button), "Force"); - // g_signal_connect (G_OBJECT(button), "clicked", G_CALLBACK(set_glyph_vector), (gpointer)VECTOR_FORCE); - gtk_box_pack_start(GTK_BOX(box), button, TRUE, TRUE, 0); - gtk_widget_show(button); + if (isolines_get_dataset() == DATASET_FORCE) { + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), TRUE); + } else { + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), FALSE); + } + g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(set_dataset), (gpointer)DATASET_FORCE); + gtk_box_pack_start(GTK_BOX(box), button, TRUE, TRUE, 0); + gtk_widget_show(button); gtk_container_add(GTK_CONTAINER(frame), box); gtk_widget_show(box); @@ -157,7 +159,7 @@ GtkWidget *create_isolines_page(void) gtk_widget_show(label); adjustment = GTK_ADJUSTMENT(gtk_adjustment_new( - isolines_get_alpha(), 0, 1, 0.05, 0.05, 0.01)); + isolines_get_alpha(), 0, 1, 0.05, 0.5, 0.01)); scale = gtk_hscale_new(adjustment); gtk_scale_set_digits(GTK_SCALE(scale), 1); g_signal_connect(GTK_RANGE(scale), "value-changed", G_CALLBACK(select_alpha), NULL); @@ -183,7 +185,7 @@ GtkWidget *create_isolines_page(void) adjustment = GTK_ADJUSTMENT(gtk_adjustment_new( - isolines_get_num_colors(), 1, PALETTE_MAXCOLORS, 0.5, 5, 0.1)); + isolines_get_num_colors(), 1, PALETTE_MAXCOLORS, 0.5, 5, 0)); scale = gtk_hscale_new(adjustment); gtk_scale_set_digits(GTK_SCALE(scale), 0); g_signal_connect(GTK_RANGE(scale), "value-changed", G_CALLBACK(select_num_colors), NULL); @@ -196,7 +198,7 @@ GtkWidget *create_isolines_page(void) gtk_box_pack_start(GTK_BOX(box), label, FALSE, TRUE, 0); gtk_widget_show(label); - adjustment = GTK_ADJUSTMENT(gtk_adjustment_new(isolines_get_nr(), 0, 8, 1, 1, 0)); + adjustment = GTK_ADJUSTMENT(gtk_adjustment_new(isolines_get_nr(), 0, 8, 0.05, 0.5, 0)); scale = gtk_hscale_new(adjustment); gtk_scale_set_digits(GTK_SCALE(scale), 0); g_signal_connect(GTK_RANGE(scale), "value-changed", G_CALLBACK(select_num_isolines), NULL); @@ -209,7 +211,7 @@ GtkWidget *create_isolines_page(void) gtk_box_pack_start(GTK_BOX(box), label, FALSE, TRUE, 0); gtk_widget_show(label); - adjustment = GTK_ADJUSTMENT(gtk_adjustment_new(isolines_get_threshold_min(), 0.01, 4, 0.01, 0.1, 0)); + adjustment = GTK_ADJUSTMENT(gtk_adjustment_new(isolines_get_threshold_min(), 0.01, 4, 0.05, 0.5, 0)); scale = gtk_hscale_new(adjustment); gtk_scale_set_digits(GTK_SCALE(scale), 2); g_signal_connect(GTK_RANGE(scale), "value-changed", G_CALLBACK(select_min_threshold), NULL); @@ -222,7 +224,7 @@ GtkWidget *create_isolines_page(void) gtk_box_pack_start(GTK_BOX(box), label, FALSE, TRUE, 0); gtk_widget_show(label); - adjustment = GTK_ADJUSTMENT(gtk_adjustment_new(isolines_get_threshold_max(), 0, 4, 0.01, 0.1, 0)); + adjustment = GTK_ADJUSTMENT(gtk_adjustment_new(isolines_get_threshold_max(), 0, 4, 0.05, 0.5, 0)); scale = gtk_hscale_new(adjustment); gtk_scale_set_digits(GTK_SCALE(scale), 2); g_signal_connect(GTK_RANGE(scale), "value-changed", G_CALLBACK(select_max_threshold), NULL); diff --git a/Smoke/isolines.c b/Smoke/isolines.c index ff0f3fe..42b22b0 100644 --- a/Smoke/isolines.c +++ b/Smoke/isolines.c @@ -6,6 +6,7 @@ #include +#include "fluids.h" #include "funcs.h" #include "palette.h" @@ -15,10 +16,13 @@ static int isolines_render = FALSE; static int isolines_num_colors = PALETTE_MAXCOLORS; static int isolines_colormap = PALETTE_RED; - static float isolines_alpha = 1.0f; + +static int isolines_dataset = DATASET_RHO; + static fftw_real *isolines_frame; -static float isolines_threshold_min = 0.2f; + +static float isolines_threshold_min = 0.1f; static float isolines_threshold_max = 2.0f; static int isolines_nr = 1; @@ -62,6 +66,16 @@ float isolines_get_alpha(void) return isolines_alpha; } +void isolines_set_dataset(int dataset) +{ + isolines_dataset = dataset; +} + +int isolines_get_dataset(void) +{ + return isolines_dataset; +} + void isolines_set_frame(fftw_real *frame) { isolines_frame = frame; @@ -72,7 +86,6 @@ fftw_real *isolines_get_frame(void) return isolines_frame; } - struct color4f isolines_get_color(float value) { struct color4f return_value; diff --git a/Smoke/isolines.h b/Smoke/isolines.h index aa5c661..608d723 100644 --- a/Smoke/isolines.h +++ b/Smoke/isolines.h @@ -13,6 +13,9 @@ int isolines_get_colormap(void); void isolines_set_alpha(float alpha); float isolines_get_alpha(void); +void isolines_set_dataset(int dataset); +int isolines_get_dataset(void); + void isolines_set_frame(fftw_real *frame); fftw_real *isolines_get_frame(void); -- cgit v0.12