--- /dev/null
+diff -ru rsl-v1.40/colors/Makefile.am rsl-v1.40.new/colors/Makefile.am
+--- rsl-v1.40/colors/Makefile.am 1999-12-10 03:28:38.000000000 +0000
++++ rsl-v1.40.new/colors/Makefile.am 2008-12-27 11:26:01.000000000 +0000
+@@ -1,6 +1,6 @@
+ AUTOMAKE_OPTIONS = foreign
+
+-colordir = $(prefix)/lib/colors
++colordir = $(datadir)/rsl/colors
+ color_DATA = *.???
+
+ EXTRA_DIST = $(color_DATA)
+diff -ru rsl-v1.40/colors/Makefile.in rsl-v1.40.new/colors/Makefile.in
+--- rsl-v1.40/colors/Makefile.in 2008-12-27 11:30:45.000000000 +0000
++++ rsl-v1.40.new/colors/Makefile.in 2008-12-27 11:26:07.000000000 +0000
+@@ -166,7 +166,7 @@
+ sysconfdir = @sysconfdir@
+ target_alias = @target_alias@
+ AUTOMAKE_OPTIONS = foreign
+-colordir = $(prefix)/lib/colors
++colordir = $(datadir)/rsl/colors
+ color_DATA = *.???
+ EXTRA_DIST = $(color_DATA)
+ all: all-am
+diff -ru rsl-v1.40/Makefile.am rsl-v1.40.new/Makefile.am
+--- rsl-v1.40/Makefile.am 2008-10-10 20:06:57.000000000 +0000
++++ rsl-v1.40.new/Makefile.am 2008-12-27 11:25:59.000000000 +0000
+@@ -1,73 +1,49 @@
+ ## Process w/ automake. Or, autoreconf; make ##
++AM_CFLAGS = -DDATADIR="\"$(datadir)/rsl\""
+ AUTOMAKE_OPTIONS = foreign
+ SUBDIRS = . colors doc examples
+ INCLUDES = -I. -I$(srcdir) -I$(prefix)/include -I$(prefix)/toolkit/include
+
+-includedir = $(prefix)/include
+-colordir = $(libdir)/colors
+-
+ lib_LTLIBRARIES = librsl.la
+
+-librsl_la_LDFLAGS = -version-info 1:40
+-librsl_la_SOURCES = \
+-$(rapic_c) $(radtec_c)\
+-dorade.c dorade_print.c dorade_to_radar.c\
+-lassen.c lassen_to_radar.c \
+-edge_to_radar.c \
+- radar.c volume.c image_gen.c cappi.c fraction.c read_write.c farea.c \
+- range.c radar_to_uf.c uf_to_radar.c wsr88d_to_radar.c \
+- carpi.c cube.c sort_rays.c toga_to_radar.c gts.c histogram.c \
+- ray_indexes.c anyformat_to_radar.c get_win.c endian.c mcgill_to_radar.c \
+- mcgill.c interp.c toga.c wsr88d.c wsr88d_get_site.c wsr88d_m31.c \
+- gzip.c prune.c reverse.c fix_headers.c \
+- nsig_to_radar.c nsig.c nsig2_to_radar.c \
+- africa_to_radar.c africa.c \
+- radar_to_hdf_2.c hdf_to_radar.c toolkit_memory_mgt.c \
+- radar_to_hdf_1.c rainbow.c rainbow_to_radar.c $(headers)
+-
+-librsl_la_DEPENDENCIES = $(build_headers)
++wsr88ddir = $(datadir)/rsl/
++dist_wsr88d_DATA = wsr88d_locations.dat
+
+-build_headers = rsl.h wsr88d.h toolkit_1BC-51_appl.h
++include_HEADERS = rsl.h toolkit_1BC-51_appl.h
+
+ headers = africa.h dorade.h lassen.h \
+ mcgill.h nsig.h radtec.h rainbow.h \
+ rapic_routines.h toga.h \
+- $(build_headers)
++ wsr88d.h \
++ $(include_HEADERS)
++
++librsl_la_LDFLAGS = -version-info 1:40
++librsl_la_SOURCES = \
++ $(rapic_c) $(radtec_c) \
++ dorade.c dorade_print.c dorade_to_radar.c \
++ lassen.c lassen_to_radar.c \
++ edge_to_radar.c \
++ radar.c volume.c image_gen.c cappi.c fraction.c read_write.c farea.c \
++ range.c radar_to_uf.c uf_to_radar.c wsr88d_to_radar.c \
++ carpi.c cube.c sort_rays.c toga_to_radar.c gts.c histogram.c \
++ ray_indexes.c anyformat_to_radar.c get_win.c endian.c mcgill_to_radar.c \
++ mcgill.c interp.c toga.c wsr88d.c wsr88d_get_site.c wsr88d_m31.c \
++ gzip.c prune.c reverse.c fix_headers.c \
++ nsig_to_radar.c nsig.c nsig2_to_radar.c \
++ africa_to_radar.c africa.c \
++ radar_to_hdf_2.c hdf_to_radar.c toolkit_memory_mgt.c \
++ radar_to_hdf_1.c rainbow.c rainbow_to_radar.c $(headers)
++
+
+ rapic_c = rapic_to_radar.c rapic.y rapic-lex.l rapic_routines.c
+ radtec_c = radtec_to_radar.c radtec.c
+
+
+-rsl.h: Makefile
+- @for h in $(build_headers); do \
+- echo -n "Checking substitutions in header file $$h ... "; \
+- cp $$h $$h.in; \
+- sed -e 's/RSL_VERSION_STR.*/RSL_VERSION_STR \"$(VERSION)\"/' \
+- -e 's|#define COLORDIR.*|#define COLORDIR \"$(colordir)\"|' \
+- -e 's|#define WSR88D_SITE_INFO_FILE.*|#define WSR88D_SITE_INFO_FILE \"$(libdir)/wsr88d_locations.dat\"|' \
+- < $$h.in > $$h.new; \
+- if cmp -s $$h $$h.new; then \
+- rm $$h.new; \
+- echo "$$h remains untouched."; \
+- else \
+- mv $$h.new $$h; \
+- echo "substitutions made in $$h."; \
+- fi; \
+- rm -f $$h.in; \
+- done
+-
+ PREFIX = rapic
+ LFLAGS = -P$(PREFIX)
+ YFLAGS = -d -p $(PREFIX)
+ LEX_OUTPUT_ROOT = lex.$(PREFIX)
+
+-
+-install-exec-hook:
+- $(INSTALL) -d $(includedir)
+- $(INSTALL) -m 644 rsl.h $(includedir)
+- $(INSTALL) -m 644 toolkit_1BC-51_appl.h $(includedir)
+- $(INSTALL) -m 644 wsr88d_locations.dat $(libdir)
+-
+ EXTRA_DIST = CHANGES CHECK_LIST Copyright GPL LGPL wsr88d_locations.dat rapic.h
+
+ DISTCLEANFILES = rapic.c rapic-lex.c
+diff -ru rsl-v1.40/radar.c rsl-v1.40.new/radar.c
+--- rsl-v1.40/radar.c 2006-08-09 19:35:53.000000000 +0000
++++ rsl-v1.40.new/radar.c 2008-12-27 11:13:43.000000000 +0000
+@@ -60,7 +60,7 @@
+
+ void RSL_print_version()
+ {
+- printf("RSL version %s.\n", RSL_VERSION_STR);
++ printf("RSL version %s.\n", VERSION);
+ }
+
+ /* Debug printing global variable: radar_verbose_flag */
+diff -ru rsl-v1.40/radar_to_uf.c rsl-v1.40.new/radar_to_uf.c
+--- rsl-v1.40/radar_to_uf.c 2008-04-16 19:34:41.000000000 +0000
++++ rsl-v1.40.new/radar_to_uf.c 2008-12-27 11:13:58.000000000 +0000
+@@ -316,7 +316,7 @@
+ uf_ma[37] = tm->tm_year % 100; /* Same format as data year */
+ uf_ma[38] = tm->tm_mon+1;
+ uf_ma[39] = tm->tm_mday;
+- memcpy(&uf_ma[40], "RSL" RSL_VERSION_STR, 8);
++ memcpy(&uf_ma[40], "RSL" VERSION, 8);
+ if (little_endian()) swap2(&uf_ma[40], 8/2);
+ uf_ma[44] = (signed short)UF_NO_DATA;
+ len_ma = 45;
+diff -ru rsl-v1.40/read_write.c rsl-v1.40.new/read_write.c
+--- rsl-v1.40/read_write.c 2008-10-07 22:30:06.000000000 +0000
++++ rsl-v1.40.new/read_write.c 2008-12-27 11:14:05.000000000 +0000
+@@ -314,7 +314,7 @@
+ if (radar == NULL) return 0;
+
+ memset(title, 0, sizeof(title));
+- (void)sprintf(title, "RSL v%s. sizeof(Range) %d", RSL_VERSION_STR, sizeof(Range));
++ (void)sprintf(title, "RSL v%s. sizeof(Range) %d", VERSION, sizeof(Range));
+ n += fwrite(title, sizeof(char), sizeof(title), fp);
+
+ memset(header_buf, 0, sizeof(header_buf));
+diff -ru rsl-v1.40/rsl.h rsl-v1.40.new/rsl.h
+--- rsl-v1.40/rsl.h 2008-10-10 20:09:36.000000000 +0000
++++ rsl-v1.40.new/rsl.h 2008-12-27 11:15:24.000000000 +0000
+@@ -27,8 +27,6 @@
+ #include "config.h"
+ #endif
+
+-#define RSL_VERSION_STR "v1.40"
+-
+ /**********************************************************************/
+ /* Configure: Define USE_TWO_BYTE_PRECISION to have RSL store internal*/
+ /* values with two bytes. Otherwise, use one byte. */
+@@ -46,7 +44,7 @@
+ /* so you shouldn't have to modify anything here. */
+ /**********************************************************************/
+ #ifndef COLORDIR
+-#define COLORDIR "/usr/local/trmm/GVBOX/lib/colors"
++#define COLORDIR DATADIR "/colors"
+ #endif
+
+ /* These are the color table indexes. See RSL_set/get_color_table. */
+@@ -57,18 +55,18 @@
+ /* The default color tables for reflectivity, velocity, spectral width,
+ * height, rainfall, and zdr.
+ */
+-#define REFL_RED_FILE COLORDIR "/red_reflectivity.clr"
+-#define REFL_GREEN_FILE COLORDIR "/grn_reflectivity.clr"
+-#define REFL_BLUE_FILE COLORDIR "/blu_reflectivity.clr"
+-#define VEL_RED_FILE COLORDIR "/red_velocity.clr"
+-#define VEL_GREEN_FILE COLORDIR "/grn_velocity.clr"
+-#define VEL_BLUE_FILE COLORDIR "/blu_velocity.clr"
+-#define SW_RED_FILE COLORDIR "/red_spectral_width.clr"
+-#define SW_GREEN_FILE COLORDIR "/grn_spectral_width.clr"
+-#define SW_BLUE_FILE COLORDIR "/blu_spectral_width.clr"
+-#define HEIGHT_RED_FILE COLORDIR "/red_height.clr"
+-#define HEIGHT_GREEN_FILE COLORDIR "/grn_height.clr"
+-#define HEIGHT_BLUE_FILE COLORDIR "/blu_height.clr"
++#define REFL_RED_FILE COLORDIR "/red_reflectivity.clr"
++#define REFL_GREEN_FILE COLORDIR "/grn_reflectivity.clr"
++#define REFL_BLUE_FILE COLORDIR "/blu_reflectivity.clr"
++#define VEL_RED_FILE COLORDIR "/red_velocity.clr"
++#define VEL_GREEN_FILE COLORDIR "/grn_velocity.clr"
++#define VEL_BLUE_FILE COLORDIR "/blu_velocity.clr"
++#define SW_RED_FILE COLORDIR "/red_spectral_width.clr"
++#define SW_GREEN_FILE COLORDIR "/grn_spectral_width.clr"
++#define SW_BLUE_FILE COLORDIR "/blu_spectral_width.clr"
++#define HEIGHT_RED_FILE COLORDIR "/red_height.clr"
++#define HEIGHT_GREEN_FILE COLORDIR "/grn_height.clr"
++#define HEIGHT_BLUE_FILE COLORDIR "/blu_height.clr"
+ #define RAINFALL_RED_FILE COLORDIR "/red_rainfall.clr"
+ #define RAINFALL_GREEN_FILE COLORDIR "/grn_rainfall.clr"
+ #define RAINFALL_BLUE_FILE COLORDIR "/blu_rainfall.clr"
+diff -ru rsl-v1.40/wsr88d.h rsl-v1.40.new/wsr88d.h
+--- rsl-v1.40/wsr88d.h 2004-03-12 17:12:09.000000000 +0000
++++ rsl-v1.40.new/wsr88d.h 2008-12-27 11:16:01.000000000 +0000
+@@ -7,7 +7,7 @@
+ * The directory should be the same as the LIBDIR in the makefile.
+ */
+ #ifndef WSR88D_SITE_INFO_FILE
+-#define WSR88D_SITE_INFO_FILE "/usr/local/trmm/GVBOX/lib/wsr88d_locations.dat"
++#define WSR88D_SITE_INFO_FILE DATADIR "/wsr88d_locations.dat"
+ #endif
+ /*===============================================================*/
+ typedef struct {
--- /dev/null
+--- rsl-v1.40/wsr88d_m31.c 2008-10-08 23:43:03.000000000 +0000
++++ rsl-mine/wsr88d_m31.c 2009-05-10 12:58:17.000000000 +0000
+@@ -546,6 +548,7 @@
+ Range (*invf)(float x);
+ float (*f)(Range x);
+ int vol_index, waveform;
++ char *type_str;
+
+ enum waveforms {surveillance=1, doppler_ambres, doppler_no_ambres, batch};
+
+@@ -572,10 +575,10 @@
+ if (wsr88d_ray.ray_hdr.dbptr_ref > 0) {
+ vol_index = wsr88d_get_vol_index(wsr88d_ray.ref->data_hdr.dataname);
+ switch (vol_index) {
+- case DZ_INDEX: f = DZ_F; invf = DZ_INVF; break;
+- case VR_INDEX: f = VR_F; invf = VR_INVF; break;
+- case SW_INDEX: f = SW_F; invf = SW_INVF; break;
+- default: f = DZ_F; invf = DZ_INVF; break;
++ case DZ_INDEX: f = DZ_F; invf = DZ_INVF; type_str = "Reflectivity"; break;
++ case VR_INDEX: f = VR_F; invf = VR_INVF; type_str = "Velocity"; break;
++ case SW_INDEX: f = SW_F; invf = SW_INVF; type_str = "Spectrum width"; break;
++ default: f = DZ_F; invf = DZ_INVF; type_str = "Unknown"; break;
+ }
+ /* If this is reflectivity, check the waveform type to make sure
+ * it isn't from a Doppler split cut.
+@@ -591,6 +594,7 @@
+ radar->v[vol_index] = RSL_new_volume(MAXSWEEPS);
+ radar->v[vol_index]->h.f = f;
+ radar->v[vol_index]->h.invf = invf;
++ radar->v[vol_index]->h.type_str = type_str;
+ }
+ if (radar->v[vol_index]->sweep[isweep] == NULL) {
+ radar->v[vol_index]->sweep[isweep] = RSL_new_sweep(MAXRAYS_M31);
+@@ -608,15 +612,16 @@
+ if (wsr88d_ray.ray_hdr.dbptr_vel > 0) {
+ vol_index = wsr88d_get_vol_index(wsr88d_ray.vel->data_hdr.dataname);
+ switch (vol_index) {
+- case DZ_INDEX: f = DZ_F; invf = DZ_INVF; break;
+- case VR_INDEX: f = VR_F; invf = VR_INVF; break;
+- case SW_INDEX: f = SW_F; invf = SW_INVF; break;
+- default: f = DZ_F; invf = DZ_INVF; break;
++ case DZ_INDEX: f = DZ_F; invf = DZ_INVF; type_str = "Reflectivity"; break;
++ case VR_INDEX: f = VR_F; invf = VR_INVF; type_str = "Velocity"; break;
++ case SW_INDEX: f = SW_F; invf = SW_INVF; type_str = "Spectrum width"; break;
++ default: f = DZ_F; invf = DZ_INVF; type_str = "Unknown"; break;
+ }
+ if (radar->v[vol_index] == NULL) {
+ radar->v[vol_index] = RSL_new_volume(MAXSWEEPS);
+ radar->v[vol_index]->h.f = f;
+ radar->v[vol_index]->h.invf = invf;
++ radar->v[vol_index]->h.type_str = type_str;
+ }
+ if (radar->v[vol_index]->sweep[isweep] == NULL) {
+ radar->v[vol_index]->sweep[isweep] = RSL_new_sweep(MAXRAYS_M31);
+@@ -633,15 +638,16 @@
+ if (wsr88d_ray.ray_hdr.dbptr_sw > 0) {
+ vol_index = wsr88d_get_vol_index(wsr88d_ray.sw->data_hdr.dataname);
+ switch (vol_index) {
+- case DZ_INDEX: f = DZ_F; invf = DZ_INVF; break;
+- case VR_INDEX: f = VR_F; invf = VR_INVF; break;
+- case SW_INDEX: f = SW_F; invf = SW_INVF; break;
+- default: f = DZ_F; invf = DZ_INVF; break;
++ case DZ_INDEX: f = DZ_F; invf = DZ_INVF; type_str = "Reflectivity"; break;
++ case VR_INDEX: f = VR_F; invf = VR_INVF; type_str = "Velocity"; break;
++ case SW_INDEX: f = SW_F; invf = SW_INVF; type_str = "Spectrum width"; break;
++ default: f = DZ_F; invf = DZ_INVF; type_str = "Unknown"; break;
+ }
+ if (radar->v[vol_index] == NULL) {
+ radar->v[vol_index] = RSL_new_volume(MAXSWEEPS);
+ radar->v[vol_index]->h.f = f;
+ radar->v[vol_index]->h.invf = invf;
++ radar->v[vol_index]->h.type_str = type_str;
+ }
+ if (radar->v[vol_index]->sweep[isweep] == NULL) {
+ radar->v[vol_index]->sweep[isweep] = RSL_new_sweep(MAXRAYS_M31);
--- /dev/null
+diff -ru rsl-v1.40/africa.c warnings/africa.c
+--- rsl-v1.40/africa.c 1999-12-01 03:48:29.000000000 +0000
++++ warnings/africa.c 2008-12-27 11:53:44.000000000 +0000
+@@ -22,6 +22,7 @@
+ */
+ #include <stdio.h>
+ #include <stdlib.h>
++#include <string.h>
+ #include "africa.h"
+
+ int africa_read_buffer(FILE *fp, Africa_buffer *buffer)
+diff -ru rsl-v1.40/dorade_to_radar.c warnings/dorade_to_radar.c
+--- rsl-v1.40/dorade_to_radar.c 1999-12-01 03:48:29.000000000 +0000
++++ warnings/dorade_to_radar.c 2008-12-27 11:53:44.000000000 +0000
+@@ -24,7 +24,7 @@
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <unistd.h>
+-#include <strings.h>
++#include <string.h>
+ #define USE_RSL_VARS
+ #include "rsl.h"
+ #include "dorade.h"
+diff -ru rsl-v1.40/examples/any_to_gif.c warnings/examples/any_to_gif.c
+--- rsl-v1.40/examples/any_to_gif.c 1999-01-26 16:20:25.000000000 +0000
++++ warnings/examples/any_to_gif.c 2008-12-27 11:53:44.000000000 +0000
+@@ -73,7 +73,7 @@
+ }
+
+
+-void main(int argc, char **argv)
++int main(int argc, char **argv)
+ {
+ Radar *radar;
+ Sweep *sweep;
+diff -ru rsl-v1.40/examples/any_to_ppm.c warnings/examples/any_to_ppm.c
+--- rsl-v1.40/examples/any_to_ppm.c 1998-09-16 18:35:56.000000000 +0000
++++ warnings/examples/any_to_ppm.c 2008-12-27 11:53:44.000000000 +0000
+@@ -9,11 +9,12 @@
+ * the RSL.
+ *
+ */
++#include <stdlib.h>
+
+ #define USE_RSL_VARS
+ #include "rsl.h"
+
+-void main(int argc, char **argv)
++int main(int argc, char **argv)
+ {
+ Radar *radar;
+ Sweep *sweep;
+diff -ru rsl-v1.40/examples/cappi_image.c warnings/examples/cappi_image.c
+--- rsl-v1.40/examples/cappi_image.c 1998-09-16 18:35:56.000000000 +0000
++++ warnings/examples/cappi_image.c 2008-12-27 11:53:44.000000000 +0000
+@@ -7,6 +7,7 @@
+ */
+
+ #include <stdio.h>
++#include <stdlib.h>
+ #include <string.h>
+ #include "rsl.h"
+
+diff -ru rsl-v1.40/examples/dorade_main.c warnings/examples/dorade_main.c
+--- rsl-v1.40/examples/dorade_main.c 1999-08-12 20:44:30.000000000 +0000
++++ warnings/examples/dorade_main.c 2008-12-27 11:53:44.000000000 +0000
+@@ -1,4 +1,5 @@
+ #include <stdio.h>
++#include <stdlib.h>
+ #include "rsl.h"
+
+ int main(int argc, char **argv)
+diff -ru rsl-v1.40/examples/killer_sweep.c warnings/examples/killer_sweep.c
+--- rsl-v1.40/examples/killer_sweep.c 1998-09-16 18:35:56.000000000 +0000
++++ warnings/examples/killer_sweep.c 2008-12-27 11:53:44.000000000 +0000
+@@ -146,7 +146,7 @@
+ }
+ }
+
+-void main(int argc, char **argv)
++int main(int argc, char **argv)
+ {
+ Radar *radar;
+ Sweep *sweep;
+diff -ru rsl-v1.40/examples/kwaj_subtract_one_day.c warnings/examples/kwaj_subtract_one_day.c
+--- rsl-v1.40/examples/kwaj_subtract_one_day.c 1999-08-13 14:26:40.000000000 +0000
++++ warnings/examples/kwaj_subtract_one_day.c 2008-12-27 11:53:44.000000000 +0000
+@@ -1,3 +1,4 @@
++#include <stdlib.h>
+ #include "rsl.h"
+
+ /**********************************************************************/
+diff -ru rsl-v1.40/examples/lassen_to_gif.c warnings/examples/lassen_to_gif.c
+--- rsl-v1.40/examples/lassen_to_gif.c 1998-09-16 18:35:56.000000000 +0000
++++ warnings/examples/lassen_to_gif.c 2008-12-27 11:53:44.000000000 +0000
+@@ -4,9 +4,10 @@
+ * This program can read the file from stdin.
+ */
+
++#include <stdlib.h>
+ #include "rsl.h"
+
+-void main(int argc, char **argv)
++int main(int argc, char **argv)
+ {
+ Radar *radar;
+
+diff -ru rsl-v1.40/examples/print_hash_table.c warnings/examples/print_hash_table.c
+--- rsl-v1.40/examples/print_hash_table.c 1998-09-16 18:35:56.000000000 +0000
++++ warnings/examples/print_hash_table.c 2008-12-27 11:53:44.000000000 +0000
+@@ -9,6 +9,7 @@
+ *
+ */
+
++#include <stdlib.h>
+ #include "rsl.h"
+
+ void print_link_list(Azimuth_hash *list)
+@@ -87,7 +88,7 @@
+ }
+
+
+-void main(int argc, char **argv)
++int main(int argc, char **argv)
+ {
+ Radar *radar;
+ Sweep *sweep;
+diff -ru rsl-v1.40/examples/sector.c warnings/examples/sector.c
+--- rsl-v1.40/examples/sector.c 1998-09-16 18:35:57.000000000 +0000
++++ warnings/examples/sector.c 2008-12-27 11:53:44.000000000 +0000
+@@ -1,4 +1,5 @@
+ #include <stdio.h>
++#include <stdlib.h>
+ #include "rsl.h"
+
+ /*
+@@ -84,7 +85,7 @@
+ }
+
+
+-void main(int argc, char **argv)
++int main(int argc, char **argv)
+ {
+ Radar *radar;
+ Sweep *sector;
+diff -ru rsl-v1.40/examples/wsr88d_to_gif.c warnings/examples/wsr88d_to_gif.c
+--- rsl-v1.40/examples/wsr88d_to_gif.c 1998-09-16 18:35:57.000000000 +0000
++++ warnings/examples/wsr88d_to_gif.c 2008-12-27 11:53:44.000000000 +0000
+@@ -14,9 +14,10 @@
+ * wsr88d_to_gif file [tape_header_file]
+ */
+
++#include <stdlib.h>
+ #include "rsl.h"
+
+-void main(int argc, char **argv)
++int main(int argc, char **argv)
+ {
+ Radar *radar;
+
+diff -ru rsl-v1.40/lassen_to_radar.c warnings/lassen_to_radar.c
+--- rsl-v1.40/lassen_to_radar.c 2008-07-24 13:40:50.000000000 +0000
++++ warnings/lassen_to_radar.c 2008-12-27 11:53:44.000000000 +0000
+@@ -31,6 +31,7 @@
+
+ */
+ #include <stdio.h>
++#include <stdlib.h>
+ #include <unistd.h>
+ #include <string.h>
+ #include <math.h>
+diff -ru rsl-v1.40/rainbow.c warnings/rainbow.c
+--- rsl-v1.40/rainbow.c 2004-02-10 17:10:28.000000000 +0000
++++ warnings/rainbow.c 2008-12-27 11:53:44.000000000 +0000
+@@ -22,6 +22,7 @@
+ */
+
+ #include <stdio.h>
++#include <stdlib.h>
+ #include <string.h>
+ #include "rsl.h"
+ #include "rainbow.h"
+diff -ru rsl-v1.40/rainbow_to_radar.c warnings/rainbow_to_radar.c
+--- rsl-v1.40/rainbow_to_radar.c 2004-02-11 16:54:37.000000000 +0000
++++ warnings/rainbow_to_radar.c 2008-12-27 11:53:44.000000000 +0000
+@@ -22,6 +22,7 @@
+ */
+
+ #include <stdio.h>
++#include <stdlib.h>
+ #include <string.h>
+ #include "rsl.h"
+ #include "rainbow.h"
+diff -ru rsl-v1.40/wsr88d_m31.c warnings/wsr88d_m31.c
+--- rsl-v1.40/wsr88d_m31.c 2008-10-08 23:43:03.000000000 +0000
++++ warnings/wsr88d_m31.c 2008-12-27 11:53:44.000000000 +0000
+@@ -25,6 +25,8 @@
+ * This file contains routines for processing Message Type 31, the digital
+ * radar message type introduced in WSR-88D Level II Build 10.
+ */
++#include <stdlib.h>
++#include <string.h>
+
+ #include "rsl.h"
+ #include "wsr88d.h"
double width = da->allocation.width;
double height = da->allocation.height;
double dist = 500*1000; // 500 km
+ double cam = 300*1000; // 500 km
glViewport(0, 0, width, height);
glLoadIdentity();
double rad = atan(height/2*1000.0/dist); // 1px = 1000 meters
double deg = (rad*180)/M_PI;
- gluPerspective(deg*2, width/height, dist-20, dist+20);
+ gluPerspective(deg*2, width/height, cam-20, cam+20);
/* Camera position? */
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
- glTranslatef(0.0, 0.0, -dist);
+ glTranslatef(0.0, 0.0, -cam);
//glRotatef(-45, 1, 0, 0);
aweather_gui_gl_end(gui);
if (db == APFLAG) return 0;
if (db == NOECHO) return 0;
if (db == 0 ) return 0;
- if (db > 60) return 0;
- else if (db < 10) return 0;
- else if (db < 25) return (db-10)*(255.0/15);
+ //if (db > 60) return 0;
+ //else if (db < 10) return 0;
+ //else if (db < 25) return (db-10)*(255.0/15);
else return 255;
}
*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;
}