Crazy Eddies GUI System  0.7.2
CEGUIWindow.h
1 /***********************************************************************
2  filename: CEGUIWindow.h
3  created: 21/2/2004
4  author: Paul D Turner
5 
6  purpose: Defines abstract base class for Window objects
7 *************************************************************************/
8 /***************************************************************************
9  * Copyright (C) 2004 - 2006 Paul D Turner & The CEGUI Development Team
10  *
11  * Permission is hereby granted, free of charge, to any person obtaining
12  * a copy of this software and associated documentation files (the
13  * "Software"), to deal in the Software without restriction, including
14  * without limitation the rights to use, copy, modify, merge, publish,
15  * distribute, sublicense, and/or sell copies of the Software, and to
16  * permit persons to whom the Software is furnished to do so, subject to
17  * the following conditions:
18  *
19  * The above copyright notice and this permission notice shall be
20  * included in all copies or substantial portions of the Software.
21  *
22  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
23  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
24  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
25  * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
26  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
27  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
28  * OTHER DEALINGS IN THE SOFTWARE.
29  ***************************************************************************/
30 #ifndef _CEGUIWindow_h_
31 #define _CEGUIWindow_h_
32 
33 #include "CEGUIBase.h"
34 #include "CEGUIString.h"
35 #include "CEGUIVector.h"
36 #include "CEGUIRect.h"
37 #include "CEGUISize.h"
38 #include "CEGUIEventSet.h"
39 #include "CEGUIPropertySet.h"
40 #include "CEGUISystem.h"
41 #include "CEGUIInputEvent.h"
42 #include "CEGUIWindowProperties.h"
43 #include "CEGUIUDim.h"
44 #include "CEGUIWindowRenderer.h"
45 #include "CEGUITextUtils.h"
46 #include "CEGUIBasicRenderedStringParser.h"
47 #include "CEGUIDefaultRenderedStringParser.h"
48 #include <vector>
49 #include <set>
50 
51 
52 #if defined(_MSC_VER)
53 # pragma warning(push)
54 # pragma warning(disable : 4251)
55 #endif
56 
57 
58 // Start of CEGUI namespace section
59 namespace CEGUI
60 {
66 {
82 };
83 
89 {
105 };
106 
116 {
123 };
124 
138 class CEGUIEXPORT Window : public PropertySet, public EventSet
139 {
140 public:
141  /*************************************************************************
142  Event name constants
143  *************************************************************************/
145  static const String EventNamespace;
146 
147  // generated internally by Window
157  static const String EventParentSized;
162  static const String EventSized;
167  static const String EventMoved;
172  static const String EventTextChanged;
177  static const String EventFontChanged;
182  static const String EventAlphaChanged;
187  static const String EventIDChanged;
194  static const String EventActivated;
201  static const String EventDeactivated;
206  static const String EventShown;
211  static const String EventHidden;
216  static const String EventEnabled;
222  static const String EventDisabled;
281  static const String EventChildAdded;
286  static const String EventChildRemoved;
349  static const String EventRotated;
369 
370  // generated externally (inputs)
391  static const String EventMouseEnters;
402  static const String EventMouseLeaves;
407  static const String EventMouseMove;
413  static const String EventMouseWheel;
430  static const String EventMouseClick;
451  static const String EventKeyDown;
460  static const String EventKeyUp;
468  static const String EventCharacterKey;
469 
470  /*************************************************************************
471  Child Widget name suffix constants
472  *************************************************************************/
474  static const String TooltipNameSuffix;
477 
478 
489  Window(const String& type, const String& name);
490 
495  virtual ~Window(void);
496 
504  const String& getType(void) const;
505 
513  const String& getName(void) const {return d_name;}
514 
524  bool isDestroyedByParent(void) const {return d_destroyedByParent;}
525 
535  bool isAlwaysOnTop(void) const {return d_alwaysOnTop;}
536 
549  bool isDisabled(bool localOnly = false) const;
550 
567  bool isVisible(bool localOnly = false) const;
568 
583  bool isActive(void) const;
584 
594  bool isClippedByParent(void) const {return d_clippedByParent;}
595 
603  uint getID(void) const {return d_ID;}
604 
614  size_t getChildCount(void) const {return d_children.size();}
615 
628  bool isChild(const String& name) const;
629 
646  bool isChild(uint ID) const;
647 
668  bool isChildRecursive(uint ID) const;
669 
681  bool isChild(const Window* window) const;
682 
704  Window* getChild(const String& name) const;
705 
727  Window* getChild(uint ID) const;
728 
752  Window* getChildRecursive(const String& name) const;
753 
775  Window* getChildRecursive(uint ID) const;
776 
790  Window* getChildAtIdx(size_t idx) const {return d_children[idx];}
791 
804  Window* getActiveChild(void);
805  const Window* getActiveChild(void) const;
806 
820  bool isAncestor(const String& name) const;
821 
835  bool isAncestor(uint ID) const;
836 
849  bool isAncestor(const Window* window) const;
850 
864  Font* getFont(bool useDefault = true) const;
865 
873  const String& getText(void) const {return d_textLogical;}
874 
876  const String& getTextVisual() const;
877 
886  bool inheritsAlpha(void) const {return d_inheritsAlpha;}
887 
905  float getAlpha(void) const {return d_alpha;}
906 
916  float getEffectiveAlpha(void) const;
917 
923  Rect getUnclippedOuterRect() const;
924 
930  Rect getUnclippedInnerRect() const;
931 
943  Rect getUnclippedRect(const bool inner) const;
944 
957  Rect getOuterRectClipper() const;
958 
971  Rect getInnerRectClipper() const;
972 
991  Rect getClipRect(const bool non_client = false) const;
992 
1003  Rect getHitTestRect() const;
1004 
1024  Rect getChildWindowContentArea(const bool non_client = false) const;
1025 
1042  virtual Rect getUnclippedInnerRect_impl(void) const;
1043 
1052  static Window* getCaptureWindow(void) {return d_captureWindow;}
1053 
1062  bool isCapturedByThis(void) const {return getCaptureWindow() == this;}
1063 
1073  bool isCapturedByAncestor(void) const
1074  {return isAncestor(getCaptureWindow());}
1075 
1084  bool isCapturedByChild(void) const {return isChild(getCaptureWindow());}
1085 
1102  virtual bool isHit(const Vector2& position,
1103  const bool allow_disabled = false) const;
1104 
1117  Window* getChildAtPosition(const Vector2& position) const;
1118 
1136  Window* getTargetChildAtPosition(const Vector2& position,
1137  const bool allow_disabled = false) const;
1138 
1147  Window* getParent(void) const {return d_parent;}
1148 
1163  const Image* getMouseCursor(bool useDefault = true) const;
1164 
1172  Size getPixelSize(void) const { return d_pixelSize; }
1173 
1185  void* getUserData(void) const {return d_userData;}
1186 
1201  bool restoresOldCapture(void) const {return d_restoreOldCapture;}
1202 
1222  bool isZOrderingEnabled(void) const;
1223 
1234  bool wantsMultiClickEvents(void) const;
1235 
1247  bool isMouseAutoRepeatEnabled(void) const;
1248 
1257  float getAutoRepeatDelay(void) const;
1258 
1268  float getAutoRepeatRate(void) const;
1269 
1279  bool distributesCapturedInputs(void) const;
1280 
1290  bool isUsingDefaultTooltip(void) const;
1291 
1301  Tooltip* getTooltip(void) const;
1302 
1311  String getTooltipType(void) const;
1312 
1320  const String& getTooltipText(void) const;
1321 
1333  bool inheritsTooltipText(void) const;
1334 
1355  bool isRiseOnClickEnabled(void) const { return d_riseOnClick; }
1356 
1368  bool testClassName(const String& class_name) const
1369  {return testClassName_impl(class_name);}
1370 
1381  VerticalAlignment getVerticalAlignment() const {return d_vertAlign;}
1382 
1393  HorizontalAlignment getHorizontalAlignment() const {return d_horzAlign;}
1394 
1402  GeometryBuffer& getGeometryBuffer();
1403 
1412  const String& getLookNFeel() const;
1413 
1421  bool getModalState(void) const
1422  {return(System::getSingleton().getModalTarget() == this);}
1423 
1437  const String& getUserString(const String& name) const;
1438 
1450  bool isUserStringDefined(const String& name) const;
1451 
1467  Window* getActiveSibling();
1468 
1478  Size getParentPixelSize(void) const;
1479 
1489  float getParentPixelWidth(void) const;
1490 
1500  float getParentPixelHeight(void) const;
1501 
1512  bool isMousePassThroughEnabled(void) const {return d_mousePassThroughEnabled;}
1513 
1519  bool isAutoWindow(void) const {return d_autoWindow;}
1520 
1525  bool isWritingXMLAllowed(void) const {return d_allowWriteXML;}
1526 
1551  EventSet::Iterator getEventIterator() const;
1552 
1573  PropertySet::Iterator getPropertyIterator() const;
1574 
1584  bool isDragDropTarget() const;
1585 
1591  void getRenderingContext(RenderingContext& ctx) const;
1592 
1594  virtual void getRenderingContext_impl(RenderingContext& ctx) const;
1595 
1601  RenderingSurface* getRenderingSurface() const;
1602 
1608  RenderingSurface& getTargetRenderingSurface() const;
1609 
1621  bool isUsingAutoRenderingSurface() const;
1622 
1633  const Window* getRootWindow() const;
1634  Window* getRootWindow();
1635 
1637  const Vector3& getRotation() const;
1638 
1653  bool isNonClientWindow() const;
1654 
1665  void rename(const String& new_name);
1666 
1678  virtual void initialiseComponents(void) {}
1679 
1693  void setDestroyedByParent(bool setting);
1694 
1707  void setAlwaysOnTop(bool setting);
1708 
1721  void setEnabled(bool setting);
1722 
1730  void enable(void) {setEnabled(true);}
1731 
1739  void disable(void) {setEnabled(false);}
1740 
1758  void setVisible(bool setting);
1759 
1772  void show(void) {setVisible(true);}
1773 
1784  void hide(void) {setVisible(false);}
1785 
1794  void activate(void);
1795 
1805  void deactivate(void);
1806 
1819  void setClippedByParent(bool setting);
1820 
1832  void setID(uint ID);
1833 
1844  void setText(const String& text);
1845 
1859  void insertText(const String& text, const String::size_type position);
1860 
1870  void appendText(const String& text);
1871 
1883  void setFont(Font* font);
1884 
1899  void setFont(const String& name);
1900 
1919  void addChildWindow(const String& name);
1920 
1937  void addChildWindow(Window* window);
1938 
1950  void removeChildWindow(const String& name);
1951 
1963  void removeChildWindow(Window* window);
1964 
1978  void removeChildWindow(uint ID);
1979 
1993  void moveToFront();
1994 
2009  void moveToBack();
2010 
2024  void moveInFront(const Window* const window);
2025 
2040  void moveBehind(const Window* const window);
2041 
2051  bool captureInput(void);
2052 
2061  void releaseInput(void);
2062 
2081  void setRestoreCapture(bool setting);
2082 
2103  void setAlpha(float alpha);
2104 
2116  void setInheritsAlpha(bool setting);
2117 
2129  void invalidate(void);
2130 
2146  void invalidate(const bool recursive);
2147 
2159  void setMouseCursor(const Image* image) {d_mouseCursor = image;}
2160 
2171  void setMouseCursor(MouseCursorImage image)
2172  {d_mouseCursor = (const Image*)image;}
2173 
2193  void setMouseCursor(const String& imageset, const String& image_name);
2194 
2209  void setUserData(void* user_data) {d_userData = user_data;}
2210 
2233  void setZOrderingEnabled(bool setting);
2234 
2248  void setWantsMultiClickEvents(bool setting);
2249 
2262  void setMouseAutoRepeatEnabled(bool setting);
2263 
2275  void setAutoRepeatDelay(float delay);
2276 
2289  void setAutoRepeatRate(float rate);
2290 
2300  void setDistributesCapturedInputs(bool setting);
2301 
2307  void notifyDragDropItemEnters(DragContainer* item);
2308 
2314  void notifyDragDropItemLeaves(DragContainer* item);
2315 
2321  void notifyDragDropItemDropped(DragContainer* item);
2322 
2336  virtual void destroy(void);
2337 
2353  void setTooltip(Tooltip* tooltip);
2354 
2373  void setTooltipType(const String& tooltipType);
2374 
2386  void setTooltipText(const String& tip);
2387 
2402  void setInheritsTooltipText(bool setting);
2403 
2427  void setRiseOnClickEnabled(bool setting) { d_riseOnClick = setting; }
2428 
2442  void setVerticalAlignment(const VerticalAlignment alignment);
2443 
2457  void setHorizontalAlignment(const HorizontalAlignment alignment);
2458 
2475  virtual void setLookNFeel(const String& look);
2476 
2490  void setModalState(bool state);
2491 
2502  virtual void performChildWindowLayout();
2503 
2517  void setUserString(const String& name, const String& value);
2518 
2545  void setArea(const UDim& xpos, const UDim& ypos, const UDim& width, const UDim& height);
2546 
2568  void setArea(const UVector2& pos, const UVector2& size);
2569 
2587  void setArea(const URect& area);
2588 
2607  void setPosition(const UVector2& pos);
2608 
2626  void setXPosition(const UDim& x);
2627 
2645  void setYPosition(const UDim& y);
2646 
2661  void setSize(const UVector2& size);
2662 
2677  void setWidth(const UDim& width);
2678 
2693  void setHeight(const UDim& height);
2694 
2711  void setMaxSize(const UVector2& size);
2712 
2729  void setMinSize(const UVector2& size);
2730 
2748  const URect& getArea() const;
2749 
2767  const UVector2& getPosition() const;
2768 
2786  const UDim& getXPosition() const;
2787 
2805  const UDim& getYPosition() const;
2806 
2821  UVector2 getSize() const;
2822 
2837  UDim getWidth() const;
2838 
2853  UDim getHeight() const;
2854 
2871  const UVector2& getMaxSize() const;
2872 
2889  const UVector2& getMinSize() const;
2890 
2899  void render();
2900 
2919  virtual void update(float elapsed);
2920 
2931  virtual void writeXMLToStream(XMLSerializer& xml_stream) const;
2932 
2941  virtual void beginInitialisation(void) {d_initialising = true;}
2942 
2950  virtual void endInitialisation(void) {d_initialising = false;}
2951 
2962  void setMousePassThroughEnabled(bool setting) {d_mousePassThroughEnabled = setting;}
2963 
2975  void setWindowRenderer(const String& name);
2976 
2985  WindowRenderer* getWindowRenderer(void) const;
2986 
2996  String getWindowRendererName(void) const;
2997 
3002  void setWritingXMLAllowed(bool allow) {d_allowWriteXML = allow;}
3003 
3014  void notifyScreenAreaChanged(bool recursive = true);
3015 
3027  void setFalagardType(const String& type, const String& rendererType = "");
3028 
3038  void setDragDropTarget(bool setting);
3039 
3060  void setRenderingSurface(RenderingSurface* surface);
3061 
3068  void invalidateRenderingSurface();
3069 
3111  void setUsingAutoRenderingSurface(bool setting);
3112 
3114  void setRotation(const Vector3& rotation);
3115 
3130  void setNonClientWindow(const bool setting);
3131 
3133  const RenderedString& getRenderedString() const;
3135  RenderedStringParser* getCustomRenderedStringParser() const;
3137  void setCustomRenderedStringParser(RenderedStringParser* parser);
3139  virtual RenderedStringParser& getRenderedStringParser() const;
3141  bool isTextParsingEnabled() const;
3143  void setTextParsingEnabled(const bool setting);
3144 
3146  virtual void setMargin(const UBox& margin);
3148  const UBox& getMargin() const;
3149 
3151  Vector2 getUnprojectedPosition(const Vector2& pos) const;
3152 
3154  const BiDiVisualMapping* getBiDiVisualMapping() const
3155  {return d_bidiVisualMapping;}
3156 
3158  void banPropertyFromXML(const String& property_name);
3159 
3161  void unbanPropertyFromXML(const String& property_name);
3162 
3164  bool isPropertyBannedFromXML(const String& property_name) const;
3165 
3167  void banPropertyFromXML(const Property* property);
3168 
3170  void unbanPropertyFromXML(const Property* property);
3171 
3173  bool isPropertyBannedFromXML(const Property* property) const;
3174 
3192  void setUpdateMode(const WindowUpdateMode mode);
3193 
3211  WindowUpdateMode getUpdateMode() const;
3212 
3223  void setMouseInputPropagationEnabled(const bool enabled);
3224 
3235  bool isMouseInputPropagationEnabled() const;
3236 
3251  Window* clone(const String& newName, const bool deepCopy = true) const;
3252 
3254  virtual void clonePropertiesTo(Window& target) const;
3256  virtual void cloneChildWidgetsTo(Window& target) const;
3257 
3258 protected:
3259  // friend classes for construction / initialisation purposes (for now)
3260  friend class System;
3261  friend class WindowManager;
3262 
3263  /*************************************************************************
3264  Event trigger methods
3265  *************************************************************************/
3275  virtual void onSized(WindowEventArgs& e);
3276 
3286  virtual void onMoved(WindowEventArgs& e);
3287 
3297  virtual void onTextChanged(WindowEventArgs& e);
3298 
3308  virtual void onFontChanged(WindowEventArgs& e);
3309 
3319  virtual void onAlphaChanged(WindowEventArgs& e);
3320 
3330  virtual void onIDChanged(WindowEventArgs& e);
3331 
3341  virtual void onShown(WindowEventArgs& e);
3342 
3352  virtual void onHidden(WindowEventArgs& e);
3353 
3363  virtual void onEnabled(WindowEventArgs& e);
3364 
3374  virtual void onDisabled(WindowEventArgs& e);
3375 
3386  virtual void onClippingChanged(WindowEventArgs& e);
3387 
3398  virtual void onParentDestroyChanged(WindowEventArgs& e);
3399 
3410  virtual void onInheritsAlphaChanged(WindowEventArgs& e);
3411 
3421  virtual void onAlwaysOnTopChanged(WindowEventArgs& e);
3422 
3432  virtual void onCaptureGained(WindowEventArgs& e);
3433 
3443  virtual void onCaptureLost(WindowEventArgs& e);
3444 
3454  virtual void onRenderingStarted(WindowEventArgs& e);
3455 
3465  virtual void onRenderingEnded(WindowEventArgs& e);
3466 
3476  virtual void onZChanged(WindowEventArgs& e);
3477 
3487  virtual void onDestructionStarted(WindowEventArgs& e);
3488 
3497  virtual void onActivated(ActivationEventArgs& e);
3498 
3508  virtual void onDeactivated(ActivationEventArgs& e);
3509 
3521  virtual void onParentSized(WindowEventArgs& e);
3522 
3531  virtual void onChildAdded(WindowEventArgs& e);
3532 
3541  virtual void onChildRemoved(WindowEventArgs& e);
3542 
3550  virtual void onMouseEntersArea(MouseEventArgs& e);
3551 
3559  virtual void onMouseLeavesArea(MouseEventArgs& e);
3560 
3575  virtual void onMouseEnters(MouseEventArgs& e);
3576 
3591  virtual void onMouseLeaves(MouseEventArgs& e);
3592 
3601  virtual void onMouseMove(MouseEventArgs& e);
3602 
3611  virtual void onMouseWheel(MouseEventArgs& e);
3612 
3621  virtual void onMouseButtonDown(MouseEventArgs& e);
3622 
3631  virtual void onMouseButtonUp(MouseEventArgs& e);
3632 
3641  virtual void onMouseClicked(MouseEventArgs& e);
3642 
3651  virtual void onMouseDoubleClicked(MouseEventArgs& e);
3652 
3661  virtual void onMouseTripleClicked(MouseEventArgs& e);
3662 
3674  virtual void onKeyDown(KeyEventArgs& e);
3675 
3687  virtual void onKeyUp(KeyEventArgs& e);
3688 
3700  virtual void onCharacter(KeyEventArgs& e);
3701 
3712  virtual void onDragDropItemEnters(DragDropEventArgs& e);
3713 
3724  virtual void onDragDropItemLeaves(DragDropEventArgs& e);
3725 
3736  virtual void onDragDropItemDropped(DragDropEventArgs& e);
3737 
3748  virtual void onVerticalAlignmentChanged(WindowEventArgs& e);
3749 
3760  virtual void onHorizontalAlignmentChanged(WindowEventArgs& e);
3761 
3771  virtual void onWindowRendererAttached(WindowEventArgs& e);
3772 
3782  virtual void onWindowRendererDetached(WindowEventArgs& e);
3783 
3793  virtual void onRotated(WindowEventArgs& e);
3794 
3805  virtual void onNonClientChanged(WindowEventArgs& e);
3806 
3817  virtual void onTextParsingChanged(WindowEventArgs& e);
3818 
3819  virtual void onMarginChanged(WindowEventArgs& e);
3820 
3821  /*************************************************************************
3822  Implementation Functions
3823  *************************************************************************/
3835  virtual void updateSelf(float elapsed);
3836 
3848  virtual void drawSelf(const RenderingContext& ctx);
3849 
3860  void bufferGeometry(const RenderingContext& ctx);
3861 
3872  void queueGeometry(const RenderingContext& ctx);
3873 
3880  virtual void populateGeometryBuffer() {}
3881 
3893  virtual bool testClassName_impl(const String& class_name) const
3894  {
3895  if (class_name == "Window") return true;
3896  return false;
3897  }
3898 
3910  void setParent(Window* parent);
3911 
3912  Size getSize_impl(const Window* window) const;
3913 
3918  void generateAutoRepeatEvent(MouseButton button);
3919 
3928  virtual bool validateWindowRenderer(const String& name) const;
3929 
3936  bool isPropertyAtDefault(const Property* property) const;
3937 
3943  void notifyClippingChanged(void);
3944 
3946  void allocateRenderingWindow();
3947 
3949  void releaseRenderingWindow();
3950 
3952  void initialiseClippers(const RenderingContext& ctx);
3953 
3958  virtual void cleanupChildren(void);
3959 
3964  virtual void addChild_impl(Window* wnd);
3965 
3970  virtual void removeChild_impl(Window* wnd);
3971 
3976  virtual void onZChange_impl(void);
3977 
3982  void addStandardProperties(void);
3983 
3992  virtual bool moveToFront_impl(bool wasClicked);
3993 
4024  void setArea_impl(const UVector2& pos, const UVector2& size,
4025  bool topLeftSizing = false, bool fireEvents = true);
4026 
4046  void addWindowToDrawList(Window& wnd, bool at_back = false);
4047 
4059  void removeWindowFromDrawList(const Window& wnd);
4060 
4072  bool isTopOfZOrder() const;
4073 
4079  void updateGeometryRenderSettings();
4080 
4082  void transferChildSurfaces();
4083 
4085  Rect getParentElementClipIntersection(const Rect& unclipped_area) const;
4086 
4088  void invalidate_impl(const bool recursive);
4089 
4091  bool isInnerRectSizeChanged() const;
4092 
4094  virtual Rect getUnclippedOuterRect_impl() const;
4096  virtual Rect getOuterRectClipper_impl() const;
4098  virtual Rect getInnerRectClipper_impl() const;
4100  virtual Rect getHitTestRect_impl() const;
4102  virtual Rect getNonClientChildWindowContentArea_impl() const;
4104  virtual Rect getClientChildWindowContentArea_impl() const;
4105 
4106  virtual int writePropertiesXML(XMLSerializer& xml_stream) const;
4107  virtual int writeChildWindowsXML(XMLSerializer& xml_stream) const;
4108  virtual bool writeAutoChildWindowXML(XMLSerializer& xml_stream) const;
4109 
4110  // constrain given UVector2 to window's min size, return if size changed.
4111  bool constrainUVector2ToMinSize(const Size& base_sz, UVector2& sz);
4112  // constrain given UVector2 to window's max size, return if size changed.
4113  bool constrainUVector2ToMaxSize(const Size& base_sz, UVector2& sz);
4114 
4115  /*************************************************************************
4116  Properties for Window base class
4117  *************************************************************************/
4118  static WindowProperties::Alpha d_alphaProperty;
4119  static WindowProperties::AlwaysOnTop d_alwaysOnTopProperty;
4120  static WindowProperties::ClippedByParent d_clippedByParentProperty;
4121  static WindowProperties::DestroyedByParent d_destroyedByParentProperty;
4122  static WindowProperties::Disabled d_disabledProperty;
4123  static WindowProperties::Font d_fontProperty;
4124  static WindowProperties::ID d_IDProperty;
4125  static WindowProperties::InheritsAlpha d_inheritsAlphaProperty;
4126  static WindowProperties::MouseCursorImage d_mouseCursorProperty;
4127  static WindowProperties::RestoreOldCapture d_restoreOldCaptureProperty;
4128  static WindowProperties::Text d_textProperty;
4129  static WindowProperties::Visible d_visibleProperty;
4130  static WindowProperties::ZOrderChangeEnabled d_zOrderChangeProperty;
4131  static WindowProperties::WantsMultiClickEvents d_wantsMultiClicksProperty;
4132  static WindowProperties::MouseButtonDownAutoRepeat d_autoRepeatProperty;
4133  static WindowProperties::AutoRepeatDelay d_autoRepeatDelayProperty;
4134  static WindowProperties::AutoRepeatRate d_autoRepeatRateProperty;
4135  static WindowProperties::DistributeCapturedInputs d_distInputsProperty;
4136  static WindowProperties::CustomTooltipType d_tooltipTypeProperty;
4137  static WindowProperties::Tooltip d_tooltipProperty;
4138  static WindowProperties::InheritsTooltipText d_inheritsTooltipProperty;
4139  static WindowProperties::RiseOnClick d_riseOnClickProperty;
4140  static WindowProperties::VerticalAlignment d_vertAlignProperty;
4141  static WindowProperties::HorizontalAlignment d_horzAlignProperty;
4142  static WindowProperties::UnifiedAreaRect d_unifiedAreaRectProperty;
4143  static WindowProperties::UnifiedPosition d_unifiedPositionProperty;
4144  static WindowProperties::UnifiedXPosition d_unifiedXPositionProperty;
4145  static WindowProperties::UnifiedYPosition d_unifiedYPositionProperty;
4146  static WindowProperties::UnifiedSize d_unifiedSizeProperty;
4147  static WindowProperties::UnifiedWidth d_unifiedWidthProperty;
4148  static WindowProperties::UnifiedHeight d_unifiedHeightProperty;
4149  static WindowProperties::UnifiedMinSize d_unifiedMinSizeProperty;
4150  static WindowProperties::UnifiedMaxSize d_unifiedMaxSizeProperty;
4151  static WindowProperties::MousePassThroughEnabled d_mousePassThroughEnabledProperty;
4152  static WindowProperties::WindowRenderer d_windowRendererProperty;
4153  static WindowProperties::LookNFeel d_lookNFeelProperty;
4154  static WindowProperties::DragDropTarget d_dragDropTargetProperty;
4155  static WindowProperties::AutoRenderingSurface d_autoRenderingSurfaceProperty;
4156  static WindowProperties::Rotation d_rotationProperty;
4157  static WindowProperties::XRotation d_xRotationProperty;
4158  static WindowProperties::YRotation d_yRotationProperty;
4159  static WindowProperties::ZRotation d_zRotationProperty;
4160  static WindowProperties::NonClient d_nonClientProperty;
4161  static WindowProperties::TextParsingEnabled d_textParsingEnabledProperty;
4162  static WindowProperties::Margin d_marginProperty;
4163  static WindowProperties::UpdateMode d_updateModeProperty;
4164  static WindowProperties::MouseInputPropagationEnabled d_mouseInputPropagationProperty;
4165 
4166  /*************************************************************************
4167  Implementation Data
4168  *************************************************************************/
4170  typedef std::vector<Window*> ChildList;
4172  typedef std::map<String, String, String::FastLessCompare> UserStringMap;
4174  typedef std::set<String, String::FastLessCompare> BannedXMLPropertySet;
4175 
4184 
4194  bool d_active;
4195 
4204 
4209 
4219  mutable bool d_needsRedraw;
4222 
4225 
4227  float d_alpha;
4230 
4239 
4247  mutable bool d_bidiDataValid;
4260 
4263 
4265  uint d_ID;
4267  void* d_userData;
4270 
4277 
4294 
4297 
4306 
4311 
4326 
4337 
4338  mutable bool d_outerUnclippedRectValid;
4339  mutable bool d_innerUnclippedRectValid;
4340  mutable bool d_outerRectClipperValid;
4341  mutable bool d_innerRectClipperValid;
4342  mutable bool d_hitTestRectValid;
4343 
4348 
4349 
4350 private:
4351  /*************************************************************************
4352  May not copy or assign Window objects
4353  *************************************************************************/
4354  Window(const Window&) : PropertySet(), EventSet() {}
4355  Window& operator=(const Window&) {return *this;}
4356 };
4357 
4358 } // End of CEGUI namespace section
4359 
4360 
4361 #if defined(_MSC_VER)
4362 # pragma warning(pop)
4363 #endif
4364 
4365 #endif // end of guard _CEGUIWindow_h_
4366