aboutsummaryrefslogtreecommitdiff
path: root/noao/digiphot/apphot/polyphot/apyradsetup.x
diff options
context:
space:
mode:
authorJoseph Hunkeler <jhunkeler@gmail.com>2015-07-08 20:46:52 -0400
committerJoseph Hunkeler <jhunkeler@gmail.com>2015-07-08 20:46:52 -0400
commitfa080de7afc95aa1c19a6e6fc0e0708ced2eadc4 (patch)
treebdda434976bc09c864f2e4fa6f16ba1952b1e555 /noao/digiphot/apphot/polyphot/apyradsetup.x
downloadiraf-linux-fa080de7afc95aa1c19a6e6fc0e0708ced2eadc4.tar.gz
Initial commit
Diffstat (limited to 'noao/digiphot/apphot/polyphot/apyradsetup.x')
-rw-r--r--noao/digiphot/apphot/polyphot/apyradsetup.x135
1 files changed, 135 insertions, 0 deletions
diff --git a/noao/digiphot/apphot/polyphot/apyradsetup.x b/noao/digiphot/apphot/polyphot/apyradsetup.x
new file mode 100644
index 00000000..a966110b
--- /dev/null
+++ b/noao/digiphot/apphot/polyphot/apyradsetup.x
@@ -0,0 +1,135 @@
+include "../lib/fitsky.h"
+include "../lib/polyphot.h"
+
+define HELPFILE "apphot$polyphot/ipolyphot.key"
+
+# AP_YRADSETUP - Set up polyphot interactively using a radial profile
+# plot of a bright star.
+
+int procedure ap_yradsetup (ap, im, id, gd, out, stid, x, y, max_nvertices)
+
+pointer ap # pointer to apphot structure
+pointer im # pointer to the IRAF image
+pointer id # pointer to the image display
+pointer gd # pointer to graphics stream
+int out # output file descriptor
+int stid # output file sequence number
+real x[ARB] # array of x vertices
+real y[ARB] # array of y vertices
+int max_nvertices # maximum number of vertices
+
+int nvertices, cier, sier, pier, key, wcs
+pointer sp, str, cmd
+real rmin, rmax, imin, imax, u1, u2, v1, v2, x1, x2, y1, y2
+real xcenter, ycenter, xc, yc, rval
+
+int ap_ycenter(), clgcur(), ap_showplot()
+int apfitsky(), ap_yfit(), apstati(), ap_ymkpoly()
+real apstatr(), ap_cfwhmpsf(), ap_ccapert(), ap_cannulus(), ap_csigma()
+real ap_cdannulus(), ap_cdatamin(), ap_cdatamax()
+real ap_crgrow(), ap_crclean(), ap_crclip()
+
+begin
+ # Mark the polygon interactively.
+ if (id == gd)
+ nvertices = ap_ymkpoly (ap, im, id, x, y, max_nvertices, NO)
+ else
+ nvertices = ap_ymkpoly (ap, im, id, x, y, max_nvertices, YES)
+ if (id != NULL) {
+ if (gd == id)
+ call gflush (id)
+ else
+ call gframe (id)
+ }
+ if (nvertices <= 0)
+ return (nvertices)
+
+ # Store the viewport and window coordinates.
+ call ggview (gd, u1, u2, v1, v2)
+ call ggwind (gd, x1, x2, y1, y2)
+
+ # Check for open display device and graphics stream.
+ if (gd == NULL)
+ return (0)
+ call greactivate (gd, 0)
+
+ # Show the plot.
+ if (ap_showplot (ap, im, apstatr (ap, PYCX), apstatr (ap, PYCY), gd,
+ xcenter, ycenter, rmin, rmax, imin, imax) == ERR) {
+ call gdeactivate (gd, 0)
+ return (nvertices)
+ }
+
+ # Allocate memory.
+ call smark (sp)
+ call salloc (str, SZ_LINE, TY_CHAR)
+ call salloc (cmd, SZ_LINE, TY_CHAR)
+
+ call printf (
+ "Waiting for setup menu command (?=help, v=default setup, q=quit):\n")
+ while (clgcur ("gcommands", xc, yc, wcs, key, Memc[cmd],
+ SZ_LINE) != EOF) {
+
+ switch (key) {
+
+ case 'q':
+ break
+ case '?':
+ call gpagefile (gd, HELPFILE, "")
+ case 'f':
+ rval = ap_cfwhmpsf (ap, gd, out, stid, rmin, rmax, imin, imax)
+ case 'h':
+ #rval = ap_ccthresh (ap, gd, out, stid, rmin, rmax, imin, imax)
+ case 'c':
+ rval = ap_ccapert (ap, gd, out, stid, rmin, rmax, imin, imax)
+ case 's':
+ rval = ap_csigma (ap, gd, out, stid, rmin, rmax, imin, imax)
+ case 'n':
+ rval = ap_crclean (ap, gd, out, stid, rmin, rmax, imin, imax)
+ case 'p':
+ rval = ap_crclip (ap, gd, out, stid, rmin, rmax, imin, imax)
+ case 'l':
+ rval = ap_cdatamin (ap, gd, out, stid, rmin, rmax, imin, imax)
+ case 'u':
+ rval = ap_cdatamax (ap, gd, out, stid, rmin, rmax, imin, imax)
+ case 'a':
+ rval = ap_cannulus (ap, gd, out, stid, rmin, rmax, imin, imax)
+ case 'd':
+ rval = ap_cdannulus (ap, gd, out, stid, apstatr (ap, ANNULUS),
+ rmin, rmax, imin, imax)
+ case 'g':
+ rval = ap_crgrow (ap, gd, out, stid, rmin, rmax, imin, imax)
+ case 'v':
+ rval = ap_cfwhmpsf (ap, gd, out, stid, rmin, rmax, imin, imax)
+ rval = ap_ccapert (ap, gd, out, stid, rmin, rmax, imin, imax)
+ rval = ap_csigma (ap, gd, out, stid, rmin, rmax, imin, imax)
+ rval = ap_cannulus (ap, gd, out, stid, rmin, rmax, imin, imax)
+ rval = ap_cdannulus (ap, gd, out, stid, apstatr (ap, ANNULUS),
+ rmin, rmax, imin, imax)
+ default:
+ call printf ("Unknown or ambiguous keystroke command\007\n")
+ }
+ call printf (
+ "Waiting for setup menu command (?=help, v=default setup, q=quit):\n")
+ }
+ call printf (
+ "Interactive setup is complete. Type w to save parameters.\n")
+
+ # Restore the viewport and window coordinates.
+ call gsview (gd, u1, u2, v1, v2)
+ call gswind (gd, x1, x2, y1, y2)
+
+ # Clean up memory space.
+ call gdeactivate (gd, 0)
+ call sfree (sp)
+
+ # Print the answer.
+ cier = ap_ycenter (ap, im, xcenter, ycenter, x, y, nvertices + 1)
+ sier = apfitsky (ap, im, apstatr (ap, PYCX), apstatr (ap, PYCY),
+ NULL, gd)
+ pier = ap_yfit (ap, im, x, y, nvertices + 1, apstatr (ap, SKY_MODE),
+ apstatr (ap, SKY_SIGMA), apstati (ap, NSKY))
+ call ap_qyprint (ap, cier, sier, pier)
+
+ return (nvertices)
+end