]> Pileus Git - grits/blob - src/radar.c
better modularity, initial support for RSL
[grits] / src / radar.c
1 #include <config.h>
2 #include <gtk/gtk.h>
3 #include <gtk/gtkgl.h>
4 #include <gdk/gdkkeysyms.h>
5 #include <GL/gl.h>
6 #include <math.h>
7
8 #include "rsl.h"
9
10 #include "radar.h"
11
12 static GtkWidget *rotate_button;
13 static Radar *radar;
14
15 static gboolean expose(GtkWidget *da, GdkEventExpose *event, gpointer user_data)
16 {
17         GdkGLContext *glcontext = gtk_widget_get_gl_context (da);
18         GdkGLDrawable *gldrawable = gtk_widget_get_gl_drawable (da);
19
20         /* draw in here */
21         glPushMatrix();
22         
23         glRotatef(0, 0, 0, 0);
24
25         glShadeModel(GL_FLAT);
26
27         glBegin (GL_TRIANGLE_FAN);
28         glVertex3f(0., 0., 0.);
29         glVertex3f(0., .5, 0.);
30
31         int angle;
32         for (angle = 1; angle <= 360; angle++) {
33                 double rad = (angle*M_PI)/180.0; 
34                 double x = sin(rad);
35                 double y = cos(rad);
36                 //g_printf("tick.. %d - %5.3f: (%5.2f,%5.2f)\n", angle, rad, x, y);
37                 glColor3f((float)angle/360.0, 0., 0.);
38                 glVertex3f(x/2., y/2., 0.);
39         }
40
41         glEnd ();
42         
43         glPopMatrix ();
44
45         return FALSE;
46 }
47
48 gboolean radar_init(GtkDrawingArea *drawing, GtkNotebook *config)
49 {
50         /* Add configuration tab */
51         GtkWidget *label = gtk_label_new("Radar");
52         rotate_button = gtk_toggle_button_new_with_label("Rotate");
53         gtk_notebook_append_page(GTK_NOTEBOOK(config), rotate_button, label);
54
55         /* Set up OpenGL Stuff */
56         g_signal_connect(drawing, "expose-event", G_CALLBACK(expose), NULL);
57
58         /* Parse hard coded file.. */
59         RSL_read_these_sweeps("0", NULL);
60         radar = RSL_wsr88d_to_radar("/scratch/aweather/src/KABR_20080609_0224", "KABR");
61         RSL_load_refl_color_table();
62         RSL_volume_to_gif(radar->v[DZ_INDEX], "dz_sweep", 400, 400, 200.0);
63 }