Crazy Eddie's GUI System  0.8.7
LayoutCell.h
1 /***********************************************************************
2  created: 22/2/2011
3  author: Martin Preisler
4 
5  purpose: Defines base (and default) layout cell class
6 *************************************************************************/
7 /***************************************************************************
8  * Copyright (C) 2004 - 2011 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 _CEGUILayoutCell_h_
30 #define _CEGUILayoutCell_h_
31 
32 #include "../Window.h"
33 
34 #include <map>
35 
36 #if defined(_MSC_VER)
37 # pragma warning(push)
38 # pragma warning(disable : 4251)
39 #endif
40 
41 // Start of CEGUI namespace section
42 namespace CEGUI
43 {
44 
59 class CEGUIEXPORT LayoutCell : public Window
60 {
61 public:
62  /*************************************************************************
63  Event name constants
64  *************************************************************************/
66  static const String EventNamespace;
68  static const String WidgetTypeName;
69 
80  LayoutCell(const String& type, const String& name);
81 
86  virtual ~LayoutCell(void);
87 
88  virtual const CachedRectf& getClientChildContentArea() const;
89 
90  virtual void notifyScreenAreaChanged(bool recursive);
91 
92 protected:
94  virtual Rectf getUnclippedInnerRect_impl(bool skipAllPixelAlignment) const;
95 
96  Rectf getClientChildContentArea_impl(bool skipAllPixelAlignment) const;
97 
99  virtual void addChild_impl(Element* element);
101  virtual void removeChild_impl(Element* element);
102 
103  /*************************************************************************
104  Event trigger methods
105  *************************************************************************/
115  virtual bool handleChildSized(const EventArgs& e);
116 
126  virtual bool handleChildAdded(const EventArgs& e);
127 
137  virtual bool handleChildRemoved(const EventArgs& e);
138 
139  /*************************************************************************
140  Implementation Data
141  *************************************************************************/
142  typedef std::multimap<Window*, Event::Connection> ConnectionTracker;
144  ConnectionTracker d_eventConnections;
145 
146  CachedRectf d_clientChildContentArea;
147 };
148 
149 } // End of CEGUI namespace section
150 
151 #if defined(_MSC_VER)
152 # pragma warning(pop)
153 #endif
154 
155 #endif // end of guard _CEGUILayoutCell_h_
A tiny wrapper to hide some of the dirty work of rect caching.
Definition: Element.h:315
A positioned and sized rectangular node in a tree graph.
Definition: Element.h:246
Base class used as the argument to all subscribers Event object.
Definition: EventArgs.h:51
Represents a cell in a layout container.
Definition: LayoutCell.h:60
virtual void addChild_impl(Element *element)
Add given element to child list at an appropriate position.
LayoutCell(const String &type, const String &name)
Constructor for LayoutCell class.
static const String EventNamespace
Namespace for events.
Definition: LayoutCell.h:66
virtual bool handleChildAdded(const EventArgs &e)
Handler called when child window gets added.
ConnectionTracker d_eventConnections
Tracks event connections we make.
Definition: LayoutCell.h:144
virtual void removeChild_impl(Element *element)
Remove given element from child list.
virtual ~LayoutCell(void)
Destructor.
virtual bool handleChildSized(const EventArgs &e)
Handler called when child window gets sized.
virtual bool handleChildRemoved(const EventArgs &e)
Handler called when child window gets removed.
virtual const CachedRectf & getClientChildContentArea() const
Return a Rect that is used by client child elements as content area.
virtual void notifyScreenAreaChanged(bool recursive)
Inform the window, and optionally all children, that screen area rectangles have changed.
virtual Rectf getUnclippedInnerRect_impl(bool skipAllPixelAlignment) const
Default implementation of function to return Element's inner rect area.
static const String WidgetTypeName
Window factory name.
Definition: LayoutCell.h:68
String class used within the GUI system.
Definition: String.h:64
An abstract base class providing common functionality and specifying the required interface for deriv...
Definition: Window.h:151
Main namespace for Crazy Eddie's GUI Library.
Definition: arch_overview.dox:1