SUBDIRS = src
-test:
- ./src/aweather
+test: all
+ LD_LIBRARY_PATH=/usr/local/trmm/GVBOX/lib/ ./src/aweather
bin_PROGRAMS = aweather
-aweather_SOURCES = aweather.c aweather.h cube.c cube.h
-aweather_CPPFLAGS = @PACKAGE_CFLAGS@
-aweather_LDADD = @PACKAGE_LIBS@
+aweather_SOURCES = aweather.c opengl.c cube.c radar.c
+aweather_CPPFLAGS = @PACKAGE_CFLAGS@ -I/usr/local/trmm/GVBOX/include/
+aweather_LDADD = @PACKAGE_LIBS@ -L/usr/local/trmm/GVBOX/lib/ -lrsl
+
+
GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_default_size(GTK_WINDOW(window), 800, 600);
g_signal_connect(G_OBJECT(window), "delete-event", G_CALLBACK(delete_event), NULL);
- g_signal_connect(G_OBJECT(window), "delete-event", G_CALLBACK(delete_event), NULL);
g_signal_connect(G_OBJECT(window), "key-press-event", G_CALLBACK(key_press), NULL);
/* Set up layout */
gtk_notebook_append_page(GTK_NOTEBOOK(tab_area), contents, label);
/* Load plugins */
- cube_init(drawing, tab_area);
+ opengl_init(GTK_DRAWING_AREA(drawing), GTK_NOTEBOOK(tab_area));
+ cube_init (GTK_DRAWING_AREA(drawing), GTK_NOTEBOOK(tab_area));
+ radar_init (GTK_DRAWING_AREA(drawing), GTK_NOTEBOOK(tab_area));
gtk_widget_show_all(window);
gtk_main();
#include <GL/gl.h>
#include <math.h>
+static gboolean expose(GtkWidget *da, GdkEventExpose *event, gpointer user_data);
+static gboolean rotate(gpointer user_data);
+
static GtkWidget *rotate_button;
float boxv[][3] = {
static float ang = 30.;
-gboolean expose (GtkWidget *da, GdkEventExpose *event, gpointer user_data)
+static gboolean expose(GtkWidget *da, GdkEventExpose *event, gpointer user_data)
{
GdkGLContext *glcontext = gtk_widget_get_gl_context (da);
GdkGLDrawable *gldrawable = gtk_widget_get_gl_drawable (da);
- // g_print (" :: expose\n");
-
- if (!gdk_gl_drawable_gl_begin (gldrawable, glcontext))
- {
- g_assert_not_reached ();
- }
-
/* draw in here */
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glRotatef (ang, 1, 0, 1);
glPopMatrix ();
- if (gdk_gl_drawable_is_double_buffered (gldrawable))
- gdk_gl_drawable_swap_buffers (gldrawable);
-
- else
- glFlush ();
-
- gdk_gl_drawable_gl_end (gldrawable);
-
- return TRUE;
-}
-
-gboolean configure(GtkWidget *da, GdkEventConfigure *event, gpointer user_data)
-{
- GdkGLContext *glcontext = gtk_widget_get_gl_context (da);
- GdkGLDrawable *gldrawable = gtk_widget_get_gl_drawable (da);
-
- if (!gdk_gl_drawable_gl_begin (gldrawable, glcontext))
- {
- g_assert_not_reached ();
- }
-
- glLoadIdentity();
- glViewport (0, 0, da->allocation.width, da->allocation.height);
- glOrtho (-10,10,-10,10,-20050,10000);
- glEnable (GL_BLEND);
- glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
-
- glScalef (10., 10., 10.);
-
- gdk_gl_drawable_gl_end (gldrawable);
-
- return TRUE;
+ return FALSE;
}
-gboolean rotate (gpointer user_data)
+static gboolean rotate(gpointer user_data)
{
if (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(rotate_button)))
return TRUE;
gtk_notebook_append_page(GTK_NOTEBOOK(config), rotate_button, label);
/* Set up OpenGL Stuff */
- g_signal_connect(drawing, "configure-event", G_CALLBACK(configure), NULL);
- g_signal_connect(drawing, "expose-event", G_CALLBACK(expose), NULL);
+ g_signal_connect(drawing, "expose-event", G_CALLBACK(expose), NULL);
g_timeout_add(1000/60, rotate, drawing);
}
#ifndef CUBE_H
#define CUBE_H
-gboolean expose(GtkWidget *da, GdkEventExpose *event, gpointer user_data);
-gboolean configure(GtkWidget *da, GdkEventConfigure *event, gpointer user_data);
-gboolean rotate(gpointer user_data);
+gboolean cube_init(GtkDrawingArea *drawing, GtkNotebook *config);
#endif
#include <bzlib.h>
#include "level2.h"
+/* Not used in favor of RSL */
level2_packet_t **level2_split_packets(char *data, int *num_packets, int data_size)
{
int packet_i = 0;
return packets;
}
+/* Not used in favor of RSL */
level2_packet_t *level2_decompress(char *raw_data, int *num_packets)
{
/* Read header */
//return level2_split_packets(data, num_packets, data_size);
}
+
+
int main(int argc, char **argv)
{
if (argc < 2) {
--- /dev/null
+#include <config.h>
+#include <gtk/gtk.h>
+#include <gtk/gtkgl.h>
+#include <GL/gl.h>
+
+static gboolean expose_start(GtkWidget *da, GdkEventExpose *event, gpointer user_data)
+{
+ GdkGLContext *glcontext = gtk_widget_get_gl_context (da);
+ GdkGLDrawable *gldrawable = gtk_widget_get_gl_drawable (da);
+
+ if (!gdk_gl_drawable_gl_begin (gldrawable, glcontext)) {
+ g_assert_not_reached ();
+ }
+
+ /* draw in here */
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+}
+/* Plugins run stuff here */
+static gboolean expose_end(GtkWidget *da, GdkEventExpose *event, gpointer user_data)
+{
+ GdkGLContext *glcontext = gtk_widget_get_gl_context (da);
+ GdkGLDrawable *gldrawable = gtk_widget_get_gl_drawable (da);
+
+ if (gdk_gl_drawable_is_double_buffered (gldrawable))
+ gdk_gl_drawable_swap_buffers (gldrawable);
+ else
+ glFlush ();
+
+ gdk_gl_drawable_gl_end (gldrawable);
+
+ return FALSE;
+}
+static gboolean configure(GtkWidget *da, GdkEventConfigure *event, gpointer user_data)
+{
+ GdkGLContext *glcontext = gtk_widget_get_gl_context (da);
+ GdkGLDrawable *gldrawable = gtk_widget_get_gl_drawable (da);
+
+ if (!gdk_gl_drawable_gl_begin (gldrawable, glcontext))
+ g_assert_not_reached ();
+
+ glLoadIdentity();
+ glViewport (0, 0, da->allocation.width, da->allocation.height);
+ glOrtho (-10,10,-10,10,-20050,10000);
+ glEnable (GL_BLEND);
+ glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+
+ glScalef (10., 10., 10.);
+
+ gdk_gl_drawable_gl_end (gldrawable);
+
+ return TRUE;
+}
+
+gboolean opengl_init(GtkDrawingArea *drawing, GtkNotebook *config)
+{
+ /* Set up OpenGL Stuff */
+ g_signal_connect(drawing, "configure-event", G_CALLBACK(configure), NULL);
+
+ //g_signal_connect(drawing, "expose-event", G_CALLBACK(expose), NULL);
+ g_signal_connect (drawing, "expose-event", G_CALLBACK(expose_start), NULL);
+ g_signal_connect_after(drawing, "expose-event", G_CALLBACK(expose_end), NULL);
+}
--- /dev/null
+#ifndef OPENGL_H
+#define OPENGL_H
+
+gboolean opengl_init(GtkDrawingArea *drawing, GtkNotebook *config);
+
+#endif
--- /dev/null
+#include <config.h>
+#include <gtk/gtk.h>
+#include <gtk/gtkgl.h>
+#include <gdk/gdkkeysyms.h>
+#include <GL/gl.h>
+#include <math.h>
+
+#include "rsl.h"
+
+#include "radar.h"
+
+static GtkWidget *rotate_button;
+static Radar *radar;
+
+static gboolean expose(GtkWidget *da, GdkEventExpose *event, gpointer user_data)
+{
+ GdkGLContext *glcontext = gtk_widget_get_gl_context (da);
+ GdkGLDrawable *gldrawable = gtk_widget_get_gl_drawable (da);
+
+ /* draw in here */
+ glPushMatrix();
+
+ glRotatef(0, 0, 0, 0);
+
+ glShadeModel(GL_FLAT);
+
+ glBegin (GL_TRIANGLE_FAN);
+ glVertex3f(0., 0., 0.);
+ glVertex3f(0., .5, 0.);
+
+ int angle;
+ for (angle = 1; angle <= 360; angle++) {
+ double rad = (angle*M_PI)/180.0;
+ double x = sin(rad);
+ double y = cos(rad);
+ //g_printf("tick.. %d - %5.3f: (%5.2f,%5.2f)\n", angle, rad, x, y);
+ glColor3f((float)angle/360.0, 0., 0.);
+ glVertex3f(x/2., y/2., 0.);
+ }
+
+ glEnd ();
+
+ glPopMatrix ();
+
+ return FALSE;
+}
+
+gboolean radar_init(GtkDrawingArea *drawing, GtkNotebook *config)
+{
+ /* Add configuration tab */
+ GtkWidget *label = gtk_label_new("Radar");
+ rotate_button = gtk_toggle_button_new_with_label("Rotate");
+ gtk_notebook_append_page(GTK_NOTEBOOK(config), rotate_button, label);
+
+ /* Set up OpenGL Stuff */
+ g_signal_connect(drawing, "expose-event", G_CALLBACK(expose), NULL);
+
+ /* Parse hard coded file.. */
+ RSL_read_these_sweeps("0", NULL);
+ radar = RSL_wsr88d_to_radar("/scratch/aweather/src/KABR_20080609_0224", "KABR");
+ RSL_load_refl_color_table();
+ RSL_volume_to_gif(radar->v[DZ_INDEX], "dz_sweep", 400, 400, 200.0);
+}
--- /dev/null
+#ifndef RADAR_H
+#define RADAR_H
+
+gboolean radar_init(GtkDrawingArea *drawing, GtkNotebook *config);
+
+#endif