aboutsummaryrefslogtreecommitdiff
path: root/noao/digiphot/apphot/center/apcradsetup.x
blob: 8902c5ef3340f526aebec3aff85e567d10bb27ce (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
include "../lib/display.h"

define	HELPFILE	"apphot$center/icenter.key"

# AP_CRADSETUP -- Procedure to set up apphot interactively

procedure ap_cradsetup (ap, im, wx, wy, gd, out, stid)

pointer	ap			# pointer to apphot structure
pointer	im			# pointero to the IRAF image
real	wx, wy			# cursor coordinates
pointer	gd			# pointer to graphics stream
int	out			# output file descriptor
int	stid			# output file sequence number

int	cier, wcs, key
pointer	sp, cmd
real	xcenter, ycenter, xc, yc, rmin, rmax, imin, imax, rval
real	u1, u2, v1, v2, x1, x2, y1, y2

int	ap_showplot(), apfitcenter(), apstati(), clgcur()
real	ap_cfwhmpsf(), ap_ccapert(), ap_csigma()
real	ap_cdatamin(), ap_cdatamax(), ap_crclean(), ap_crclip()

begin
	# Check for open graphics stream.
	if (gd == NULL)
	    return
	call greactivate (gd, 0)

	# Store old viewport and window coordinates.
	call ggview (gd, u1, u2, v1, v2)
	call ggwind (gd, x1, x2, y1, y2)

	# Make the plot.
	if (ap_showplot (ap, im, wx, wy, gd, xcenter, ycenter, rmin, rmax,
	    imin, imax) == ERR) {
	    call gdeactivate (gd, 0)
	    return
	}

	# Allocate temporary space.
	call smark (sp)
	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 's':
	        rval = ap_csigma (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 'c':
		rval = ap_ccapert (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 '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_ccthresh (ap, gd, out, stid, 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")
	}

	# Set up interactively.
	call printf (
	    "Interactive setup is complete [Type w to save parameters].\n")

	# Restore old window and viewport coordinates.
	call gsview (gd, u1, u2, v1, v2)
	call gswind (gd, x1, x2, y1, y2)

	# Free plots and working space.
	call sfree (sp)
	call gdeactivate (gd, 0)

	# Fit the center and plot the results.
	cier = apfitcenter (ap, im, xcenter, ycenter)
	call ap_cplot (ap, 0, gd, apstati (ap, RADPLOTS))
	call ap_qcenter (ap, cier)
end