ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/rt/driver.h
Revision: 2.2
Committed: Mon Apr 5 15:16:46 1993 UTC (31 years ago) by greg
Content type: text/plain
Branch: MAIN
Changes since 2.1: +2 -1 lines
Log Message:
added slave_init() for slave mode of rview

File Contents

# User Rev Content
1 greg 1.1 /* Copyright (c) 1987 Regents of the University of California */
2    
3     /* SCCSid "$SunId$ LBL" */
4    
5     /*
6     * driver.h - header file for interactive device drivers.
7     *
8     * 2/2/87
9     */
10    
11     struct driver { /* driver functions */
12     int (*close)(); /* close device */
13     int (*clear)(); /* clear device */
14     int (*paintr)(); /* paint rectangle */
15     int (*getcur)(); /* get cursor position */
16     int (*comout)(); /* command line output */
17     int (*comin)(); /* command line input */
18 greg 1.6 int (*flush)(); /* flush output */
19 greg 1.4 double pixaspect; /* pixel aspect ratio */
20 greg 1.1 int xsiz, ysiz; /* device size */
21     int inpready; /* input ready on device */
22     };
23    
24     extern int stderr_v(); /* error vectors */
25     extern int (*wrnvec)(), (*errvec)(), (*cmdvec)();
26    
27 greg 2.2 /* stream interface */
28     extern struct driver *comm_init(), *slave_init();
29 greg 1.3 /* magic numbers for verification */
30     #define COM_SENDM 0x6f37
31     #define COM_RECVM 0x51da
32 greg 1.1 /* stream commands */
33     #define COM_CLEAR 0
34     #define COM_PAINTR 1
35     #define COM_GETCUR 2
36     #define COM_COMOUT 3
37     #define COM_COMIN 4
38 greg 1.6 #define COM_FLUSH 5
39     #define NREQUESTS 6 /* number of valid requests */
40 greg 1.1
41 greg 1.4 extern struct device { /* interactive device */
42 greg 1.1 char *name; /* device name */
43     char *descrip; /* description */
44     struct driver *(*init)(); /* initialize device */
45 greg 1.4 } devtable[]; /* supported devices */
46 greg 1.1
47 greg 1.8 extern char dev_default[]; /* default device name */
48    
49 greg 1.1 #define MB1 ('\n') /* mouse button 1 */
50     #define MB2 ('\r') /* mouse button 2 */
51     #define MB3 (' ') /* mouse button 3 */
52     #define ABORT ('C'-'@') /* abort key */
53    
54     /*
55     * struct driver *
56 greg 1.3 * dname_init(name, id)
57     * char *name, *id;
58 greg 1.1 * {
59     * Initialize device and return pointer to driver
60     * functions. Returns NULL if an error occurred.
61 greg 1.3 * The name string identifies the driver,
62     * and the id string identifies the client.
63 greg 1.1 * A device can be open by at most one client.
64     * Be verbose in error reports; call stderr_v().
65 greg 1.2 * If device has its own error output, set errvec,
66     * cmdvec and wrnvec.
67 greg 1.1 * }
68     * (*dev->close)()
69     * {
70 greg 1.2 * Close the device. Reset error vectors.
71 greg 1.1 * }
72     * (*dev->clear)(xres, yres)
73     * int xres, yres;
74     * {
75 greg 1.2 * Clear the device for xres by yres output. This call will
76 greg 1.1 * be made prior to any output.
77     * }
78     * (*dev->paintr)(col, xmin, ymin, xmax, ymax)
79     * COLOR col;
80     * int xmin, ymin, xmax, ymax;
81     * {
82     * Paint a half-open rectangle from (xmin,ymin) to (xmax,ymax)
83 greg 1.6 * with the color col.
84 greg 1.1 * }
85     * (*dev->getcur)(xp, yp)
86     * int *xp, *yp;
87     * {
88     * Get the cursor position entered by the user via mouse,
89     * joystick, etc. Return the key hit by the user (usually
90     * MB1 or MB2). Return ABORT to cancel.
91     * Can be NULL for devices without this capability.
92     * }
93     * (*dev->comout)(out)
94     * char *out;
95     * {
96     * Print the string out on the device command line. If the
97     * string ends with '\n', the message is considered complete,
98     * and the next call can erase it.
99     * }
100 greg 1.5 * (*dev->comin)(in, prompt)
101     * char *in, *prompt;
102 greg 1.1 * {
103 greg 1.5 * Print a prompt then read an edited input command line
104     * assuming the in buffer is big enough. Unless prompt is NULL,
105     * the driver may substitute its own rview command. This is
106     * the most reliable way to repaint areas of the screen.
107 greg 1.7 * If the user enters an unrecognized control character,
108 greg 1.5 * terminate input and return the string with only that character.
109     * The input string should not contain a newline. The routines in
110     * editline.c may be useful. Comin must work in consort with comout.
111 greg 1.6 * }
112     * (*dev->flush)()
113     * {
114     * Flush output to the display. This is guaranteed to be called
115     * frequently enough to keep the display up to date.
116     * This is an ideal time to check for device input.
117     * This function can be NULL for devices that don't need it.
118 greg 1.1 * }
119     * xsiz, ysiz
120     * The maximum allowable x and y dimensions. If any
121     * size is allowable, these should be set to MAXRES.
122     * inpready
123 greg 1.2 * This variable should be made positive asynchronously
124     * when characters are ready on the input. (Often easiest
125     * to check for input during calls to paintr.)
126 greg 1.1 */