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
|
=pod
=head1 NAME
B<FunImageRowPut - put row(s) of an image>
=head1 SYNOPSIS
#include <funtools.h>
void *FunImageRowPut(Fun fun, void *buf, int rstart, int rstop,
int dim1, int dim2, int bitpix, char *plist)
=head1 DESCRIPTION
The B<FunImageRowPut()> routine writes one or more image rows to
the specified FITS image file. The first argument is the Funtools
handle returned by FunOpen().
The second B<buf> argument is a pointer to the row data buffer,
while the third and fourth arguments specify the starting and ending
rows to write. Valid rows values range from 1 to dim2, i.e., row is
one-valued.
The B<dim1>and B<dim2> arguments that follow specify the
dimensions, where dim1 corresponds to naxis1 and dim2 corresponds to
naxis2. The B<bitpix> argument data type of the image and can
have the following FITS-standard values:
=over 4
=item *
8 unsigned char
=item *
16 short
=item *
32 int
=item *
-32 float
=item *
-64 double
=back
For example:
double *drow;
Fun fun, fun2;
... open files ...
/* get section dimensions */
FunInfoGet(fun, FUN_SECT_DIM1, &dim1, FUN_SECT_DIM2, &dim2, 0);
/* allocate one line's worth */
drow = malloc(dim1*sizeof(double));
/* retrieve and process each input row (starting at 1) */
for(i=1; i <= dim2; i++){
if( !FunImageRowGet(fun, drow, i, i, "bitpix=-64") )
gerror(stderr, "can't FunImageRowGet: %d %s\n", i, iname);
... process drow ...
if( !FunImageRowPut(fun2, drow, i, i, 64, NULL) )
gerror(stderr, "can't FunImageRowPut: %d %s\n", i, oname);
}
...
The data are assumed to be in the native machine format and will
automatically be swapped to big-endian FITS format if necessary. This
behavior can be over-ridden with the B<convert=[true|false]>
keyword in the B<plist> param list string.
When you are finished writing the image, you should call
FunFlush() to write out the FITS
image padding. However, this is not necessary if you subsequently call
FunClose() without doing any other I/O to the FITS file.
=head1 SEE ALSO
See funtools(n) for a list of Funtools help pages
=cut
|