-
Notifications
You must be signed in to change notification settings - Fork 6
/
Strip.h
255 lines (211 loc) · 7.09 KB
/
Strip.h
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
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
/*************************************************************************\
* Copyright (c) 1994-2004 The University of Chicago, as Operator of Argonne
* National Laboratory.
* Copyright (c) 1997-2003 Southeastern Universities Research Association,
* as Operator of Thomas Jefferson National Accelerator Facility.
* Copyright (c) 1997-2002 Deutches Elektronen-Synchrotron in der Helmholtz-
* Gemelnschaft (DESY).
* This file is distributed subject to a Software License Agreement found
* in the file LICENSE that is included with this distribution.
\*************************************************************************/
#ifndef _Strip
#define _Strip
#include "StripDefines.h"
#include "StripMisc.h"
#ifndef NO_X11_HERE /* Albert */
#include "StripConfig.h"
#endif /* Albert */
#include "StripCurve.h"
/* ======= Data Types ======= */
typedef void * Strip;
typedef int (*StripCallback) (StripCurve, void *);
/* ======= Attributes ======= */
typedef enum
{
STRIP_CONNECT_FUNC = 1, /* (StripCallback) rw */
STRIP_CONNECT_DATA, /* (void *) rw */
STRIP_DISCONNECT_FUNC, /* (StripCallback) rw */
STRIP_DISCONNECT_DATA, /* (void *) rw */
STRIP_QUIT_FUNC, /* (StripCallback) rw */
STRIP_QUIT_DATA, /* (void *) rw */
STRIP_DAQ, /* (void *) rw */
STRIP_LAST_ATTRIBUTE
}
StripAttribute;
/* ======= Functions ======= */
/*
* Strip_init
*
* Creates a new strip data structure, setting all values to defaults.
* The first two arguments are the command line specs. The last
* argument is the FILE pointer to which all error/status messages are
* written.
*/
Strip Strip_init (int *argc,
char *argv[],
FILE *logfile);
/*
* Strip_delete
*
* Destroys the specified strip chart.
*/
void Strip_delete (Strip);
/*
* Strip_set/getattr
*
* Sets or gets the specified attribute, returning true on success.
*/
int Strip_setattr (Strip, ...);
int Strip_getattr (Strip, ...);
/*
* Strip_newcurve
*
* Retrieves a new curve object.
*/
StripCurve Strip_getcurve (Strip);
/*
* Strip_freecurve
*
* Destroys the specified curve, removing all internal references to it.
* If the curve is connected to a data source, it is first disconnected.
*/
void Strip_freecurve (Strip, StripCurve);
/*
* Strip_freesomecurves
*
* Same as freecurve, except a null-terminated array of curves is
* operated upon.
*/
void Strip_freesomecurves (Strip, StripCurve[]);
/*
* Strip_addfd
*
* Manages the specified file descriptor. Calls the specified event
* handler with the given data when activity occurs on the file
* descriptor.
*/
#ifndef NO_X11_HERE /* Albert */
int Strip_addfd (Strip,
int, /* file descriptor */
XtInputCallbackProc, /* callback function */
XtPointer); /* callback data */
/*
* Strip_addtimeout
*
* Calls the given callback once the specified time span has passed.
* If the timeout cannot be registered, false is returned.
*/
XtIntervalId Strip_addtimeout (Strip,
double, /* seconds */
XtTimerCallbackProc, /* function */
XtPointer); /* data */
#endif /* Albert */
/*
* Strip_clearfd
*
* Unmanages the specified file descriptor.
*/
int Strip_clearfd (Strip, int); /* file descriptor */
/*
* Strip_go
*
* Causes the strip chart to draw itself and start plotting available
* data. If any curves are connected then the graph pops up, otherwise
* the dialog box pops up.
*
* This function must be called before any of the following strip control
* functions: Strip_print()
*/
void Strip_go (Strip);
/*
* Strip_connectcurve
*
* Calls the user-specified connection callback, and sets internal
* status indicators. This function should be called rather than calling
* the user specified routine directly.
*
* To allow for asynchronous connection requests, the client must also
* call Strip_setconnected() to inform the Strip object that the
* curve has been connected. If the connection is established within
* the client callback, then Strip_setconnected() should be called
* from there, otherwise it should be called once the actual physical
* connection has been established.
*
*/
int Strip_connectcurve (Strip, StripCurve);
/*
* Strip_setconnected
*
* Informs the Strip object that the specified curve is ready for
* plotting.
*
* After this function is called, data will start being gathered for the
* StripCurve. Whether or not the data are plotted depends on the
* curve's plot status and/or pen status attribute values.
*/
void Strip_setconnected (Strip, StripCurve);
#ifndef PEND_DESCRIPTION
/*
* Strip_setdescconnected
*
* Informs the Strip object that description for the specified curve
* is ready for plotting.
*
*/
void Strip_setdescconnected (Strip, StripCurve);
#endif
/*
* Strip_setwating
*
* Informs the Strip object that the specified curve is waiting to
* reestablish a link to its data source.
*/
void Strip_setwaiting (Strip, StripCurve);
/*
* Strip_disconnectcurve
*
* Like Strip_connectcurve. Calls user-supplied disconnect callback, and
* sets internal status indicators.
*/
int Strip_disconnectcurve (Strip, StripCurve);
/*
* Strip_clear
*
* Frees all curves and clears the graph.
*/
void Strip_clear (Strip);
/*
* Strip_dump
*
* Dumps the data buffer to specified file.
*/
int Strip_dumpdata (Strip, char *);
/*
* Strip_writeconfig
*
* Writes the current configuration to the specified stdio stream at the
* current location in the stream. See StripConfig.h for info on the
* output format.
*/
int Strip_writeconfig (Strip, FILE *, StripConfigMask, char *);
/*
* Strip_readconfig
*
* Scans the specified file, searching for configuration information
* written by Strip_writeconfig(). All found attributes which fit the
* specified mask are then pushed into the current configuration. See
* StripConfig.h for more info.
*/
int Strip_readconfig (Strip, FILE *, StripConfigMask, char *);
/* Should put descriptions here as for others */
void Strip_refresh (Strip the_strip);
int Strip_auto_scale (Strip the_strip);
void Strip_handlexerrors (void);
void Strip_ignorexerrors (void);
/*
* callBrowser
*
* Calls the default browser with the given url and bookmark
*/
int callBrowser(Display *dpy, char *url, char *bookmark);
#endif /* #ifndef _Strip */