Irrlicht 3D Engine
IrrlichtDevice.h
Go to the documentation of this file.
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