]> Pileus Git - aweather/commitdiff
adding some RSL patches, and support for velocity/spectum width color maps
authorAndy Spencer <andy753421@gmail.com>
Wed, 13 May 2009 04:33:45 +0000 (04:33 +0000)
committerAndy Spencer <andy753421@gmail.com>
Wed, 13 May 2009 04:33:45 +0000 (04:33 +0000)
opt/rsl/rsl-automake.patch [new file with mode: 0644]
opt/rsl/rsl-type_str.patch [new file with mode: 0644]
opt/rsl/rsl-warnings.patch [new file with mode: 0644]
src/aweather-gui.c
src/plugin-radar.c

diff --git a/opt/rsl/rsl-automake.patch b/opt/rsl/rsl-automake.patch
new file mode 100644 (file)
index 0000000..1d1b308
--- /dev/null
@@ -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 (file)
index 0000000..444d819
--- /dev/null
@@ -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 (file)
index 0000000..ece00f3
--- /dev/null
@@ -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 <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"
index d02443eb9c314cd57418a57eae01eab1285a030e..1dd85a5bbcb1f776c7af3bbdd556da5e85be7659 100644 (file)
@@ -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);
index 1000b6e5fbcc5cc01b9143013848c00135a67069..269383302db2bd1e38ae1b92a2b254f26ab28a45 100644 (file)
@@ -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;
                        }