aboutsummaryrefslogtreecommitdiff
path: root/noao/rv/rvanplot.x
diff options
context:
space:
mode:
authorJoe Hunkeler <jhunkeler@gmail.com>2015-08-11 16:51:37 -0400
committerJoe Hunkeler <jhunkeler@gmail.com>2015-08-11 16:51:37 -0400
commit40e5a5811c6ffce9b0974e93cdd927cbcf60c157 (patch)
tree4464880c571602d54f6ae114729bf62a89518057 /noao/rv/rvanplot.x
downloadiraf-osx-40e5a5811c6ffce9b0974e93cdd927cbcf60c157.tar.gz
Repatch (from linux) of OSX IRAF
Diffstat (limited to 'noao/rv/rvanplot.x')
-rw-r--r--noao/rv/rvanplot.x118
1 files changed, 118 insertions, 0 deletions
diff --git a/noao/rv/rvanplot.x b/noao/rv/rvanplot.x
new file mode 100644
index 00000000..cb6003c5
--- /dev/null
+++ b/noao/rv/rvanplot.x
@@ -0,0 +1,118 @@
+include <gset.h>
+include <math.h>
+include "rvpackage.h"
+include "rvflags.h"
+
+
+# RV_ANPLOT - Write the split-plot of the correlation function and anti-
+# symmetric noise component to the metacode file, or screen.
+
+procedure rv_anplot (rv, gp)
+
+pointer rv #I RV struct pointer
+pointer gp #I Graphics pointer
+
+int i
+real xp, yp, step
+real vx1, vx2, vy1, vy2 # Viewport boundaries on input
+
+begin
+ if (gp == NULL)
+ return # No-op
+
+ # Save the current viewport
+ call ggview (gp, vx1, vx2, vy1, vy2)
+
+ # Clear the screen
+ call gclear (gp)
+
+ # Draw the two plots to the screen
+ call split_plot (rv, gp, TOP, WRKPIXY(rv,1), RV_CCFNPTS(rv),
+ ANTISYM_PLOT, CORRELATION_PLOT)
+ call split_plot (rv, gp, BOTTOM, ANTISYM(rv,1), RV_CCFNPTS(rv),
+ OBJECT_SPECTRUM, ANTISYM_PLOT)
+
+ # Restore the viewport to the way we found it originally
+ call gsview (gp, vx1-0.1, vx2, vy1, vy2)
+ call gflush (gp)
+
+ # Now get the coords to draw the text
+ call gswind (gp, 0.0, 1.0, 0.0, 1.0) # set to NDC space
+ call gseti (gp, G_TXCOLOR, RV_TXTCOLOR(rv))
+ xp = 0.15
+ step = 0.15
+ do i = 1, 6 {
+ yp = -0.05
+ call an_text (rv, gp, xp, yp, -i) # do the titles
+ yp = -0.1
+ call an_text (rv, gp, xp, yp, i) # do the numbers
+ xp = xp + step
+ }
+ call gseti (gp, G_TXCOLOR, C_FOREGROUND)
+ call gflush (gp)
+end
+
+
+# AN_TEXT - Write the text string to the screen at the specified point.
+
+procedure an_text (rv, gp, xp, yp, lnum)
+
+pointer rv #I RV struct pointer
+pointer gp #I Graphics pointer
+real xp, yp #I Position
+int lnum #I Line to write
+
+pointer sp, bp
+real sigmaa, eps
+
+begin
+ # Allocate working space
+ call smark (sp)
+ call salloc (bp, SZ_LINE, TY_CHAR)
+
+ switch (lnum) {
+ case -1:
+ call strcpy ("Height", Memc[bp], SZ_LINE)
+ case -2:
+ call strcpy (" R", Memc[bp], SZ_LINE)
+ case -3:
+ call strcpy (" Sigma ", Memc[bp], SZ_LINE)
+ case -4:
+ call strcpy ("Epsilon", Memc[bp], SZ_LINE)
+ case -5:
+ if (RV_DCFLAG(rv) != -1)
+ call strcpy (" CZ", Memc[bp], SZ_LINE)
+ else
+ call strcpy ("Shift", Memc[bp], SZ_LINE)
+ case -6:
+ call strcpy (" +/-", Memc[bp], SZ_LINE)
+ case 1:
+ call sprintf (Memc[bp], SZ_LINE, "%-.4f")
+ call pargr (RV_HEIGHT(rv))
+ case 2:
+ call sprintf (Memc[bp], SZ_LINE, "%-.4f")
+ call pargr (RV_R(rv))
+ case 3:
+ sigmaa = RV_HEIGHT(rv) / (RV_R(rv) * SQRTOF2)
+ call sprintf (Memc[bp], SZ_LINE, "%-.5f")
+ call pargr (sigmaa)
+ case 4:
+ eps = (TWOPI * RV_FWHM(rv)) / (RV_R(rv)+1.0) / 8.0
+ call sprintf (Memc[bp], SZ_LINE, "%-.5f")
+ call pargr (eps)
+ case 5:
+ call sprintf (Memc[bp], SZ_LINE, "%-.3f")
+ if (RV_DCFLAG(rv) != -1)
+ call pargd (RV_VCOR(rv))
+ else
+ call pargr (RV_SHIFT(rv))
+ case 6:
+ call sprintf (Memc[bp], SZ_LINE, "%-.3f")
+ call pargd (RV_ERROR(rv))
+ }
+
+ # Write the text
+ call gtext (gp, xp, yp, Memc[bp], "")
+
+ call sfree (sp)
+end