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.4 by greg, Mon Jan 8 13:37:49 1990 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   };
22
23 extern int  stderr_v();                 /* error vectors */
24 extern int  (*wrnvec)(), (*errvec)(), (*cmdvec)();
25
26 extern struct driver  *comm_init();     /* stream interface */
75                                          /* magic numbers for verification */
76   #define COM_SENDM               0x6f37
77   #define COM_RECVM               0x51da
# Line 33 | Line 81 | extern struct driver  *comm_init();    /* stream interfac
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   extern struct device {                  /* interactive device */
88          char  *name;                            /* device name */
# Line 41 | Line 90 | extern struct device {                 /* interactive device */
90          struct driver  *(*init)();              /* initialize device */
91   }  devtable[];                          /* supported devices */
92  
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 */
# Line 56 | Line 107 | extern struct device {                 /* interactive device */
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,
61 < *      cmdvec and wrnvec.
110 > *      Be verbose in error reports; call eputs().
111 > *      If device has its own error output, set erract.
112   *  }
113   *  (*dev->close)()
114   *  {
# Line 75 | Line 125 | extern struct device {                 /* interactive device */
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 92 | Line 142 | extern struct device {                 /* interactive device */
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.
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.
# Line 109 | Line 169 | extern struct device {                 /* interactive device */
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