31 #ifndef _CEGUIElement_h_
32 #define _CEGUIElement_h_
34 #include "CEGUI/Base.h"
35 #include "CEGUI/PropertySet.h"
36 #include "CEGUI/EventSet.h"
37 #include "CEGUI/EventArgs.h"
40 # pragma warning(push)
41 # pragma warning(disable : 4251)
80 static const String& getDataTypeName()
82 static String type(
"HorizontalAlignment");
93 else if (str ==
"Right")
119 assert(
false &&
"Invalid horizontal alignment");
158 static const String& getDataTypeName()
160 static String type(
"VerticalAlignment");
165 static return_type fromString(
const String& str)
171 else if (str ==
"Bottom")
181 static string_return_type toString(pass_type val)
197 assert(
false &&
"Invalid vertical alignment");
327 d_generator(generator),
356 if (!d_cacheValid && !skipAllPixelAlignment)
361 return CEGUI_CALL_MEMBER_FN(*d_element, d_generator)(skipAllPixelAlignment);
372 d_cacheValid =
false;
375 inline bool isCacheValid()
const
380 inline void regenerateCache()
const
384 d_cachedData = CEGUI_CALL_MEMBER_FN(*d_element, d_generator)(
false);
390 Element
const* d_element;
391 const DataGenerator d_generator;
393 mutable Rectf d_cachedData;
394 mutable bool d_cacheValid;
442 const UDim& width,
const UDim& height)
450 setArea(area.d_min, area.
getSize());
489 setArea_impl(pos, d_area.getSize());
495 setPosition(
UVector2(pos, getYPosition()));
501 setPosition(
UVector2(getXPosition(), pos));
520 return d_area.getPosition();
526 return getPosition().d_x;
532 return getPosition().d_y;
559 return d_horizontalAlignment;
586 return d_verticalAlignment;
602 setArea(d_area.getPosition(), size);
608 setSize(
USize(width, getSize().d_height));
614 setSize(
USize(getSize().d_width, height));
630 return d_area.getSize();
636 return getSize().d_width;
642 return getSize().d_height;
765 return d_aspectRatio;
800 return d_pixelAligned;
812 return getUnclippedOuterRect().get().d_min;
923 return d_children[idx];
931 return d_children.size();
994 return d_unclippedOuterRect;
1012 return d_unclippedInnerRect;
1030 return inner ? getUnclippedInnerRect() : getUnclippedOuterRect();
1076 return non_client ? getNonClientChildContentArea() : getClientChildContentArea();
1143 bool topLeftSizing =
false,
bool fireEvents =
true);
1148 const Sizef old_sz(d_unclippedInnerRect.get().getSize());
1149 d_unclippedInnerRect.invalidateCache();
1150 return old_sz != d_unclippedInnerRect.get().getSize();
1185 void notifyChildrenOfSizeChange(
const bool non_client,
1343 #if defined(_MSC_VER)
1344 # pragma warning(pop)
Definition: MemoryAllocatedObject.h:110
EventArgs based class that is used for objects passed to handlers triggered for events concerning som...
Definition: Element.h:211
Element * element
pointer to an Element object of relevance to the event.
Definition: Element.h:218
A tiny wrapper to hide some of the dirty work of rect caching.
Definition: Element.h:315
void invalidateCache() const
Invalidates the cached Rectf causing it to be regenerated.
Definition: Element.h:370
Rectf getFresh(bool skipAllPixelAlignment=false) const
Skips all caching and calls the generator.
Definition: Element.h:352
const Rectf & get() const
Retrieves cached Rectf or generated a fresh one and caches it.
Definition: Element.h:336
A positioned and sized rectangular node in a tree graph.
Definition: Element.h:246
const CachedRectf & getUnclippedRect(const bool inner) const
Return a Rect that describes the unclipped area covered by the Element.
Definition: Element.h:1028
static const String EventHorizontalAlignmentChanged
Definition: Element.h:272
std::vector< Element *CEGUI_VECTOR_ALLOC(Element *)> ChildList
definition of type used for the list of attached child elements.
Definition: Element.h:1295
USize d_minSize
current minimum size for the element.
Definition: Element.h:1312
virtual void setArea(const UVector2 &pos, const USize &size)
Set the Element area.
virtual void onChildRemoved(ElementEventArgs &e)
Handler called when a child element is removed from this element.
static const String EventSized
Definition: Element.h:255
HorizontalAlignment d_horizontalAlignment
Specifies the base for horizontal alignment.
Definition: Element.h:1308
const USize & getMinSize() const
Get the element's minimum size.
Definition: Element.h:677
CachedRectf d_unclippedOuterRect
outer area rect in screen pixels
Definition: Element.h:1327
const Sizef & getPixelSize() const
Return the element's size in pixels.
Definition: Element.h:822
void setRotation(const Quaternion &rotation)
sets rotation of this widget
const UDim & getYPosition() const
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition: Element.h:530
static const String EventVerticalAlignmentChanged
Definition: Element.h:278
void addElementProperties()
Add standard CEGUI::Element properties.
virtual void onMoved(ElementEventArgs &e)
Handler called when the element's position changes.
virtual Rectf getUnclippedInnerRect_impl(bool skipAllPixelAlignment) const
Default implementation of function to return Element's inner rect area.
bool isAncestor(const Element *element) const
Checks whether the specified Element is an ancestor of this Element.
virtual void onRotated(ElementEventArgs &e)
Handler called when the element's rotation is changed.
void setXPosition(const UDim &pos)
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition: Element.h:493
void setAspectRatio(const float ratio)
Sets target aspect ratio.
void setSize(const USize &size)
Set the element's size.
Definition: Element.h:600
void setAspectMode(const AspectMode mode)
Sets current aspect mode and recalculates the area rect.
bool isInnerRectSizeChanged() const
helper to return whether the inner rect size has changed
Definition: Element.h:1146
static const String EventNamespace
Namespace for global events.
Definition: Element.h:249
URect d_area
This element objects area as defined by a URect.
Definition: Element.h:1306
CachedRectf d_unclippedInnerRect
inner area rect in screen pixels
Definition: Element.h:1329
Quaternion d_rotation
Rotation of this element (relative to the parent)
Definition: Element.h:1324
Element * getChildElementAtIdx(size_t idx) const
return a pointer to the child element that is attached to 'this' at the given index.
Definition: Element.h:921
virtual void setHorizontalAlignment(const HorizontalAlignment alignment)
Set the horizontal alignment.
virtual void onNonClientChanged(ElementEventArgs &e)
Handler called when the element's non-client setting, affecting it's position and size relative to it...
USize getSize() const
Get the element's size.
Definition: Element.h:628
const CachedRectf & getChildContentArea(const bool non_client=false) const
Return a Rect that is used to position and size child elements.
Definition: Element.h:1074
virtual void addChild_impl(Element *element)
Add given element to child list at an appropriate position.
virtual void setParent(Element *parent)
Set the parent element for this element object.
virtual void setVerticalAlignment(const VerticalAlignment alignment)
Set the vertical alignment.
size_t getChildCount() const
Returns number of child elements attached to this Element.
Definition: Element.h:929
virtual void onParentSized(ElementEventArgs &e)
Handler called when this element's parent element has been resized. If this element is the root / GUI...
void setPosition(const UVector2 &pos)
Set the element's position.
Definition: Element.h:487
virtual const Sizef & getRootContainerSize() const
Return the size of the root container (such as screen size).
float getAspectRatio() const
Retrieves target aspect ratio.
Definition: Element.h:763
bool isNonClient() const
Checks whether this element was set to be non client.
Definition: Element.h:974
static const String EventNonClientChanged
Definition: Element.h:305
virtual ~Element()
Destructor.
const CachedRectf & getUnclippedOuterRect() const
Return a Rect that describes the unclipped outer rect area of the Element.
Definition: Element.h:992
const CachedRectf & getUnclippedInnerRect() const
Return a Rect that describes the unclipped inner rect area of the Element.
Definition: Element.h:1010
bool isChild(const Element *element) const
Checks whether given element is attached to this Element.
AspectMode getAspectMode() const
Retrieves currently used aspect mode.
Definition: Element.h:737
virtual void onVerticalAlignmentChanged(ElementEventArgs &e)
Handler called when the vertical alignment setting for the element is changed.
VerticalAlignment getVerticalAlignment() const
Get the vertical alignment.
Definition: Element.h:584
Element * getParentElement() const
Retrieves parent of this element.
Definition: Element.h:414
float d_aspectRatio
The target aspect ratio.
Definition: Element.h:1318
ChildList d_children
The list of child element objects attached to this.
Definition: Element.h:1298
bool isPixelAligned() const
Checks whether this Element is pixel aligned.
Definition: Element.h:798
void setArea(const URect &area)
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition: Element.h:448
static const String EventRotated
Definition: Element.h:283
AspectMode d_aspectMode
How to satisfy current aspect ratio.
Definition: Element.h:1316
void setMinSize(const USize &size)
Set the element's minimum size.
void setYPosition(const UDim &pos)
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition: Element.h:499
virtual void setArea_impl(const UVector2 &pos, const USize &size, bool topLeftSizing=false, bool fireEvents=true)
Implementation method to modify element area while correctly applying min / max size processing,...
const UVector2 & getPosition() const
Get the element's position.
Definition: Element.h:518
VerticalAlignment d_verticalAlignment
Specifies the base for vertical alignment.
Definition: Element.h:1310
virtual void removeChild_impl(Element *element)
Remove given element from child list.
static const String EventZOrderChanged
Definition: Element.h:299
virtual void onChildAdded(ElementEventArgs &e)
Handler called when a child element is added to this element.
static const String EventChildRemoved
Definition: Element.h:293
Sizef getParentPixelSize(bool skipAllPixelAlignment=false) const
Return the pixel size of the parent element.
void fireAreaChangeEvents(const bool moved, const bool sized)
helper to fire events based on changes to area rect
virtual void onHorizontalAlignmentChanged(ElementEventArgs &e)
Handler called when the horizontal alignment setting for the element is changed.
Sizef d_pixelSize
Current constrained pixel size of the element.
Definition: Element.h:1322
const UDim & getXPosition() const
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition: Element.h:524
const URect & getArea() const
Return the element's area.
Definition: Element.h:467
void setHeight(const UDim &height)
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition: Element.h:612
static const String EventMoved
Definition: Element.h:266
const Vector2f & getPixelPosition() const
Return the element's absolute (or screen, depending on the type of the element) position in pixels.
Definition: Element.h:810
static const String EventChildAdded
Definition: Element.h:288
bool d_pixelAligned
If true, the position and size are pixel aligned.
Definition: Element.h:1320
void addChild(Element *element)
Add the specified Element as a child of this Element.
USize d_maxSize
current maximum size for the element.
Definition: Element.h:1314
const USize & getMaxSize() const
Get the element's maximum size.
Definition: Element.h:716
virtual void notifyScreenAreaChanged(bool recursive=true)
Inform the element and (optionally) all children that screen area has changed.
void setMaxSize(const USize &size)
Set the element's maximum size.
virtual const CachedRectf & getClientChildContentArea() const
Return a Rect that is used by client child elements as content area.
const Quaternion & getRotation() const
retrieves rotation of this widget
Definition: Element.h:869
UDim getWidth() const
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition: Element.h:634
Sizef calculatePixelSize(bool skipAllPixelAlignment=false) const
Calculates this element's pixel size.
void removeChild(Element *element)
Remove the Element Element's child list.
virtual void onSized(ElementEventArgs &e)
Handler called when the element's size changes.
virtual Rectf getUnclippedOuterRect_impl(bool skipAllPixelAlignment) const
Default implementation of function to return Element's outer rect area.
void setNonClient(const bool setting)
Set whether the Element is non-client.
virtual const CachedRectf & getNonClientChildContentArea() const
Return a Rect that is used by client child elements as content area.
HorizontalAlignment getHorizontalAlignment() const
Get the horizontal alignment.
Definition: Element.h:557
Element * d_parent
Holds pointer to the parent element.
Definition: Element.h:1300
void setArea(const UDim &xpos, const UDim &ypos, const UDim &width, const UDim &height)
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition: Element.h:441
static const String EventParentSized
Definition: Element.h:261
void setWidth(const UDim &width)
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition: Element.h:606
void setPixelAligned(const bool setting)
Sets whether this Element is pixel aligned (both position and size, basically the 4 "corners").
UDim getHeight() const
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition: Element.h:640
bool d_nonClient
true if element is in non-client (outside InnerRect) area of parent.
Definition: Element.h:1303
Base class used as the argument to all subscribers Event object.
Definition: EventArgs.h:51
Interface providing event signaling and handling.
Definition: EventSet.h:167
Helper class used to convert various data types to and from the format expected in Property strings.
Definition: ForwardRefs.h:84
Interface providing introspection capabilities.
Definition: PropertySet.h:108
Class to represent rotation, avoids Gimbal lock.
Definition: Quaternion.h:69
Size< T > getSize() const
return the size of the Rect area
Definition: Rect.h:149
String class used within the GUI system.
Definition: String.h:64
Dimension that has both a relative 'scale' portion and and absolute 'offset' portion.
Definition: UDim.h:94
Main namespace for Crazy Eddie's GUI Library.
Definition: arch_overview.dox:1
HorizontalAlignment
Enumerated type used when specifying horizontal alignments for Element.
Definition: Element.h:53
@ HA_LEFT
Definition: Element.h:58
@ HA_RIGHT
Definition: Element.h:68
@ HA_CENTRE
Definition: Element.h:63
AspectMode
How aspect ratio should be maintained.
Definition: Size.h:46
VerticalAlignment
Enumerated type used when specifying vertical alignments for Element.
Definition: Element.h:131
@ VA_CENTRE
Definition: Element.h:141
@ VA_BOTTOM
Definition: Element.h:146
@ VA_TOP
Definition: Element.h:136