ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/rt/driver.h
Revision: 1.1
Committed: Thu Feb 2 10:41:13 1989 UTC (35 years, 3 months ago) by greg
Content type: text/plain
Branch: MAIN
Log Message:
Initial revision

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     int xsiz, ysiz; /* device size */
19     int inpready; /* input ready on device */
20     };
21    
22     extern int stderr_v(); /* error vectors */
23     extern int (*wrnvec)(), (*errvec)(), (*cmdvec)();
24    
25     extern struct driver *comm_init(); /* stream interface */
26     /* stream commands */
27     #define COM_CLEAR 0
28     #define COM_PAINTR 1
29     #define COM_GETCUR 2
30     #define COM_COMOUT 3
31     #define COM_COMIN 4
32     #define NREQUESTS 5 /* number of valid requests */
33    
34     struct device { /* interactive device */
35     char *name; /* device name */
36     char *descrip; /* description */
37     struct driver *(*init)(); /* initialize device */
38     };
39    
40     extern struct device devtable[]; /* supported devices */
41    
42     #define MB1 ('\n') /* mouse button 1 */
43     #define MB2 ('\r') /* mouse button 2 */
44     #define MB3 (' ') /* mouse button 3 */
45     #define ABORT ('C'-'@') /* abort key */
46    
47     #define MAXRES 4000 /* preposterous display resolution */
48    
49     /*
50     * struct driver *
51     * dname_init(name)
52     * char *name;
53     * {
54     * Initialize device and return pointer to driver
55     * functions. Returns NULL if an error occurred.
56     * The name string is used to identify the client.
57     * A device can be open by at most one client.
58     * Be verbose in error reports; call stderr_v().
59     * If device has its own error output, set errvec.
60     * }
61     * (*dev->close)()
62     * {
63     * Close the device. Reset errvec to stderr_v.
64     * }
65     * (*dev->clear)(xres, yres)
66     * int xres, yres;
67     * {
68     * Clear the device for xres by yres output. This call must
69     * be made prior to any output.
70     * }
71     * (*dev->paintr)(col, xmin, ymin, xmax, ymax)
72     * COLOR col;
73     * int xmin, ymin, xmax, ymax;
74     * {
75     * Paint a half-open rectangle from (xmin,ymin) to (xmax,ymax)
76     * with the color col. Can call repaint() if necessary.
77     * }
78     * (*dev->getcur)(xp, yp)
79     * int *xp, *yp;
80     * {
81     * Get the cursor position entered by the user via mouse,
82     * joystick, etc. Return the key hit by the user (usually
83     * MB1 or MB2). Return ABORT to cancel.
84     * Can be NULL for devices without this capability.
85     * }
86     * (*dev->comout)(out)
87     * char *out;
88     * {
89     * Print the string out on the device command line. If the
90     * string ends with '\n', the message is considered complete,
91     * and the next call can erase it.
92     * }
93     * (*dev->comin)(in)
94     * char *in;
95     * {
96     * Read an edited input string from the command line. If
97     * an unrecognized control character is entered, terminate
98     * input and return the string with only that character.
99     * The input string should not contain a newline ('\n').
100     * Must work in consort with comout.
101     * }
102     * xsiz, ysiz
103     * The maximum allowable x and y dimensions. If any
104     * size is allowable, these should be set to MAXRES.
105     * inpready
106     * This variable should be positive
107     * when characters are ready on the input.
108     */