• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2 The zlib/libpng License
3 
4 Copyright (c) 2005-2007 Phillip Castaneda (pjcast -- www.wreckedgames.com)
5 
6 This software is provided 'as-is', without any express or implied warranty. In no event will
7 the authors be held liable for any damages arising from the use of this software.
8 
9 Permission is granted to anyone to use this software for any purpose, including commercial
10 applications, and to alter it and redistribute it freely, subject to the following
11 restrictions:
12 
13     1. The origin of this software must not be misrepresented; you must not claim that
14 		you wrote the original software. If you use this software in a product,
15 		an acknowledgment in the product documentation would be appreciated but is
16 		not required.
17 
18     2. Altered source versions must be plainly marked as such, and must not be
19 		misrepresented as being the original software.
20 
21     3. This notice may not be removed or altered from any source distribution.
22 */
23 #ifndef OIS_Prereqs_H
24 #define OIS_Prereqs_H
25 //----------------------------------------------------------------------------//
26 // This Header File contains: forward declared classes
27 //  * Forward Declarations of all public API classes
28 //  * Several typedef's used around the library
29 //  * Base class component types
30 //  * Preprocessor definitons
31 //----------------------------------------------------------------------------//
32 
33 //-------------- Common STL Containers ---------------------------------------//
34 #include <vector>
35 #include <string>
36 #include <map>
37 #include "OISConfig.h"
38 
39 // Default is blank for most OS's
40 #define _OISExport
41 
42 //-------------- Determine Compiler ---------------------------------
43 #if defined( _MSC_VER )
44 #	define OIS_MSVC_COMPILER
45 #elif defined( __GNUC__ )
46 #	if defined( __WIN32__ ) || defined( _WIN32 )
47 #		define OIS_MINGW_COMPILER
48 #	else
49 #		define OIS_GCC_COMPILER
50 #	endif
51 #elif defined( __BORLANDC__ )
52 #	define OIS_BORLAND_COMPILER
53 #else
54 #	error No Recognized Compiler!
55 #endif
56 
57 // --------------- Determine Operating System Platform ---------------
58 #if defined( __WIN32__ ) || defined( _WIN32 ) // Windows 2000, XP, ETC
59 #	if defined ( _XBOX )
60 #		define OIS_XBOX_PLATFORM
61 #	else
62 #		define OIS_WIN32_PLATFORM
63 #		if defined( OIS_DYNAMIC_LIB )
64 #			undef _OISExport
65 			//Ignorable Dll interface warning...
66 #           if !defined(OIS_MINGW_COMPILER)
67 #			    pragma warning (disable : 4251)
68 #           endif
69 #			if defined( OIS_NONCLIENT_BUILD )
70 #				define _OISExport __declspec( dllexport )
71 #			else
72 #               if defined(OIS_MINGW_COMPILER)
73 #                   define _OISExport
74 #               else
75 #				    define _OISExport __declspec( dllimport )
76 #               endif
77 #			endif
78 #		endif
79 #	endif
80 #elif defined( __APPLE_CC__ ) // Apple OS X
81     // Device                                       Simulator
82 #   if __IPHONE_OS_VERSION_MIN_REQUIRED >= 20201 || __IPHONE_OS_VERSION_MIN_REQUIRED >= 20000
83 //#   if __IPHONE_OS_VERSION_MIN_REQUIRED >= 30000 || __IPHONE_OS_VERSION_MIN_REQUIRED >= 30000
84 #       define OIS_IPHONE_PLATFORM
85 #   else
86 #       define OIS_APPLE_PLATFORM
87 #   endif
88 #   undef _OISExport
89 #   define _OISExport __attribute__((visibility("default")))
90 #else //Probably Linux
91 #	define OIS_LINUX_PLATFORM
92 #	include <unistd.h>
93 #endif
94 
95 //Is Processor 32 or 64 bits...
96 #if defined(__x86_64__)
97 #	define OIS_ARCH_64
98 #else
99 #	define OIS_ARCH_32
100 #endif
101 
102 //-------------- Common Classes, Enums, and Typdef's -------------------------//
103 #define OIS_VERSION_MAJOR 1
104 #define OIS_VERSION_MINOR 4
105 #define OIS_VERSION_PATCH 0
106 #define OIS_VERSION_NAME "1.4.0"
107 
108 #define OIS_VERSION ((OIS_VERSION_MAJOR << 16) | (OIS_VERSION_MINOR << 8) | OIS_VERSION_PATCH)
109 
110 namespace OIS
111 {
112 	//Forward Declarations
113 	class InputManager;
114 	class FactoryCreator;
115 	class Object;
116 	class Keyboard;
117 	class Mouse;
118 	class JoyStick;
119 	class MultiTouch;
120 	class KeyListener;
121 	class MouseListener;
122 	class MultiTouchListener;
123 	class JoyStickListener;
124 	class Interface;
125 	class ForceFeedback;
126 	class Effect;
127 	class Exception;
128 
129 	//! Way to send OS nuetral parameters.. ie OS Window handles, modes, flags
130 	typedef std::multimap<std::string, std::string> ParamList;
131 
132 	//! List of FactoryCreator's
133 	typedef std::vector<FactoryCreator*> FactoryList;
134 
135 	//! Map of FactoryCreator created Objects
136 	typedef std::map<Object*, FactoryCreator*> FactoryCreatedObject;
137 
138 	//! Each Input class has a General Type variable, a form of RTTI
139 	enum Type
140 	{
141 		OISUnknown       = 0,
142 		OISKeyboard      = 1,
143 		OISMouse         = 2,
144 		OISJoyStick      = 3,
145 		OISTablet        = 4,
146 		OISMultiTouch    = 5
147 	};
148 
149 	//! Map of device objects connected and their respective vendors
150 	typedef std::multimap<Type, std::string> DeviceList;
151 
152 	//--------     Shared common components    ------------------------//
153 
154 	//! Base type for all device components (button, axis, etc)
155 	enum ComponentType
156 	{
157 		OIS_Unknown = 0,
158 		OIS_Button  = 1, //ie. Key, mouse button, joy button, etc
159 		OIS_Axis    = 2, //ie. A joystick or mouse axis
160 		OIS_Slider  = 3, //
161 		OIS_POV     = 4, //ie. Arrow direction keys
162 		OIS_Vector3 = 5  //ie. WiiMote orientation
163 	};
164 
165 	//! Base of all device components (button, axis, etc)
166 	class _OISExport Component
167 	{
168 	public:
Component()169 		Component() : cType(OIS_Unknown) {};
Component(ComponentType type)170 		Component(ComponentType type) : cType(type) {};
171 		//! Indicates what type of coponent this is
172 		ComponentType cType;
173 	};
174 
175 	//! Button can be a keyboard key, mouse button, etc
176 	class _OISExport Button : public Component
177 	{
178 	public:
Button()179 		Button() : Component(OIS_Button), pushed(false) {}
Button(bool bPushed)180 		Button(bool bPushed) : Component(OIS_Button), pushed(bPushed) {}
181 		//! true if pushed, false otherwise
182 		bool pushed;
183 	};
184 
185 	//! Axis component
186 	class _OISExport Axis : public Component
187 	{
188 	public:
Axis()189 		Axis() : Component(OIS_Axis), abs(0), rel(0), absOnly(false) {};
190 
191 		//! Absoulte and Relative value components
192 		int abs, rel;
193 
194 		//! Indicates if this Axis only supports Absoulte (ie JoyStick)
195 		bool absOnly;
196 
197 		//! Used internally by OIS
clear()198 		void clear()
199 		{
200 			abs = rel = 0;
201 		}
202 	};
203 
204 	//! A 3D Vector component (perhaps an orientation, as in the WiiMote)
205 	class _OISExport Vector3 : public Component
206 	{
207 	public:
Vector3()208 		Vector3() {}
Vector3(float _x,float _y,float _z)209 		Vector3(float _x, float _y, float _z) : Component(OIS_Vector3), x(_x), y(_y), z(_z) {};
210 
211 		//! X component of vector
212 		float x;
213 
214 		//! Y component of vector
215 		float y;
216 
217 		//! Z component of vector
218 		float z;
219 
clear()220 		void clear()
221 		{
222 			x = y = z = 0.0f;
223 		}
224 	};
225 }
226 
227 #endif //end if prereq header defined
228