Crazy Eddie's GUI System 0.8.7
Loading...
Searching...
No Matches
LayoutContainer.h
1/***********************************************************************
2 created: 29/7/2010
3 author: Martin Preisler
4
5 purpose: Defines abstract base class for layout containers
6*************************************************************************/
7/***************************************************************************
8 * Copyright (C) 2004 - 2010 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 _CEGUILayoutContainer_h_
30#define _CEGUILayoutContainer_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
42namespace CEGUI
43{
44
53class CEGUIEXPORT LayoutContainer : public Window
54{
55public:
56 /*************************************************************************
57 Event name constants
58 *************************************************************************/
60 static const String EventNamespace;
61
72 LayoutContainer(const String& type, const String& name);
73
78 virtual ~LayoutContainer(void);
79
85
90 bool needsLayouting() const;
91
96 virtual void layout() = 0;
97
103 virtual void layoutIfNecessary();
104
106 virtual void update(float elapsed);
107
109
111
112protected:
115
116 Rectf getClientChildContentArea_impl(bool skipAllPixelAlignment) const;
117
118 size_t getIdxOfChild(Window* wnd) const;
119
121 virtual void addChild_impl(Element* element);
123 virtual void removeChild_impl(Element* element);
124
125 /*************************************************************************
126 Event trigger methods
127 *************************************************************************/
137 virtual bool handleChildSized(const EventArgs& e);
138
149
159 virtual bool handleChildAdded(const EventArgs& e);
160
170 virtual bool handleChildRemoved(const EventArgs& e);
171
176 virtual UVector2 getOffsetForWindow(Window* window) const;
177
183
184 // overridden from parent class
186
187 /*************************************************************************
188 Implementation Data
189 *************************************************************************/
190 // if true, we will relayout before rendering of this window starts
191 bool d_needsLayouting;
192
193 typedef std::multimap<Window*, Event::Connection, std::less<Window*>
194 CEGUI_MULTIMAP_ALLOC(Window*, Event::Connection)> ConnectionTracker;
196 ConnectionTracker d_eventConnections;
197
198 CachedRectf d_clientChildContentArea;
199};
200
201} // End of CEGUI namespace section
202
203#if defined(_MSC_VER)
204# pragma warning(pop)
205#endif
206
207#endif // end of guard _CEGUILayoutContainer_h_
208
EventArgs based class that is used for objects passed to handlers triggered for events concerning som...
Definition Element.h:211
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
An abstract base class providing common functionality and specifying the required interface for deriv...
Definition LayoutContainer.h:54
virtual Rectf getUnclippedInnerRect_impl(bool skipAllPixelAlignment) const
Default implementation of function to return Element's inner rect area.
void onParentSized(ElementEventArgs &e)
Handler called when this window's parent window has been resized. If this window is the root / GUI Sh...
virtual void notifyScreenAreaChanged(bool recursive)
Inform the window, and optionally all children, that screen area rectangles have changed.
bool needsLayouting() const
returns true if this layout container will be relayouted before drawing
ConnectionTracker d_eventConnections
Tracks event connections we make.
Definition LayoutContainer.h:196
virtual void update(float elapsed)
Cause window to update itself and any attached children. Client code does not need to call this metho...
virtual void removeChild_impl(Element *element)
Remove given element from child list.
virtual void layout()=0
(re)layouts all windows inside this layout container immediately
virtual const CachedRectf & getClientChildContentArea() const
Return a Rect that is used by client child elements as content area.
virtual UVector2 getBoundingSizeForWindow(Window *window) const
returns bounding size for window, including margins
void markNeedsLayouting()
marks this layout container for relayouting before drawing
LayoutContainer(const String &type, const String &name)
Constructor for Window base class.
virtual bool handleChildMarginChanged(const EventArgs &e)
Handler called when child window changes margin(s)
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 void layoutIfNecessary()
(re)layouts all windows inside this layout container if it was marked necessary
virtual ~LayoutContainer(void)
Destructor for Window base class.
virtual UVector2 getOffsetForWindow(Window *window) const
returns margin offset for given window
virtual void addChild_impl(Element *element)
Add given element to child list at an appropriate position.
static const String EventNamespace
Namespace for global events.
Definition LayoutContainer.h:60
virtual bool handleChildAdded(const EventArgs &e)
Handler called when child window gets added.
String class used within the GUI system.
Definition String.h:64
base class for properties able to do native set/get
Definition TypedProperty.h:50
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