diff options
Diffstat (limited to 'intern/ghost/intern/GHOST_WindowCocoa.h')
-rw-r--r-- | intern/ghost/intern/GHOST_WindowCocoa.h | 552 |
1 files changed, 292 insertions, 260 deletions
diff --git a/intern/ghost/intern/GHOST_WindowCocoa.h b/intern/ghost/intern/GHOST_WindowCocoa.h index 0b3aa6be732..acda109eb7f 100644 --- a/intern/ghost/intern/GHOST_WindowCocoa.h +++ b/intern/ghost/intern/GHOST_WindowCocoa.h @@ -26,8 +26,8 @@ #define __GHOST_WINDOWCOCOA_H__ #ifndef __APPLE__ -#error Apple OSX only! -#endif // __APPLE__ +# error Apple OSX only! +#endif // __APPLE__ #include "GHOST_Window.h" #include "STR_String.h" @@ -40,263 +40,295 @@ class GHOST_SystemCocoa; class GHOST_WindowCocoa : public GHOST_Window { -public: - /** - * Constructor. - * Creates a new window and opens it. - * To check if the window was created properly, use the getValid() method. - * \param systemCocoa The associated system class to forward events to - * \param title The text shown in the title bar of the window. - * \param left The coordinate of the left edge of the window. - * \param bottom The coordinate of the bottom edge of the window. - * \param width The width the window. - * \param height The height the window. - * \param state The state the window is initially opened with. - * \param type The type of drawing context installed in this window. - * \param stereoVisual Stereo visual for quad buffered stereo. - * \param numOfAASamples Number of samples used for AA (zero if no AA) - */ - GHOST_WindowCocoa( - GHOST_SystemCocoa *systemCocoa, - const STR_String& title, - GHOST_TInt32 left, - GHOST_TInt32 bottom, - GHOST_TUns32 width, - GHOST_TUns32 height, - GHOST_TWindowState state, - GHOST_TDrawingContextType type = GHOST_kDrawingContextTypeNone, - const bool stereoVisual = false, - const GHOST_TUns16 numOfAASamples = 0, - bool is_debug = false - ); - - /** - * Destructor. - * Closes the window and disposes resources allocated. - */ - ~GHOST_WindowCocoa(); - - /** - * Returns indication as to whether the window is valid. - * \return The validity of the window. - */ - bool getValid() const; - - /** - * Returns the associated NSWindow object - * \return The associated NSWindow object - */ - void *getOSWindow() const; - - /** - * Sets the title displayed in the title bar. - * \param title The title to display in the title bar. - */ - void setTitle(const STR_String& title); - - /** - * Returns the title displayed in the title bar. - * \param title The title displayed in the title bar. - */ - void getTitle(STR_String& title) const; - - /** - * Returns the window rectangle dimensions. - * The dimensions are given in screen coordinates that are relative to the upper-left corner of the screen. - * \param bounds The bounding rectangle of the window. - */ - void getWindowBounds(GHOST_Rect& bounds) const; - - /** - * Returns the client rectangle dimensions. - * The left and top members of the rectangle are always zero. - * \param bounds The bounding rectangle of the client area of the window. - */ - void getClientBounds(GHOST_Rect& bounds) const; - - /** - * Resizes client rectangle width. - * \param width The new width of the client area of the window. - */ - GHOST_TSuccess setClientWidth(GHOST_TUns32 width); - - /** - * Resizes client rectangle height. - * \param height The new height of the client area of the window. - */ - GHOST_TSuccess setClientHeight(GHOST_TUns32 height); - - /** - * Resizes client rectangle. - * \param width The new width of the client area of the window. - * \param height The new height of the client area of the window. - */ - GHOST_TSuccess setClientSize(GHOST_TUns32 width, GHOST_TUns32 height); - - /** - * Returns the state of the window (normal, minimized, maximized). - * \return The state of the window. - */ - GHOST_TWindowState getState() const; - - /** - * Sets the window "modified" status, indicating unsaved changes - * \param isUnsavedChanges Unsaved changes or not - * \return Indication of success. - */ - GHOST_TSuccess setModifiedState(bool isUnsavedChanges); - - /** - * Converts a point in screen coordinates to client rectangle coordinates - * \param inX The x-coordinate on the screen. - * \param inY The y-coordinate on the screen. - * \param outX The x-coordinate in the client rectangle. - * \param outY The y-coordinate in the client rectangle. - */ - void screenToClient(GHOST_TInt32 inX, GHOST_TInt32 inY, GHOST_TInt32& outX, GHOST_TInt32& outY) const; - - /** - * Converts a point in screen coordinates to client rectangle coordinates - * \param inX The x-coordinate in the client rectangle. - * \param inY The y-coordinate in the client rectangle. - * \param outX The x-coordinate on the screen. - * \param outY The y-coordinate on the screen. - */ - void clientToScreen(GHOST_TInt32 inX, GHOST_TInt32 inY, GHOST_TInt32& outX, GHOST_TInt32& outY) const; - - /** - * Converts a point in screen coordinates to client rectangle coordinates - * but without the y coordinate conversion needed for ghost compatibility. - * \param inX The x-coordinate in the client rectangle. - * \param inY The y-coordinate in the client rectangle. - * \param outX The x-coordinate on the screen. - * \param outY The y-coordinate on the screen. - */ - void clientToScreenIntern(GHOST_TInt32 inX, GHOST_TInt32 inY, GHOST_TInt32& outX, GHOST_TInt32& outY) const; - - /** - * Converts a point in screen coordinates to client rectangle coordinates, - * but without the y coordinate conversion needed for ghost compatibility. - * \param inX The x-coordinate in the client rectangle. - * \param inY The y-coordinate in the client rectangle. - * \param outX The x-coordinate on the screen. - * \param outY The y-coordinate on the screen. - */ - void screenToClientIntern(GHOST_TInt32 inX, GHOST_TInt32 inY, GHOST_TInt32& outX, GHOST_TInt32& outY) const; - - /** - * Gets the screen the window is displayed in - * \return The NSScreen object - */ - NSScreen *getScreen(); - - /** - * Sets the state of the window (normal, minimized, maximized). - * \param state The state of the window. - * \return Indication of success. - */ - GHOST_TSuccess setState(GHOST_TWindowState state); - - /** - * Sets the order of the window (bottom, top). - * \param order The order of the window. - * \return Indication of success. - */ - GHOST_TSuccess setOrder(GHOST_TWindowOrder order); - - void loadCursor(bool visible, GHOST_TStandardCursor cursor) const; - - const GHOST_TabletData *GetTabletData() - { - return &m_tablet; - } - - GHOST_TabletData& GetCocoaTabletData() - { - return m_tablet; - } - - /** - * Sets the progress bar value displayed in the window/application icon - * \param progress The progress % (0.0 to 1.0) - */ - GHOST_TSuccess setProgressBar(float progress); - - /** - * Hides the progress bar icon - */ - GHOST_TSuccess endProgressBar(); - - - void setNativePixelSize(void); - - GHOST_TSuccess beginFullScreen() const {return GHOST_kFailure;} - - GHOST_TSuccess endFullScreen() const {return GHOST_kFailure;} - - /** public function to get the window containing the OpenGL view */ - CocoaWindow *getCocoaWindow() const {return m_window;}; - - /* Internal value to ensure proper redraws during animations */ - void setImmediateDraw(bool value) { m_immediateDraw = value; } - bool getImmediateDraw(void) const { return m_immediateDraw; } - -protected: - - /** - * \param type The type of rendering context create. - * \return Indication of success. - */ - GHOST_Context *newDrawingContext(GHOST_TDrawingContextType type); - - /** - * Invalidates the contents of this window. - * \return Indication of success. - */ - GHOST_TSuccess invalidate(); - - /** - * Sets the cursor visibility on the window using - * native window system calls. - */ - GHOST_TSuccess setWindowCursorVisibility(bool visible); - - /** - * Sets the cursor grab on the window using - * native window system calls. - */ - GHOST_TSuccess setWindowCursorGrab(GHOST_TGrabCursorMode mode); - - /** - * Sets the cursor shape on the window using - * native window system calls. - */ - GHOST_TSuccess setWindowCursorShape(GHOST_TStandardCursor shape); - - /** - * Sets the cursor shape on the window using - * native window system calls. - */ - GHOST_TSuccess setWindowCustomCursorShape(GHOST_TUns8 *bitmap, GHOST_TUns8 *mask, - int sizex, int sizey, int hotX, int hotY, int fg_color, int bg_color); - - GHOST_TSuccess setWindowCustomCursorShape(GHOST_TUns8 bitmap[16][2], GHOST_TUns8 mask[16][2], int hotX, int hotY); - - /** The window containing the OpenGL view */ - CocoaWindow *m_window; - - /** The openGL view */ - CocoaOpenGLView *m_openGLView; - - /** The mother SystemCocoa class to send events */ - GHOST_SystemCocoa *m_systemCocoa; - - NSCursor *m_customCursor; - - GHOST_TabletData m_tablet; - - bool m_immediateDraw; - bool m_debug_context; // for debug messages during context setup + public: + /** + * Constructor. + * Creates a new window and opens it. + * To check if the window was created properly, use the getValid() method. + * \param systemCocoa The associated system class to forward events to + * \param title The text shown in the title bar of the window. + * \param left The coordinate of the left edge of the window. + * \param bottom The coordinate of the bottom edge of the window. + * \param width The width the window. + * \param height The height the window. + * \param state The state the window is initially opened with. + * \param type The type of drawing context installed in this window. + * \param stereoVisual Stereo visual for quad buffered stereo. + * \param numOfAASamples Number of samples used for AA (zero if no AA) + */ + GHOST_WindowCocoa(GHOST_SystemCocoa *systemCocoa, + const STR_String &title, + GHOST_TInt32 left, + GHOST_TInt32 bottom, + GHOST_TUns32 width, + GHOST_TUns32 height, + GHOST_TWindowState state, + GHOST_TDrawingContextType type = GHOST_kDrawingContextTypeNone, + const bool stereoVisual = false, + const GHOST_TUns16 numOfAASamples = 0, + bool is_debug = false); + + /** + * Destructor. + * Closes the window and disposes resources allocated. + */ + ~GHOST_WindowCocoa(); + + /** + * Returns indication as to whether the window is valid. + * \return The validity of the window. + */ + bool getValid() const; + + /** + * Returns the associated NSWindow object + * \return The associated NSWindow object + */ + void *getOSWindow() const; + + /** + * Sets the title displayed in the title bar. + * \param title The title to display in the title bar. + */ + void setTitle(const STR_String &title); + + /** + * Returns the title displayed in the title bar. + * \param title The title displayed in the title bar. + */ + void getTitle(STR_String &title) const; + + /** + * Returns the window rectangle dimensions. + * The dimensions are given in screen coordinates that are relative to the upper-left corner of the screen. + * \param bounds The bounding rectangle of the window. + */ + void getWindowBounds(GHOST_Rect &bounds) const; + + /** + * Returns the client rectangle dimensions. + * The left and top members of the rectangle are always zero. + * \param bounds The bounding rectangle of the client area of the window. + */ + void getClientBounds(GHOST_Rect &bounds) const; + + /** + * Resizes client rectangle width. + * \param width The new width of the client area of the window. + */ + GHOST_TSuccess setClientWidth(GHOST_TUns32 width); + + /** + * Resizes client rectangle height. + * \param height The new height of the client area of the window. + */ + GHOST_TSuccess setClientHeight(GHOST_TUns32 height); + + /** + * Resizes client rectangle. + * \param width The new width of the client area of the window. + * \param height The new height of the client area of the window. + */ + GHOST_TSuccess setClientSize(GHOST_TUns32 width, GHOST_TUns32 height); + + /** + * Returns the state of the window (normal, minimized, maximized). + * \return The state of the window. + */ + GHOST_TWindowState getState() const; + + /** + * Sets the window "modified" status, indicating unsaved changes + * \param isUnsavedChanges Unsaved changes or not + * \return Indication of success. + */ + GHOST_TSuccess setModifiedState(bool isUnsavedChanges); + + /** + * Converts a point in screen coordinates to client rectangle coordinates + * \param inX The x-coordinate on the screen. + * \param inY The y-coordinate on the screen. + * \param outX The x-coordinate in the client rectangle. + * \param outY The y-coordinate in the client rectangle. + */ + void screenToClient(GHOST_TInt32 inX, + GHOST_TInt32 inY, + GHOST_TInt32 &outX, + GHOST_TInt32 &outY) const; + + /** + * Converts a point in screen coordinates to client rectangle coordinates + * \param inX The x-coordinate in the client rectangle. + * \param inY The y-coordinate in the client rectangle. + * \param outX The x-coordinate on the screen. + * \param outY The y-coordinate on the screen. + */ + void clientToScreen(GHOST_TInt32 inX, + GHOST_TInt32 inY, + GHOST_TInt32 &outX, + GHOST_TInt32 &outY) const; + + /** + * Converts a point in screen coordinates to client rectangle coordinates + * but without the y coordinate conversion needed for ghost compatibility. + * \param inX The x-coordinate in the client rectangle. + * \param inY The y-coordinate in the client rectangle. + * \param outX The x-coordinate on the screen. + * \param outY The y-coordinate on the screen. + */ + void clientToScreenIntern(GHOST_TInt32 inX, + GHOST_TInt32 inY, + GHOST_TInt32 &outX, + GHOST_TInt32 &outY) const; + + /** + * Converts a point in screen coordinates to client rectangle coordinates, + * but without the y coordinate conversion needed for ghost compatibility. + * \param inX The x-coordinate in the client rectangle. + * \param inY The y-coordinate in the client rectangle. + * \param outX The x-coordinate on the screen. + * \param outY The y-coordinate on the screen. + */ + void screenToClientIntern(GHOST_TInt32 inX, + GHOST_TInt32 inY, + GHOST_TInt32 &outX, + GHOST_TInt32 &outY) const; + + /** + * Gets the screen the window is displayed in + * \return The NSScreen object + */ + NSScreen *getScreen(); + + /** + * Sets the state of the window (normal, minimized, maximized). + * \param state The state of the window. + * \return Indication of success. + */ + GHOST_TSuccess setState(GHOST_TWindowState state); + + /** + * Sets the order of the window (bottom, top). + * \param order The order of the window. + * \return Indication of success. + */ + GHOST_TSuccess setOrder(GHOST_TWindowOrder order); + + void loadCursor(bool visible, GHOST_TStandardCursor cursor) const; + + const GHOST_TabletData *GetTabletData() + { + return &m_tablet; + } + + GHOST_TabletData &GetCocoaTabletData() + { + return m_tablet; + } + + /** + * Sets the progress bar value displayed in the window/application icon + * \param progress The progress % (0.0 to 1.0) + */ + GHOST_TSuccess setProgressBar(float progress); + + /** + * Hides the progress bar icon + */ + GHOST_TSuccess endProgressBar(); + + void setNativePixelSize(void); + + GHOST_TSuccess beginFullScreen() const + { + return GHOST_kFailure; + } + + GHOST_TSuccess endFullScreen() const + { + return GHOST_kFailure; + } + + /** public function to get the window containing the OpenGL view */ + CocoaWindow *getCocoaWindow() const + { + return m_window; + }; + + /* Internal value to ensure proper redraws during animations */ + void setImmediateDraw(bool value) + { + m_immediateDraw = value; + } + bool getImmediateDraw(void) const + { + return m_immediateDraw; + } + + protected: + /** + * \param type The type of rendering context create. + * \return Indication of success. + */ + GHOST_Context *newDrawingContext(GHOST_TDrawingContextType type); + + /** + * Invalidates the contents of this window. + * \return Indication of success. + */ + GHOST_TSuccess invalidate(); + + /** + * Sets the cursor visibility on the window using + * native window system calls. + */ + GHOST_TSuccess setWindowCursorVisibility(bool visible); + + /** + * Sets the cursor grab on the window using + * native window system calls. + */ + GHOST_TSuccess setWindowCursorGrab(GHOST_TGrabCursorMode mode); + + /** + * Sets the cursor shape on the window using + * native window system calls. + */ + GHOST_TSuccess setWindowCursorShape(GHOST_TStandardCursor shape); + + /** + * Sets the cursor shape on the window using + * native window system calls. + */ + GHOST_TSuccess setWindowCustomCursorShape(GHOST_TUns8 *bitmap, + GHOST_TUns8 *mask, + int sizex, + int sizey, + int hotX, + int hotY, + int fg_color, + int bg_color); + + GHOST_TSuccess setWindowCustomCursorShape(GHOST_TUns8 bitmap[16][2], + GHOST_TUns8 mask[16][2], + int hotX, + int hotY); + + /** The window containing the OpenGL view */ + CocoaWindow *m_window; + + /** The openGL view */ + CocoaOpenGLView *m_openGLView; + + /** The mother SystemCocoa class to send events */ + GHOST_SystemCocoa *m_systemCocoa; + + NSCursor *m_customCursor; + + GHOST_TabletData m_tablet; + + bool m_immediateDraw; + bool m_debug_context; // for debug messages during context setup }; -#endif // __GHOST_WINDOWCOCOA_H__ +#endif // __GHOST_WINDOWCOCOA_H__ |