00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #ifndef _CEGUIWindow_h_
00031 #define _CEGUIWindow_h_
00032
00033 #include "CEGUIBase.h"
00034 #include "CEGUIString.h"
00035 #include "CEGUIVector.h"
00036 #include "CEGUIRect.h"
00037 #include "CEGUISize.h"
00038 #include "CEGUIEventSet.h"
00039 #include "CEGUIPropertySet.h"
00040 #include "CEGUISystem.h"
00041 #include "CEGUIInputEvent.h"
00042 #include "CEGUIWindowProperties.h"
00043 #include "CEGUIUDim.h"
00044 #include "CEGUIRenderCache.h"
00045 #include "CEGUIWindowRenderer.h"
00046 #include <vector>
00047 #include <set>
00048
00049
00050 #if defined(_MSC_VER)
00051 # pragma warning(push)
00052 # pragma warning(disable : 4251)
00053 #endif
00054
00055
00056
00057 namespace CEGUI
00058 {
00063 enum VerticalAlignment
00064 {
00069 VA_TOP,
00074 VA_CENTRE,
00079 VA_BOTTOM
00080 };
00081
00086 enum HorizontalAlignment
00087 {
00092 HA_LEFT,
00097 HA_CENTRE,
00102 HA_RIGHT
00103 };
00104
00118 class CEGUIEXPORT Window : public PropertySet, public EventSet
00119 {
00120 public:
00121
00122
00123
00125 static const String EventNamespace;
00126
00127
00129 static const String EventParentSized;
00131 static const String EventSized;
00133 static const String EventMoved;
00135 static const String EventTextChanged;
00137 static const String EventFontChanged;
00139 static const String EventAlphaChanged;
00141 static const String EventIDChanged;
00143 static const String EventActivated;
00145 static const String EventDeactivated;
00147 static const String EventShown;
00149 static const String EventHidden;
00151 static const String EventEnabled;
00153 static const String EventDisabled;
00155 static const String EventClippedByParentChanged;
00157 static const String EventDestroyedByParentChanged;
00159 static const String EventInheritsAlphaChanged;
00161 static const String EventAlwaysOnTopChanged;
00163 static const String EventInputCaptureGained;
00165 static const String EventInputCaptureLost;
00167 static const String EventRenderingStarted;
00169 static const String EventRenderingEnded;
00171 static const String EventChildAdded;
00173 static const String EventChildRemoved;
00175 static const String EventDestructionStarted;
00177 static const String EventZOrderChanged;
00179 static const String EventDragDropItemEnters;
00181 static const String EventDragDropItemLeaves;
00183 static const String EventDragDropItemDropped;
00185 static const String EventVerticalAlignmentChanged;
00187 static const String EventHorizontalAlignmentChanged;
00189 static const String EventWindowRendererAttached;
00191 static const String EventWindowRendererDetached;
00192
00193
00195 static const String EventMouseEnters;
00197 static const String EventMouseLeaves;
00199 static const String EventMouseMove;
00201 static const String EventMouseWheel;
00203 static const String EventMouseButtonDown;
00205 static const String EventMouseButtonUp;
00207 static const String EventMouseClick;
00209 static const String EventMouseDoubleClick;
00211 static const String EventMouseTripleClick;
00213 static const String EventKeyDown;
00215 static const String EventKeyUp;
00217 static const String EventCharacterKey;
00218
00219
00220
00221
00223 static const String TooltipNameSuffix;
00225 static const String AutoWidgetNameSuffix;
00226
00227
00228
00229
00230
00241 Window(const String& type, const String& name);
00242
00247 virtual ~Window(void);
00248
00249
00250
00251
00259 const String& getType(void) const;
00260
00268 const String& getName(void) const {return d_name;}
00269
00279 bool isDestroyedByParent(void) const {return d_destroyedByParent;}
00280
00290 bool isAlwaysOnTop(void) const {return d_alwaysOnTop;}
00291
00304 bool isDisabled(bool localOnly = false) const;
00305
00322 bool isVisible(bool localOnly = false) const;
00323
00338 bool isActive(void) const;
00339
00349 bool isClippedByParent(void) const {return d_clippedByParent;}
00350
00358 uint getID(void) const {return d_ID;}
00359
00369 size_t getChildCount(void) const {return d_children.size();}
00370
00383 bool isChild(const String& name) const;
00384
00401 bool isChild(uint ID) const;
00402
00423 bool isChildRecursive(uint ID) const;
00424
00436 bool isChild(const Window* window) const;
00437
00459 Window* getChild(const String& name) const;
00460
00482 Window* getChild(uint ID) const;
00483
00505 Window* getChildRecursive(uint ID) const;
00506
00520 Window* getChildAtIdx(size_t idx) const {return d_children[idx];}
00521
00534 Window* getActiveChild(void);
00535 const Window* getActiveChild(void) const;
00536
00550 bool isAncestor(const String& name) const;
00551
00565 bool isAncestor(uint ID) const;
00566
00579 bool isAncestor(const Window* window) const;
00580
00594 Font* getFont(bool useDefault = true) const;
00595
00603 const String& getText(void) const {return d_text;}
00604
00613 bool inheritsAlpha(void) const {return d_inheritsAlpha;}
00614
00632 float getAlpha(void) const {return d_alpha;}
00633
00643 float getEffectiveAlpha(void) const;
00644
00658 Rect getPixelRect(void) const;
00659
00673 virtual Rect getPixelRect_impl(void) const;
00674
00683 Rect getInnerRect(void) const;
00684
00695 Rect getUnclippedPixelRect(void) const;
00696
00708 Rect getUnclippedInnerRect(void) const;
00709
00721 virtual Rect getUnclippedInnerRect_impl(void) const;
00722
00731 static Window* getCaptureWindow(void) {return d_captureWindow;}
00732
00741 bool isCapturedByThis(void) const {return getCaptureWindow() == this;}
00742
00752 bool isCapturedByAncestor(void) const
00753 {return isAncestor(getCaptureWindow());}
00754
00763 bool isCapturedByChild(void) const {return isChild(getCaptureWindow());}
00764
00777 virtual bool isHit(const Vector2& position) const;
00778
00791 Window* getChildAtPosition(const Vector2& position) const;
00792
00806 Window* getTargetChildAtPosition(const Vector2& position) const;
00807
00816 Window* getParent(void) const {return d_parent;}
00817
00832 const Image* getMouseCursor(bool useDefault = true) const;
00833
00841 Size getPixelSize(void) const { return d_pixelSize; }
00842
00854 void* getUserData(void) const {return d_userData;}
00855
00870 bool restoresOldCapture(void) const {return d_restoreOldCapture;}
00871
00882 bool isZOrderingEnabled(void) const;
00883
00894 bool wantsMultiClickEvents(void) const;
00895
00907 bool isMouseAutoRepeatEnabled(void) const;
00908
00917 float getAutoRepeatDelay(void) const;
00918
00928 float getAutoRepeatRate(void) const;
00929
00939 bool distributesCapturedInputs(void) const;
00940
00950 bool isUsingDefaultTooltip(void) const;
00951
00961 Tooltip* getTooltip(void) const;
00962
00971 String getTooltipType(void) const;
00972
00980 const String& getTooltipText(void) const;
00981
00993 bool inheritsTooltipText(void) const;
00994
01006 bool isRiseOnClickEnabled(void) const { return d_riseOnClick; }
01007
01019 bool testClassName(const String& class_name) const
01020 {return testClassName_impl(class_name);}
01021
01032 VerticalAlignment getVerticalAlignment() const {return d_vertAlign;}
01033
01044 HorizontalAlignment getHorizontalAlignment() const {return d_horzAlign;}
01045
01053 RenderCache& getRenderCache() { return d_renderCache; }
01054
01063 const String& getLookNFeel() const;
01064
01072 bool getModalState(void) const
01073 {return (System::getSingleton().getModalTarget() == this);}
01074
01088 const String& getUserString(const String& name) const;
01089
01101 bool isUserStringDefined(const String& name) const;
01102
01118 Window* getActiveSibling();
01119
01129 Size getParentPixelSize(void) const;
01130
01140 float getParentPixelWidth(void) const;
01141
01151 float getParentPixelHeight(void) const;
01152
01163 bool isMousePassThroughEnabled(void) const {return d_mousePassThroughEnabled;}
01164
01170 bool isAutoWindow(void) const {return d_autoWindow;}
01171
01176 bool isWritingXMLAllowed(void) const {return d_allowWriteXML;}
01177
01202 EventSet::Iterator getEventIterator() const;
01203
01224 PropertySet::Iterator getPropertyIterator() const;
01225
01226
01227
01228
01239 void rename(const String& new_name);
01240
01252 virtual void initialiseComponents(void) {}
01253
01267 void setDestroyedByParent(bool setting);
01268
01281 void setAlwaysOnTop(bool setting);
01282
01295 void setEnabled(bool setting);
01296
01304 void enable(void) {setEnabled(true);}
01305
01313 void disable(void) {setEnabled(false);}
01314
01326 void setVisible(bool setting);
01327
01335 void show(void) {setVisible(true);}
01336
01344 void hide(void) {setVisible(false);}
01345
01354 void activate(void);
01355
01365 void deactivate(void);
01366
01379 void setClippedByParent(bool setting);
01380
01392 void setID(uint ID);
01393
01404 void setText(const String& text);
01405
01417 void setFont(Font* font);
01418
01433 void setFont(const String& name);
01434
01453 void addChildWindow(const String& name);
01454
01471 void addChildWindow(Window* window);
01472
01484 void removeChildWindow(const String& name);
01485
01497 void removeChildWindow(Window* window);
01498
01512 void removeChildWindow(uint ID);
01513
01527 void moveToFront();
01528
01543 void moveToBack();
01544
01554 bool captureInput(void);
01555
01564 void releaseInput(void);
01565
01584 void setRestoreCapture(bool setting);
01585
01606 void setAlpha(float alpha);
01607
01619 void setInheritsAlpha(bool setting);
01620
01629 void requestRedraw(void) const;
01630
01642 void setMouseCursor(const Image* image) {d_mouseCursor = image;}
01643
01654 void setMouseCursor(MouseCursorImage image)
01655 {d_mouseCursor = (const Image*)image;}
01656
01676 void setMouseCursor(const String& imageset, const String& image_name);
01677
01692 void setUserData(void* user_data) {d_userData = user_data;}
01693
01707 void setZOrderingEnabled(bool setting);
01708
01722 void setWantsMultiClickEvents(bool setting);
01723
01736 void setMouseAutoRepeatEnabled(bool setting);
01737
01749 void setAutoRepeatDelay(float delay);
01750
01763 void setAutoRepeatRate(float rate);
01764
01774 void setDistributesCapturedInputs(bool setting);
01775
01781 void notifyDragDropItemEnters(DragContainer* item);
01782
01788 void notifyDragDropItemLeaves(DragContainer* item);
01789
01795 void notifyDragDropItemDropped(DragContainer* item);
01796
01810 virtual void destroy(void);
01811
01827 void setTooltip(Tooltip* tooltip);
01828
01847 void setTooltipType(const String& tooltipType);
01848
01860 void setTooltipText(const String& tip);
01861
01876 void setInheritsTooltipText(bool setting);
01877
01892 void setRiseOnClickEnabled(bool setting) { d_riseOnClick = setting; }
01893
01907 void setVerticalAlignment(const VerticalAlignment alignment);
01908
01922 void setHorizontalAlignment(const HorizontalAlignment alignment);
01923
01940 void setLookNFeel(const String& look);
01941
01955 void setModalState(bool state);
01956
01967 virtual void performChildWindowLayout();
01968
01982 void setUserString(const String& name, const String& value);
01983
02010 void setArea(const UDim& xpos, const UDim& ypos, const UDim& width, const UDim& height);
02011
02033 void setArea(const UVector2& pos, const UVector2& size);
02034
02052 void setArea(const URect& area);
02053
02072 void setPosition(const UVector2& pos);
02073
02091 void setXPosition(const UDim& x);
02092
02110 void setYPosition(const UDim& y);
02111
02126 void setSize(const UVector2& size);
02127
02142 void setWidth(const UDim& width);
02143
02158 void setHeight(const UDim& height);
02159
02176 void setMaxSize(const UVector2& size);
02177
02194 void setMinSize(const UVector2& size);
02195
02213 const URect& getArea() const;
02214
02232 const UVector2& getPosition() const;
02233
02251 const UDim& getXPosition() const;
02252
02270 const UDim& getYPosition() const;
02271
02286 UVector2 getSize() const;
02287
02302 UDim getWidth() const;
02303
02318 UDim getHeight() const;
02319
02336 const UVector2& getMaxSize() const;
02337
02354 const UVector2& getMinSize() const;
02355
02364 void render(void);
02365
02384 void update(float elapsed);
02385
02396 virtual void writeXMLToStream(XMLSerializer& xml_stream) const;
02397
02406 virtual void beginInitialisation(void) {d_initialising=true;}
02407
02415 virtual void endInitialisation(void) {d_initialising=false;}
02416
02427 void setMousePassThroughEnabled(bool setting) {d_mousePassThroughEnabled = setting;}
02428
02440 void setWindowRenderer(const String& name);
02441
02450 WindowRenderer* getWindowRenderer(void) const;
02451
02461 String getWindowRendererName(void) const;
02462
02467 void setWritingXMLAllowed(bool allow) {d_allowWriteXML = allow;}
02468
02473 void notifyScreenAreaChanged(void);
02474
02475 protected:
02476
02477
02478
02479 friend class System;
02480
02481
02482
02483
02493 virtual void onSized(WindowEventArgs& e);
02494
02504 virtual void onMoved(WindowEventArgs& e);
02505
02515 virtual void onTextChanged(WindowEventArgs& e);
02516
02526 virtual void onFontChanged(WindowEventArgs& e);
02527
02537 virtual void onAlphaChanged(WindowEventArgs& e);
02538
02548 virtual void onIDChanged(WindowEventArgs& e);
02549
02559 virtual void onShown(WindowEventArgs& e);
02560
02570 virtual void onHidden(WindowEventArgs& e);
02571
02581 virtual void onEnabled(WindowEventArgs& e);
02582
02592 virtual void onDisabled(WindowEventArgs& e);
02593
02604 virtual void onClippingChanged(WindowEventArgs& e);
02605
02616 virtual void onParentDestroyChanged(WindowEventArgs& e);
02617
02628 virtual void onInheritsAlphaChanged(WindowEventArgs& e);
02629
02639 virtual void onAlwaysOnTopChanged(WindowEventArgs& e);
02640
02650 virtual void onCaptureGained(WindowEventArgs& e);
02651
02661 virtual void onCaptureLost(WindowEventArgs& e);
02662
02672 virtual void onRenderingStarted(WindowEventArgs& e);
02673
02683 virtual void onRenderingEnded(WindowEventArgs& e);
02684
02694 virtual void onZChanged(WindowEventArgs& e);
02695
02705 virtual void onDestructionStarted(WindowEventArgs& e);
02706
02715 virtual void onActivated(ActivationEventArgs& e);
02716
02726 virtual void onDeactivated(ActivationEventArgs& e);
02727
02739 virtual void onParentSized(WindowEventArgs& e);
02740
02749 virtual void onChildAdded(WindowEventArgs& e);
02750
02759 virtual void onChildRemoved(WindowEventArgs& e);
02760
02768 virtual void onMouseEnters(MouseEventArgs& e);
02769
02777 virtual void onMouseLeaves(MouseEventArgs& e);
02778
02787 virtual void onMouseMove(MouseEventArgs& e);
02788
02797 virtual void onMouseWheel(MouseEventArgs& e);
02798
02807 virtual void onMouseButtonDown(MouseEventArgs& e);
02808
02817 virtual void onMouseButtonUp(MouseEventArgs& e);
02818
02827 virtual void onMouseClicked(MouseEventArgs& e);
02828
02837 virtual void onMouseDoubleClicked(MouseEventArgs& e);
02838
02847 virtual void onMouseTripleClicked(MouseEventArgs& e);
02848
02860 virtual void onKeyDown(KeyEventArgs& e);
02861
02873 virtual void onKeyUp(KeyEventArgs& e);
02874
02886 virtual void onCharacter(KeyEventArgs& e);
02887
02898 virtual void onDragDropItemEnters(DragDropEventArgs& e);
02899
02910 virtual void onDragDropItemLeaves(DragDropEventArgs& e);
02911
02922 virtual void onDragDropItemDropped(DragDropEventArgs& e);
02923
02934 virtual void onVerticalAlignmentChanged(WindowEventArgs& e);
02935
02946 virtual void onHorizontalAlignmentChanged(WindowEventArgs& e);
02947
02957 virtual void onWindowRendererAttached(WindowEventArgs& e);
02958
02968 virtual void onWindowRendererDetached(WindowEventArgs& e);
02969
02970
02971
02972
02984 virtual void updateSelf(float elapsed);
02985
02997 virtual void drawSelf(float z);
02998
03006 virtual void populateRenderCache() {}
03007
03019 virtual bool testClassName_impl(const String& class_name) const
03020 {
03021 if (class_name=="Window") return true;
03022 return false;
03023 }
03024
03036 void setParent(Window* parent);
03037
03038 Size getSize_impl(const Window* window) const;
03039
03044 void generateAutoRepeatEvent(MouseButton button);
03045
03054 virtual bool validateWindowRenderer(const String& name) const;
03055
03060 void banPropertyFromXML(const Property* property);
03061
03066 bool isPropertyBannedFromXML(const Property* property) const;
03067
03074 bool isPropertyAtDefault(const Property* property) const;
03075
03081 void notifyClippingChanged(void);
03082
03083
03084
03085
03086
03087 typedef std::vector<Window*> ChildList;
03089 ChildList d_children;
03090
03092 ChildList d_drawList;
03093
03094
03096 static Window* d_captureWindow;
03097
03099 Window* d_oldCapture;
03100
03102 Window* d_parent;
03103
03105 Font* d_font;
03106
03108 String d_text;
03109
03111 uint d_ID;
03112
03114 float d_alpha;
03115
03117 URect d_area;
03118
03120 Size d_pixelSize;
03121
03123 const Image* d_mouseCursor;
03124
03125
03126 typedef std::map<String, String, String::FastLessCompare> UserStringMap;
03127
03129 UserStringMap d_userStrings;
03130
03132 void* d_userData;
03133
03134
03136 HorizontalAlignment d_horzAlign;
03137
03139 VerticalAlignment d_vertAlign;
03140
03141
03143 UVector2 d_minSize;
03144
03146 UVector2 d_maxSize;
03147
03148
03150 bool d_enabled;
03151
03157 bool d_visible;
03158
03160 bool d_active;
03161
03163 bool d_clippedByParent;
03164
03166 bool d_destroyedByParent;
03167
03169 bool d_alwaysOnTop;
03170
03172 bool d_inheritsAlpha;
03173
03179 bool d_restoreOldCapture;
03180
03182 bool d_zOrderingEnabled;
03183
03185 bool d_wantsMultiClicks;
03186
03192 bool d_distCapturedInputs;
03193
03199 bool d_riseOnClick;
03200
03201
03207 bool d_autoRepeat;
03208
03210 float d_repeatDelay;
03211
03213 float d_repeatRate;
03214
03216 bool d_repeating;
03217
03219 float d_repeatElapsed;
03220
03226 MouseButton d_repeatButton;
03227
03228
03230 String d_tooltipText;
03232 Tooltip* d_customTip;
03234 bool d_weOwnTip;
03240 bool d_inheritsTipText;
03241
03242
03244 RenderCache d_renderCache;
03246 mutable bool d_needsRedraw;
03247
03248
03250 String d_lookName;
03252 WindowRenderer* d_windowRenderer;
03253
03255 bool d_initialising;
03257 bool d_destructionStarted;
03258
03259
03265 bool d_mousePassThroughEnabled;
03266
03268 bool d_autoWindow;
03269
03275 typedef std::set<String, String::FastLessCompare> BannedXMLPropertySet;
03276 BannedXMLPropertySet d_bannedXMLProperties;
03277
03279 bool d_allowWriteXML;
03280
03282 mutable Rect d_screenUnclippedRect;
03283 mutable bool d_screenUnclippedRectValid;
03285 mutable Rect d_screenUnclippedInnerRect;
03286 mutable bool d_screenUnclippedInnerRectValid;
03288 mutable Rect d_screenRect;
03289 mutable bool d_screenRectValid;
03291 mutable Rect d_screenInnerRect;
03292 mutable bool d_screenInnerRectValid;
03293
03294 protected:
03295
03296
03297
03298 static WindowProperties::Alpha d_alphaProperty;
03299 static WindowProperties::AlwaysOnTop d_alwaysOnTopProperty;
03300 static WindowProperties::ClippedByParent d_clippedByParentProperty;
03301 static WindowProperties::DestroyedByParent d_destroyedByParentProperty;
03302 static WindowProperties::Disabled d_disabledProperty;
03303 static WindowProperties::Font d_fontProperty;
03304 static WindowProperties::ID d_IDProperty;
03305 static WindowProperties::InheritsAlpha d_inheritsAlphaProperty;
03306 static WindowProperties::MouseCursorImage d_mouseCursorProperty;
03307 static WindowProperties::RestoreOldCapture d_restoreOldCaptureProperty;
03308 static WindowProperties::Text d_textProperty;
03309 static WindowProperties::Visible d_visibleProperty;
03310 static WindowProperties::ZOrderChangeEnabled d_zOrderChangeProperty;
03311 static WindowProperties::WantsMultiClickEvents d_wantsMultiClicksProperty;
03312 static WindowProperties::MouseButtonDownAutoRepeat d_autoRepeatProperty;
03313 static WindowProperties::AutoRepeatDelay d_autoRepeatDelayProperty;
03314 static WindowProperties::AutoRepeatRate d_autoRepeatRateProperty;
03315 static WindowProperties::DistributeCapturedInputs d_distInputsProperty;
03316 static WindowProperties::CustomTooltipType d_tooltipTypeProperty;
03317 static WindowProperties::Tooltip d_tooltipProperty;
03318 static WindowProperties::InheritsTooltipText d_inheritsTooltipProperty;
03319 static WindowProperties::RiseOnClick d_riseOnClickProperty;
03320 static WindowProperties::VerticalAlignment d_vertAlignProperty;
03321 static WindowProperties::HorizontalAlignment d_horzAlignProperty;
03322 static WindowProperties::UnifiedAreaRect d_unifiedAreaRectProperty;
03323 static WindowProperties::UnifiedPosition d_unifiedPositionProperty;
03324 static WindowProperties::UnifiedXPosition d_unifiedXPositionProperty;
03325 static WindowProperties::UnifiedYPosition d_unifiedYPositionProperty;
03326 static WindowProperties::UnifiedSize d_unifiedSizeProperty;
03327 static WindowProperties::UnifiedWidth d_unifiedWidthProperty;
03328 static WindowProperties::UnifiedHeight d_unifiedHeightProperty;
03329 static WindowProperties::UnifiedMinSize d_unifiedMinSizeProperty;
03330 static WindowProperties::UnifiedMaxSize d_unifiedMaxSizeProperty;
03331 static WindowProperties::MousePassThroughEnabled d_mousePassThroughEnabledProperty;
03332 static WindowProperties::WindowRenderer d_windowRendererProperty;
03333 static WindowProperties::LookNFeel d_lookNFeelProperty;
03334
03335
03336
03337
03342 virtual void cleanupChildren(void);
03343
03348 virtual void addChild_impl(Window* wnd);
03349
03354 virtual void removeChild_impl(Window* wnd);
03355
03360 virtual void onZChange_impl(void);
03361
03366 void addStandardProperties(void);
03367
03372 virtual void moveToFront_impl(bool wasClicked);
03373
03378 void doRiseOnClick(void);
03379
03410 void setArea_impl(const UVector2& pos, const UVector2& size, bool topLeftSizing = false, bool fireEvents = true);
03411
03431 void addWindowToDrawList(Window& wnd, bool at_back = false);
03432
03444 void removeWindowFromDrawList(const Window& wnd);
03445
03446 virtual int writePropertiesXML(XMLSerializer& xml_stream) const;
03447 virtual int writeChildWindowsXML(XMLSerializer& xml_stream) const;
03448 virtual bool writeAutoChildWindowXML(XMLSerializer& xml_stream) const;
03449
03450
03451
03452
03453 Window(const Window& wnd) : PropertySet(), EventSet() {}
03454 Window& operator=(const Window& wnd) {return *this;}
03455
03456
03457
03458
03464 const String d_type;
03465
03467 String d_name;
03468
03470 String d_falagardType;
03471
03472 friend class WindowManager;
03473 };
03474
03475 }
03476
03477
03478 #if defined(_MSC_VER)
03479 # pragma warning(pop)
03480 #endif
03481
03482 #endif // end of guard _CEGUIWindow_h_