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

Comparing ray/src/hd/rhdriver.h (file contents):
Revision 3.6 by gregl, Mon Dec 8 18:51:15 1997 UTC vs.
Revision 3.17 by gwlarson, Thu Dec 10 10:45:55 1998 UTC

# Line 1 | Line 1
1 < /* Copyright (c) 1997 Silicon Graphics, Inc. */
1 > /* Copyright (c) 1998 Silicon Graphics, Inc. */
2  
3   /* SCCSid "$SunId$ SGI" */
4  
# Line 10 | Line 10
10  
11   extern struct driver {
12          char    *name;          /* holodeck name or title */
13 <        VIEW    v;              /* preferred view parameters */
14 <        int     hres, vres;     /* device resolution */
13 >        VIEW    v;              /* base view parameters */
14 >        int     hres, vres;     /* base view resolution */
15          int     ifd;            /* input file descriptor (for select) */
16 +        int     inpready;       /* number of unprocessed input events */
17   } odev;                 /* our open device */
18  
19 <                        /* dev_input() return flags */
19 < #define DEV_SHUTDOWN    01      /* user shutdown request */
20 < #define DEV_NEWVIEW     02      /* view change (new view in odev.v) */
21 < #define DEV_NEWSIZE     04      /* device resolution change */
22 < #define DEV_WAIT        010     /* pause computation and wait for input */
23 < #define DEV_RESUME      020     /* resume after pause */
24 < #define DEV_REDRAW      040     /* redraw from server */
25 < #define DEV_PUTVIEW     0100    /* print out current view */
19 > extern char     odev_args[];    /* command arguments, if any */
20  
21 + extern int      imm_mode;       /* bundles are being delivered immediately */
22  
23 + extern double   eyesepdist;     /* world eye separation distance */
24 +
25 +                                /* user commands */
26 + #define DC_SETVIEW      0               /* set the base view */
27 + #define DC_GETVIEW      1               /* print the current base view */
28 + #define DC_LASTVIEW     2               /* restore previous view */
29 + #define DC_FOCUS        3               /* view focus */
30 + #define DC_PAUSE        4               /* pause the current calculation */
31 + #define DC_RESUME       5               /* resume the calculation */
32 + #define DC_REDRAW       6               /* redraw from server */
33 + #define DC_KILL         7               /* kill rtrace process(es) */
34 + #define DC_RESTART      8               /* restart rtrace process(es) */
35 + #define DC_CLOBBER      9               /* clobber holodeck file */
36 + #define DC_QUIT         10              /* quit the program */
37 +
38 + #define DC_NCMDS        11              /* number of commands */
39 +
40 +                                /* dev_input() returns flags from above */
41 + #define DFL(dc)         (1<<(dc))
42 +
43 + #define CTRL(c)         ((c)-'@')
44 +                                /* commands entered in display window */
45 + #define DV_INIT         {'\0','v','l','f','p','\r',CTRL('L'),'K','R','C','q'}
46 +                                /* commands entered on stdin */
47 + #define DC_INIT         {"VIEW=","where","last","frame","pause","resume",\
48 +                                "redraw","kill","restart","clobber","quit"}
49 +
50 +
51   /************************************************************************
52   * Driver routines (all are required):
53  
# Line 34 | Line 57 | dev_open(nm)           : prepare the device
57   char    *nm;            : appropriate title bar annotation
58  
59   Sets fields of odev structure and prepares the display for i/o.
60 < The view type, horizontal and vertical view angles and other default
61 < parameters in odev.v should also be assigned.
60 > The base view type, horizontal and vertical view angles and other
61 > default parameters in odev.v should also be assigned.
62  
63  
64 < void
65 < dev_view(nv)            : set display view parameters
64 > int
65 > dev_view(nv)            : set base view parameters
66   VIEW    *nv;            : the new view
67  
68 < Updates the display for the given view change.
68 > Updates the display for the given base view change.
69   Look for nv==&odev.v when making view current after dev_input()
70 < returns DEV_NEWVIEW flag.
70 > returns DEV_NEWVIEW flag.  Return 1 on success, or 0 if the
71 > new view would conflict with device requirements.  In the latter
72 > case, reset parameters in nv to make it more agreeable, calling
73 > error(COMMAND, "appropriate user warning").
74  
75  
76   void
77 < dev_value(c, p, v)      : register new point of light
77 > dev_clear()             : clear device memory
78 >
79 > Clear the device memory in preparation for fresh data.  Clearing
80 > the screen is optional.
81 >
82 >
83 > void
84 > dev_value(c, d, p)      : register new point of light
85   COLR    c;              : pixel color (RGBE)
86 + FVECT   d;              : ray direction vector
87   FVECT   p;              : world intersection point
54 FVECT   v;              : ray direction vector
88  
89 < Add the given color point to the display output queue.
89 > Add the given color point to the display output queue.  If imm_mode is
90 > non-zero, then values are being sent in rapid succession.  If p is NULL,
91 > then the point is at infinity.
92  
93  
94   int
95   dev_flush()             : flush the output and prepare for select call
96  
97   Updates display, taking any pending action required before select(2) call.
98 < Returns non-zero if there is device input available.
98 > Returns non-zero if there is device input available, setting odev.inpready.
99  
100  
101   int
# Line 68 | Line 103 | dev_input()            : process pending display input
103  
104   Called when odev struct file descriptor shows input is ready.
105   Returns flags indicating actions to take in the control process.
106 < If the DEV_NEWVIEW or DEV_NEWSIZE flag is returned, the odev
107 < structure must be updated beforehand.
106 > If the DC_VIEW or DC_RESIZE flag is returned, the odev
107 > structure must be updated beforehand.  If the DC_FOCUS
108 > flag is set, then odev_args contains the frame dimensions.
109 > No events shall remain when this function returns,
110 > and odev.inpready will therefore be 0.
111  
112 + void
113 + dev_auxcom(cmd, args)   : process auxiliary command
114 + char    *cmd, *args;    : command name and argument string
115  
116 + Execute an auxiliary command (not one of those listed at the head of
117 + this file).  The cmd argument points to the command name itself, and
118 + the args argument points to a string with the rest of the input line.
119 + If the command isn't known or there ARE no auxiliary commands, print
120 + an appropriate COMMAND error message and return.
121 +
122 +
123 + VIEW *
124 + dev_auxview(n, hv)      : return nth auxiliary view
125 + int     n;              : auxiliary view number
126 + int     hv[2];          : returned horiz. and vert. image resolution
127 +
128 + Return the nth auxiliary view associated with the current base view.
129 + The hv entries are assigned the horizontal and vertical view resolution,
130 + respectively.  Function returns NULL if there are no more auxiliary
131 + views.  The zeroeth auxiliary view is the base view itself.
132 +
133 +
134   void
135   dev_close()             : close the display
136  
# Line 80 | Line 139 | Set odev.v.type=0 and odev.hres=odev.vres=0 when done.
139  
140  
141   ************************************************************************/
142 +
143 +
144 + extern VIEW     *dev_auxview();

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines