From fa080de7afc95aa1c19a6e6fc0e0708ced2eadc4 Mon Sep 17 00:00:00 2001 From: Joseph Hunkeler Date: Wed, 8 Jul 2015 20:46:52 -0400 Subject: Initial commit --- noao/rv/rvanplot.x | 118 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100644 noao/rv/rvanplot.x (limited to 'noao/rv/rvanplot.x') 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 +include +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 -- cgit