00001 // Copyright (C) 2002-2012 Nikolaus Gebhardt 00002 // This file is part of the "Irrlicht Engine". 00003 // For conditions of distribution and use, see copyright notice in irrlicht.h 00004 00005 #ifndef __I_IRRLICHT_DEVICE_H_INCLUDED__ 00006 #define __I_IRRLICHT_DEVICE_H_INCLUDED__ 00007 00008 #include "IReferenceCounted.h" 00009 #include "dimension2d.h" 00010 #include "IVideoDriver.h" 00011 #include "EDriverTypes.h" 00012 #include "EDeviceTypes.h" 00013 #include "IEventReceiver.h" 00014 #include "ICursorControl.h" 00015 #include "IVideoModeList.h" 00016 #include "ITimer.h" 00017 #include "IOSOperator.h" 00018 00019 namespace irr 00020 { 00021 class ILogger; 00022 class IEventReceiver; 00023 class IRandomizer; 00024 00025 namespace io { 00026 class IFileSystem; 00027 } // end namespace io 00028 00029 namespace gui { 00030 class IGUIEnvironment; 00031 } // end namespace gui 00032 00033 namespace scene { 00034 class ISceneManager; 00035 } // end namespace scene 00036 00038 00043 class IrrlichtDevice : public virtual IReferenceCounted 00044 { 00045 public: 00046 00048 00072 virtual bool run() = 0; 00073 00075 00077 virtual void yield() = 0; 00078 00080 00084 virtual void sleep(u32 timeMs, bool pauseTimer=false) = 0; 00085 00087 00088 virtual video::IVideoDriver* getVideoDriver() = 0; 00089 00091 00092 virtual io::IFileSystem* getFileSystem() = 0; 00093 00095 00096 virtual gui::IGUIEnvironment* getGUIEnvironment() = 0; 00097 00099 00100 virtual scene::ISceneManager* getSceneManager() = 0; 00101 00103 00104 virtual gui::ICursorControl* getCursorControl() = 0; 00105 00107 00108 virtual ILogger* getLogger() = 0; 00109 00111 00119 virtual video::IVideoModeList* getVideoModeList() = 0; 00120 00122 00127 virtual IOSOperator* getOSOperator() = 0; 00128 00130 00133 virtual ITimer* getTimer() = 0; 00134 00136 00137 virtual IRandomizer* getRandomizer() const =0; 00138 00140 00143 virtual void setRandomizer(IRandomizer* r) =0; 00144 00146 00149 virtual IRandomizer* createDefaultRandomizer() const =0; 00150 00152 00153 virtual void setWindowCaption(const wchar_t* text) = 0; 00154 00156 00171 virtual bool isWindowActive() const = 0; 00172 00174 00175 virtual bool isWindowFocused() const = 0; 00176 00178 00179 virtual bool isWindowMinimized() const = 0; 00180 00182 00183 virtual bool isFullscreen() const = 0; 00184 00186 00187 virtual video::ECOLOR_FORMAT getColorFormat() const = 0; 00188 00190 00191 virtual void closeDevice() = 0; 00192 00194 00197 virtual const c8* getVersion() const = 0; 00198 00200 00204 virtual void setEventReceiver(IEventReceiver* receiver) = 0; 00205 00207 00208 virtual IEventReceiver* getEventReceiver() = 0; 00209 00211 00216 virtual bool postEventFromUser(const SEvent& event) = 0; 00217 00219 00222 virtual void setInputReceivingSceneManager(scene::ISceneManager* sceneManager) = 0; 00223 00225 00228 virtual void setResizable(bool resize=false) = 0; 00229 00231 virtual void minimizeWindow() =0; 00232 00234 virtual void maximizeWindow() =0; 00235 00237 virtual void restoreWindow() =0; 00238 00240 00247 virtual bool activateJoysticks(core::array<SJoystickInfo>& joystickInfo) =0; 00248 00250 virtual bool setGammaRamp(f32 red, f32 green, f32 blue, 00251 f32 relativebrightness, f32 relativecontrast) =0; 00252 00254 virtual bool getGammaRamp(f32 &red, f32 &green, f32 &blue, 00255 f32 &brightness, f32 &contrast) =0; 00256 00258 00267 virtual void clearSystemMessages() = 0; 00268 00270 00272 virtual E_DEVICE_TYPE getType() const = 0; 00273 00275 00277 static bool isDriverSupported(video::E_DRIVER_TYPE driver) 00278 { 00279 switch (driver) 00280 { 00281 case video::EDT_NULL: 00282 return true; 00283 case video::EDT_SOFTWARE: 00284 #ifdef _IRR_COMPILE_WITH_SOFTWARE_ 00285 return true; 00286 #else 00287 return false; 00288 #endif 00289 case video::EDT_BURNINGSVIDEO: 00290 #ifdef _IRR_COMPILE_WITH_BURNINGSVIDEO_ 00291 return true; 00292 #else 00293 return false; 00294 #endif 00295 case video::EDT_DIRECT3D8: 00296 #ifdef _IRR_COMPILE_WITH_DIRECT3D_8_ 00297 return true; 00298 #else 00299 return false; 00300 #endif 00301 case video::EDT_DIRECT3D9: 00302 #ifdef _IRR_COMPILE_WITH_DIRECT3D_9_ 00303 return true; 00304 #else 00305 return false; 00306 #endif 00307 case video::EDT_OPENGL: 00308 #ifdef _IRR_COMPILE_WITH_OPENGL_ 00309 return true; 00310 #else 00311 return false; 00312 #endif 00313 default: 00314 return false; 00315 } 00316 } 00317 }; 00318 00319 } // end namespace irr 00320 00321 #endif 00322