svn merge ^/trunk/blender -r46340:46350
[blender.git] / intern / ghost / intern / GHOST_Window.h
index 0986fc5743058b6b64ad755c6fa2fb5d473ddf5d..23f1b044b6073666322a3f9f8cbefd9cce51b3ee 100644 (file)
@@ -1,5 +1,4 @@
-/**
- * $Id$
+/*
  * ***** BEGIN GPL LICENSE BLOCK *****
  *
  * This program is free software; you can redistribute it and/or
@@ -14,7 +13,7 @@
  *
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  *
  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
  * All rights reserved.
  *
  * ***** END GPL LICENSE BLOCK *****
  */
-/**
- * @file       GHOST_Window.h
+
+/** \file ghost/intern/GHOST_Window.h
+ *  \ingroup GHOST
  * Declaration of GHOST_Window class.
  */
 
-#ifndef _GHOST_WINDOW_H_
-#define _GHOST_WINDOW_H_
+#ifndef __GHOST_WINDOW_H__
+#define __GHOST_WINDOW_H__
 
 #include "GHOST_IWindow.h"
 
@@ -75,24 +75,20 @@ public:
         * Constructor.
         * Creates a new window and opens it.
         * To check if the window was created properly, use the getValid() method.
-        * @param title         The text shown in the title bar of the window.
-        * @param left          The coordinate of the left edge of the window.
-        * @param top           The coordinate of the top edge of the window.
-        * @param width         The width the window.
-        * @param heigh         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 width                         The width the window.
+        * @param heigh                         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_Window(
-               const STR_String& title, 
-               GHOST_TInt32 left,
-               GHOST_TInt32 top,
                GHOST_TUns32 width,
                GHOST_TUns32 height,
                GHOST_TWindowState state,
                GHOST_TDrawingContextType type = GHOST_kDrawingContextTypeNone,
-               const bool stereoVisual = false);
+               const bool stereoVisual = false,
+               const GHOST_TUns16 numOfAASamples = 0);
 
        /**
         * @section Interface inherited from GHOST_IWindow left for derived class
@@ -121,6 +117,12 @@ public:
         */
        virtual ~GHOST_Window();
 
+       /**
+        * Returns the associated OS object/handle
+        * @return The associated OS object/handle
+        */
+       virtual void* getOSWindow() const;
+       
        /**
         * Returns the current cursor shape.
         * @return      The current cursor shape.
@@ -159,6 +161,8 @@ public:
         */
        inline virtual bool getCursorVisibility() const;
        inline virtual GHOST_TGrabCursorMode getCursorGrabMode() const;
+       inline virtual bool getCursorGrabModeIsWarp() const;
+       inline virtual void getCursorGrabInitPos(GHOST_TInt32 &x, GHOST_TInt32 &y) const;
        inline virtual void getCursorGrabAccum(GHOST_TInt32 &x, GHOST_TInt32 &y) const;
        inline virtual void setCursorGrabAccum(GHOST_TInt32 x, GHOST_TInt32 y);
 
@@ -182,6 +186,28 @@ public:
         */
        virtual GHOST_TSuccess getCursorGrabBounds(GHOST_Rect& bounds);
 
+       /**
+     * Sets the progress bar value displayed in the window/application icon
+        * @param progress The progress % (0.0 to 1.0)
+        */
+       virtual GHOST_TSuccess setProgressBar(float progress) {return GHOST_kFailure;};
+       
+       /**
+        * Hides the progress bar in the icon
+        */
+       virtual GHOST_TSuccess endProgressBar() {return GHOST_kFailure;};
+       
+       /**
+        * Tells if the ongoing drag'n'drop object can be accepted upon mouse drop
+        */
+       virtual void setAcceptDragOperation(bool canAccept);
+       
+       /**
+        * Returns acceptance of the dropped object
+        * Usually called by the "object dropped" event handling function
+        */
+       virtual bool canAcceptDragOperation() const;
+       
        /**
         * Sets the window "modified" status, indicating unsaved changes
         * @param isUnsavedChanges Unsaved changes or not
@@ -264,8 +290,9 @@ protected:
         * Sets the cursor shape on the window using
         * native window system calls.
         */
-       virtual GHOST_TSuccess setWindowCustomCursorShape(GHOST_TUns8 bitmap[16][2], GHOST_TUns8 mask[16][2],
-                                                        int hotX, int hotY) = 0;
+       virtual GHOST_TSuccess setWindowCustomCursorShape(GHOST_TUns8 bitmap[16][2],
+                                                         GHOST_TUns8 mask[16][2],
+                                                         int hotX, int hotY) = 0;
        
        virtual GHOST_TSuccess setWindowCustomCursorShape(GHOST_TUns8 *bitmap, GHOST_TUns8 *mask, 
                                                int szx, int szy, int hotX, int hotY, int fg, int bg) = 0;
@@ -293,6 +320,12 @@ protected:
        /** The current shape of the cursor */
        GHOST_TStandardCursor m_cursorShape;
     
+       /** The presence of progress indicator with the application icon */
+       bool m_progressBarVisible;
+       
+       /** The acceptance of the "drop candidate" of the current drag'n'drop operation */
+       bool m_canAcceptDragOperation;
+       
        /** Modified state : are there unsaved changes */
        bool m_isUnsavedChanges;
        
@@ -304,11 +337,14 @@ protected:
         *  the graphics h/w
         */
        bool m_stereoVisual;
-    
-    /** Full-screen width */
-    GHOST_TUns32 m_fullScreenWidth;
-    /** Full-screen height */
-    GHOST_TUns32 m_fullScreenHeight;
+       
+       /** Number of samples used in anti-aliasing, set to 0 if no AA **/
+       GHOST_TUns16 m_numOfAASamples;
+
+       /** Full-screen width */
+       GHOST_TUns32 m_fullScreenWidth;
+       /** Full-screen height */
+       GHOST_TUns32 m_fullScreenHeight;
 };
 
 
@@ -327,6 +363,18 @@ inline GHOST_TGrabCursorMode GHOST_Window::getCursorGrabMode() const
        return m_cursorGrab;
 }
 
+inline bool GHOST_Window::getCursorGrabModeIsWarp() const
+{
+       return  (m_cursorGrab == GHOST_kGrabWrap) ||
+               (m_cursorGrab == GHOST_kGrabHide);
+}
+
+inline void GHOST_Window::getCursorGrabInitPos(GHOST_TInt32 &x, GHOST_TInt32 &y) const
+{
+       x = m_cursorGrabInitPos[0];
+       y = m_cursorGrabInitPos[1];
+}
+
 inline void GHOST_Window::getCursorGrabAccum(GHOST_TInt32 &x, GHOST_TInt32 &y) const
 {
        x= m_cursorGrabAccumPos[0];