-
Notifications
You must be signed in to change notification settings - Fork 0
/
Notes
171 lines (166 loc) · 8.02 KB
/
Notes
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
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
/*
* CDL -- Client Display Library. This package provides a general interface
* for client applications to do IRAF-like image display and interaction.
* It is layered upon other interfaces for handling basic display, cursor
* and frame buffer operations, and low-level server communications.
*
* cdl = cdl_open (imtdev)
* cdl_displayPix (cdl, pix, nx, ny, bitpix, frame, fbconfig, zscale)
* cdl_readCursor (cdl, sample, &x, &y, &key)
* cdl_setCursor (cdl, x, y, wcs)
* cdl_clearFrame (cdl)
* cdl_close (cdl)
*
* cdl_displayIRAF (cdl, fname, band, frame, fbconfig, zscale)
* cdl_isIRAF (fname)
* cdl_readIRAF (fname, band, &pix, &nx, &ny, &bitpix);
*
* cdl_displayFITS (cdl, fname, frame, fbconfig, zscale)
* cdl_isFITS (fname)
* cdl_readFITS (fname, &pix, &nx, &ny, &bitpix);
*
* cdl_computeZscale (cdl, pix, nx, ny, bitpix, &z1, &z2)
* cdl_zscaleImage (cdl, &pix, nx, ny, bitpix, z1, z2)
*
* cdl_printPix (cdl, cmd, pix, nx, ny, annotate)
* cdl_printPixToFile (cdl, fname, pix, nx, ny, annotate)
*
* cdl_readImage (cdl, &pix, &nx, &ny)
* cdl_readFrameBuffer (cdl, &pix, &nx, &ny)
* cdl_readSubRaster (cdl, lx, ly, nx, ny, &pix)
* cdl_writeSubRaster (cdl, lx, ly, nx, ny, pix)
*
* cdl_selectFB (cdl, nx, ny, &fb, &fb_w, &fb_h, &nframes, reset)
* cdl_setFBConfig (cdl, configno)
* cdl_getFBConfig (cdl, &configno, &w, &h, &nframes)
* cdl_lookupFBSize (cdl, configno, &w, &h, &nframes)
*
* cdl_[set|get]WCS (cdl, name, title, a, b, c, d, tx, ty, z1, z2, zt)
* cdl_[set|get]Frame (cdl, frame)
* cdl_[set|get]ZTrans (cdl, ztrans)
* cdl_[set|get]ZScale (cdl, z1, z2)
* cdl_[set|get]Sample (cdl, nsample)
* cdl_[set|get]SampleLines (cdl, nlines)
* cdl_[set|get]Contrast (cdl, contrast)
* cdl_[set|get]Name (cdl, imname)
* cdl_[set|get]Title (cdl, imtitle)
*
*
* GRAPHICS OVERLAY ROUTINES:
* --------------------------
* cdl_mapFrame (cdl, frame)
* cdl_markPoint (cdl, x, y, number, size, type, color)
* cdl_markLine (cdl, xs, ys, xe, ye, color)
* cdl_markBox (cdl, lx, ly, ux, uy, fill, color)
* cdl_markPolyline (cdl, xpts, ypts, npts, color)
* cdl_markPolygon (cdl, xpts, ypts, npts, fill, color)
* cdl_markCircle (cdl, x, y, radius, fill, color)
* cdl_markCircAnnuli (cdl, x, y, radius, nannuli, sep, color)
* cdl_markEllipse (cdl, x, y, xrad, yrad, ang, fill, color)
* cdl_markEllipAnnuli (cdl, x, y, xrad, yrad, ang, nannuli, sep, color)
* cdl_markText (cdl, x, y, str, size, angle, color)
*
* cdl_setFont (cdl, type)
*
* cdl_beginDisplayList (cdl)
* cdl_endDisplayList (cdl)
* cdl_drawDisplayList (cdl)
*
* cdl_deleteMark (cdl, x, y)
* cdl_clearOverlay (cdl)
* cdl_redrawOverlay (cdl)
*
*
* Client applications begin with a cdl_open() call to initialize the
* interface. The "imtdev" argument is used to specify a connection at device
* open time, or if NULL the procedure will attempt to first connect on a unix
* socket or fifo pipe if that fails. The syntax for the imtdev argument is
* as follows:
* <domain> : <address>
*
* where <domain> is one of "inet" (internet tcp/ip socket), "unix" (unix
* domain socket) or "fifo" (named pipe). The form of the address depends
* upon the domain, see the IMD interface code comments or documentation
* for examples.
*
* The library assumes a logical coordinate system that has the image or
* raster origin in the lower-left corner. All I/O routines should be passed
* or will return a pixel pointer set to the LL corner of the raster, all
* cursor positions will similarly use this coordinate system. Initially the
* [0,0] origin is defined as the LL of the frame buffer, this will remain
* the case until the WCS is redefined either explicitly through a cdl_setWCS()
* call or by using one of the high level cdl_display*() procedures to display
* an image smaller that the current frame buffer. Applications wishing to
* retain this initial origin or those wanting to explicitly place the image
* in the frame buffer should use the cdl_writeSubRaster() for display. This
* is to allow cursor and subraster positions to be specified in image coord-
* inates more easily. Negative positions are allowed and will either refer
* to empty pixels if the frame buffer is larger than the image, or pixels
* outside the frame buffer boundaries. Raster I/O requests will be clipped
* to the frame buffer endpoints, a request completely outside the frame buffer
* is an error.
*
* The high-level display routines cdl_displayIRAF() and cdl_displayFITS()
* can be used to display images directly by name. A WCS will automatically
* be defined for each image after the optional zscaling hass been computed.
* Applications wishing to define their own WCS need to call cdl_setWCS()
* after the display call to redefine the default WCS.
*/
------------------------------------------------------------------------------
/*
* IMAGE DISPLAY -- The image display interface is responsible for actually
* displaying an image to the server, for reading back a raster from the
* server, and cursor positioning. This is a mid-level interface for
* handling the steps necessary for image display operations without dealing
* directly with the details of communicating with the server.
*
* imd = imd_open (imtdev)
* imd_displayImage (imd, pix, nx, ny, frame, fbconfig, comp_wcs)
* imd_readCursor (imd, sample, &x, &y, &key)
* imd_[set|get]WCS (imd, name, title, a, b, c, d, tx, ty, z1, z2, zt)
* imd_close (imd)
*
* Low Level Procedures
* --------------------
* imd_writeImage (imd, pix, nx, ny, lx, ly)
* imd_readImage (imd, &pix, &nx, &ny)
* imd_readFrameBuffer (imd, &pix, &nx, &ny)
* imd_setFrame (imd, frame)
* imd_setFBConfig (imd, configno)
* imd_getFBConfig (imd, &configno, &width, &height, &nframes))
* imd_setName (imd, name)
* imd_setTitle (imd, title)
* imd_setCursor (imd, x, y, wcs)
* imd_clearFrame (imd)
* imd_writeSubRaster (imd, lx, ly, nx, ny, pix)
* imd_readSubRaster (imd, lx, ly, nx, ny, &pix)
*
* We leave it to the higher level procedures to handle Z-scale trans-
* formations, spatial scaling, and high level image I/O. All display pixels
* are assumed to be scaled to 8-bits already.
*/
------------------------------------------------------------------------------
/*
* COMMUNICATIONS INTERFACE -- The communications interface handles all the
* low-level communications with the server. It implements only the subset
* of the IIS protocol used by XImtool, SAOtng and SAOimage, not the entire
* IIS protocol. It may be swapped out for another protocol in the future
* without affecting the tasks which use it as long as the basic steps re-
* quired for image display are the same.
*
* com_writeData (fd, x, y, pix, nx, ny)
* com_readData (fd, x, y, &pix, &nx, &ny)
* com_readCursor (fd, sample, &x, &y, &key)
* com_setCursor (fd, x, y, wcs)
* com_setFBConfig (fd, configno)
* com_setFrame (fd, frame)
* com_writeWCS (fd, name, a, b, c, d, tx, ty, z1, z2, zt)
* com_readWCS (fd, &name, &a, &b, &c, &d, &tx, &ty,
* &z1, &z2, &zt)
* com_eraseFrame (fd)
*
* We do not actually display images here, all we do is send the individual
* set frame, write a data chunk, etc commands. The caller is responsible for
* coordinating these calls into a legal sequence for image display.
* All routines return 0 if successfull and 1 otherwise.
*/