diff options
Diffstat (limited to 'intern/ghost/intern/GHOST_System.h')
-rw-r--r-- | intern/ghost/intern/GHOST_System.h | 641 |
1 files changed, 321 insertions, 320 deletions
diff --git a/intern/ghost/intern/GHOST_System.h b/intern/ghost/intern/GHOST_System.h index b9b7fc5658a..2c7025b6036 100644 --- a/intern/ghost/intern/GHOST_System.h +++ b/intern/ghost/intern/GHOST_System.h @@ -32,8 +32,8 @@ #include "GHOST_ModifierKeys.h" #include "GHOST_EventManager.h" #ifdef GHOST_DEBUG -#include "GHOST_EventPrinter.h" -#endif // GHOST_DEBUG +# include "GHOST_EventPrinter.h" +#endif // GHOST_DEBUG class GHOST_DisplayManager; class GHOST_Event; @@ -51,356 +51,357 @@ class GHOST_NDOFManager; * are implemented. * \see GHOST_ISystem. */ -class GHOST_System : public GHOST_ISystem -{ -protected: - /** - * Constructor. - * Protected default constructor to force use of static createSystem member. - */ - GHOST_System(); - - /** - * Destructor. - * Protected default constructor to force use of static dispose member. - */ - virtual ~GHOST_System(); - -public: - /*************************************************************************************** - * Time(r) functionality - ***************************************************************************************/ - - /** - * Returns the system time. - * Returns the number of milliseconds since the start of the system process. - * Based on ANSI clock() routine. - * \return The number of milliseconds. - */ - virtual GHOST_TUns64 getMilliSeconds() const; - - /** - * Installs a timer. - * Note that, on most operating systems, messages need to be processed in order - * for the timer callbacks to be invoked. - * \param delay The time to wait for the first call to the timerProc (in milliseconds) - * \param interval The interval between calls to the timerProc - * \param timerProc The callback invoked when the interval expires, - * \param userData Placeholder for user data. - * \return A timer task (0 if timer task installation failed). - */ - GHOST_ITimerTask *installTimer(GHOST_TUns64 delay, - GHOST_TUns64 interval, - GHOST_TimerProcPtr timerProc, - GHOST_TUserDataPtr userData = NULL); - - /** - * Removes a timer. - * \param timerTask Timer task to be removed. - * \return Indication of success. - */ - GHOST_TSuccess removeTimer(GHOST_ITimerTask *timerTask); - - /*************************************************************************************** - * Display/window management functionality - ***************************************************************************************/ - - /** - * Inherited from GHOST_ISystem but left pure virtual - * - * virtual GHOST_TUns8 getNumDisplays() const = 0; - * virtual void getMainDisplayDimensions(...) const = 0; - * virtual GHOST_IWindow* createWindow(..) - */ - - /** - * Dispose a window. - * \param window Pointer to the window to be disposed. - * \return Indication of success. - */ - GHOST_TSuccess disposeWindow(GHOST_IWindow *window); - - /** - * Returns whether a window is valid. - * \param window Pointer to the window to be checked. - * \return Indication of validity. - */ - bool validWindow(GHOST_IWindow *window); - - /** - * Begins full screen mode. - * \param setting The new setting of the display. - * \param window Window displayed in full screen. - * \param stereoVisual Stereo visual for quad buffered stereo. - * This window is invalid after full screen has been ended. - * \return Indication of success. - */ - GHOST_TSuccess beginFullScreen(const GHOST_DisplaySetting& setting, GHOST_IWindow **window, - const bool stereoVisual, const bool alphaBackground, const GHOST_TUns16 numOfAASamples = 0); - - /** - * Updates the resolution while in fullscreen mode. - * \param setting The new setting of the display. - * \param window Window displayed in full screen. - * - * \return Indication of success. - */ - GHOST_TSuccess updateFullScreen(const GHOST_DisplaySetting& setting, GHOST_IWindow **window); - - /** - * Ends full screen mode. - * \return Indication of success. - */ - GHOST_TSuccess endFullScreen(void); - - /** - * Returns current full screen mode status. - * \return The current status. - */ - bool getFullScreen(void); - - - /** - * Native pixel size support (MacBook 'retina'). - * \return The pixel size in float. - */ - bool useNativePixel(void); - bool m_nativePixel; - - /** - * Focus window after opening, or put them in the background. - */ - void useWindowFocus(const bool use_focus); - bool m_windowFocus; - - /*************************************************************************************** - * Event management functionality - ***************************************************************************************/ - - /** - * Inherited from GHOST_ISystem but left pure virtual - * - * virtual bool processEvents(bool waitForEvent) = 0; - */ - - - - /** - * Dispatches all the events on the stack. - * The event stack will be empty afterwards. - */ - void dispatchEvents(); - - /** - * Adds the given event consumer to our list. - * \param consumer The event consumer to add. - * \return Indication of success. - */ - GHOST_TSuccess addEventConsumer(GHOST_IEventConsumer *consumer); - - /** - * Remove the given event consumer to our list. - * \param consumer The event consumer to remove. - * \return Indication of success. - */ - GHOST_TSuccess removeEventConsumer(GHOST_IEventConsumer *consumer); - - /*************************************************************************************** - * Cursor management functionality - ***************************************************************************************/ - - /** - * Inherited from GHOST_ISystem but left pure virtual - * <pre> - * GHOST_TSuccess getCursorPosition(GHOST_TInt32& x, GHOST_TInt32& y) const = 0; - * GHOST_TSuccess setCursorPosition(GHOST_TInt32 x, GHOST_TInt32 y) - * </pre> - */ - - /*************************************************************************************** - * Access to mouse button and keyboard states. - ***************************************************************************************/ - - /** - * Returns the state of a modifier key (ouside the message queue). - * \param mask The modifier key state to retrieve. - * \param isDown The state of a modifier key (true == pressed). - * \return Indication of success. - */ - GHOST_TSuccess getModifierKeyState(GHOST_TModifierKeyMask mask, bool& isDown) const; - - /** - * Returns the state of a mouse button (ouside the message queue). - * \param mask The button state to retrieve. - * \param isDown Button state. - * \return Indication of success. - */ - GHOST_TSuccess getButtonState(GHOST_TButtonMask mask, bool& isDown) const; - - /** - * Set which tablet API to use. Only affects Windows, other platforms have a single API. - * \param api Enum indicating which API to use. - */ - void setTabletAPI(GHOST_TTabletAPI api); - GHOST_TTabletAPI getTabletAPI(void); +class GHOST_System : public GHOST_ISystem { + protected: + /** + * Constructor. + * Protected default constructor to force use of static createSystem member. + */ + GHOST_System(); + + /** + * Destructor. + * Protected default constructor to force use of static dispose member. + */ + virtual ~GHOST_System(); + + public: + /*************************************************************************************** + * Time(r) functionality + ***************************************************************************************/ + + /** + * Returns the system time. + * Returns the number of milliseconds since the start of the system process. + * Based on ANSI clock() routine. + * \return The number of milliseconds. + */ + virtual GHOST_TUns64 getMilliSeconds() const; + + /** + * Installs a timer. + * Note that, on most operating systems, messages need to be processed in order + * for the timer callbacks to be invoked. + * \param delay The time to wait for the first call to the timerProc (in milliseconds) + * \param interval The interval between calls to the timerProc + * \param timerProc The callback invoked when the interval expires, + * \param userData Placeholder for user data. + * \return A timer task (0 if timer task installation failed). + */ + GHOST_ITimerTask *installTimer(GHOST_TUns64 delay, + GHOST_TUns64 interval, + GHOST_TimerProcPtr timerProc, + GHOST_TUserDataPtr userData = NULL); + + /** + * Removes a timer. + * \param timerTask Timer task to be removed. + * \return Indication of success. + */ + GHOST_TSuccess removeTimer(GHOST_ITimerTask *timerTask); + + /*************************************************************************************** + * Display/window management functionality + ***************************************************************************************/ + + /** + * Inherited from GHOST_ISystem but left pure virtual + * + * virtual GHOST_TUns8 getNumDisplays() const = 0; + * virtual void getMainDisplayDimensions(...) const = 0; + * virtual GHOST_IWindow* createWindow(..) + */ + + /** + * Dispose a window. + * \param window Pointer to the window to be disposed. + * \return Indication of success. + */ + GHOST_TSuccess disposeWindow(GHOST_IWindow *window); + + /** + * Returns whether a window is valid. + * \param window Pointer to the window to be checked. + * \return Indication of validity. + */ + bool validWindow(GHOST_IWindow *window); + + /** + * Begins full screen mode. + * \param setting The new setting of the display. + * \param window Window displayed in full screen. + * \param stereoVisual Stereo visual for quad buffered stereo. + * This window is invalid after full screen has been ended. + * \return Indication of success. + */ + GHOST_TSuccess beginFullScreen(const GHOST_DisplaySetting &setting, + GHOST_IWindow **window, + const bool stereoVisual, + const bool alphaBackground, + const GHOST_TUns16 numOfAASamples = 0); + + /** + * Updates the resolution while in fullscreen mode. + * \param setting The new setting of the display. + * \param window Window displayed in full screen. + * + * \return Indication of success. + */ + GHOST_TSuccess updateFullScreen(const GHOST_DisplaySetting &setting, GHOST_IWindow **window); + + /** + * Ends full screen mode. + * \return Indication of success. + */ + GHOST_TSuccess endFullScreen(void); + + /** + * Returns current full screen mode status. + * \return The current status. + */ + bool getFullScreen(void); + + /** + * Native pixel size support (MacBook 'retina'). + * \return The pixel size in float. + */ + bool useNativePixel(void); + bool m_nativePixel; + + /** + * Focus window after opening, or put them in the background. + */ + void useWindowFocus(const bool use_focus); + bool m_windowFocus; + + /*************************************************************************************** + * Event management functionality + ***************************************************************************************/ + + /** + * Inherited from GHOST_ISystem but left pure virtual + * + * virtual bool processEvents(bool waitForEvent) = 0; + */ + + /** + * Dispatches all the events on the stack. + * The event stack will be empty afterwards. + */ + void dispatchEvents(); + + /** + * Adds the given event consumer to our list. + * \param consumer The event consumer to add. + * \return Indication of success. + */ + GHOST_TSuccess addEventConsumer(GHOST_IEventConsumer *consumer); + + /** + * Remove the given event consumer to our list. + * \param consumer The event consumer to remove. + * \return Indication of success. + */ + GHOST_TSuccess removeEventConsumer(GHOST_IEventConsumer *consumer); + + /*************************************************************************************** + * Cursor management functionality + ***************************************************************************************/ + + /** + * Inherited from GHOST_ISystem but left pure virtual + * <pre> + * GHOST_TSuccess getCursorPosition(GHOST_TInt32& x, GHOST_TInt32& y) const = 0; + * GHOST_TSuccess setCursorPosition(GHOST_TInt32 x, GHOST_TInt32 y) + * </pre> + */ + + /*************************************************************************************** + * Access to mouse button and keyboard states. + ***************************************************************************************/ + + /** + * Returns the state of a modifier key (ouside the message queue). + * \param mask The modifier key state to retrieve. + * \param isDown The state of a modifier key (true == pressed). + * \return Indication of success. + */ + GHOST_TSuccess getModifierKeyState(GHOST_TModifierKeyMask mask, bool &isDown) const; + + /** + * Returns the state of a mouse button (ouside the message queue). + * \param mask The button state to retrieve. + * \param isDown Button state. + * \return Indication of success. + */ + GHOST_TSuccess getButtonState(GHOST_TButtonMask mask, bool &isDown) const; + + /** + * Set which tablet API to use. Only affects Windows, other platforms have a single API. + * \param api Enum indicating which API to use. + */ + void setTabletAPI(GHOST_TTabletAPI api); + GHOST_TTabletAPI getTabletAPI(void); #ifdef WITH_INPUT_NDOF - /*************************************************************************************** - * Access to 3D mouse. - ***************************************************************************************/ - - /** - * Sets 3D mouse deadzone - * \param deadzone: Deadzone of the 3D mouse (both for rotation and pan) relative to full range - */ - void setNDOFDeadZone(float deadzone); + /*************************************************************************************** + * Access to 3D mouse. + ***************************************************************************************/ + + /** + * Sets 3D mouse deadzone + * \param deadzone: Deadzone of the 3D mouse (both for rotation and pan) relative to full range + */ + void setNDOFDeadZone(float deadzone); #endif - /*************************************************************************************** - * Other (internal) functionality. - ***************************************************************************************/ - - /** - * Pushes an event on the stack. - * To dispatch it, call dispatchEvent() or dispatchEvents(). - * Do not delete the event! - * \param event The event to push on the stack. - */ - GHOST_TSuccess pushEvent(GHOST_IEvent *event); - - /** - * \return The timer manager. - */ - inline GHOST_TimerManager *getTimerManager() const; - - /** - * \return A pointer to our event manager. - */ - inline GHOST_EventManager *getEventManager() const; - - /** - * \return A pointer to our window manager. - */ - inline GHOST_WindowManager *getWindowManager() const; + /*************************************************************************************** + * Other (internal) functionality. + ***************************************************************************************/ + + /** + * Pushes an event on the stack. + * To dispatch it, call dispatchEvent() or dispatchEvents(). + * Do not delete the event! + * \param event The event to push on the stack. + */ + GHOST_TSuccess pushEvent(GHOST_IEvent *event); + + /** + * \return The timer manager. + */ + inline GHOST_TimerManager *getTimerManager() const; + + /** + * \return A pointer to our event manager. + */ + inline GHOST_EventManager *getEventManager() const; + + /** + * \return A pointer to our window manager. + */ + inline GHOST_WindowManager *getWindowManager() const; #ifdef WITH_INPUT_NDOF - /** - * \return A pointer to our n-degree of freedom manager. - */ - inline GHOST_NDOFManager *getNDOFManager() const; + /** + * \return A pointer to our n-degree of freedom manager. + */ + inline GHOST_NDOFManager *getNDOFManager() const; #endif - /** - * Returns the state of all modifier keys. - * \param keys The state of all modifier keys (true == pressed). - * \return Indication of success. - */ - virtual GHOST_TSuccess getModifierKeys(GHOST_ModifierKeys& keys) const = 0; - - /** - * Returns the state of the mouse buttons (ouside the message queue). - * \param buttons The state of the buttons. - * \return Indication of success. - */ - virtual GHOST_TSuccess getButtons(GHOST_Buttons& buttons) const = 0; - - /** - * Returns the selection buffer - * \param selection Only used on X11 - * \return Returns the clipboard data - * - */ - virtual GHOST_TUns8 *getClipboard(bool selection) const = 0; - - /** - * Put data to the Clipboard - * \param buffer The buffer to copy to the clipboard - * \param selection The clipboard to copy too only used on X11 - */ - virtual void putClipboard(GHOST_TInt8 *buffer, bool selection) const = 0; - - /** - * Confirms quitting he program when there is just one window left open - * in the application - */ - virtual int confirmQuit(GHOST_IWindow *window) const; - - /** - * Informs if the system provides native dialogs (eg. confirm quit) - */ - virtual bool supportsNativeDialogs(void); - - -protected: - /** - * Initialize the system. - * \return Indication of success. - */ - virtual GHOST_TSuccess init(); - - /** - * Shut the system down. - * \return Indication of success. - */ - virtual GHOST_TSuccess exit(); - - /** - * Creates a fullscreen window. - * \param window The window created. - * \return Indication of success. - */ - GHOST_TSuccess createFullScreenWindow(GHOST_Window **window, const GHOST_DisplaySetting &settings, - const bool stereoVisual, const bool alphaBackground = 0, const GHOST_TUns16 numOfAASamples = 0); - - /** The display manager (platform dependent). */ - GHOST_DisplayManager *m_displayManager; - - /** The timer manager. */ - GHOST_TimerManager *m_timerManager; - - /** The window manager. */ - GHOST_WindowManager *m_windowManager; - - /** The event manager. */ - GHOST_EventManager *m_eventManager; + /** + * Returns the state of all modifier keys. + * \param keys The state of all modifier keys (true == pressed). + * \return Indication of success. + */ + virtual GHOST_TSuccess getModifierKeys(GHOST_ModifierKeys &keys) const = 0; + + /** + * Returns the state of the mouse buttons (ouside the message queue). + * \param buttons The state of the buttons. + * \return Indication of success. + */ + virtual GHOST_TSuccess getButtons(GHOST_Buttons &buttons) const = 0; + + /** + * Returns the selection buffer + * \param selection Only used on X11 + * \return Returns the clipboard data + * + */ + virtual GHOST_TUns8 *getClipboard(bool selection) const = 0; + + /** + * Put data to the Clipboard + * \param buffer The buffer to copy to the clipboard + * \param selection The clipboard to copy too only used on X11 + */ + virtual void putClipboard(GHOST_TInt8 *buffer, bool selection) const = 0; + + /** + * Confirms quitting he program when there is just one window left open + * in the application + */ + virtual int confirmQuit(GHOST_IWindow *window) const; + + /** + * Informs if the system provides native dialogs (eg. confirm quit) + */ + virtual bool supportsNativeDialogs(void); + + protected: + /** + * Initialize the system. + * \return Indication of success. + */ + virtual GHOST_TSuccess init(); + + /** + * Shut the system down. + * \return Indication of success. + */ + virtual GHOST_TSuccess exit(); + + /** + * Creates a fullscreen window. + * \param window The window created. + * \return Indication of success. + */ + GHOST_TSuccess createFullScreenWindow(GHOST_Window **window, + const GHOST_DisplaySetting &settings, + const bool stereoVisual, + const bool alphaBackground = 0, + const GHOST_TUns16 numOfAASamples = 0); + + /** The display manager (platform dependent). */ + GHOST_DisplayManager *m_displayManager; + + /** The timer manager. */ + GHOST_TimerManager *m_timerManager; + + /** The window manager. */ + GHOST_WindowManager *m_windowManager; + + /** The event manager. */ + GHOST_EventManager *m_eventManager; #ifdef WITH_INPUT_NDOF - /** The N-degree of freedom device manager */ - GHOST_NDOFManager *m_ndofManager; + /** The N-degree of freedom device manager */ + GHOST_NDOFManager *m_ndofManager; #endif - /** Prints all the events. */ + /** Prints all the events. */ #ifdef GHOST_DEBUG - GHOST_EventPrinter *m_eventPrinter; -#endif // GHOST_DEBUG + GHOST_EventPrinter *m_eventPrinter; +#endif // GHOST_DEBUG - /** Settings of the display before the display went fullscreen. */ - GHOST_DisplaySetting m_preFullScreenSetting; + /** Settings of the display before the display went fullscreen. */ + GHOST_DisplaySetting m_preFullScreenSetting; - /** Which tablet API to use. */ - GHOST_TTabletAPI m_tabletAPI; + /** Which tablet API to use. */ + GHOST_TTabletAPI m_tabletAPI; }; inline GHOST_TimerManager *GHOST_System::getTimerManager() const { - return m_timerManager; + return m_timerManager; } inline GHOST_EventManager *GHOST_System::getEventManager() const { - return m_eventManager; + return m_eventManager; } inline GHOST_WindowManager *GHOST_System::getWindowManager() const { - return m_windowManager; + return m_windowManager; } #ifdef WITH_INPUT_NDOF inline GHOST_NDOFManager *GHOST_System::getNDOFManager() const { - return m_ndofManager; + return m_ndofManager; } #endif -#endif // __GHOST_SYSTEM_H__ +#endif // __GHOST_SYSTEM_H__ |