ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/rt/driver.h
(Generate patch)

Comparing ray/src/rt/driver.h (file contents):
Revision 1.1 by greg, Thu Feb 2 10:41:13 1989 UTC vs.
Revision 2.4 by greg, Sat Feb 22 02:07:28 2003 UTC

# Line 1 | Line 1
1 < /* Copyright (c) 1987 Regents of the University of California */
2 <
3 < /* SCCSid "$SunId$ LBL" */
4 <
1 > /* RCSid: $Id$ */
2   /*
3   *  driver.h - header file for interactive device drivers.
4 + */
5 +
6 + /* ====================================================================
7 + * The Radiance Software License, Version 1.0
8   *
9 < *     2/2/87
9 > * Copyright (c) 1990 - 2002 The Regents of the University of California,
10 > * through Lawrence Berkeley National Laboratory.   All rights reserved.
11 > *
12 > * Redistribution and use in source and binary forms, with or without
13 > * modification, are permitted provided that the following conditions
14 > * are met:
15 > *
16 > * 1. Redistributions of source code must retain the above copyright
17 > *         notice, this list of conditions and the following disclaimer.
18 > *
19 > * 2. Redistributions in binary form must reproduce the above copyright
20 > *       notice, this list of conditions and the following disclaimer in
21 > *       the documentation and/or other materials provided with the
22 > *       distribution.
23 > *
24 > * 3. The end-user documentation included with the redistribution,
25 > *           if any, must include the following acknowledgment:
26 > *             "This product includes Radiance software
27 > *                 (http://radsite.lbl.gov/)
28 > *                 developed by the Lawrence Berkeley National Laboratory
29 > *               (http://www.lbl.gov/)."
30 > *       Alternately, this acknowledgment may appear in the software itself,
31 > *       if and wherever such third-party acknowledgments normally appear.
32 > *
33 > * 4. The names "Radiance," "Lawrence Berkeley National Laboratory"
34 > *       and "The Regents of the University of California" must
35 > *       not be used to endorse or promote products derived from this
36 > *       software without prior written permission. For written
37 > *       permission, please contact [email protected].
38 > *
39 > * 5. Products derived from this software may not be called "Radiance",
40 > *       nor may "Radiance" appear in their name, without prior written
41 > *       permission of Lawrence Berkeley National Laboratory.
42 > *
43 > * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
44 > * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
45 > * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
46 > * DISCLAIMED.   IN NO EVENT SHALL Lawrence Berkeley National Laboratory OR
47 > * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
48 > * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
49 > * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
50 > * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
51 > * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
52 > * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
53 > * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
54 > * SUCH DAMAGE.
55 > * ====================================================================
56 > *
57 > * This software consists of voluntary contributions made by many
58 > * individuals on behalf of Lawrence Berkeley National Laboratory.   For more
59 > * information on Lawrence Berkeley National Laboratory, please see
60 > * <http://www.lbl.gov/>.
61   */
62  
63   struct driver {                         /* driver functions */
64 <        int  (*close)();                        /* close device */
65 <        int  (*clear)();                        /* clear device */
66 <        int  (*paintr)();                       /* paint rectangle */
64 >        void  (*close)();                       /* close device */
65 >        void  (*clear)();                       /* clear device */
66 >        void  (*paintr)();                      /* paint rectangle */
67          int  (*getcur)();                       /* get cursor position */
68 <        int  (*comout)();                       /* command line output */
69 <        int  (*comin)();                        /* command line input */
68 >        void  (*comout)();                      /* command line output */
69 >        void  (*comin)();                       /* command line input */
70 >        void  (*flush)();                       /* flush output */
71 >        double  pixaspect;                      /* pixel aspect ratio */
72          int  xsiz, ysiz;                        /* device size */
73          int  inpready;                          /* input ready on device */
74   };
75 <
76 < extern int  stderr_v();                 /* error vectors */
77 < extern int  (*wrnvec)(), (*errvec)(), (*cmdvec)();
24 <
25 < extern struct driver  *comm_init();     /* stream interface */
75 >                                        /* magic numbers for verification */
76 > #define COM_SENDM               0x6f37
77 > #define COM_RECVM               0x51da
78                                          /* stream commands */
79   #define COM_CLEAR               0
80   #define COM_PAINTR              1
81   #define COM_GETCUR              2
82   #define COM_COMOUT              3
83   #define COM_COMIN               4
84 < #define NREQUESTS               5       /* number of valid requests */
84 > #define COM_FLUSH               5
85 > #define NREQUESTS               6       /* number of valid requests */
86  
87 < struct device {                         /* interactive device */
87 > extern struct device {                  /* interactive device */
88          char  *name;                            /* device name */
89          char  *descrip;                         /* description */
90          struct driver  *(*init)();              /* initialize device */
91 < };
91 > }  devtable[];                          /* supported devices */
92  
93 < extern struct device  devtable[];       /* supported devices */
93 > extern char  dev_default[];             /* default device name */
94  
95   #define  MB1            ('\n')          /* mouse button 1 */
96   #define  MB2            ('\r')          /* mouse button 2 */
97   #define  MB3            (' ')           /* mouse button 3 */
98   #define  ABORT          ('C'-'@')       /* abort key */
99  
47 #define  MAXRES         4000            /* preposterous display resolution */
48
100   /*
101   *  struct driver *
102 < *  dname_init(name)
103 < *  char  *name;
102 > *  dname_init(name, id)
103 > *  char  *name, *id;
104   *  {
105   *      Initialize device and return pointer to driver
106   *      functions.  Returns NULL if an error occurred.
107 < *      The name string is used to identify the client.
107 > *      The name string identifies the driver,
108 > *      and the id string identifies the client.
109   *      A device can be open by at most one client.
110 < *      Be verbose in error reports; call stderr_v().
111 < *      If device has its own error output, set errvec.
110 > *      Be verbose in error reports; call eputs().
111 > *      If device has its own error output, set erract.
112   *  }
113   *  (*dev->close)()
114   *  {
115 < *      Close the device.  Reset errvec to stderr_v.
115 > *      Close the device.  Reset error vectors.
116   *  }
117   *  (*dev->clear)(xres, yres)
118   *  int  xres, yres;
119   *  {
120 < *      Clear the device for xres by yres output.  This call must
120 > *      Clear the device for xres by yres output.  This call will
121   *      be made prior to any output.
122   *  }
123   *  (*dev->paintr)(col, xmin, ymin, xmax, ymax)
# Line 73 | Line 125 | extern struct device  devtable[];      /* supported devices
125   *  int  xmin, ymin, xmax, ymax;
126   *  {
127   *      Paint a half-open rectangle from (xmin,ymin) to (xmax,ymax)
128 < *      with the color col.  Can call repaint() if necessary.
128 > *      with the color col.
129   *  }
130   *  (*dev->getcur)(xp, yp)
131   *  int  *xp, *yp;
# Line 90 | Line 142 | extern struct device  devtable[];      /* supported devices
142   *      string ends with '\n', the message is considered complete,
143   *      and the next call can erase it.
144   *  }
145 < *  (*dev->comin)(in)
146 < *  char  *in;
145 > *  (*dev->comin)(in, prompt)
146 > *  char  *in, *prompt;
147   *  {
148 < *      Read an edited input string from the command line.  If
149 < *      an unrecognized control character is entered, terminate
150 < *      input and return the string with only that character.
151 < *      The input string should not contain a newline ('\n').
152 < *      Must work in consort with comout.
148 > *      Print a prompt then read an edited input command line
149 > *      assuming the in buffer is big enough.  Unless prompt is NULL,
150 > *      the driver may substitute its own rview command.  This is
151 > *      the most reliable way to repaint areas of the screen.
152 > *      If the user enters an unrecognized control character,
153 > *      terminate input and return the string with only that character.
154 > *      The input string should not contain a newline.  The routines in
155 > *      editline.c may be useful.  Comin must work in consort with comout.
156   *  }
157 + *  (*dev->flush)()
158 + *  {
159 + *      Flush output to the display.  This is guaranteed to be called
160 + *      frequently enough to keep the display up to date.
161 + *      This is an ideal time to check for device input.
162 + *      This function can be NULL for devices that don't need it.
163 + *  }
164   *  xsiz, ysiz
165   *      The maximum allowable x and y dimensions.  If any
166   *      size is allowable, these should be set to MAXRES.
167   *  inpready
168 < *      This variable should be positive
169 < *      when characters are ready on the input.
168 > *      This variable should be made positive asynchronously
169 > *      when characters are ready on the input.  (Often easiest
170 > *      to check for input during calls to paintr.)
171   */
172 +
173 + #ifdef NOPROTO
174 +
175 + extern void     editline();
176 + extern void     tocombuf();
177 + extern int      fromcombuf();
178 + extern struct driver    *slave_init();
179 + extern struct driver    *comm_init();
180 + extern int      new_ctab();
181 + extern int      get_pixel();
182 + extern void     make_gmap();
183 + extern void     set_cmap();
184 + extern void     map_color();
185 +
186 + #else
187 +                                        /* defined in editline.c */
188 + extern void     editline(char *buf, int (*c_get)(), void (*s_put)());
189 + extern void     tocombuf(char *b, struct driver *d);
190 + extern int      fromcombuf(char *b, struct driver *d);
191 +                                        /* defined in devcomm.c */
192 + extern struct driver    *slave_init(char *dname, char *id);
193 + extern struct driver    *comm_init(char *dname, char *id);
194 +                                        /* defined in colortab.c */
195 + extern int      new_ctab(int ncolors);
196 + extern int      get_pixel(COLOR col, void (*set_pixel)());
197 + extern void     make_gmap(double gam);
198 + extern void     set_cmap(BYTE *rmap, BYTE *gmap, BYTE *bmap);
199 + extern void     map_color(BYTE rgb[3], COLOR col);
200 +
201 + #endif

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines