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