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
42namespace CEGUI
43{
44
59class CEGUIEXPORT LayoutCell : public Window
60{
61public:
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
92protected:
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, std::less<Window*>
143 CEGUI_MULTIMAP_ALLOC(Window*, Event::Connection)> ConnectionTracker;
145 ConnectionTracker d_eventConnections;
146
147 CachedRectf d_clientChildContentArea;
148};
149
150} // End of CEGUI namespace section
151
152#if defined(_MSC_VER)
153# pragma warning(pop)
154#endif
155
156#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:145
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 const CachedRectf & getClientChildContentArea() const
Return a Rect that is used by client child elements as content area.
virtual bool handleChildRemoved(const EventArgs &e)
Handler called when child window gets removed.
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