aboutsummaryrefslogtreecommitdiff
path: root/noao/rv/plotpars.x
diff options
context:
space:
mode:
Diffstat (limited to 'noao/rv/plotpars.x')
-rw-r--r--noao/rv/plotpars.x320
1 files changed, 320 insertions, 0 deletions
diff --git a/noao/rv/plotpars.x b/noao/rv/plotpars.x
new file mode 100644
index 00000000..720ec436
--- /dev/null
+++ b/noao/rv/plotpars.x
@@ -0,0 +1,320 @@
+include "rvpackage.h"
+include "rvflags.h"
+include "rvcomdef.h"
+include "rvplots.h"
+
+.help plotpars
+.nf ___________________________________________________________________________
+PLOTPARS - Support routines for the 'plotpars' named external pset.
+
+ This file include routines for opening/closing the FFT plot structure
+as well as command handling. Command handling is limited to changing the
+parameter values or resetting them to the default values. Routines included
+here are as follows.
+
+ plot_open (rv)
+ plot_close (rv)
+ plot_get_pars (rv)
+ plot_parupdate (rv)
+ plot_unlearn (rv)
+ plot_show (rv, fd)
+ plot_colon (rv, cmdstr)
+ cmd_plot (rv)
+ cmd_overlay (rv)
+ cmd_split_plotx (rv)
+ cmd_one_image (rv)
+ cmd_when (rv)
+ cmd_log_scale (rv)
+ cmd_fft_zoom (rv)
+
+ The 'cmd_' prefix indicates that the routine is called from a colon
+command to either print the current value or set the new value for that
+field. Other routines should be self-explanatory
+
+.endhelp _____________________________________________________________________
+
+# The default Fourier plot parameters
+define DEF_PLOT AMPLITUDE_PLOT # Default plot type
+define DEF_OVERLAY YES # Default filter overlay
+define DEF_SPLIT_PLOT SPLIT_PLOT # Default plot type
+define DEF_ONE_IMAGE OBJECT_SPECTRUM # Deault for one image plot
+define DEF_WHEN BEFORE # Default when to plot
+define DEF_LOG_SCALE YES # Default Y-axis scaling
+define DEF_FFT_ZOOM 1.0 # Default zoom
+
+
+# PLOT_OPEN - Open the Process parameters substructure. This is used to
+# reduce the size of the already over-burdened main RV struct.
+
+procedure plot_open (rv)
+
+pointer rv #I RV struct pointer
+
+pointer plot
+
+begin
+ iferr (call calloc (plot, SZ_PLOTSTRUCT, TY_STRUCT))
+ call error (0, "Error allocating sub-structure RV_PLOTP.")
+
+ RV_PLOTP(rv) = plot
+
+ # Initlialize the values
+ call plot_unlearn (rv) # Set to defaults
+end
+
+
+# PLOT_CLOSE - Close the process structure.
+
+procedure plot_close (rv)
+
+pointer rv #I RV struct pointer
+
+begin
+ call mfree (RV_PLOTP(rv), TY_STRUCT)
+end
+
+
+# PLOT_UNLEARN -- Reset all of the plot parameters to their default values.
+
+procedure plot_unlearn (rv)
+
+pointer rv #I RV struct pointer
+
+begin
+ RVP_PLOT(rv) = DEF_PLOT
+ RVP_OVERLAY(rv) = DEF_OVERLAY
+ RVP_SPLIT_PLOT(rv) = DEF_SPLIT_PLOT
+ RVP_ONE_IMAGE(rv) = DEF_ONE_IMAGE
+ RVP_WHEN(rv) = DEF_WHEN
+ RVP_LOG_SCALE(rv) = DEF_LOG_SCALE
+ RVP_FFT_ZOOM(rv) = DEF_FFT_ZOOM
+end
+
+
+# PLOT_COLON -- Process the PLOTPARS task colon commands.
+
+procedure plot_colon (rv, cmdstr)
+
+pointer rv #I pointer to the RV structure
+char cmdstr[SZ_LINE] #I command string
+
+pointer sp, cmd, buf
+int strdic()
+
+begin
+ call smark (sp)
+ call salloc (cmd, SZ_LINE, TY_CHAR)
+ call salloc (buf, SZ_LINE, TY_CHAR)
+
+ call sscan (cmdstr)
+ call gargwrd (Memc[cmd], SZ_LINE)
+
+ # Unpack the keyword from the string and look it up in the
+ # dictionary. Switch on command and call the appropriate routines.
+
+ switch (strdic(Memc[cmd], Memc[cmd], SZ_FNAME, PLOT_KEYWORDS)) {
+ case PLT_PLOT:
+ call cmd_plot (rv)
+ case PLT_OVERLAY:
+ call cmd_overlay (rv)
+ case PLT_SPLIT_PLOT:
+ call cmd_split_plotx (rv)
+ case PLT_ONE_IMAGE:
+ call cmd_one_image (rv)
+ case PLT_WHEN:
+ call cmd_when (rv)
+ case PLT_LOG_SCALE:
+ call cmd_log_scale (rv)
+ case PLT_FFT_ZOOM:
+ call cmd_fft_zoom (rv)
+ default:
+ }
+
+ call sfree (sp)
+end
+
+
+# CMD_PLOT - Set/Show the type of plot to draw.
+
+procedure cmd_plot (rv)
+
+pointer rv #I RV struct pointer
+
+pointer sp, bp
+int cod_plotype()
+
+begin
+ call smark (sp)
+ call salloc (bp, SZ_LINE, TY_CHAR)
+
+ call gargstr (Memc[bp], SZ_FNAME)
+ if (Memc[bp] != EOS)
+ RVP_PLOT(rv) = cod_plotype (Memc[bp+1])
+ else {
+ call nam_plotype (rv, Memc[bp])
+ call printf ("plot = `%s'\n")
+ call pargstr (Memc[bp])
+ call flush (STDOUT)
+ }
+
+ call sfree (sp)
+end
+
+
+# CMD_OVERLAY - Set/Show the filter overlay flag.
+
+procedure cmd_overlay (rv)
+
+pointer rv #I RV struct pointer
+
+bool bval, itob()
+int nscan(), btoi()
+
+begin
+ call gargb (bval)
+ if (nscan() == 2) {
+ RVP_OVERLAY(rv) = btoi (bval)
+ RV_NEWGRAPH(rv) = YES
+ } else {
+ call printf ("overlay = %b\n")
+ call pargb (itob(RVP_OVERLAY(rv)))
+ }
+end
+
+
+# CMD_SPLIT_PLOTX - Set/Show the split plot toggle flag.
+
+procedure cmd_split_plotx (rv)
+
+pointer rv #I RV struct pointer
+
+bool bval
+int nscan()
+
+begin
+ call gargb (bval)
+ if (nscan() == 2) {
+ if (bval)
+ RVP_SPLIT_PLOT(rv) = SPLIT_PLOT
+ else
+ RVP_SPLIT_PLOT(rv) = SINGLE_PLOT
+ } else {
+ call printf ("split_plot = %b\n")
+ if (RVP_SPLIT_PLOT(rv) == SPLIT_PLOT)
+ call pargb (true)
+ else
+ call pargb (false)
+ }
+end
+
+
+# CMD_ONE_IMAGE - Set/Show the type of image to draw on a single plot.
+
+procedure cmd_one_image (rv)
+
+pointer rv #I RV struct pointer
+
+pointer sp, bp
+
+begin
+ call smark (sp)
+ call salloc (bp, SZ_LINE, TY_CHAR)
+
+ call gargstr (Memc[bp], SZ_FNAME)
+ if (Memc[bp] != EOS) {
+ if (Memc[bp+1] == 'o')
+ RVP_ONE_IMAGE(rv) = OBJECT_SPECTRUM
+ else if (Memc[bp+1] == 't' || Memc[bp+1] == 'r')
+ RVP_ONE_IMAGE(rv) = REFER_SPECTRUM
+ else
+ call rv_errmsg ("Choose one of 'object|template'.")
+ } else {
+ call printf ("one_image = `%s'\n")
+ if (RVP_ONE_IMAGE(rv) == OBJECT_SPECTRUM)
+ call pargstr ("object")
+ else
+ call pargstr ("template")
+ call flush (STDOUT)
+ }
+
+ call sfree (sp)
+end
+
+
+# CMD_WHEN - Set/Show whether to plot before or after filtering.
+
+procedure cmd_when (rv)
+
+pointer rv #I RV struct pointer
+
+pointer sp, bp
+
+begin
+ call smark (sp)
+ call salloc (bp, SZ_LINE, TY_CHAR)
+
+ call gargstr (Memc[bp], SZ_FNAME)
+ if (Memc[bp] != EOS) {
+ if (Memc[bp+1] == 'b') {
+ RVP_WHEN(rv) = BEFORE
+ RV_NEWGRAPH(rv) = YES
+ } else if (Memc[bp+1] == 'a') {
+ RVP_WHEN(rv) = AFTER
+ RV_NEWGRAPH(rv) = YES
+ } else
+ call rv_errmsg ("Choose one of `before|after'.")
+ } else {
+ call printf ("when = `%s'\n")
+ if (RVP_WHEN(rv) == BEFORE)
+ call pargstr ("before")
+ else
+ call pargstr ("after")
+ call flush (STDOUT)
+ }
+ call sfree (bp)
+end
+
+
+# CMD_LOG_SCALE - Set/Show whether to plot on a log scale.
+
+procedure cmd_log_scale (rv)
+
+pointer rv #I RV struct pointer
+
+bool bval, itob()
+int nscan(), btoi()
+
+begin
+ call gargb (bval)
+ if (nscan() == 2) {
+ RVP_LOG_SCALE(rv) = btoi (bval)
+ RV_NEWGRAPH(rv) = YES
+ } else {
+ call printf ("log_scale = %b\n")
+ call pargb (itob(RVP_LOG_SCALE(rv)))
+ }
+end
+
+
+# CMD_FFT_ZOOM - Set/Show the FFT zooming factor.
+
+procedure cmd_fft_zoom (rv)
+
+pointer rv #I RV struct pointer
+
+real rval
+int nscan()
+
+begin
+ call gargr (rval)
+ if (nscan() == 2) {
+ if (rval < 1.)
+ call rv_errmsg ("Warning: Zoom must be >= 1.0")
+ else
+ RVP_FFT_ZOOM(rv) = rval
+ RV_NEWGRAPH(rv) = YES
+ } else {
+ call printf ("zoom = %f\n")
+ call pargr (RVP_FFT_ZOOM(rv))
+ }
+end