Crazy Eddie's GUI System  0.8.0
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Pages
Window.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 - 2012 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 
31 #ifndef _CEGUIWindow_h_
32 #define _CEGUIWindow_h_
33 
34 #include "CEGUI/Base.h"
35 #include "CEGUI/NamedElement.h"
36 #include "CEGUI/Vector.h"
37 #include "CEGUI/Quaternion.h"
38 #include "CEGUI/Rect.h"
39 #include "CEGUI/Size.h"
40 #include "CEGUI/EventSet.h"
41 #include "CEGUI/PropertySet.h"
42 #include "CEGUI/TplWindowProperty.h"
43 #include "CEGUI/System.h"
44 #include "CEGUI/GUIContext.h"
45 #include "CEGUI/InputEvent.h"
46 #include "CEGUI/UDim.h"
47 #include "CEGUI/WindowRenderer.h"
48 #include "CEGUI/TextUtils.h"
49 #include "CEGUI/BasicRenderedStringParser.h"
50 #include "CEGUI/DefaultRenderedStringParser.h"
51 #include <vector>
52 #include <set>
53 
54 #if defined(_MSC_VER)
55 # pragma warning(push)
56 # pragma warning(disable : 4251)
57 #endif
58 
59 // Start of CEGUI namespace section
60 namespace CEGUI
61 {
62 
72 {
79 };
80 
81 template<>
83 {
84 public:
88  typedef String string_return_type;
89 
90  static const String& getDataTypeName()
91  {
92  static String type("WindowUpdateMode");
93 
94  return type;
95  }
96 
97  static return_type fromString(const String& str)
98  {
99 
100  if (str == "Always")
101  {
102  return WUM_ALWAYS;
103  }
104  else if (str == "Never")
105  {
106  return WUM_NEVER;
107  }
108  else
109  {
110  return WUM_VISIBLE;
111  }
112  }
113 
114  static string_return_type toString(pass_type val)
115  {
116  if (val == WUM_ALWAYS)
117  {
118  return "Always";
119  }
120  else if (val == WUM_NEVER)
121  {
122  return "Never";
123  }
124  else if (val == WUM_VISIBLE)
125  {
126  return "Visible";
127  }
128  else
129  {
130  assert(false && "Invalid Window Update Mode");
131  return "Always";
132  }
133  }
134 };
135 
136 
150 class CEGUIEXPORT Window :
151  public NamedElement
152 {
153 public:
154  /*************************************************************************
155  Event name constants
156  *************************************************************************/
158  static const String EventNamespace;
159 
160  // generated internally by Window
164  static const String EventUpdated;
165 
170  static const String EventTextChanged;
175  static const String EventFontChanged;
180  static const String EventAlphaChanged;
185  static const String EventIDChanged;
192  static const String EventActivated;
199  static const String EventDeactivated;
204  static const String EventShown;
209  static const String EventHidden;
214  static const String EventEnabled;
220  static const String EventDisabled;
268  static const String EventInvalidated;
338 
339  // generated externally (inputs)
376  static const String EventMouseMove;
382  static const String EventMouseWheel;
399  static const String EventMouseClick;
420  static const String EventKeyDown;
429  static const String EventKeyUp;
437  static const String EventCharacterKey;
438 
439  /*************************************************************************
440  Child Widget name suffix constants
441  *************************************************************************/
443  static const String TooltipNameSuffix;
444 
445  // XML element and attribute names that relate to Window.
446  static const String WindowXMLElementName;
447  static const String AutoWindowXMLElementName;
448  static const String UserStringXMLElementName;
449  static const String WindowTypeXMLAttributeName;
450  static const String WindowNameXMLAttributeName;
451  static const String AutoWindowNamePathXMLAttributeName;
452  static const String UserStringNameXMLAttributeName;
453  static const String UserStringValueXMLAttributeName;
454 
465  Window(const String& type, const String& name);
466 
471  virtual ~Window(void);
472 
480  const String& getType(void) const;
481 
491  bool isDestroyedByParent(void) const {return d_destroyedByParent;}
492 
502  bool isAlwaysOnTop(void) const {return d_alwaysOnTop;}
503 
516  bool isDisabled() const;
517 
530  bool isEffectiveDisabled() const;
531 
548  bool isVisible() const;
549 
566  bool isEffectiveVisible() const;
567 
582  bool isActive(void) const;
583 
593  bool isClippedByParent(void) const {return d_clippedByParent;}
594 
602  uint getID(void) const {return d_ID;}
603 
604  using NamedElement::isChild;
621  bool isChild(uint ID) const;
622 
643  bool isChildRecursive(uint ID) const;
644 
645  inline Window* getChildAtIdx(size_t idx) const
646  {
647  return static_cast<Window*>(getChildElementAtIdx(idx));
648  }
649 
673  inline Window* getChild(const String& name_path) const
674  {
675  return static_cast<Window*>(getChildElement(name_path));
676  }
677 
699  inline Window* getChildRecursive(const String& name) const
700  {
701  return static_cast<Window*>(getChildElementRecursive(name));
702  }
703 
725  Window* getChild(uint ID) const;
726 
748  Window* getChildRecursive(uint ID) const;
749 
762  Window* getActiveChild(void);
763  const Window* getActiveChild(void) const;
764 
779  bool isAncestor(uint ID) const;
780 
794  const Font* getFont(bool useDefault = true) const;
795 
803  const String& getText(void) const {return d_textLogical;}
804 
806  const String& getTextVisual() const;
807 
816  bool inheritsAlpha(void) const {return d_inheritsAlpha;}
817 
835  float getAlpha(void) const {return d_alpha;}
836 
846  float getEffectiveAlpha(void) const;
847 
860  const Rectf& getOuterRectClipper() const;
861 
874  const Rectf& getInnerRectClipper() const;
875 
894  const Rectf& getClipRect(const bool non_client = false) const;
895 
906  const Rectf& getHitTestRect() const;
907 
916  Window* getCaptureWindow() const
917  {return getGUIContext().getInputCaptureWindow();}
918 
927  bool isCapturedByThis(void) const {return getCaptureWindow() == this;}
928 
938  bool isCapturedByAncestor(void) const
939  {return isAncestor(getCaptureWindow());}
940 
949  bool isCapturedByChild(void) const {return isChild(getCaptureWindow());}
950 
967  virtual bool isHit(const Vector2f& position,
968  const bool allow_disabled = false) const;
969 
982  Window* getChildAtPosition(const Vector2f& position) const;
983 
1001  Window* getTargetChildAtPosition(const Vector2f& position,
1002  const bool allow_disabled = false) const;
1003 
1012  inline Window* getParent() const
1013  {
1014  return static_cast<Window*>(getParentElement());
1015  }
1016 
1031  const Image* getMouseCursor(bool useDefault = true) const;
1032 
1044  void* getUserData(void) const {return d_userData;}
1045 
1060  bool restoresOldCapture(void) const {return d_restoreOldCapture;}
1061 
1081  bool isZOrderingEnabled(void) const;
1082 
1093  bool wantsMultiClickEvents(void) const;
1094 
1106  bool isMouseAutoRepeatEnabled(void) const;
1107 
1116  float getAutoRepeatDelay(void) const;
1117 
1127  float getAutoRepeatRate(void) const;
1128 
1138  bool distributesCapturedInputs(void) const;
1139 
1149  bool isUsingDefaultTooltip(void) const;
1150 
1160  Tooltip* getTooltip(void) const;
1161 
1170  String getTooltipType(void) const;
1171 
1179  const String& getTooltipText(void) const;
1180 
1192  bool inheritsTooltipText(void) const;
1193 
1214  bool isRiseOnClickEnabled(void) const { return d_riseOnClick; }
1215 
1223  GeometryBuffer& getGeometryBuffer();
1224 
1233  const String& getLookNFeel() const;
1234 
1242  bool getModalState(void) const
1243  {return(getGUIContext().getModalWindow() == this);}
1244 
1258  const String& getUserString(const String& name) const;
1259 
1271  bool isUserStringDefined(const String& name) const;
1272 
1288  Window* getActiveSibling();
1289 
1300  bool isMousePassThroughEnabled(void) const {return d_mousePassThroughEnabled;}
1301 
1309  bool isAutoWindow(void) const {return d_autoWindow;}
1310 
1315  bool isWritingXMLAllowed(void) const {return d_allowWriteXML;}
1316 
1326  bool isDragDropTarget() const;
1327 
1333  void getRenderingContext(RenderingContext& ctx) const;
1334 
1336  virtual void getRenderingContext_impl(RenderingContext& ctx) const;
1337 
1343  RenderingSurface* getRenderingSurface() const;
1344 
1350  RenderingSurface& getTargetRenderingSurface() const;
1351 
1363  bool isUsingAutoRenderingSurface() const;
1364 
1375  const Window* getRootWindow() const;
1376  Window* getRootWindow();
1377 
1389  virtual void initialiseComponents(void) {}
1390 
1404  void setDestroyedByParent(bool setting);
1405 
1418  void setAlwaysOnTop(bool setting);
1419 
1432  void setEnabled(bool setting);
1433 
1446  void setDisabled(bool setting);
1447 
1455  void enable(void) {setEnabled(true);}
1456 
1464  void disable(void) {setEnabled(false);}
1465 
1483  void setVisible(bool setting);
1484 
1497  void show(void) {setVisible(true);}
1498 
1509  void hide(void) {setVisible(false);}
1510 
1519  void activate(void);
1520 
1530  void deactivate(void);
1531 
1544  void setClippedByParent(bool setting);
1545 
1557  void setID(uint ID);
1558 
1569  void setText(const String& text);
1570 
1584  void insertText(const String& text, const String::size_type position);
1585 
1595  void appendText(const String& text);
1596 
1608  void setFont(const Font* font);
1609 
1624  void setFont(const String& name);
1625 
1640  void removeChild(uint ID);
1641 
1657  Window* createChild(const String& type, const String& name = "");
1658 
1666  void destroyChild(Window* wnd);
1667 
1675  void destroyChild(const String& name_path);
1676 
1690  void moveToFront();
1691 
1706  void moveToBack();
1707 
1721  void moveInFront(const Window* const window);
1722 
1737  void moveBehind(const Window* const window);
1738 
1751  size_t getZIndex() const;
1752 
1762  bool isInFront(const Window& wnd) const;
1763 
1773  bool isBehind(const Window& wnd) const;
1774 
1784  bool captureInput(void);
1785 
1794  void releaseInput(void);
1795 
1814  void setRestoreOldCapture(bool setting);
1815 
1836  void setAlpha(const float alpha);
1837 
1849  void setInheritsAlpha(bool setting);
1850 
1862  void invalidate(void);
1863 
1879  void invalidate(const bool recursive);
1880 
1892  void setMouseCursor(const Image* image);
1893 
1911  void setMouseCursor(const String& name);
1912 
1927  void setUserData(void* user_data) {d_userData = user_data;}
1928 
1951  void setZOrderingEnabled(bool setting);
1952 
1966  void setWantsMultiClickEvents(bool setting);
1967 
1980  void setMouseAutoRepeatEnabled(bool setting);
1981 
1993  void setAutoRepeatDelay(float delay);
1994 
2007  void setAutoRepeatRate(float rate);
2008 
2018  void setDistributesCapturedInputs(bool setting);
2019 
2025  void notifyDragDropItemEnters(DragContainer* item);
2026 
2032  void notifyDragDropItemLeaves(DragContainer* item);
2033 
2039  void notifyDragDropItemDropped(DragContainer* item);
2040 
2054  virtual void destroy(void);
2055 
2071  void setTooltip(Tooltip* tooltip);
2072 
2091  void setTooltipType(const String& tooltipType);
2092 
2104  void setTooltipText(const String& tip);
2105 
2120  void setInheritsTooltipText(bool setting);
2121 
2145  void setRiseOnClickEnabled(bool setting) { d_riseOnClick = setting; }
2146 
2178  virtual void setLookNFeel(const String& look);
2179 
2193  void setModalState(bool state);
2194 
2224  virtual void performChildWindowLayout(bool nonclient_sized_hint = false,
2225  bool client_sized_hint = false);
2226 
2240  void setUserString(const String& name, const String& value);
2241 
2250  void render();
2251 
2270  virtual void update(float elapsed);
2271 
2282  virtual bool performCopy(Clipboard& clipboard);
2283 
2294  virtual bool performCut(Clipboard& clipboard);
2295 
2306  virtual bool performPaste(Clipboard& clipboard);
2307 
2318  virtual void writeXMLToStream(XMLSerializer& xml_stream) const;
2319 
2328  virtual void beginInitialisation(void) {d_initialising = true;}
2329 
2337  virtual void endInitialisation(void) {d_initialising = false;}
2338 
2349  void setMousePassThroughEnabled(bool setting) {d_mousePassThroughEnabled = setting;}
2350 
2365  void setWindowRenderer(const String& name);
2366 
2375  WindowRenderer* getWindowRenderer(void) const;
2376 
2386  const String& getWindowRendererName() const;
2387 
2392  void setWritingXMLAllowed(bool allow) {d_allowWriteXML = allow;}
2393 
2404  virtual void notifyScreenAreaChanged(bool recursive = true);
2405 
2417  void setFalagardType(const String& type, const String& rendererType = "");
2418 
2428  void setDragDropTarget(bool setting);
2429 
2450  void setRenderingSurface(RenderingSurface* surface);
2451 
2458  void invalidateRenderingSurface();
2459 
2501  void setUsingAutoRenderingSurface(bool setting);
2502 
2504  const RenderedString& getRenderedString() const;
2506  RenderedStringParser* getCustomRenderedStringParser() const;
2508  void setCustomRenderedStringParser(RenderedStringParser* parser);
2510  virtual RenderedStringParser& getRenderedStringParser() const;
2512  bool isTextParsingEnabled() const;
2514  void setTextParsingEnabled(const bool setting);
2515 
2517  virtual void setMargin(const UBox& margin);
2519  const UBox& getMargin() const;
2520 
2522  Vector2f getUnprojectedPosition(const Vector2f& pos) const;
2523 
2525  const BidiVisualMapping* getBidiVisualMapping() const
2526  {return d_bidiVisualMapping;}
2527 
2539  void banPropertyFromXML(const String& property_name);
2540 
2542  void unbanPropertyFromXML(const String& property_name);
2543 
2552  bool isPropertyBannedFromXML(const String& property_name) const;
2553 
2555  void banPropertyFromXML(const Property* property);
2556 
2558  void unbanPropertyFromXML(const Property* property);
2559 
2568  bool isPropertyBannedFromXML(const Property* property) const;
2569 
2587  void setUpdateMode(const WindowUpdateMode mode);
2588 
2606  WindowUpdateMode getUpdateMode() const;
2607 
2618  void setMouseInputPropagationEnabled(const bool enabled);
2619 
2630  bool isMouseInputPropagationEnabled() const;
2631 
2642  Window* clone(const bool deepCopy = true) const;
2643 
2645  virtual void clonePropertiesTo(Window& target) const;
2647  virtual void cloneChildWidgetsTo(Window& target) const;
2648 
2650  GUIContext& getGUIContext() const;
2652  void setGUIContext(GUIContext* context);
2653 
2655  void syncTargetSurface();
2656 
2664  void setAutoWindow(bool is_auto);
2665 
2676  bool isMouseContainedInArea() const;
2677 
2678  // overridden from Element
2679  const Sizef& getRootContainerSize() const;
2680 
2681 protected:
2682  // friend classes for construction / initialisation purposes (for now)
2683  friend class System;
2684  friend class WindowManager;
2685  friend class GUIContext;
2686 
2687  /*************************************************************************
2688  Event trigger methods
2689  *************************************************************************/
2699  virtual void onSized(ElementEventArgs& e);
2700 
2710  virtual void onMoved(ElementEventArgs& e);
2711 
2712  virtual void onRotated(ElementEventArgs& e);
2713 
2723  virtual void onTextChanged(WindowEventArgs& e);
2724 
2734  virtual void onFontChanged(WindowEventArgs& e);
2735 
2745  virtual void onAlphaChanged(WindowEventArgs& e);
2746 
2756  virtual void onIDChanged(WindowEventArgs& e);
2757 
2767  virtual void onShown(WindowEventArgs& e);
2768 
2778  virtual void onHidden(WindowEventArgs& e);
2779 
2789  virtual void onEnabled(WindowEventArgs& e);
2790 
2800  virtual void onDisabled(WindowEventArgs& e);
2801 
2812  virtual void onClippingChanged(WindowEventArgs& e);
2813 
2824  virtual void onParentDestroyChanged(WindowEventArgs& e);
2825 
2836  virtual void onInheritsAlphaChanged(WindowEventArgs& e);
2837 
2847  virtual void onAlwaysOnTopChanged(WindowEventArgs& e);
2848 
2858  virtual void onCaptureGained(WindowEventArgs& e);
2859 
2869  virtual void onCaptureLost(WindowEventArgs& e);
2870 
2880  virtual void onInvalidated(WindowEventArgs& e);
2881 
2891  virtual void onRenderingStarted(WindowEventArgs& e);
2892 
2902  virtual void onRenderingEnded(WindowEventArgs& e);
2903 
2913  virtual void onZChanged(WindowEventArgs& e);
2914 
2924  virtual void onDestructionStarted(WindowEventArgs& e);
2925 
2934  virtual void onActivated(ActivationEventArgs& e);
2935 
2945  virtual void onDeactivated(ActivationEventArgs& e);
2946 
2958  virtual void onParentSized(ElementEventArgs& e);
2959 
2968  virtual void onChildAdded(ElementEventArgs& e);
2969 
2978  virtual void onChildRemoved(ElementEventArgs& e);
2979 
2987  virtual void onMouseEntersArea(MouseEventArgs& e);
2988 
2996  virtual void onMouseLeavesArea(MouseEventArgs& e);
2997 
3012  virtual void onMouseEnters(MouseEventArgs& e);
3013 
3028  virtual void onMouseLeaves(MouseEventArgs& e);
3029 
3038  virtual void onMouseMove(MouseEventArgs& e);
3039 
3048  virtual void onMouseWheel(MouseEventArgs& e);
3049 
3058  virtual void onMouseButtonDown(MouseEventArgs& e);
3059 
3068  virtual void onMouseButtonUp(MouseEventArgs& e);
3069 
3078  virtual void onMouseClicked(MouseEventArgs& e);
3079 
3088  virtual void onMouseDoubleClicked(MouseEventArgs& e);
3089 
3098  virtual void onMouseTripleClicked(MouseEventArgs& e);
3099 
3111  virtual void onKeyDown(KeyEventArgs& e);
3112 
3124  virtual void onKeyUp(KeyEventArgs& e);
3125 
3137  virtual void onCharacter(KeyEventArgs& e);
3138 
3149  virtual void onDragDropItemEnters(DragDropEventArgs& e);
3150 
3161  virtual void onDragDropItemLeaves(DragDropEventArgs& e);
3162 
3173  virtual void onDragDropItemDropped(DragDropEventArgs& e);
3174 
3184  virtual void onWindowRendererAttached(WindowEventArgs& e);
3185 
3195  virtual void onWindowRendererDetached(WindowEventArgs& e);
3196 
3207  virtual void onTextParsingChanged(WindowEventArgs& e);
3208 
3209  virtual void onMarginChanged(WindowEventArgs& e);
3210 
3211  /*************************************************************************
3212  Implementation Functions
3213  *************************************************************************/
3225  virtual void updateSelf(float elapsed);
3226 
3238  virtual void drawSelf(const RenderingContext& ctx);
3239 
3250  void bufferGeometry(const RenderingContext& ctx);
3251 
3262  void queueGeometry(const RenderingContext& ctx);
3263 
3270  virtual void populateGeometryBuffer() {}
3271 
3283  virtual void setParent(Element* parent);
3284 
3289  void generateAutoRepeatEvent(MouseButton button);
3290 
3302  virtual bool validateWindowRenderer(const WindowRenderer* renderer) const;
3303 
3310  bool isPropertyAtDefault(const Property* property) const;
3311 
3317  void notifyClippingChanged(void);
3318 
3320  void allocateRenderingWindow();
3321 
3323  void releaseRenderingWindow();
3324 
3326  void initialiseClippers(const RenderingContext& ctx);
3327 
3329  virtual void setArea_impl(const UVector2& pos, const USize& size, bool topLeftSizing = false, bool fireEvents = true);
3330 
3335  virtual void cleanupChildren(void);
3336 
3340  virtual void addChild_impl(Element* element);
3341 
3345  virtual void removeChild_impl(Element* element);
3346 
3351  virtual void onZChange_impl(void);
3352 
3357  void addWindowProperties(void);
3358 
3367  virtual bool moveToFront_impl(bool wasClicked);
3368 
3388  void addWindowToDrawList(Window& wnd, bool at_back = false);
3389 
3401  void removeWindowFromDrawList(const Window& wnd);
3402 
3414  bool isTopOfZOrder() const;
3415 
3421  void updateGeometryRenderSettings();
3422 
3424  void transferChildSurfaces();
3425 
3427  Rectf getParentElementClipIntersection(const Rectf& unclipped_area) const;
3428 
3430  void invalidate_impl(const bool recursive);
3431 
3438  const Window* getWindowAttachedToCommonAncestor(const Window& wnd) const;
3439 
3440  virtual Rectf getUnclippedInnerRect_impl(bool skipAllPixelAlignment) const;
3442  virtual Rectf getOuterRectClipper_impl() const;
3444  virtual Rectf getInnerRectClipper_impl() const;
3446  virtual Rectf getHitTestRect_impl() const;
3447 
3448  virtual int writePropertiesXML(XMLSerializer& xml_stream) const;
3449  virtual int writeChildWindowsXML(XMLSerializer& xml_stream) const;
3450  virtual bool writeAutoChildWindowXML(XMLSerializer& xml_stream) const;
3451 
3452  virtual void banPropertiesForAutoWindow();
3453 
3455  virtual bool handleFontRenderSizeChange(const EventArgs& args);
3456 
3457  // mark the rect caches defined on Window invalid (does not affect Element)
3458  void markCachedWindowRectsInvalid();
3459  void layoutLookNFeelChildWidgets();
3460 
3461  Window* getChildAtPosition(const Vector2f& position,
3462  bool (Window::*hittestfunc)(const Vector2f&, bool) const,
3463  bool allow_disabled = false) const;
3464 
3465  bool isHitTargetWindow(const Vector2f& position, bool allow_disabled) const;
3466 
3467  /*************************************************************************
3468  Properties for Window base class
3469  *************************************************************************/
3470 
3482  static
3483  class WindowRendererProperty : public TplWindowProperty<Window, String>
3484  {
3485  public:
3487  void writeXMLToStream(const PropertyReceiver* receiver,
3488  XMLSerializer& xml_stream) const;
3489  } d_windowRendererProperty;
3490 
3502  static
3503  class LookNFeelProperty : public TplWindowProperty<Window, String>
3504  {
3505  public:
3507  void writeXMLToStream(const PropertyReceiver* receiver,
3508  XMLSerializer& xml_stream) const;
3509  } d_lookNFeelProperty;
3510 
3511  /*************************************************************************
3512  Implementation Data
3513  *************************************************************************/
3515  typedef std::vector<Window*
3516  CEGUI_VECTOR_ALLOC(Window*)> ChildDrawList;
3518  typedef std::map<String, String, StringFastLessCompare
3519  CEGUI_MAP_ALLOC(String, String)> UserStringMap;
3521  typedef std::set<String, StringFastLessCompare
3522  CEGUI_SET_ALLOC(String)> BannedXMLPropertySet;
3523 
3530 
3540  bool d_active;
3541 
3546 
3549 
3559  mutable bool d_needsRedraw;
3562 
3565 
3567  float d_alpha;
3570 
3577 
3579  const Font* d_font;
3585  mutable bool d_bidiDataValid;
3598 
3601 
3603  uint d_ID;
3605  void* d_userData;
3608 
3615 
3632 
3635 
3644 
3649 
3656 
3657  mutable bool d_outerRectClipperValid;
3658  mutable bool d_innerRectClipperValid;
3659  mutable bool d_hitTestRectValid;
3660 
3663 
3666 
3669 
3672 
3673 private:
3674  /*************************************************************************
3675  May not copy or assign Window objects
3676  *************************************************************************/
3677  Window(const Window&): NamedElement() {}
3678  Window& operator=(const Window&) {return *this;}
3679 
3681  const Font* property_getFont() const;
3683  const Image* property_getMouseCursor() const;
3684 
3686  Event::ScopedConnection d_fontRenderSizeChangeConnection;
3687 };
3688 
3689 } // End of CEGUI namespace section
3690 
3691 
3692 #if defined(_MSC_VER)
3693 # pragma warning(pop)
3694 #endif
3695 
3696 #endif // end of guard _CEGUIWindow_h_
3697