# CEGUIWindow.h

    00001 /************************************************************************
    00002         filename:       CEGUIWindow.h
    00003         created:        21/2/2004
    00004         author:         Paul D Turner
    00005
    00006         purpose:        Defines abstract base class for Window objects
    00007 *************************************************************************/
    00008 /*************************************************************************
    00009     Crazy Eddie's GUI System (http://www.cegui.org.uk)
    00010     Copyright (C)2004 - 2005 Paul D Turner (paul@cegui.org.uk)
    00011
    00012     This library is free software; you can redistribute it and/or
    00013     modify it under the terms of the GNU Lesser General Public
    00014     License as published by the Free Software Foundation; either
    00015     version 2.1 of the License, or (at your option) any later version.
    00016
    00017     This library is distributed in the hope that it will be useful,
    00018     but WITHOUT ANY WARRANTY; without even the implied warranty of
    00019     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    00020     Lesser General Public License for more details.
    00021
    00022     You should have received a copy of the GNU Lesser General Public
    00023     License along with this library; if not, write to the Free Software
    00024     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
    00025 *************************************************************************/
    00026 #ifndef _CEGUIWindow_h_
    00027 #define _CEGUIWindow_h_
    00028
    00029 #include "CEGUIBase.h"
    00030 #include "CEGUIString.h"
    00031 #include "CEGUIVector.h"
    00032 #include "CEGUIRect.h"
    00033 #include "CEGUISize.h"
    00034 #include "CEGUIEventSet.h"
    00035 #include "CEGUIPropertySet.h"
    00036 #include "CEGUISystem.h"
    00037 #include "CEGUIInputEvent.h"
    00038 #include "CEGUIWindowProperties.h"
    00039 #include "CEGUIUDim.h"
    00040 #include "CEGUIRenderCache.h"
    00041 #include <vector>
    00042
    00043
    00044 #if defined(_MSC_VER)
    00045 #       pragma warning(push)
    00046 #       pragma warning(disable : 4251)
    00047 #endif
    00048
    00049
    00050 // Start of CEGUI namespace section
    00051 namespace CEGUI
    00052 {
    00053
    00062 enum MetricsMode
    00063 {
    00064         Relative,
    00065         Absolute,
    00066         Inherited
    00067 };
    00068
    00073 enum VerticalAlignment
    00074 {
    00075     VA_TOP,
    00076     VA_CENTRE,
    00077     VA_BOTTOM
    00078 };
    00079
    00084 enum HorizontalAlignment
    00085 {
    00086     HA_LEFT,
    00087     HA_CENTRE,
    00088     HA_RIGHT
    00089 };
    00090
    00100 class CEGUIEXPORT Window : public PropertySet, public EventSet
    00101 {
    00102 public:
    00103         static const String EventNamespace;
    00104
    00105         /*************************************************************************
    00106                 Event name constants
    00107         *************************************************************************/
    00108         // generated internally by Window
    00109         static const String EventParentSized;
    00110         static const String EventSized;
    00111         static const String EventMoved;
    00112         static const String EventTextChanged;
    00113         static const String EventFontChanged;
    00114         static const String EventAlphaChanged;
    00115         static const String EventIDChanged;
    00116         static const String EventActivated;
    00117         static const String EventDeactivated;
    00118         static const String EventShown;
    00119         static const String EventHidden;
    00120         static const String EventEnabled;
    00121         static const String EventDisabled;
    00122         static const String EventMetricsModeChanged;
    00123         static const String EventClippedByParentChanged;
    00124         static const String EventDestroyedByParentChanged;
    00125         static const String EventInheritsAlphaChanged;
    00126         static const String EventAlwaysOnTopChanged;
    00127         static const String EventInputCaptureGained;
    00128         static const String EventInputCaptureLost;
    00129         static const String EventRenderingStarted;
    00130         static const String EventRenderingEnded;
    00131         static const String EventChildAdded;
    00132         static const String EventChildRemoved;
    00133         static const String EventDestructionStarted;
    00134         static const String EventZOrderChanged;
    00135         static const String EventDragDropItemEnters;
    00136         static const String EventDragDropItemLeaves;
    00137         static const String EventDragDropItemDropped;
    00138     static const String EventVerticalAlignmentChanged;
    00139     static const String EventHorizontalAlignmentChanged;
    00140
    00141         // generated externally (inputs)
    00142         static const String EventMouseEnters;
    00143         static const String EventMouseLeaves;
    00144         static const String EventMouseMove;
    00145         static const String EventMouseWheel;
    00146         static const String EventMouseButtonDown;
    00147         static const String EventMouseButtonUp;
    00148         static const String EventMouseClick;
    00149         static const String EventMouseDoubleClick;
    00150         static const String EventMouseTripleClick;
    00151         static const String EventKeyDown;
    00152         static const String EventKeyUp;
    00153         static const String EventCharacterKey;
    00154
    00155
    00156         /*************************************************************************
    00157                 Construction and Destruction
    00158         *************************************************************************/
    00169         Window(const String& type, const String& name);
    00170
    00171
    00176         virtual ~Window(void);
    00177
    00178
    00179         /*************************************************************************
    00180                 Accessor functions
    00181         *************************************************************************/
    00189         const String& getType(void) const;
    00190
    00191
    00199         const String& getName(void) const               {return d_name;}
    00200
    00201
    00209         bool    isDestroyedByParent(void) const         {return d_destroyedByParent;}
    00210
    00211
    00219         bool    isAlwaysOnTop(void) const                       {return d_alwaysOnTop;}
    00220
    00221
    00233         bool    isDisabled(bool localOnly = false) const;
    00234
    00235
    00250         bool    isVisible(bool localOnly = false) const;
    00251
    00252
    00263         bool    isActive(void) const;
    00264
    00265
    00273         bool    isClippedByParent(void) const           {return d_clippedByParent;}
    00274
    00275
    00283         uint    getID(void) const               {return d_ID;}
    00284
    00285
    00293         uint   getChildCount(void) const      {return (uint)d_children.size();}
    00294
    00295
    00306         bool    isChild(const String& name) const;
    00307
    00308
    00323         bool    isChild(uint ID) const;
    00324
    00325
    00336         bool    isChild(const Window* window) const;
    00337
    00338
    00356         Window* getChild(const String& name) const;
    00357
    00358
    00376         Window* getChild(uint ID) const;
    00377
    00378
    00390         Window* getChildAtIdx(uint idx) const           {return d_children[idx];}
    00391
    00392
    00402         Window* getActiveChild(void);
    00403         const Window* getActiveChild(void) const;
    00404
    00405
    00416         bool    isAncestor(const String& name) const;
    00417
    00418
    00429         bool    isAncestor(uint ID) const;
    00430
    00431
    00442         bool    isAncestor(const Window* window) const;
    00443
    00444
    00455         const Font*             getFont(bool useDefault = true) const;
    00456
    00457
    00465         const String&   getText(void) const             {return d_text;}
    00466
    00467
    00475         bool    inheritsAlpha(void) const               {return d_inheritsAlpha;}
    00476
    00477
    00491         float   getAlpha(void) const                    {return d_alpha;}
    00492
    00493
    00502         float   getEffectiveAlpha(void) const;
    00503
    00504
    00513         Rect    getRect(void) const;
    00514
    00515
    00527         virtual Rect    getPixelRect(void) const;
    00528
    00529
    00537         Rect    getInnerRect(void) const;
    00538
    00539
    00548         Rect    getUnclippedPixelRect(void) const;
    00549
    00550
    00559         virtual Rect    getUnclippedInnerRect(void) const;
    00560
    00561
    00569         static  Window* getCaptureWindow(void)          {return d_captureWindow;}
    00570
    00571
    00579         bool    isCapturedByThis(void) const            {return getCaptureWindow() == this;}
    00580
    00581
    00589         bool    isCapturedByAncestor(void) const        {return isAncestor(getCaptureWindow());}
    00590
    00591
    00599         bool    isCapturedByChild(void) const           {return isChild(getCaptureWindow());}
    00600
    00601
    00612         virtual bool    isHit(const Point& position) const;
    00613
    00614
    00625         Window* getChildAtPosition(const Point& position) const;
    00626
    00627
    00635         MetricsMode     getMetricsMode(void) const;
    00636
    00637
    00646         float   getXPosition(void) const;
    00647
    00648
    00657         float   getYPosition(void) const;
    00658
    00659
    00668         Point   getPosition(void) const;
    00669
    00670
    00679         float   getWidth(void) const;
    00680
    00689         float   getHeight(void) const;
    00690
    00691
    00700         Size    getSize(void) const;
    00701
    00702
    00711         Window* getParent(void) const                           {return d_parent;}
    00712
    00713
    00722         Size    getMaximumSize(void) const;
    00723
    00724
    00733         Size    getMinimumSize(void) const;
    00734
    00735
    00746         const Image*    getMouseCursor(bool useDefault = true) const;
    00747
    00748
    00756     Rect        getRelativeRect(void) const                             { return d_area.asRelative(getParentSize()); }
    00757
    00758
    00766         Point   getRelativePosition(void) const                 { return d_area.getPosition().asRelative(getParentSize()); }
    00767
    00768
    00776         float   getRelativeXPosition(void) const                { return d_area.d_min.d_x.asRelative(getParentWidth()); }
    00777
    00778
    00786         float   getRelativeYPosition(void) const                { return d_area.d_min.d_y.asRelative(getParentHeight()); }
    00787
    00788
    00796     Size        getRelativeSize(void) const                             { return d_area.getSize().asRelative(getParentSize()).asSize(); }
    00797
    00798
    00806         float   getRelativeWidth(void) const                    { return d_area.getWidth().asRelative(getParentWidth()); }
    00807
    00808
    00816         float   getRelativeHeight(void) const                   { return d_area.getHeight().asRelative(getParentHeight()); }
    00817
    00818
    00826     Rect        getAbsoluteRect(void) const                             { return Rect(d_area.getPosition().asAbsolute(getParentSize()), d_pixelSize); }
    00827
    00828
    00836         Point   getAbsolutePosition(void) const                 { return d_area.getPosition().asAbsolute(getParentSize()); }
    00837
    00838
    00846         float   getAbsoluteXPosition(void) const                { return d_area.d_min.d_x.asAbsolute(getParentWidth()); }
    00847
    00848
    00856         float   getAbsoluteYPosition(void) const                { return d_area.d_min.d_y.asAbsolute(getParentHeight()); }
    00857
    00858
    00866         Size    getAbsoluteSize(void) const                             { return d_pixelSize; }
    00867
    00868
    00876         float   getAbsoluteWidth(void) const                    { return d_pixelSize.d_width; }
    00877
    00878
    00886         float   getAbsoluteHeight(void) const                   { return d_pixelSize.d_height; }
    00887
    00888
    00899         void*   getUserData(void) const                 {return d_userData;}
    00900
    00901
    00912         float   getXPosition(MetricsMode mode) const;
    00913
    00914
    00925         float   getYPosition(MetricsMode mode) const;
    00926
    00927
    00938         Point   getPosition(MetricsMode mode) const;
    00939
    00940
    00951         float   getWidth(MetricsMode mode) const;
    00952
    00953
    00964         float   getHeight(MetricsMode mode) const;
    00965
    00966
    00977         Size    getSize(MetricsMode mode) const;
    00978
    00979
    00990         Rect    getRect(MetricsMode mode) const;
    00991
    00992
    01003         bool    restoresOldCapture(void) const          {return d_restoreOldCapture;}
    01004
    01005
    01014         bool    isZOrderingEnabled(void) const;
    01015
    01016
    01025     bool    wantsMultiClickEvents(void) const;
    01026
    01027
    01036     bool    isMouseAutoRepeatEnabled(void) const;
    01037
    01038
    01046     float   getAutoRepeatDelay(void) const;
    01047
    01048
    01056     float   getAutoRepeatRate(void) const;
    01057
    01058
    01068     bool    distributesCapturedInputs(void) const;
    01069
    01070
    01079     bool isUsingDefaultTooltip(void) const;
    01080
    01089     Tooltip* getTooltip(void) const;
    01090
    01098     String getTooltipType(void) const;
    01099
    01107     const String& getTooltipText(void) const;
    01108
    01117     bool inheritsTooltipText(void) const;
    01118
    01127     bool isRiseOnClickEnabled(void) const   { return d_riseOnClick; }
    01128
    01139         bool testClassName(const String& class_name) const              {return testClassName_impl(class_name);}
    01140
    01151     VerticalAlignment getVerticalAlignment() const  {return d_vertAlign;}
    01152
    01163     HorizontalAlignment getHorizontalAlignment() const  {return d_horzAlign;}
    01164
    01172     RenderCache& getRenderCache()   { return d_renderCache; }
    01173
    01182     const String& getLookNFeel();
    01183
    01191         bool getModalState(void) const  {return (System::getSingleton().getModalTarget() == this);}
    01192
    01193
    01206     const String& getUserString(const String& name) const;
    01207
    01219     bool isUserStringDefined(const String& name) const;
    01220
    01235     Window* getActiveSibling();
    01236
    01237     /*************************************************************************
    01238                 Manipulator functions
    01239         *************************************************************************/
    01250     void rename(const String& new_name);
    01251
    01262         virtual void    initialise(void) {}
    01263
    01264
    01276         void    setDestroyedByParent(bool setting);
    01277
    01278
    01289         void    setAlwaysOnTop(bool setting);
    01290
    01291
    01302         void    setEnabled(bool setting);
    01303
    01304
    01312         void    enable(void)            {setEnabled(true);}
    01313
    01314
    01322         void    disable(void)           {setEnabled(false);}
    01323
    01324
    01335         void    setVisible(bool setting);
    01336
    01337
    01345         void    show(void)                      {setVisible(true);}
    01346
    01347
    01355         void    hide(void)                      {setVisible(false);}
    01356
    01357
    01365         void    activate(void);
    01366
    01367
    01376         void    deactivate(void);
    01377
    01378
    01390         void    setClippedByParent(bool setting);
    01391
    01392
    01403         void    setID(uint ID);
    01404
    01405
    01416         void    setText(const String& text);
    01417
    01418
    01429         void    setWidth(float width);
    01430
    01431
    01442         void    setHeight(float height);
    01443
    01444
    01455         void    setSize(const Size& size);
    01456
    01457
    01468         void    setXPosition(float x);
    01469
    01470
    01481         void    setYPosition(float y);
    01482
    01483
    01494         void    setPosition(const Point& position);
    01495
    01496
    01508         void    setAreaRect(const Rect& area);
    01509
    01510
    01521         void    setFont(const Font* font);
    01522
    01523
    01536         void    setFont(const String& name);
    01537
    01538
    01553         void    addChildWindow(const String& name);
    01554
    01555
    01569         void    addChildWindow(Window* window);
    01570
    01571
    01582         void    removeChildWindow(const String& name);
    01583
    01584
    01595         void    removeChildWindow(Window* window);
    01596
    01597
    01609         void    removeChildWindow(uint ID);
    01610
    01611
    01623         void    moveToFront();
    01624
    01625
    01636         void    moveToBack();
    01637
    01638
    01647         bool    captureInput(void);
    01648
    01649
    01657         void    releaseInput(void);
    01658
    01659
    01675         void    setRestoreCapture(bool setting);
    01676
    01677
    01694         void    setAlpha(float alpha);
    01695
    01696
    01707         void    setInheritsAlpha(bool setting);
    01708
    01709
    01717         void    requestRedraw(void) const;
    01718
    01719
    01730         void setMetricsMode(MetricsMode mode);
    01731
    01732
    01741         void    setMinimumSize(const Size& sz);
    01742
    01743
    01752         void    setMaximumSize(const Size& sz);
    01753
    01754
    01765         void    setMouseCursor(const Image* image)              {d_mouseCursor = image;}
    01766
    01767
    01778         void    setMouseCursor(MouseCursorImage image)          {d_mouseCursor = (const Image*)image;}
    01779
    01780
    01796         void    setMouseCursor(const String& imageset, const String& image_name);
    01797
    01798
    01812         void    setUserData(void* user_data)            {d_userData = user_data;}
    01813
    01814
    01828         void    setXPosition(MetricsMode mode, float x);
    01829
    01830
    01844         void    setYPosition(MetricsMode mode, float y);
    01845
    01846
    01860         void    setPosition(MetricsMode mode, const Point& position);
    01861
    01862
    01876         void    setWidth(MetricsMode mode, float width);
    01877
    01878
    01892         void    setHeight(MetricsMode mode, float height);
    01893
    01894
    01908         void    setSize(MetricsMode mode, const Size& size);
    01909
    01910
    01924         void    setRect(MetricsMode mode, const Rect& area);
    01925
    01926
    01938         void    setZOrderingEnabled(bool setting);
    01939
    01940
    01952     void setWantsMultiClickEvents(bool setting);
    01953
    01954
    01966     void    setMouseAutoRepeatEnabled(bool setting);
    01967
    01968
    01979     void   setAutoRepeatDelay(float delay);
    01980
    01981
    01992     void   setAutoRepeatRate(float rate);
    01993
    01994
    02004     void    setDistributesCapturedInputs(bool setting);
    02005
    02011     void    notifyDragDropItemEnters(DragContainer* item);
    02012
    02018     void    notifyDragDropItemLeaves(DragContainer* item);
    02019
    02025     void    notifyDragDropItemDropped(DragContainer* item);
    02026
    02040     virtual void    destroy(void);
    02041
    02055     void setTooltip(Tooltip* tooltip);
    02056
    02072     void setTooltipType(const String& tooltipType);
    02073
    02084     void setTooltipText(const String& tip);
    02085
    02097     void setInheritsTooltipText(bool setting);
    02098
    02110     void setRiseOnClickEnabled(bool setting)    { d_riseOnClick = setting; }
    02111
    02125     void setVerticalAlignment(const VerticalAlignment alignment);
    02126
    02140     void setHorizontalAlignment(const HorizontalAlignment alignment);
    02141
    02158     void setLookNFeel(const String& falagardType, const String& look);
    02159
    02172         void setModalState(bool state);
    02173
    02184     virtual void performChildWindowLayout();
    02185
    02199     void setUserString(const String& name, const String& value);
    02200
    02201     /*************************************************************************
    02202                 Co-ordinate and Size Conversion Functions
    02203         *************************************************************************/
    02214         float   absoluteToRelativeX(float val) const;
    02215
    02216
    02227         float   absoluteToRelativeY(float val) const;
    02228
    02229
    02240         Point   absoluteToRelative(const Point& pt) const;
    02241
    02242
    02253         Size    absoluteToRelative(const Size& sze) const;
    02254
    02255
    02266         Rect    absoluteToRelative(const Rect& rect) const;
    02267
    02268
    02279         float   relativeToAbsoluteX(float val) const;
    02280
    02281
    02292         float   relativeToAbsoluteY(float val) const;
    02293
    02294
    02305         Point   relativeToAbsolute(const Point& pt) const;
    02306
    02307
    02318         Size    relativeToAbsolute(const Size& sze) const;
    02319
    02320
    02331         Rect    relativeToAbsolute(const Rect& rect) const;
    02332
    02333
    02344         float   windowToScreenX(float x) const;
    02345
    02346
    02357         float   windowToScreenY(float y) const;
    02358
    02359
    02370         Point   windowToScreen(const Point& pt) const;
    02371
    02372
    02383         Size    windowToScreen(const Size& sze) const;
    02384
    02385
    02396         Rect    windowToScreen(const Rect& rect) const;
    02397
    02398
    02409         float   screenToWindowX(float x) const;
    02410
    02411
    02422         float   screenToWindowY(float y) const;
    02423
    02424
    02435         Point   screenToWindow(const Point& pt) const;
    02436
    02437
    02448         Size    screenToWindow(const Size& sze) const;
    02449
    02450
    02461         Rect    screenToWindow(const Rect& rect) const;
    02462
    02463
    02474     float unifiedToRelativeX(const UDim& val) const;
    02475
    02476
    02487     float       unifiedToRelativeY(const UDim& val) const;
    02488
    02489
    02500     Vector2 unifiedToRelative(const UVector2& val) const;
    02501
    02502
    02513     Rect unifiedToRelative(const URect& val) const;
    02514
    02515
    02526     float unifiedToAbsoluteX(const UDim& val) const;
    02527
    02528
    02539     float       unifiedToAbsoluteY(const UDim& val) const;
    02540
    02541
    02552     Vector2 unifiedToAbsolute(const UVector2& val) const;
    02553
    02554
    02565     Rect unifiedToAbsolute(const URect& val) const;
    02566
    02567
    02578     float windowToScreenX(const UDim& x) const;
    02579
    02580
    02591     float windowToScreenY(const UDim& y) const;
    02592
    02593
    02604     Vector2 windowToScreen(const UVector2& vec) const;
    02605
    02606
    02617     Rect windowToScreen(const URect& rect) const;
    02618
    02619
    02630     float screenToWindowX(const UDim& x) const;
    02631
    02632
    02643     float screenToWindowY(const UDim& y) const;
    02644
    02645
    02656     Vector2 screenToWindow(const UVector2& vec) const;
    02657
    02658
    02669     Rect screenToWindow(const URect& rect) const;
    02670
    02671
    02672     /*************************************************************************
    02673         Interface to unified co-ordinate system
    02674     *************************************************************************/
    02699     void setWindowArea(const UDim& xpos, const UDim& ypos, const UDim& width, const UDim& height);
    02700
    02719     void setWindowArea(const UVector2& pos, const UVector2& size);
    02720
    02736     void setWindowArea(const URect& area);
    02737
    02753     void setWindowPosition(const UVector2& pos);
    02754
    02770     void setWindowXPosition(const UDim& x);
    02771
    02787     void setWindowYPosition(const UDim& y);
    02788
    02802     void setWindowSize(const UVector2& size);
    02803
    02817     void setWindowWidth(const UDim& width);
    02818
    02832     void setWindowHeight(const UDim& height);
    02833
    02848     void setWindowMaxSize(const UVector2& size);
    02849
    02864     void setWindowMinSize(const UVector2& size);
    02865
    02881     const URect& getWindowArea() const;
    02882
    02898     const UVector2& getWindowPosition() const;
    02899
    02915     const UDim& getWindowXPosition() const;
    02916
    02932     const UDim& getWindowYPosition() const;
    02933
    02947     UVector2 getWindowSize() const;
    02948
    02962     UDim getWindowWidth() const;
    02963
    02977     UDim getWindowHeight() const;
    02978
    02993     const UVector2& getWindowMaxSize() const;
    02994
    03009     const UVector2& getWindowMinSize() const;
    03010
    03011
    03012         /*************************************************************************
    03013                 Main render function.
    03014         *************************************************************************/
    03022         void    render(void);
    03023
    03024
    03040         void    update(float elapsed);
    03041
    03042
    03053     virtual void writeXMLToStream(OutStream& out_stream) const;
    03054
    03055 protected:
    03056         /*************************************************************************
    03057                 System object can trigger events directly
    03058         *************************************************************************/
    03059         friend  class System;
    03060
    03061
    03062         /*************************************************************************
    03063                 Event trigger methods
    03064         *************************************************************************/
    03073         virtual void    onSized(WindowEventArgs& e);
    03074
    03075
    03084         virtual void    onMoved(WindowEventArgs& e);
    03085
    03086
    03095         virtual void    onTextChanged(WindowEventArgs& e);
    03096
    03097
    03106         virtual void    onFontChanged(WindowEventArgs& e);
    03107
    03108
    03117         virtual void    onAlphaChanged(WindowEventArgs& e);
    03118
    03119
    03128         virtual void    onIDChanged(WindowEventArgs& e);
    03129
    03130
    03139         virtual void    onShown(WindowEventArgs& e);
    03140
    03141
    03150         virtual void    onHidden(WindowEventArgs& e);
    03151
    03152
    03161         virtual void    onEnabled(WindowEventArgs& e);
    03162
    03163
    03172         virtual void    onDisabled(WindowEventArgs& e);
    03173
    03174
    03183         virtual void    onMetricsChanged(WindowEventArgs& e);
    03184
    03185
    03194         virtual void    onClippingChanged(WindowEventArgs& e);
    03195
    03196
    03205         virtual void    onParentDestroyChanged(WindowEventArgs& e);
    03206
    03207
    03216         virtual void    onInheritsAlphaChanged(WindowEventArgs& e);
    03217
    03218
    03227         virtual void    onAlwaysOnTopChanged(WindowEventArgs& e);
    03228
    03229
    03238         virtual void    onCaptureGained(WindowEventArgs& e);
    03239
    03240
    03249         virtual void    onCaptureLost(WindowEventArgs& e);
    03250
    03251
    03260         virtual void    onRenderingStarted(WindowEventArgs& e);
    03261
    03262
    03271         virtual void    onRenderingEnded(WindowEventArgs& e);
    03272
    03273
    03282         virtual void    onZChanged(WindowEventArgs& e);
    03283
    03284
    03293         virtual void    onDestructionStarted(WindowEventArgs& e);
    03294
    03295
    03303         virtual void    onActivated(ActivationEventArgs& e);
    03304
    03305
    03313         virtual void    onDeactivated(ActivationEventArgs& e);
    03314
    03315
    03325         virtual void    onParentSized(WindowEventArgs& e);
    03326
    03327
    03335         virtual void    onChildAdded(WindowEventArgs& e);
    03336
    03337
    03345         virtual void    onChildRemoved(WindowEventArgs& e);
    03346
    03347
    03355         virtual void    onMouseEnters(MouseEventArgs& e);
    03356
    03357
    03365         virtual void    onMouseLeaves(MouseEventArgs& e);
    03366
    03367
    03375         virtual void    onMouseMove(MouseEventArgs& e);
    03376
    03377
    03385         virtual void    onMouseWheel(MouseEventArgs& e);
    03386
    03387
    03395         virtual void    onMouseButtonDown(MouseEventArgs& e);
    03396
    03397
    03405         virtual void    onMouseButtonUp(MouseEventArgs& e);
    03406
    03407
    03416         virtual void    onMouseClicked(MouseEventArgs& e);
    03417
    03418
    03426         virtual void    onMouseDoubleClicked(MouseEventArgs& e);
    03427
    03428
    03436         virtual void    onMouseTripleClicked(MouseEventArgs& e);
    03437
    03438
    03447         virtual void    onKeyDown(KeyEventArgs& e);
    03448
    03449
    03459         virtual void    onKeyUp(KeyEventArgs& e);
    03460
    03461
    03471         virtual void    onCharacter(KeyEventArgs& e);
    03472
    03482     virtual void    onDragDropItemEnters(DragDropEventArgs& e);
    03483
    03484
    03494     virtual void    onDragDropItemLeaves(DragDropEventArgs& e);
    03495
    03496
    03506     virtual void    onDragDropItemDropped(DragDropEventArgs& e);
    03507
    03508
    03517     virtual void    onVerticalAlignmentChanged(WindowEventArgs& e);
    03518
    03519
    03528     virtual void    onHorizontalAlignmentChanged(WindowEventArgs& e);
    03529
    03530
    03531         /*************************************************************************
    03532                 Implementation Functions
    03533         *************************************************************************/
    03544         virtual void    updateSelf(float elapsed);
    03545
    03546
    03557         virtual void    drawSelf(float z);
    03558
    03559
    03566     virtual void populateRenderCache()  {}
    03567
    03568
    03579         virtual bool    testClassName_impl(const String& class_name) const
    03580         {
    03581                 if (class_name==(const utf8*)"Window")  return true;
    03582                 return false;
    03583         }
    03584
    03585
    03596         void    setParent(Window* parent);
    03597
    03598
    03606         float   getParentWidth(void) const;
    03607
    03608
    03616         float   getParentHeight(void) const;
    03617
    03618
    03626         Size    getParentSize(void) const;
    03627
    03628
    03643         Rect    absoluteToRelative_impl(const Window* window, const Rect& rect) const;
    03644         Size    absoluteToRelative_impl(const Window* window, const Size& sz) const;
    03645         Point   absoluteToRelative_impl(const Window* window, const Point& pt) const;
    03646         float   absoluteToRelativeX_impl(const Window* window, float x) const;
    03647         float   absoluteToRelativeY_impl(const Window* window, float y) const;
    03648
    03649
    03664         Rect    relativeToAbsolute_impl(const Window* window, const Rect& rect) const;
    03665         Size    relativeToAbsolute_impl(const Window* window, const Size& sz) const;
    03666         Point   relativeToAbsolute_impl(const Window* window, const Point& pt) const;
    03667         float   relativeToAbsoluteX_impl(const Window* window, float x) const;
    03668         float   relativeToAbsoluteY_impl(const Window* window, float y) const;
    03669
    03670         Size    getWindowSize_impl(const Window* window) const;
    03671
    03672
    03678         MetricsMode getInheritedMetricsMode(void) const;
    03679
    03680
    03685     void    generateAutoRepeatEvent(MouseButton button);
    03686
    03687
    03688         /*************************************************************************
    03689                 Implementation Data
    03690         *************************************************************************/
    03691         // child stuff
    03692         typedef std::vector<Window*>    ChildList;
    03693         ChildList               d_children;
    03694     ChildList       d_drawList;
    03695
    03696         // general data
    03697         MetricsMode             d_metricsMode;
    03698         static Window*  d_captureWindow;
    03699         Window*                 d_oldCapture;
    03700         Window*                 d_parent;
    03701         const Font*             d_font;
    03702         String                  d_text;
    03703         uint                    d_ID;
    03704         float                   d_alpha;
    03705     URect                       d_area;
    03706     Size            d_pixelSize;
    03707         const Image*    d_mouseCursor;
    03708         void*                   d_userData;
    03709
    03710         typedef std::map<String, String>   UserStringMap;
    03711         UserStringMap  d_userStrings;
    03712
    03713     // positional alignments
    03714     HorizontalAlignment d_horzAlign;
    03715     VerticalAlignment   d_vertAlign;
    03716
    03717         // maximum and minimum sizes
    03718         UVector2       d_minSize;
    03719         UVector2       d_maxSize;
    03720
    03721         // settings
    03722         bool    d_enabled;
    03723         bool    d_visible;
    03724         bool    d_active;
    03725         bool    d_clippedByParent;
    03726         bool    d_destroyedByParent;
    03727         bool    d_alwaysOnTop;
    03728         bool    d_inheritsAlpha;
    03729         bool    d_restoreOldCapture;
    03730         bool    d_zOrderingEnabled;
    03731     bool    d_wantsMultiClicks;
    03732     bool    d_distCapturedInputs;
    03733     bool    d_riseOnClick;
    03734
    03735     // mouse button autorepeat data
    03736     bool    d_autoRepeat;
    03737     float   d_repeatDelay;
    03738     float   d_repeatRate;
    03739     bool    d_repeating;
    03740     float   d_repeatElapsed;
    03741     MouseButton d_repeatButton;
    03742
    03743     // Tooltip stuff
    03744     String   d_tooltipText;
    03745     Tooltip* d_customTip;
    03746     bool     d_weOwnTip;
    03747     bool     d_inheritsTipText;
    03748
    03749     // rendering
    03750     RenderCache d_renderCache;
    03751     mutable bool d_needsRedraw;
    03752
    03753     // Look'N'Feel stuff
    03754     String  d_lookName;
    03755
    03756 protected:
    03757         /*************************************************************************
    03758                 Properties for Window base class
    03759         *************************************************************************/
    03760         static  WindowProperties::AbsoluteHeight        d_absHeightProperty;
    03761         static  WindowProperties::AbsoluteMaxSize       d_absMaxSizeProperty;
    03762         static  WindowProperties::AbsoluteMinSize       d_absMinSizeProperty;
    03763         static  WindowProperties::AbsolutePosition      d_absPositionProperty;
    03764         static  WindowProperties::AbsoluteRect          d_absRectProperty;
    03765         static  WindowProperties::AbsoluteSize          d_absSizeProperty;
    03766         static  WindowProperties::AbsoluteWidth         d_absWidthProperty;
    03767         static  WindowProperties::AbsoluteXPosition     d_absXPosProperty;
    03768         static  WindowProperties::AbsoluteYPosition     d_absYPosProperty;
    03769         static  WindowProperties::Alpha                         d_alphaProperty;
    03770         static  WindowProperties::AlwaysOnTop           d_alwaysOnTopProperty;
    03771         static  WindowProperties::ClippedByParent       d_clippedByParentProperty;
    03772         static  WindowProperties::DestroyedByParent     d_destroyedByParentProperty;
    03773         static  WindowProperties::Disabled                      d_disabledProperty;
    03774         static  WindowProperties::Font                          d_fontProperty;
    03775         static  WindowProperties::Height                        d_heightProperty;
    03776         static  WindowProperties::ID                            d_IDProperty;
    03777         static  WindowProperties::InheritsAlpha         d_inheritsAlphaProperty;
    03778         static  WindowProperties::MetricsMode           d_metricsModeProperty;
    03779         static  WindowProperties::MouseCursorImage      d_mouseCursorProperty;
    03780         static  WindowProperties::Position                      d_positionProperty;
    03781         static  WindowProperties::Rect                          d_rectProperty;
    03782         static  WindowProperties::RelativeHeight        d_relHeightProperty;
    03783         static  WindowProperties::RelativeMaxSize       d_relMaxSizeProperty;
    03784         static  WindowProperties::RelativeMinSize       d_relMinSizeProperty;
    03785         static  WindowProperties::RelativePosition      d_relPositionProperty;
    03786         static  WindowProperties::RelativeRect          d_relRectProperty;
    03787         static  WindowProperties::RelativeSize          d_relSizeProperty;
    03788         static  WindowProperties::RelativeWidth         d_relWidthProperty;
    03789         static  WindowProperties::RelativeXPosition     d_relXPosProperty;
    03790         static  WindowProperties::RelativeYPosition     d_relYPosProperty;
    03791         static  WindowProperties::RestoreOldCapture     d_restoreOldCaptureProperty;
    03792         static  WindowProperties::Size                          d_sizeProperty;
    03793         static  WindowProperties::Text                          d_textProperty;
    03794         static  WindowProperties::Visible                       d_visibleProperty;
    03795         static  WindowProperties::Width                         d_widthProperty;
    03796         static  WindowProperties::XPosition                     d_xPosProperty;
    03797         static  WindowProperties::YPosition                     d_yPosProperty;
    03798         static  WindowProperties::ZOrderChangeEnabled   d_zOrderChangeProperty;
    03799     static  WindowProperties::WantsMultiClickEvents d_wantsMultiClicksProperty;
    03800     static  WindowProperties::MouseButtonDownAutoRepeat d_autoRepeatProperty;
    03801     static  WindowProperties::AutoRepeatDelay   d_autoRepeatDelayProperty;
    03802     static  WindowProperties::AutoRepeatRate    d_autoRepeatRateProperty;
    03803     static  WindowProperties::DistributeCapturedInputs d_distInputsProperty;
    03804     static  WindowProperties::CustomTooltipType d_tooltipTypeProperty;
    03805     static  WindowProperties::Tooltip           d_tooltipProperty;
    03806     static  WindowProperties::InheritsTooltipText d_inheritsTooltipProperty;
    03807     static  WindowProperties::RiseOnClick       d_riseOnClickProperty;
    03808     static  WindowProperties::VerticalAlignment   d_vertAlignProperty;
    03809     static  WindowProperties::HorizontalAlignment d_horzAlignProperty;
    03810     static      WindowProperties::UnifiedAreaRect       d_unifiedAreaRectProperty;
    03811     static      WindowProperties::UnifiedPosition       d_unifiedPositionProperty;
    03812     static      WindowProperties::UnifiedXPosition      d_unifiedXPositionProperty;
    03813     static      WindowProperties::UnifiedYPosition      d_unifiedYPositionProperty;
    03814     static      WindowProperties::UnifiedSize           d_unifiedSizeProperty;
    03815     static      WindowProperties::UnifiedWidth          d_unifiedWidthProperty;
    03816     static      WindowProperties::UnifiedHeight         d_unifiedHeightProperty;
    03817     static      WindowProperties::UnifiedMinSize        d_unifiedMinSizeProperty;
    03818     static      WindowProperties::UnifiedMaxSize        d_unifiedMaxSizeProperty;
    03819
    03820
    03821         /*************************************************************************
    03822                 implementation functions
    03823         *************************************************************************/
    03828         void    addStandardEvents(void);
    03829
    03834         virtual void    cleanupChildren(void);
    03835
    03840         virtual void    addChild_impl(Window* wnd);
    03841
    03846         virtual void    removeChild_impl(Window* wnd);
    03847
    03852         virtual void    onZChange_impl(void);
    03853
    03854
    03859         void    addStandardProperties(void);
    03860
    03861
    03866     virtual void moveToFront_impl(bool wasClicked);
    03867
    03868
    03873     void doRiseOnClick(void);
    03874
    03875
    03903     void setWindowArea_impl(const UVector2& pos, const UVector2& size, bool topLeftSizing = false, bool fireEvents = true);
    03904
    03922     void addWindowToDrawList(Window& wnd, bool at_back = false);
    03923
    03935     void removeWindowFromDrawList(const Window& wnd);
    03936
    03937     virtual int writePropertiesXML(OutStream& out_stream) const;
    03938     virtual int writeChildWindowsXML(OutStream& out_stream) const;
    03939
    03940         /*************************************************************************
    03941                 May not copy or assign Window objects
    03942         *************************************************************************/
    03943         Window(const Window& wnd) {}
    03944         Window& operator=(const Window& wnd) {return *this;}
    03945
    03946         /*************************************************************************
    03947                 Private implementation Data
    03948         *************************************************************************/
    03949         const String    d_type;
    03950         String  d_name;
    03951         String    d_falagardType;
    03952 };
    03953
    03954 } // End of  CEGUI namespace section
    03955
    03956
    03957 #if defined(_MSC_VER)
    03958 #       pragma warning(pop)
    03959 #endif
    03960
    03961 #endif  // end of guard _CEGUIWindow_h_