1 /*  NAME:
2         E3Controller.h
3 
4     DESCRIPTION:
5         Header file for E3Controller.c.
6 
7     COPYRIGHT:
8         Copyright (c) 1999-2004, Quesa Developers. All rights reserved.
9 
10         For the current release of Quesa, please see:
11 
12             <http://www.quesa.org/>
13 
14         Redistribution and use in source and binary forms, with or without
15         modification, are permitted provided that the following conditions
16         are met:
17 
18             o Redistributions of source code must retain the above copyright
19               notice, this list of conditions and the following disclaimer.
20 
21             o Redistributions in binary form must reproduce the above
22               copyright notice, this list of conditions and the following
23               disclaimer in the documentation and/or other materials provided
24               with the distribution.
25 
26             o Neither the name of Quesa nor the names of its contributors
27               may be used to endorse or promote products derived from this
28               software without specific prior written permission.
29 
30         THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
31         "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
32         LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
33         A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
34         OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
35         SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
36         TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
37         PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
38         LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
39         NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
40         SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
41     ___________________________________________________________________________
42 */
43 #ifndef E3CONTROLLER_HDR
44 #define E3CONTROLLER_HDR
45 //=============================================================================
46 //      Include files
47 //-----------------------------------------------------------------------------
48 // Include files go here
49 
50 
51 
52 
53 
54 //=============================================================================
55 //		C++ preamble
56 //-----------------------------------------------------------------------------
57 #ifdef __cplusplus
58 extern "C" {
59 #endif
60 
61 
62 
63 
64 
65 //=============================================================================
66 //      Function prototypes
67 //-----------------------------------------------------------------------------
68 TQ3Status					E3Controller_GetListChanged(TQ3Boolean *listChanged, TQ3Uns32 *serialNumber);
69 TQ3Status					E3Controller_Next(TQ3ControllerRef controllerRef, TQ3ControllerRef *nextControllerRef);
70 TQ3ControllerRef			E3Controller_New(const TQ3ControllerData *controllerData);
71 TQ3Status					E3Controller_Decommission(TQ3ControllerRef controllerRef);
72 TQ3Status					E3Controller_SetActivation(TQ3ControllerRef controllerRef, TQ3Boolean active);
73 TQ3Status					E3Controller_GetActivation(TQ3ControllerRef controllerRef, TQ3Boolean *active);
74 TQ3Status					E3Controller_GetSignature(TQ3ControllerRef controllerRef, char *signature, TQ3Uns32 numChars);
75 TQ3Status					E3Controller_SetChannel(TQ3ControllerRef controllerRef, TQ3Uns32 channel, const void *data, TQ3Uns32 dataSize);
76 TQ3Status					E3Controller_GetChannel(TQ3ControllerRef controllerRef, TQ3Uns32 channel, void *data, TQ3Uns32 *dataSize);
77 TQ3Status					E3Controller_GetValueCount(TQ3ControllerRef controllerRef, TQ3Uns32 *valueCount);
78 TQ3Status					E3Controller_SetTracker(TQ3ControllerRef controllerRef, TQ3TrackerObject tracker);
79 TQ3Status					E3Controller_HasTracker(TQ3ControllerRef controllerRef, TQ3Boolean *hasTracker);
80 TQ3Status					E3Controller_Track2DCursor(TQ3ControllerRef controllerRef, TQ3Boolean *track2DCursor);
81 TQ3Status					E3Controller_Track3DCursor(TQ3ControllerRef controllerRef, TQ3Boolean *track3DCursor);
82 TQ3Status					E3Controller_GetButtons(TQ3ControllerRef controllerRef, TQ3Uns32 *buttons);
83 TQ3Status					E3Controller_SetButtons(TQ3ControllerRef controllerRef, TQ3Uns32 buttons);
84 TQ3Status					E3Controller_GetTrackerPosition(TQ3ControllerRef controllerRef, TQ3Point3D *position);
85 TQ3Status					E3Controller_SetTrackerPosition(TQ3ControllerRef controllerRef, const TQ3Point3D *position);
86 TQ3Status					E3Controller_MoveTrackerPosition(TQ3ControllerRef controllerRef, const TQ3Vector3D *delta);
87 TQ3Status					E3Controller_GetTrackerOrientation(TQ3ControllerRef controllerRef, TQ3Quaternion *orientation);
88 TQ3Status					E3Controller_SetTrackerOrientation(TQ3ControllerRef controllerRef, const TQ3Quaternion *orientation);
89 TQ3Status					E3Controller_MoveTrackerOrientation(TQ3ControllerRef controllerRef, const TQ3Quaternion *delta);
90 TQ3Status					E3Controller_GetValues(TQ3ControllerRef controllerRef, TQ3Uns32 valueCount, float *values, TQ3Boolean *changed, TQ3Uns32 *serialNumber);
91 TQ3Status					E3Controller_SetValues(TQ3ControllerRef controllerRef, const float *values, TQ3Uns32 valueCount);
92 TQ3ControllerStateObject	E3ControllerState_New(TQ3ControllerRef controllerRef);
93 TQ3Status					E3ControllerState_SaveAndReset(TQ3ControllerStateObject controllerStateObject);
94 TQ3Status					E3ControllerState_Restore(TQ3ControllerStateObject controllerStateObject);
95 TQ3TrackerObject			E3Tracker_New(TQ3TrackerNotifyFunc notifyFunc);
96 TQ3Status					E3Tracker_SetNotifyThresholds(TQ3TrackerObject trackerObject, float positionThresh, float orientationThresh);
97 TQ3Status					E3Tracker_GetNotifyThresholds(TQ3TrackerObject trackerObject, float *positionThresh, float *orientationThresh);
98 TQ3Status					E3Tracker_SetActivation(TQ3TrackerObject trackerObject, TQ3Boolean active);
99 TQ3Status					E3Tracker_GetActivation(TQ3TrackerObject trackerObject, TQ3Boolean *active);
100 TQ3Status					E3Tracker_GetButtons(TQ3TrackerObject trackerObject, TQ3Uns32 *buttons);
101 TQ3Status					E3Tracker_ChangeButtons(TQ3TrackerObject trackerObject, TQ3ControllerRef controllerRef, TQ3Uns32 buttons, TQ3Uns32 buttonMask);
102 TQ3Status					E3Tracker_GetPosition(TQ3TrackerObject trackerObject, TQ3Point3D *position, TQ3Vector3D *delta, TQ3Boolean *changed, TQ3Uns32 *serialNumber);
103 TQ3Status					E3Tracker_SetPosition(TQ3TrackerObject trackerObject, TQ3ControllerRef controllerRef, const TQ3Point3D *position);
104 TQ3Status					E3Tracker_MovePosition(TQ3TrackerObject trackerObject, TQ3ControllerRef controllerRef, const TQ3Vector3D *delta);
105 TQ3Status					E3Tracker_GetOrientation(TQ3TrackerObject trackerObject, TQ3Quaternion *orientation, TQ3Quaternion *delta, TQ3Boolean *changed, TQ3Uns32 *serialNumber);
106 TQ3Status					E3Tracker_SetOrientation(TQ3TrackerObject trackerObject, TQ3ControllerRef controllerRef, const TQ3Quaternion *orientation);
107 TQ3Status					E3Tracker_MoveOrientation(TQ3TrackerObject trackerObject, TQ3ControllerRef controllerRef, const TQ3Quaternion *delta);
108 TQ3Status					E3Tracker_SetEventCoordinates(TQ3TrackerObject trackerObject, TQ3Uns32 timeStamp, TQ3Uns32 buttons, const TQ3Point3D *position, const TQ3Quaternion *orientation);
109 TQ3Status					E3Tracker_GetEventCoordinates(TQ3TrackerObject trackerObject, TQ3Uns32 timeStamp, TQ3Uns32 *buttons, TQ3Point3D *position, TQ3Quaternion *orientation);
110 TQ3Status					E3CursorTracker_PrepareTracking(void);
111 TQ3Status					E3CursorTracker_SetTrackDeltas(TQ3Boolean trackDeltas);
112 TQ3Status					E3CursorTracker_GetAndClearDeltas(float *depth, TQ3Quaternion *orientation, TQ3Boolean *hasOrientation, TQ3Boolean *changed, TQ3Uns32 *serialNumber);
113 TQ3Status					E3CursorTracker_SetNotifyFunc(TQ3CursorTrackerNotifyFunc notifyFunc);
114 TQ3Status					E3CursorTracker_GetNotifyFunc(TQ3CursorTrackerNotifyFunc *notifyFunc);
115 
116 
117 
118 
119 
120 //=============================================================================
121 //		C++ postamble
122 //-----------------------------------------------------------------------------
123 #ifdef __cplusplus
124 }
125 #endif
126 
127 #endif
128 
129