1 /***********************************************************************/
2 /* Open Visualization Data Explorer                                    */
3 /* (C) Copyright IBM Corp. 1989,1999                                   */
4 /* ALL RIGHTS RESERVED                                                 */
5 /* This code licensed under the                                        */
6 /*    "IBM PUBLIC LICENSE - Open Visualization Data Explorer"          */
7 /***********************************************************************/
8 
9 #include <dxconfig.h>
10 
11 
12 #ifndef tdmClientMessage_h
13 #define tdmClientMessage_h
14 /*---------------------------------------------------------------------------*\
15  $Source: /src/master/dx/src/exec/hwrender/hwClientMessage.h,v $
16   Author: Mark Hood
17 
18   Types, prototypes, and other stuff for the client message utilities.
19 
20   When including this file be sure to include hwWindow.h. It cannot be
21   included here because of conflicts with the Object type defined in both
22   Picture.h and dx/dx.h. The Object that hwWindow requires is the one
23   defined in dx/dx.h.
24 
25 \*---------------------------------------------------------------------------*/
26 
27 /*
28  *  The following view types were taken from Picture.h
29  */
30 
31 #define FRONT		1
32 #define OFF_FRONT	2
33 #define BACK		3
34 #define OFF_BACK	4
35 #define TOP		5
36 #define OFF_TOP		6
37 #define BOTTOM		7
38 #define OFF_BOTTOM	8
39 #define RIGHT		9
40 #define OFF_RIGHT      10
41 #define LEFT	       11
42 #define OFF_LEFT       12
43 #define DIAGONAL       13
44 #define OFF_DIAGONAL   14
45 
46 typedef union
47 {
48   int32 l[5] ;
49   float f[5] ;
50 } tdmMessageData, *tdmMessageDataP ;
51 
52 int
53 _dxfInitCMProtocol(WinP) ;
54 
55 void
56 _dxfInitDXInteractors(tdmChildGlobalP) ;
57 
58 #if defined(DX_NATIVE_WINDOWS)
59 void
60 _dxfSendClientMessage (HWND, int, tdmMessageDataP) ;
61 #else
62 void
63 _dxfSendClientMessage (Display *, Window, int, tdmMessageDataP) ;
64 #endif
65 
66 void
67 _dxfConnectUI(WinP) ;
68 
69 void
70 _dxfSendInteractorData (tdmChildGlobalP, tdmInteractor, tdmInteractorReturn *) ;
71 
72 #if defined(DX_NATIVE_WINDOWS)
73 Error
74 _dxfReceiveClientMessage (tdmChildGlobalP, MSG *, int *) ;
75 #else
76 Error
77 _dxfReceiveClientMessage (tdmChildGlobalP, XClientMessageEvent *, int *) ;
78 #endif
79 
80 
81 /*
82  *  UI/Renderer protocol elements:
83  */
84 /*
85  * IMPORTANT!  Do not change the names of these defines, they are both the
86  * define and the *string* that is shared with the UI. Changing the name
87  * will make the atom unrecognizable by the UI. (See internAtoms in
88  * hwClientMessage.c and INTERNATOM below)
89  */
90 
91 #if defined(DX_NATIVE_WINDOWS)
92 
93 #define WM_CLIENT_MESSAGE (WM_USER + 0)
94 #define Atom int
95 #define None -1
96 #define INTERNATOM(name) \
97     _dxdtdmAtoms[name].atom = name; \
98     _dxdtdmAtoms[name].spelling = #name
99 
100 #else
101 
102 #define INTERNATOM(name) \
103   _dxdtdmAtoms[name].atom = XInternAtom(dpy, #name, FALSE);\
104   _dxdtdmAtoms[name].spelling = #name
105 
106 #endif
107 
108 #define GLWindow0                        0
109 #define GLWindow1                        1
110 #define GLWindow2                        2
111 #define GLWindow2Execute                 3
112 #define StartRotateInteraction           4
113 #define FromPoint                        5
114 #define UpVector                         6
115 #define StartZoomInteraction             7
116 #define StartPanZoomInteraction          8
117 #define Zoom1                            9
118 #define Zoom2                           10
119 #define StartCursorInteraction          11
120 #define CursorChange                    12
121 #define SetCursorConstraint             13
122 #define SetCursorSpeed                  14
123 #define StartRoamInteraction            15
124 #define RoamPoint                       16
125 #define StartNavigateInteraction        17
126 #define NavigateMotion                  18
127 #define NavigatePivot                   19
128 #define StopInteraction                 20
129 #define DisplayGlobe                    21
130 #define CameraUndoable                  22
131 #define CameraRedoable                  23
132 #define UndoCamera                      24
133 #define RedoCamera                      25
134 #define PushCamera                      26
135 #define ButtonMapping1                  27
136 #define ButtonMapping2                  28
137 #define ButtonMapping3                  29
138 #define NavigateLookAt                  30
139 #define ExecuteOnChange                 31
140 #define Set_View                        32
141 #define GLDestroyWindow			33
142 #define GLShutdown			34
143 #define XA_Integer			35	/* add predefined XA_INTEGER */
144 #define POKE_CONNECTION			36
145 #define StartPickInteraction            37
146 #define PickPoint                       38
147 #define ImageReset                      39
148 #define StartUserInteraction		40
149 #define MAX_ATOMS			41	/* Change this to be the last
150 						   atom +1 */
151 
152 #define Camera0 GLWindow0		/* Alias, mnemonic */
153 #define Camera1 GLWindow1		/* Alias, mnemonic */
154 #define Camera2 GLWindow2		/* Alias, mnemonic */
155 #define Camera2Execute GLWindow2Execute	/* Alias, mnemonic */
156 
157 struct atomRep {
158   Atom atom ;
159   char *spelling ;
160 };
161 
162 #define ATOM(x) _dxdtdmAtoms[x].atom
163 
164 #if defined(DEBUG)
165 #define CHECKATOM(a) 							\
166 { 									\
167   if (a.atom != None && a.atom != BadAlloc && a.atom != BadValue) { 	\
168     PRINT(("%s interned value %d\n", a.spelling, a.atom)); 		\
169   } else {								\
170     PRINT(("Failed to intern %s", a.spelling)) ; 			\
171     DXSetError (ERROR_INTERNAL, "#13005", a.spelling) ; 		\
172   } 									\
173 }
174 #else
175 #define CHECKATOM(a)
176 #endif
177 
178 #endif /* tdmClientMessage_h */
179