1 /***********************************************************************
2     created:    5/6/2004
3     author:     Paul D Turner
4 
5     purpose:    Interface to a default window
6 *************************************************************************/
7 /***************************************************************************
8  *   Copyright (C) 2004 - 2006 Paul D Turner & The CEGUI Development Team
9  *
10  *   Permission is hereby granted, free of charge, to any person obtaining
11  *   a copy of this software and associated documentation files (the
12  *   "Software"), to deal in the Software without restriction, including
13  *   without limitation the rights to use, copy, modify, merge, publish,
14  *   distribute, sublicense, and/or sell copies of the Software, and to
15  *   permit persons to whom the Software is furnished to do so, subject to
16  *   the following conditions:
17  *
18  *   The above copyright notice and this permission notice shall be
19  *   included in all copies or substantial portions of the Software.
20  *
21  *   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
22  *   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
23  *   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
24  *   IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
25  *   OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
26  *   ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
27  *   OTHER DEALINGS IN THE SOFTWARE.
28  ***************************************************************************/
29 #ifndef _CEGUIDefaultWindow_h_
30 #define _CEGUIDefaultWindow_h_
31 
32 #include "../Window.h"
33 #include "../WindowFactory.h"
34 
35 
36 // Start of CEGUI namespace section
37 namespace CEGUI
38 {
39 /*!
40 \brief
41     Window class intended to be used as a simple, generic Window.
42 
43     This class does no rendering and so appears totally transparent.  This window defaults
44     to position 0.0f, 0.0f with a size of 1.0f x 1.0f.
45 
46     /par
47     This Window has been used as the root GUI-sheet (root window) but it's usage has been extended
48     beyond that. That's why it's name has been changed to "DefaultWindow" for 0.8.
49 */
50 class CEGUIEXPORT DefaultWindow : public Window
51 {
52 public:
53     /*************************************************************************
54         Constants
55     *************************************************************************/
56     // type name for this widget
57     static const String WidgetTypeName;             //!< The unique typename of this widget
58 
59 
60     /*************************************************************************
61         Construction and Destruction
62     *************************************************************************/
63     /*!
64     \brief
65         Constructor for DefaultWindows.
66     */
67     DefaultWindow(const String& type, const String& name);
68 
69 
70     /*!
71     \brief
72         Destructor for DefaultWindows.
73     */
~DefaultWindow(void)74     virtual ~DefaultWindow(void) {}
75 
76 
77 protected:
78     //! helper to update mouse input handled state
79     void updateMouseEventHandled(MouseEventArgs& e) const;
80 
81     // overridden functions from Window base class
82     bool moveToFront_impl(bool wasClicked);
83 
84     // override the mouse event handlers
85     void onMouseMove(MouseEventArgs& e);
86     void onMouseWheel(MouseEventArgs& e);
87     void onMouseButtonDown(MouseEventArgs& e);
88     void onMouseButtonUp(MouseEventArgs& e);
89     void onMouseClicked(MouseEventArgs& e);
90     void onMouseDoubleClicked(MouseEventArgs& e);
91     void onMouseTripleClicked(MouseEventArgs& e);
92 };
93 
94 } // End of  CEGUI namespace section
95 
96 #endif  // end of guard _CEGUIDefaultWindow_h_
97