#include <math.h>
#include <GL/gl.h>
#include <glib/gstdio.h>
-#include <gis.h>
+#include <grits.h>
#include <rsl.h>
#include "level2.h"
/*********************
* Drawing functions *
*********************/
-static void _draw_radar(GisCallback *_self, gpointer _viewer)
+void aweather_level2_draw(GritsObject *_self, GritsOpenGL *opengl)
{
AWeatherLevel2 *self = AWEATHER_LEVEL2(_self);
if (!self->sweep || !self->sweep_tex)
/* Draw wsr88d */
Sweep *sweep = self->sweep;
- Radar_header *h = &self->radar->h;
- gdouble lat = (double)h->latd + (double)h->latm/60 + (double)h->lats/(60*60);
- gdouble lon = (double)h->lond + (double)h->lonm/60 + (double)h->lons/(60*60);
- gdouble elev = h->height;
- gis_viewer_center_position(self->viewer, lat, lon, elev);
-
glDisable(GL_ALPHA_TEST);
glDisable(GL_CULL_FACE);
glDisable(GL_LIGHTING);
double lx = sin(angle);
double ly = cos(angle);
- double near_dist = ray->h.range_bin1;
- double far_dist = ray->h.nbins*ray->h.gate_size + ray->h.range_bin1;
+ double near_dist = ray->h.range_bin1 - ((double)ray->h.gate_size/2.);
+ double far_dist = near_dist + (double)ray->h.nbins*ray->h.gate_size;
/* (find middle of bin) / scale for opengl */
// near left
g_debug("AWeatherLevel2: _set_sweep_cb");
AWeatherLevel2 *self = _self;
_load_sweep_gl(self);
- gtk_widget_queue_draw(GTK_WIDGET(self->viewer));
+ grits_object_queue_draw(_self);
g_object_unref(self);
return FALSE;
}
g_idle_add(_set_sweep_cb, self);
}
-AWeatherLevel2 *aweather_level2_new(GisViewer *viewer,
- AWeatherColormap *colormap, Radar *radar)
+AWeatherLevel2 *aweather_level2_new(Radar *radar, AWeatherColormap *colormap)
{
g_debug("AWeatherLevel2: new - %s", radar->h.radar_name);
AWeatherLevel2 *self = g_object_new(AWEATHER_TYPE_LEVEL2, NULL);
- self->viewer = viewer;
self->radar = radar;
self->colormap = colormap;
aweather_level2_set_sweep(self, DZ_INDEX, 0);
+
+ GritsPoint center;
+ Radar_header *h = &radar->h;
+ center.lat = (double)h->latd + (double)h->latm/60 + (double)h->lats/(60*60);
+ center.lon = (double)h->lond + (double)h->lonm/60 + (double)h->lons/(60*60);
+ center.elev = h->height;
+ GRITS_OBJECT(self)->center = center;
return self;
}
-AWeatherLevel2 *aweather_level2_new_from_file(GisViewer *viewer,
- AWeatherColormap *colormap,
- const gchar *file, const gchar *site)
+AWeatherLevel2 *aweather_level2_new_from_file(const gchar *file, const gchar *site,
+ AWeatherColormap *colormap)
{
g_debug("AWeatherLevel2: new_from_file %s %s", site, file);
if (!radar)
return NULL;
- return aweather_level2_new(viewer, colormaps, radar);
+ return aweather_level2_new(radar, colormaps);
}
static void _on_sweep_clicked(GtkRadioButton *button, gpointer _level2)
Radar *radar = level2->radar;
g_debug("AWeatherLevel2: get_config - %p, %p", level2, radar);
/* Clear existing items */
- gdouble elev;
+ gfloat elev;
guint rows = 1, cols = 1, cur_cols;
gchar row_label_str[64], col_label_str[64], button_str[64];
GtkWidget *row_label, *col_label, *button = NULL, *elev_box = NULL;
/****************
* GObject code *
****************/
-G_DEFINE_TYPE(AWeatherLevel2, aweather_level2, GIS_TYPE_CALLBACK);
+G_DEFINE_TYPE(AWeatherLevel2, aweather_level2, GRITS_TYPE_OBJECT);
static void aweather_level2_init(AWeatherLevel2 *self)
{
- GIS_CALLBACK(self)->callback = _draw_radar;
- GIS_CALLBACK(self)->user_data = self;
-}
-static void aweather_level2_dispose(GObject *_self)
-{
- g_debug("AWeatherLevel2: dispose - %p", _self);
- G_OBJECT_CLASS(aweather_level2_parent_class)->dispose(_self);
}
static void aweather_level2_finalize(GObject *_self)
{
static void aweather_level2_class_init(AWeatherLevel2Class *klass)
{
G_OBJECT_CLASS(klass)->finalize = aweather_level2_finalize;
- G_OBJECT_CLASS(klass)->dispose = aweather_level2_dispose;
+ GRITS_OBJECT_CLASS(klass)->draw = aweather_level2_draw;
}