Crazy Eddie's GUI System  0.8.1
 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 
660  inline Window* getChildAtIdx(size_t idx) const
661  {
662  return static_cast<Window*>(getChildElementAtIdx(idx));
663  }
664 
688  inline Window* getChild(const String& name_path) const
689  {
690  return static_cast<Window*>(getChildElement(name_path));
691  }
692 
714  inline Window* getChildRecursive(const String& name) const
715  {
716  return static_cast<Window*>(getChildElementRecursive(name));
717  }
718 
740  Window* getChild(uint ID) const;
741 
763  Window* getChildRecursive(uint ID) const;
764 
777  Window* getActiveChild(void);
778  const Window* getActiveChild(void) const;
779 
794  bool isAncestor(uint ID) const;
795 
809  const Font* getFont(bool useDefault = true) const;
810 
818  const String& getText(void) const {return d_textLogical;}
819 
821  const String& getTextVisual() const;
822 
831  bool inheritsAlpha(void) const {return d_inheritsAlpha;}
832 
850  float getAlpha(void) const {return d_alpha;}
851 
861  float getEffectiveAlpha(void) const;
862 
875  const Rectf& getOuterRectClipper() const;
876 
889  const Rectf& getInnerRectClipper() const;
890 
909  const Rectf& getClipRect(const bool non_client = false) const;
910 
921  const Rectf& getHitTestRect() const;
922 
931  Window* getCaptureWindow() const
932  {return getGUIContext().getInputCaptureWindow();}
933 
942  bool isCapturedByThis(void) const {return getCaptureWindow() == this;}
943 
953  bool isCapturedByAncestor(void) const
954  {return isAncestor(getCaptureWindow());}
955 
964  bool isCapturedByChild(void) const {return isChild(getCaptureWindow());}
965 
982  virtual bool isHit(const Vector2f& position,
983  const bool allow_disabled = false) const;
984 
997  Window* getChildAtPosition(const Vector2f& position) const;
998 
1016  Window* getTargetChildAtPosition(const Vector2f& position,
1017  const bool allow_disabled = false) const;
1018 
1027  inline Window* getParent() const
1028  {
1029  return static_cast<Window*>(getParentElement());
1030  }
1031 
1046  const Image* getMouseCursor(bool useDefault = true) const;
1047 
1059  void* getUserData(void) const {return d_userData;}
1060 
1075  bool restoresOldCapture(void) const {return d_restoreOldCapture;}
1076 
1096  bool isZOrderingEnabled(void) const;
1097 
1108  bool wantsMultiClickEvents(void) const;
1109 
1121  bool isMouseAutoRepeatEnabled(void) const;
1122 
1131  float getAutoRepeatDelay(void) const;
1132 
1142  float getAutoRepeatRate(void) const;
1143 
1153  bool distributesCapturedInputs(void) const;
1154 
1164  bool isUsingDefaultTooltip(void) const;
1165 
1175  Tooltip* getTooltip(void) const;
1176 
1185  String getTooltipType(void) const;
1186 
1194  const String& getTooltipText(void) const;
1195 
1207  bool inheritsTooltipText(void) const;
1208 
1229  bool isRiseOnClickEnabled(void) const { return d_riseOnClick; }
1230 
1238  GeometryBuffer& getGeometryBuffer();
1239 
1248  const String& getLookNFeel() const;
1249 
1257  bool getModalState(void) const
1258  {return(getGUIContext().getModalWindow() == this);}
1259 
1273  const String& getUserString(const String& name) const;
1274 
1286  bool isUserStringDefined(const String& name) const;
1287 
1303  Window* getActiveSibling();
1304 
1315  bool isMousePassThroughEnabled(void) const {return d_mousePassThroughEnabled;}
1316 
1324  bool isAutoWindow(void) const {return d_autoWindow;}
1325 
1330  bool isWritingXMLAllowed(void) const {return d_allowWriteXML;}
1331 
1341  bool isDragDropTarget() const;
1342 
1348  void getRenderingContext(RenderingContext& ctx) const;
1349 
1351  virtual void getRenderingContext_impl(RenderingContext& ctx) const;
1352 
1358  RenderingSurface* getRenderingSurface() const;
1359 
1365  RenderingSurface& getTargetRenderingSurface() const;
1366 
1378  bool isUsingAutoRenderingSurface() const;
1379 
1390  const Window* getRootWindow() const;
1391  Window* getRootWindow();
1392 
1404  virtual void initialiseComponents(void) {}
1405 
1419  void setDestroyedByParent(bool setting);
1420 
1433  void setAlwaysOnTop(bool setting);
1434 
1447  void setEnabled(bool setting);
1448 
1461  void setDisabled(bool setting);
1462 
1470  void enable(void) {setEnabled(true);}
1471 
1479  void disable(void) {setEnabled(false);}
1480 
1498  void setVisible(bool setting);
1499 
1512  void show(void) {setVisible(true);}
1513 
1524  void hide(void) {setVisible(false);}
1525 
1534  void activate(void);
1535 
1545  void deactivate(void);
1546 
1559  void setClippedByParent(bool setting);
1560 
1572  void setID(uint ID);
1573 
1584  void setText(const String& text);
1585 
1599  void insertText(const String& text, const String::size_type position);
1600 
1610  void appendText(const String& text);
1611 
1623  void setFont(const Font* font);
1624 
1639  void setFont(const String& name);
1640 
1655  void removeChild(uint ID);
1656 
1672  Window* createChild(const String& type, const String& name = "");
1673 
1681  void destroyChild(Window* wnd);
1682 
1690  void destroyChild(const String& name_path);
1691 
1705  void moveToFront();
1706 
1721  void moveToBack();
1722 
1736  void moveInFront(const Window* const window);
1737 
1752  void moveBehind(const Window* const window);
1753 
1766  size_t getZIndex() const;
1767 
1777  bool isInFront(const Window& wnd) const;
1778 
1788  bool isBehind(const Window& wnd) const;
1789 
1799  bool captureInput(void);
1800 
1809  void releaseInput(void);
1810 
1829  void setRestoreOldCapture(bool setting);
1830 
1851  void setAlpha(const float alpha);
1852 
1864  void setInheritsAlpha(bool setting);
1865 
1877  void invalidate(void);
1878 
1894  void invalidate(const bool recursive);
1895 
1907  void setMouseCursor(const Image* image);
1908 
1926  void setMouseCursor(const String& name);
1927 
1942  void setUserData(void* user_data) {d_userData = user_data;}
1943 
1966  void setZOrderingEnabled(bool setting);
1967 
1981  void setWantsMultiClickEvents(bool setting);
1982 
1995  void setMouseAutoRepeatEnabled(bool setting);
1996 
2008  void setAutoRepeatDelay(float delay);
2009 
2022  void setAutoRepeatRate(float rate);
2023 
2033  void setDistributesCapturedInputs(bool setting);
2034 
2040  void notifyDragDropItemEnters(DragContainer* item);
2041 
2047  void notifyDragDropItemLeaves(DragContainer* item);
2048 
2054  void notifyDragDropItemDropped(DragContainer* item);
2055 
2069  virtual void destroy(void);
2070 
2086  void setTooltip(Tooltip* tooltip);
2087 
2106  void setTooltipType(const String& tooltipType);
2107 
2119  void setTooltipText(const String& tip);
2120 
2135  void setInheritsTooltipText(bool setting);
2136 
2160  void setRiseOnClickEnabled(bool setting) { d_riseOnClick = setting; }
2161 
2193  virtual void setLookNFeel(const String& look);
2194 
2208  void setModalState(bool state);
2209 
2239  virtual void performChildWindowLayout(bool nonclient_sized_hint = false,
2240  bool client_sized_hint = false);
2241 
2255  void setUserString(const String& name, const String& value);
2256 
2265  void render();
2266 
2285  virtual void update(float elapsed);
2286 
2297  virtual bool performCopy(Clipboard& clipboard);
2298 
2309  virtual bool performCut(Clipboard& clipboard);
2310 
2321  virtual bool performPaste(Clipboard& clipboard);
2322 
2333  virtual void writeXMLToStream(XMLSerializer& xml_stream) const;
2334 
2343  virtual void beginInitialisation(void) {d_initialising = true;}
2344 
2352  virtual void endInitialisation(void) {d_initialising = false;}
2353 
2364  void setMousePassThroughEnabled(bool setting) {d_mousePassThroughEnabled = setting;}
2365 
2380  void setWindowRenderer(const String& name);
2381 
2390  WindowRenderer* getWindowRenderer(void) const;
2391 
2401  const String& getWindowRendererName() const;
2402 
2407  void setWritingXMLAllowed(bool allow) {d_allowWriteXML = allow;}
2408 
2419  virtual void notifyScreenAreaChanged(bool recursive = true);
2420 
2432  void setFalagardType(const String& type, const String& rendererType = "");
2433 
2443  void setDragDropTarget(bool setting);
2444 
2465  void setRenderingSurface(RenderingSurface* surface);
2466 
2473  void invalidateRenderingSurface();
2474 
2516  void setUsingAutoRenderingSurface(bool setting);
2517 
2519  const RenderedString& getRenderedString() const;
2521  RenderedStringParser* getCustomRenderedStringParser() const;
2523  void setCustomRenderedStringParser(RenderedStringParser* parser);
2525  virtual RenderedStringParser& getRenderedStringParser() const;
2527  bool isTextParsingEnabled() const;
2529  void setTextParsingEnabled(const bool setting);
2530 
2532  virtual void setMargin(const UBox& margin);
2534  const UBox& getMargin() const;
2535 
2537  Vector2f getUnprojectedPosition(const Vector2f& pos) const;
2538 
2540  const BidiVisualMapping* getBidiVisualMapping() const
2541  {return d_bidiVisualMapping;}
2542 
2554  void banPropertyFromXML(const String& property_name);
2555 
2557  void unbanPropertyFromXML(const String& property_name);
2558 
2567  bool isPropertyBannedFromXML(const String& property_name) const;
2568 
2570  void banPropertyFromXML(const Property* property);
2571 
2573  void unbanPropertyFromXML(const Property* property);
2574 
2583  bool isPropertyBannedFromXML(const Property* property) const;
2584 
2602  void setUpdateMode(const WindowUpdateMode mode);
2603 
2621  WindowUpdateMode getUpdateMode() const;
2622 
2633  void setMouseInputPropagationEnabled(const bool enabled);
2634 
2645  bool isMouseInputPropagationEnabled() const;
2646 
2657  Window* clone(const bool deepCopy = true) const;
2658 
2660  virtual void clonePropertiesTo(Window& target) const;
2662  virtual void cloneChildWidgetsTo(Window& target) const;
2663 
2665  GUIContext& getGUIContext() const;
2667  void setGUIContext(GUIContext* context);
2668 
2670  void syncTargetSurface();
2671 
2679  void setAutoWindow(bool is_auto);
2680 
2691  bool isMouseContainedInArea() const;
2692 
2693  // overridden from Element
2694  const Sizef& getRootContainerSize() const;
2695 
2696 protected:
2697  // friend classes for construction / initialisation purposes (for now)
2698  friend class System;
2699  friend class WindowManager;
2700  friend class GUIContext;
2701 
2702  /*************************************************************************
2703  Event trigger methods
2704  *************************************************************************/
2714  virtual void onSized(ElementEventArgs& e);
2715 
2725  virtual void onMoved(ElementEventArgs& e);
2726 
2727  virtual void onRotated(ElementEventArgs& e);
2728 
2738  virtual void onTextChanged(WindowEventArgs& e);
2739 
2749  virtual void onFontChanged(WindowEventArgs& e);
2750 
2760  virtual void onAlphaChanged(WindowEventArgs& e);
2761 
2771  virtual void onIDChanged(WindowEventArgs& e);
2772 
2782  virtual void onShown(WindowEventArgs& e);
2783 
2793  virtual void onHidden(WindowEventArgs& e);
2794 
2804  virtual void onEnabled(WindowEventArgs& e);
2805 
2815  virtual void onDisabled(WindowEventArgs& e);
2816 
2827  virtual void onClippingChanged(WindowEventArgs& e);
2828 
2839  virtual void onParentDestroyChanged(WindowEventArgs& e);
2840 
2851  virtual void onInheritsAlphaChanged(WindowEventArgs& e);
2852 
2862  virtual void onAlwaysOnTopChanged(WindowEventArgs& e);
2863 
2873  virtual void onCaptureGained(WindowEventArgs& e);
2874 
2884  virtual void onCaptureLost(WindowEventArgs& e);
2885 
2895  virtual void onInvalidated(WindowEventArgs& e);
2896 
2906  virtual void onRenderingStarted(WindowEventArgs& e);
2907 
2917  virtual void onRenderingEnded(WindowEventArgs& e);
2918 
2928  virtual void onZChanged(WindowEventArgs& e);
2929 
2939  virtual void onDestructionStarted(WindowEventArgs& e);
2940 
2949  virtual void onActivated(ActivationEventArgs& e);
2950 
2960  virtual void onDeactivated(ActivationEventArgs& e);
2961 
2973  virtual void onParentSized(ElementEventArgs& e);
2974 
2983  virtual void onChildAdded(ElementEventArgs& e);
2984 
2993  virtual void onChildRemoved(ElementEventArgs& e);
2994 
3002  virtual void onMouseEntersArea(MouseEventArgs& e);
3003 
3011  virtual void onMouseLeavesArea(MouseEventArgs& e);
3012 
3027  virtual void onMouseEnters(MouseEventArgs& e);
3028 
3043  virtual void onMouseLeaves(MouseEventArgs& e);
3044 
3053  virtual void onMouseMove(MouseEventArgs& e);
3054 
3063  virtual void onMouseWheel(MouseEventArgs& e);
3064 
3073  virtual void onMouseButtonDown(MouseEventArgs& e);
3074 
3083  virtual void onMouseButtonUp(MouseEventArgs& e);
3084 
3093  virtual void onMouseClicked(MouseEventArgs& e);
3094 
3103  virtual void onMouseDoubleClicked(MouseEventArgs& e);
3104 
3113  virtual void onMouseTripleClicked(MouseEventArgs& e);
3114 
3126  virtual void onKeyDown(KeyEventArgs& e);
3127 
3139  virtual void onKeyUp(KeyEventArgs& e);
3140 
3152  virtual void onCharacter(KeyEventArgs& e);
3153 
3164  virtual void onDragDropItemEnters(DragDropEventArgs& e);
3165 
3176  virtual void onDragDropItemLeaves(DragDropEventArgs& e);
3177 
3188  virtual void onDragDropItemDropped(DragDropEventArgs& e);
3189 
3199  virtual void onWindowRendererAttached(WindowEventArgs& e);
3200 
3210  virtual void onWindowRendererDetached(WindowEventArgs& e);
3211 
3222  virtual void onTextParsingChanged(WindowEventArgs& e);
3223 
3224  virtual void onMarginChanged(WindowEventArgs& e);
3225 
3226  /*************************************************************************
3227  Implementation Functions
3228  *************************************************************************/
3240  virtual void updateSelf(float elapsed);
3241 
3253  virtual void drawSelf(const RenderingContext& ctx);
3254 
3265  void bufferGeometry(const RenderingContext& ctx);
3266 
3277  void queueGeometry(const RenderingContext& ctx);
3278 
3285  virtual void populateGeometryBuffer() {}
3286 
3298  virtual void setParent(Element* parent);
3299 
3304  void generateAutoRepeatEvent(MouseButton button);
3305 
3317  virtual bool validateWindowRenderer(const WindowRenderer* renderer) const;
3318 
3325  bool isPropertyAtDefault(const Property* property) const;
3326 
3332  void notifyClippingChanged(void);
3333 
3335  void allocateRenderingWindow();
3336 
3338  void releaseRenderingWindow();
3339 
3341  void initialiseClippers(const RenderingContext& ctx);
3342 
3344  virtual void setArea_impl(const UVector2& pos, const USize& size, bool topLeftSizing = false, bool fireEvents = true);
3345 
3350  virtual void cleanupChildren(void);
3351 
3355  virtual void addChild_impl(Element* element);
3356 
3360  virtual void removeChild_impl(Element* element);
3361 
3366  virtual void onZChange_impl(void);
3367 
3372  void addWindowProperties(void);
3373 
3382  virtual bool moveToFront_impl(bool wasClicked);
3383 
3403  void addWindowToDrawList(Window& wnd, bool at_back = false);
3404 
3416  void removeWindowFromDrawList(const Window& wnd);
3417 
3429  bool isTopOfZOrder() const;
3430 
3436  void updateGeometryRenderSettings();
3437 
3439  void transferChildSurfaces();
3440 
3442  Rectf getParentElementClipIntersection(const Rectf& unclipped_area) const;
3443 
3445  void invalidate_impl(const bool recursive);
3446 
3453  const Window* getWindowAttachedToCommonAncestor(const Window& wnd) const;
3454 
3455  virtual Rectf getUnclippedInnerRect_impl(bool skipAllPixelAlignment) const;
3457  virtual Rectf getOuterRectClipper_impl() const;
3459  virtual Rectf getInnerRectClipper_impl() const;
3461  virtual Rectf getHitTestRect_impl() const;
3462 
3463  virtual int writePropertiesXML(XMLSerializer& xml_stream) const;
3464  virtual int writeChildWindowsXML(XMLSerializer& xml_stream) const;
3465  virtual bool writeAutoChildWindowXML(XMLSerializer& xml_stream) const;
3466 
3467  virtual void banPropertiesForAutoWindow();
3468 
3470  virtual bool handleFontRenderSizeChange(const EventArgs& args);
3471 
3472  // mark the rect caches defined on Window invalid (does not affect Element)
3473  void markCachedWindowRectsInvalid();
3474  void layoutLookNFeelChildWidgets();
3475 
3476  Window* getChildAtPosition(const Vector2f& position,
3477  bool (Window::*hittestfunc)(const Vector2f&, bool) const,
3478  bool allow_disabled = false) const;
3479 
3480  bool isHitTargetWindow(const Vector2f& position, bool allow_disabled) const;
3481 
3482  /*************************************************************************
3483  Properties for Window base class
3484  *************************************************************************/
3485 
3497  static
3498  class WindowRendererProperty : public TplWindowProperty<Window, String>
3499  {
3500  public:
3502  void writeXMLToStream(const PropertyReceiver* receiver,
3503  XMLSerializer& xml_stream) const;
3504  } d_windowRendererProperty;
3505 
3517  static
3518  class LookNFeelProperty : public TplWindowProperty<Window, String>
3519  {
3520  public:
3522  void writeXMLToStream(const PropertyReceiver* receiver,
3523  XMLSerializer& xml_stream) const;
3524  } d_lookNFeelProperty;
3525 
3526  /*************************************************************************
3527  Implementation Data
3528  *************************************************************************/
3530  typedef std::vector<Window*
3531  CEGUI_VECTOR_ALLOC(Window*)> ChildDrawList;
3533  typedef std::map<String, String, StringFastLessCompare
3534  CEGUI_MAP_ALLOC(String, String)> UserStringMap;
3536  typedef std::set<String, StringFastLessCompare
3537  CEGUI_SET_ALLOC(String)> BannedXMLPropertySet;
3538 
3545 
3555  bool d_active;
3556 
3561 
3564 
3574  mutable bool d_needsRedraw;
3577 
3580 
3582  float d_alpha;
3585 
3592 
3594  const Font* d_font;
3600  mutable bool d_bidiDataValid;
3613 
3616 
3618  uint d_ID;
3620  void* d_userData;
3623 
3630 
3647 
3650 
3659 
3664 
3671 
3672  mutable bool d_outerRectClipperValid;
3673  mutable bool d_innerRectClipperValid;
3674  mutable bool d_hitTestRectValid;
3675 
3678 
3681 
3684 
3687 
3688 private:
3689  /*************************************************************************
3690  May not copy or assign Window objects
3691  *************************************************************************/
3692  Window(const Window&): NamedElement() {}
3693  Window& operator=(const Window&) {return *this;}
3694 
3696  const Font* property_getFont() const;
3698  const Image* property_getMouseCursor() const;
3699 
3701  Event::ScopedConnection d_fontRenderSizeChangeConnection;
3702 };
3703 
3704 } // End of CEGUI namespace section
3705 
3706 
3707 #if defined(_MSC_VER)
3708 # pragma warning(pop)
3709 #endif
3710 
3711 #endif // end of guard _CEGUIWindow_h_
3712