+/*
+ * Copyright (C) 2009 Andy Spencer <spenceal@rose-hulman.edu>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
#include <config.h>
#include <gtk/gtk.h>
#include <gtk/gtkgl.h>
*data = buf;
}
+static void load_color_table(char *table)
+{
+ /* TODO: replace this with a better color table */
+ g_message("loading color table");
+ if (g_str_equal(table, "Velocity"))
+ RSL_load_vel_color_table();
+ else if (g_str_equal(table, "Spectrum width"))
+ RSL_load_sw_color_table();
+ else
+ RSL_load_refl_color_table();
+ RSL_get_color_table(RSL_RED_TABLE, red, &nred);
+ RSL_get_color_table(RSL_GREEN_TABLE, green, &ngreen);
+ RSL_get_color_table(RSL_BLUE_TABLE, blue, &nblue);
+}
+
/* Load a sweep as the active texture */
static void load_sweep(Sweep *sweep)
{
char *label = g_strdup_printf("Tilt: %.2f (%s)", sweep->h.elev, vol->h.type_str);
button = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(button), label);
g_object_set(button, "draw-indicator", FALSE, NULL);
+ g_signal_connect_swapped(button, "clicked", G_CALLBACK(load_color_table), vol->h.type_str);
g_signal_connect_swapped(button, "clicked", G_CALLBACK(load_sweep), sweep);
gtk_box_pack_start(GTK_BOX(vbox), button, FALSE, TRUE, 0);
g_free(label);
return;
}
- /* TODO: replace this with a better color table */
- g_message("loading color table");
- RSL_load_refl_color_table();
- RSL_get_color_table(RSL_RED_TABLE, red, &nred);
- RSL_get_color_table(RSL_GREEN_TABLE, green, &ngreen);
- RSL_get_color_table(RSL_BLUE_TABLE, blue, &nblue);
-
/* Load the first sweep by default */
if (radar->h.nvolumes < 1 || radar->v[0]->h.nsweeps < 1) {
g_warning("No sweeps found\n");
if (radar->v[vi]== NULL) continue;
for (int si = 0; si < radar->v[vi]->h.nsweeps; si++) {
if (radar->v[vi]->sweep[si]== NULL) continue;
+ load_color_table(radar->v[vi]->h.type_str);
load_sweep(radar->v[vi]->sweep[si]);
break;
}
if (g_file_test(raw, G_FILE_TEST_EXISTS)) {
load_radar_rsl(0, 0, raw);
} else {
- char *argv[] = {"./wsr88ddec", path, raw, NULL};
+ char *argv[] = {"wsr88ddec", path, raw, NULL};
GPid pid;
GError *error = NULL;
g_spawn_async(
NULL, // const gchar *working_directory,
argv, // gchar **argv,
NULL, // gchar **envp,
- G_SPAWN_DO_NOT_REAP_CHILD, // GSpawnFlags flags,
+ G_SPAWN_SEARCH_PATH|
+ G_SPAWN_DO_NOT_REAP_CHILD,
+ // GSpawnFlags flags,
NULL, // GSpawnChildSetupFunc child_setup,
NULL, // gpointer user_data,
&pid, // GPid *child_pid,
glPushMatrix();
glBindTexture(GL_TEXTURE_2D, sweep_tex);
glEnable(GL_TEXTURE_2D);
+ glDisable(GL_ALPHA_TEST);
glColor4f(1,1,1,1);
glBegin(GL_QUAD_STRIP);
for (int ri = 0; ri <= sweep->h.nrays+1; ri++) {
/* Print the color table */
glDisable(GL_TEXTURE_2D);
+ glDisable(GL_DEPTH_TEST);
glMatrixMode(GL_MODELVIEW ); glPushMatrix(); glLoadIdentity();
glMatrixMode(GL_PROJECTION); glPushMatrix(); glLoadIdentity();
glBegin(GL_QUADS);
glVertex3f(-0.9, (float)((i ) - nred/2)/(nred/2), 0.0); // bot right
}
glEnd();
+ glEnable(GL_DEPTH_TEST);
+ glEnable(GL_ALPHA_TEST);
glMatrixMode(GL_PROJECTION); glPopMatrix();
glMatrixMode(GL_MODELVIEW ); glPopMatrix();
return FALSE;