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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
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
|