Home | History | Annotate | Download | only in includes
      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:
    169 		Component() : cType(OIS_Unknown) {};
    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:
    179 		Button() : Component(OIS_Button), pushed(false) {}
    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:
    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
    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:
    208 		Vector3() {}
    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 
    220 		void clear()
    221 		{
    222 			x = y = z = 0.0f;
    223 		}
    224 	};
    225 }
    226 
    227 #endif //end if prereq header defined
    228