ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/hd/rhdisp.h
Revision: 3.16
Committed: Thu Jan 1 11:21:55 2004 UTC (20 years, 9 months ago) by schorsch
Content type: text/plain
Branch: MAIN
CVS Tags: rad3R7P2, rad3R7P1, rad4R0, rad3R6, rad3R6P1, rad3R8, rad3R9
Changes since 3.15: +18 -1 lines
Log Message:
Ansification and prototypes.

File Contents

# User Rev Content
1 schorsch 3.16 /* RCSid: $Id: rhdisp.h,v 3.15 2003/07/14 22:24:00 schorsch Exp $ */
2 gregl 3.1 /*
3     * Header for holodeck display drivers.
4     */
5 schorsch 3.15 #ifndef _RAD_RHDISP_H_
6     #define _RAD_RHDISP_H_
7    
8 schorsch 3.16 #include "color.h"
9    
10 schorsch 3.15 #ifdef __cplusplus
11     extern "C" {
12     #endif
13 gregl 3.1
14     /* display requests */
15 gregl 3.4 #define DR_NOOP 0 /* to release from vain DR_ATTEN */
16 gregl 3.5 #define DR_BUNDLE 1 /* lone bundle request */
17 gregl 3.2 #define DR_ATTEN 2 /* request for attention */
18     #define DR_SHUTDOWN 3 /* shutdown request */
19     #define DR_NEWSET 4 /* new bundle set */
20 gregl 3.1 #define DR_ADDSET 5 /* add to current set */
21 gregl 3.9 #define DR_ADJSET 6 /* adjust set quantities */
22 gregl 3.5 #define DR_DELSET 7 /* delete from current set */
23 gregl 3.9 #define DR_KILL 8 /* kill rtrace process(es) */
24     #define DR_RESTART 9 /* restart rtrace */
25     #define DR_CLOBBER 10 /* clobber holodeck */
26 gwlarson 3.12 #define DR_VIEWPOINT 11 /* set desired eye position */
27 gregl 3.1
28     /* server responses */
29 gregl 3.9 #define DS_BUNDLE 32 /* computed bundle */
30     #define DS_ACKNOW 33 /* acknowledge request for attention */
31     #define DS_SHUTDOWN 34 /* end process and close connection */
32     #define DS_ADDHOLO 35 /* register new holodeck */
33     #define DS_STARTIMM 36 /* begin immediate bundle set */
34     #define DS_ENDIMM 37 /* end immediate bundle set */
35 gregl 3.10 #define DS_OUTSECT 38 /* render from outside sections */
36 gwlarson 3.11 #define DS_EYESEP 39 /* eye separation distance */
37 gregl 3.1
38     /*
39     * Normally, the server channel has priority, with the display process
40     * checking it frequently for new data. However, when the display process
41     * makes a request for attention (DR_ATTEN), the server will finish its
42     * current operations and flush its buffers, sending an acknowledge
43     * message (DS_ACKNOW) when it's done. This then allows the
44     * display process to send a long request to the holodeck server.
45     * Priority returns to normal after the following request.
46     */
47    
48 gregl 3.3 #ifndef BIGREQSIZ
49     #define BIGREQSIZ 512 /* big request size (bytes) */
50     #endif
51    
52 gregl 3.1 typedef struct {
53 greg 3.14 int16 type; /* message type */
54     int32 nbytes; /* number of additional bytes */
55 gregl 3.1 } MSGHEAD; /* message head */
56 gregl 3.6
57     /*
58     * The display process is started with three arguments. The first argument
59     * is the short name of the holodeck file, appropriate for window naming, etc.
60     * The second and third arguments are the file descriptor numbers assigned to
61     * the server's standard output and input, respectively. The stdin and stdout
62     * of the display process are used for normal communication with the server,
63     * and are connected to pipes going each way. It is entirely appropriate
64     * for the display process to borrow the server's stdin and stdout for reading
65 gregl 3.8 * and writing user commands from the list in rhdriver.h. If standard input
66 gregl 3.6 * is not available for reading, then a descriptor of -1 will be passed.
67     * The standard output will always be available for writing, though it
68     * may go to /dev/null.
69     */
70 schorsch 3.16
71    
72     /* rhdisp.c */
73     extern void serv_request(int type, int nbytes, char *p);
74     extern int serv_result(void);
75     /* rhdisp2.c */
76     extern int beam_sync(int all);
77     extern void beam_init(int fresh);
78     //extern int16 * beam_view(VIEW *vn, int hr, int vr);
79     /* rhdisp2.c, rhdisp3.c */
80     extern void gridlines(void (*f)(FVECT wp[2]));
81     /* rhd_ctab.c */
82     extern int new_ctab(int ncolors);
83     extern int get_pixel(BYTE rgb[3], void (*set_pixel)(int h, int r, int g, int b));
84    
85 schorsch 3.15
86     #ifdef __cplusplus
87     }
88     #endif
89     #endif /* _RAD_RHDISP_H_ */
90