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
|
include <imhdr.h>
include <mach.h>
include "rpds.h"
# PDS_READ_IMAGE -- Read PDS image pixels to IRAF image file
procedure pds_read_image (pds_fd, im, parameters)
int pds_fd
pointer im
long parameters[LEN_PAR_ARRAY]
short linemin, linemax
int i, nlines
pointer buf
long v[IM_MAXDIM]
int pds_init_read_scan(), pds_read_scan(), impnls()
long clktime()
errchk impnls, pds_init_read_scan, pds_read_scan
include "rpds.com"
begin
call pds_set_image_header (im)
if (NAXIS(im) == 0)
return
IRAFMAX(im) = -MAX_REAL
IRAFMIN(im) = MAX_REAL
call amovkl (long(1), v, IM_MAXDIM)
nlines = NLINES(im)
# PDS data is converted to type SHORT.
i= pds_init_read_scan (parameters)
do i = 1, nlines {
if (impnls (im, buf, v) == EOF)
call error (3, "Error writing PDS data")
if (pds_read_scan (pds_fd, Mems[buf]) != NCOLS(im))
call error (4, "Error reading PDS data")
call alims (Mems[buf], NCOLS(im), linemin, linemax)
IRAFMAX(im) = max (IRAFMAX(im), real (linemax))
IRAFMIN(im) = min (IRAFMIN(im), real (linemin))
}
LIMTIME(im) = clktime (long(0))
end
# PDS_SET_IMAGE_HEADER -- Set remaining header fields not set in read_header.
procedure pds_set_image_header (im)
pointer im
include "rpds.com"
begin
# Set IRAF image pixel type
if (data_type == ERR) {
if (BITPIX <= SZ_SHORT * SZB_CHAR * NBITS_BYTE)
IM_PIXTYPE(im) = TY_SHORT
else
IM_PIXTYPE(im) = TY_LONG
} else
IM_PIXTYPE(im) = data_type
end
|