diff --git a/source/Irrlicht/CIrrDeviceFB.h b/source/Irrlicht/CIrrDeviceFB.h index e0562f2..c8d6812 100644 --- a/source/Irrlicht/CIrrDeviceFB.h +++ b/source/Irrlicht/CIrrDeviceFB.h @@ -1,222 +1,222 @@ -// Copyright (C) 2002-2007 Nikolaus Gebhardt -// Copyright (C) 2007-2012 Christian Stehno -// This file is part of the "Irrlicht Engine". -// For conditions of distribution and use, see copyright notice in irrlicht.h - -#ifndef IRR_C_IRR_DEVICE_FB_H_INCLUDED -#define IRR_C_IRR_DEVICE_FB_H_INCLUDED - -#include "IrrCompileConfig.h" - -#ifdef _IRR_COMPILE_WITH_FB_DEVICE_ - -#include "CIrrDeviceStub.h" -#include "SIrrCreationParameters.h" -#include "IrrlichtDevice.h" -#include "IImagePresenter.h" -#include "ICursorControl.h" - -#define KeySym s32 -#include -#include - -namespace irr -{ - class CIrrDeviceFB : public CIrrDeviceStub, public video::IImagePresenter - { - public: - - //! constructor - CIrrDeviceFB(const SIrrlichtCreationParameters& params); - - //! destructor - virtual ~CIrrDeviceFB(); - - //! runs the device. Returns false if device wants to be deleted - virtual bool run() IRR_OVERRIDE; - - //! Cause the device to temporarily pause execution and let other processes to run - // This should bring down processor usage without major performance loss for Irrlicht - virtual void yield() IRR_OVERRIDE; - - //! Pause execution and let other processes to run for a specified amount of time. - virtual void sleep(u32 timeMs, bool pauseTimer) IRR_OVERRIDE; - - //! sets the caption of the window - virtual void setWindowCaption(const wchar_t* text) IRR_OVERRIDE; - - //! returns if window is active. if not, nothing need to be drawn - virtual bool isWindowActive() const IRR_OVERRIDE; - - //! returns if window has focus - virtual bool isWindowFocused() const IRR_OVERRIDE; - - //! returns if window is minimized - virtual bool isWindowMinimized() const IRR_OVERRIDE; - - //! Minimizes window - virtual void minimizeWindow() IRR_OVERRIDE; - - //! Maximizes window - virtual void maximizeWindow() IRR_OVERRIDE; - - //! Restores original window size - virtual void restoreWindow() IRR_OVERRIDE; - - //! returns current window position (not supported for this device) - virtual core::position2di getWindowPosition() IRR_OVERRIDE - { - return core::position2di(-1, -1); - } - - //! presents a surface in the client area - virtual bool present(video::IImage* surface, void* windowId = 0, core::rect* src=0 ) IRR_OVERRIDE; - - //! notifies the device that it should close itself - virtual void closeDevice() IRR_OVERRIDE; - - //! Sets if the window should be resizeable in windowed mode. - virtual void setResizable(bool resize=false) IRR_OVERRIDE; - - //! Returns the type of this device - virtual E_DEVICE_TYPE getType() const IRR_OVERRIDE; - - private: - - //! create the driver - void createDriver(); - - bool createWindow(const core::dimension2d& windowSize, u32 bits); - - //! Implementation of the cursor control - class CCursorControl : public gui::ICursorControl - { - public: - - CCursorControl(CIrrDeviceFB* dev, bool null) - : Device(dev), IsVisible(true), Null(null) - { - Device->grab(); - } - - ~CCursorControl() - { - Device->drop(); - } - - //! Changes the visible state of the mouse cursor. - virtual void setVisible(bool visible) IRR_OVERRIDE - { - IsVisible = visible; - } - - //! Returns if the cursor is currently visible. - virtual bool isVisible() const IRR_OVERRIDE - { - return IsVisible; - } - - //! Sets the new position of the cursor. - virtual void setPosition(const core::position2d &pos) IRR_OVERRIDE - { - setPosition(pos.X, pos.Y); - } - - //! Sets the new position of the cursor. - virtual void setPosition(f32 x, f32 y) IRR_OVERRIDE - { - setPosition((s32)(x*Device->CreationParams.WindowSize.Width), (s32)(y*Device->CreationParams.WindowSize.Height)); - } - - //! Sets the new position of the cursor. - virtual void setPosition(const core::position2d &pos) IRR_OVERRIDE - { - setPosition(pos.X, pos.Y); - } - - //! Sets the new position of the cursor. - virtual void setPosition(s32 x, s32 y) IRR_OVERRIDE - { - } - - //! Returns the current position of the mouse cursor. - virtual const core::position2d& getPosition(bool updateCursor) IRR_OVERRIDE - { - if ( updateCursor ) - updateCursorPos(); - return CursorPos; - } - - //! Returns the current position of the mouse cursor. - virtual core::position2d getRelativePosition(bool updateCursor) IRR_OVERRIDE - { - if ( updateCursor) - updateCursorPos(); - return core::position2d(CursorPos.X / (f32)Device->CreationParams.WindowSize.Width, - CursorPos.Y / (f32)Device->CreationParams.WindowSize.Height); - } - - virtual void setReferenceRect(core::rect* rect=0) IRR_OVERRIDE - { - } - +// Copyright (C) 2002-2007 Nikolaus Gebhardt +// Copyright (C) 2007-2012 Christian Stehno +// This file is part of the "Irrlicht Engine". +// For conditions of distribution and use, see copyright notice in irrlicht.h + +#ifndef IRR_C_IRR_DEVICE_FB_H_INCLUDED +#define IRR_C_IRR_DEVICE_FB_H_INCLUDED + +#include "IrrCompileConfig.h" + +#ifdef _IRR_COMPILE_WITH_FB_DEVICE_ + +#include "CIrrDeviceStub.h" +#include "SIrrCreationParameters.h" +#include "IrrlichtDevice.h" +#include "IImagePresenter.h" +#include "ICursorControl.h" + +#define KeySym s32 +#include +#include + +namespace irr +{ + class CIrrDeviceFB : public CIrrDeviceStub, public video::IImagePresenter + { + public: + + //! constructor + CIrrDeviceFB(const SIrrlichtCreationParameters& params); + + //! destructor + virtual ~CIrrDeviceFB(); + + //! runs the device. Returns false if device wants to be deleted + virtual bool run() IRR_OVERRIDE; + + //! Cause the device to temporarily pause execution and let other processes to run + // This should bring down processor usage without major performance loss for Irrlicht + virtual void yield() IRR_OVERRIDE; + + //! Pause execution and let other processes to run for a specified amount of time. + virtual void sleep(u32 timeMs, bool pauseTimer) IRR_OVERRIDE; + + //! sets the caption of the window + virtual void setWindowCaption(const wchar_t* text) IRR_OVERRIDE; + + //! returns if window is active. if not, nothing need to be drawn + virtual bool isWindowActive() const IRR_OVERRIDE; + + //! returns if window has focus + virtual bool isWindowFocused() const IRR_OVERRIDE; + + //! returns if window is minimized + virtual bool isWindowMinimized() const IRR_OVERRIDE; + + //! Minimizes window + virtual void minimizeWindow() IRR_OVERRIDE; + + //! Maximizes window + virtual void maximizeWindow() IRR_OVERRIDE; + + //! Restores original window size + virtual void restoreWindow() IRR_OVERRIDE; + + //! returns current window position (not supported for this device) + virtual core::position2di getWindowPosition() IRR_OVERRIDE + { + return core::position2di(-1, -1); + } + + //! presents a surface in the client area + virtual bool present(video::IImage* surface, void* windowId = 0, core::rect* src=0 ) IRR_OVERRIDE; + + //! notifies the device that it should close itself + virtual void closeDevice() IRR_OVERRIDE; + + //! Sets if the window should be resizeable in windowed mode. + virtual void setResizable(bool resize=false) IRR_OVERRIDE; + + //! Returns the type of this device + virtual E_DEVICE_TYPE getType() const IRR_OVERRIDE; + + private: + + //! create the driver + void createDriver(); + + bool createWindow(const core::dimension2d& windowSize, u32 bits); + + //! Implementation of the cursor control + class CCursorControl : public gui::ICursorControl + { + public: + + CCursorControl(CIrrDeviceFB* dev, bool null) + : Device(dev), IsVisible(true), Null(null) + { + Device->grab(); + } + + ~CCursorControl() + { + Device->drop(); + } + + //! Changes the visible state of the mouse cursor. + virtual void setVisible(bool visible) IRR_OVERRIDE + { + IsVisible = visible; + } + + //! Returns if the cursor is currently visible. + virtual bool isVisible() const IRR_OVERRIDE + { + return IsVisible; + } + + //! Sets the new position of the cursor. + virtual void setPosition(const core::position2d &pos) IRR_OVERRIDE + { + setPosition(pos.X, pos.Y); + } + + //! Sets the new position of the cursor. + virtual void setPosition(f32 x, f32 y) IRR_OVERRIDE + { + setPosition((s32)(x*Device->CreationParams.WindowSize.Width), (s32)(y*Device->CreationParams.WindowSize.Height)); + } + + //! Sets the new position of the cursor. + virtual void setPosition(const core::position2d &pos) IRR_OVERRIDE + { + setPosition(pos.X, pos.Y); + } + + //! Sets the new position of the cursor. + virtual void setPosition(s32 x, s32 y) IRR_OVERRIDE + { + } + + //! Returns the current position of the mouse cursor. + virtual const core::position2d& getPosition(bool updateCursor) IRR_OVERRIDE + { + if ( updateCursor ) + updateCursorPos(); + return CursorPos; + } + + //! Returns the current position of the mouse cursor. + virtual core::position2d getRelativePosition(bool updateCursor) IRR_OVERRIDE + { + if ( updateCursor) + updateCursorPos(); + return core::position2d(CursorPos.X / (f32)Device->CreationParams.WindowSize.Width, + CursorPos.Y / (f32)Device->CreationParams.WindowSize.Height); + } + + virtual void setReferenceRect(core::rect* rect=0) IRR_OVERRIDE + { + } + virtual bool getReferenceRect(core::rect& rect) IRR_OVERRIDE { rect.UpperLeftCorner = core::vector2di(0,0); rect.LowerRightCorner.X = (irr::s32)Device->CreationParams.WindowSize.Width; rect.LowerRightCorner.Y = (irr::s32)Device->CreationParams.WindowSize.Height; return false; - } - - private: - - void updateCursorPos() - { - } - - core::position2d CursorPos; - CIrrDeviceFB* Device; - bool IsVisible; - bool Null; - }; - - friend class CCursorControl; - - int Framebuffer; - int EventDevice; - int KeyboardDevice; - struct fb_fix_screeninfo fbfixscreeninfo; - struct fb_var_screeninfo fbscreeninfo; - struct fb_var_screeninfo oldscreeninfo; - long KeyboardMode; - u8* SoftwareImage; - - u32 Pitch; - video::ECOLOR_FORMAT FBColorFormat; - bool Close; - - struct SKeyMap - { - SKeyMap() {} - SKeyMap(s32 x11, s32 win32) - : X11Key(x11), Win32Key(win32) - { - } - - KeySym X11Key; - s32 Win32Key; - - bool operator<(const SKeyMap& o) const - { - return X11Key KeyMap; - }; - - -} // end namespace irr - -#endif // _IRR_USE_FB_DEVICE_ -#endif // IRR_C_IRR_DEVICE_FB_H_INCLUDED + } + + private: + + void updateCursorPos() + { + } + + core::position2d CursorPos; + CIrrDeviceFB* Device; + bool IsVisible; + bool Null; + }; + + friend class CCursorControl; + + int Framebuffer; + int EventDevice; + int KeyboardDevice; + struct fb_fix_screeninfo fbfixscreeninfo; + struct fb_var_screeninfo fbscreeninfo; + struct fb_var_screeninfo oldscreeninfo; + long KeyboardMode; + u8* SoftwareImage; + + u32 Pitch; + video::ECOLOR_FORMAT FBColorFormat; + bool Close; + + struct SKeyMap + { + SKeyMap() {} + SKeyMap(s32 x11, s32 win32) + : X11Key(x11), Win32Key(win32) + { + } + + KeySym X11Key; + s32 Win32Key; + + bool operator<(const SKeyMap& o) const + { + return X11Key KeyMap; + }; + + +} // end namespace irr + +#endif // _IRR_USE_FB_DEVICE_ +#endif // IRR_C_IRR_DEVICE_FB_H_INCLUDED