From: Andy Spencer Date: Wed, 13 May 2009 04:33:45 +0000 (+0000) Subject: adding some RSL patches, and support for velocity/spectum width color maps X-Git-Tag: v0.1~31 X-Git-Url: http://pileus.org/git/?p=grits;a=commitdiff_plain;h=b7d744b437ea8794e3483cc10906de51e0f49136 adding some RSL patches, and support for velocity/spectum width color maps --- diff --git a/opt/rsl/rsl-automake.patch b/opt/rsl/rsl-automake.patch new file mode 100644 index 0000000..1d1b308 --- /dev/null +++ b/opt/rsl/rsl-automake.patch @@ -0,0 +1,224 @@ +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 { diff --git a/opt/rsl/rsl-type_str.patch b/opt/rsl/rsl-type_str.patch new file mode 100644 index 0000000..444d819 --- /dev/null +++ b/opt/rsl/rsl-type_str.patch @@ -0,0 +1,75 @@ +--- 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); diff --git a/opt/rsl/rsl-warnings.patch b/opt/rsl/rsl-warnings.patch new file mode 100644 index 0000000..ece00f3 --- /dev/null +++ b/opt/rsl/rsl-warnings.patch @@ -0,0 +1,205 @@ +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 + #include ++#include + #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 + #include + #include +-#include ++#include + #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 + + #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 ++#include + #include + #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 ++#include + #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 + #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 + #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 + #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 ++#include + #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 + #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 ++#include + #include + #include + #include +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 ++#include + #include + #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 ++#include + #include + #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 ++#include + + #include "rsl.h" + #include "wsr88d.h" diff --git a/src/aweather-gui.c b/src/aweather-gui.c index d02443e..1dd85a5 100644 --- a/src/aweather-gui.c +++ b/src/aweather-gui.c @@ -93,6 +93,7 @@ static gboolean configure(GtkWidget *da, GdkEventConfigure *event, AWeatherGui * 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); @@ -101,12 +102,12 @@ static gboolean configure(GtkWidget *da, GdkEventConfigure *event, AWeatherGui * 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); diff --git a/src/plugin-radar.c b/src/plugin-radar.c index 1000b6e..2693833 100644 --- a/src/plugin-radar.c +++ b/src/plugin-radar.c @@ -48,9 +48,9 @@ static guint8 get_alpha(guint8 db) 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; } @@ -87,6 +87,21 @@ static void bscan_sweep(Sweep *sweep, guint8 **data, int *width, int *height) *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) { @@ -129,6 +144,7 @@ static void load_radar_gui(Radar *radar) 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); @@ -157,13 +173,6 @@ static void load_radar_rsl(GPid pid, gint status, gpointer _path) 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"); @@ -173,6 +182,7 @@ static void load_radar_rsl(GPid pid, gint status, gpointer _path) 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; }