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 _CEGUIFrameWindow_h_
00031 #define _CEGUIFrameWindow_h_
00032
00033 #include "../CEGUIBase.h"
00034 #include "../CEGUIWindow.h"
00035 #include "CEGUIFrameWindowProperties.h"
00036
00037
00038 #if defined(_MSC_VER)
00039 # pragma warning(push)
00040 # pragma warning(disable : 4251)
00041 #endif
00042
00043
00044
00045 namespace CEGUI
00046 {
00051 class CEGUIEXPORT FrameWindow : public Window
00052 {
00053 public:
00054 static const String EventNamespace;
00055 static const String WidgetTypeName;
00056
00057
00058
00059
00060
00066 static const String EventRollupToggled;
00072 static const String EventCloseClicked;
00078 static const String EventDragSizingStarted;
00084 static const String EventDragSizingEnded;
00085
00086
00087 static const float DefaultSizingBorderSize;
00088
00089
00090
00091
00092 static const String TitlebarNameSuffix;
00093 static const String CloseButtonNameSuffix;
00094
00095
00100 enum SizingLocation {
00101 SizingNone,
00102 SizingTopLeft,
00103 SizingTopRight,
00104 SizingBottomLeft,
00105 SizingBottomRight,
00106 SizingTop,
00107 SizingLeft,
00108 SizingBottom,
00109 SizingRight
00110 };
00111
00122 virtual void initialiseComponents(void);
00123
00124
00132 bool isSizingEnabled(void) const {return d_sizingEnabled && isFrameEnabled();}
00133
00134
00142 bool isFrameEnabled(void) const {return d_frameEnabled;}
00143
00144
00152 bool isTitleBarEnabled(void) const;
00153
00154
00162 bool isCloseButtonEnabled(void) const;
00163
00164
00172 bool isRollupEnabled(void) const {return d_rollupEnabled;}
00173
00174
00182 bool isRolledup(void) const {return d_rolledup;}
00183
00184
00192 float getSizingBorderThickness(void) const {return d_borderSize;}
00193
00194
00205 void setSizingEnabled(bool setting);
00206
00207
00218 void setFrameEnabled(bool setting);
00219
00220
00231 void setTitleBarEnabled(bool setting);
00232
00233
00244 void setCloseButtonEnabled(bool setting);
00245
00246
00257 void setRollupEnabled(bool setting);
00258
00259
00267 void toggleRollup(void);
00268
00269
00280 void setSizingBorderThickness(float pixels) {d_borderSize = pixels;}
00281
00282
00295 void offsetPixelPosition(const Vector2& offset);
00296
00297
00305 bool isDragMovingEnabled(void) const {return d_dragMovable;}
00306
00307
00318 void setDragMovingEnabled(bool setting);
00319
00320
00329 const Image* getNSSizingCursorImage() const;
00330
00339 const Image* getEWSizingCursorImage() const;
00340
00349 const Image* getNWSESizingCursorImage() const;
00350
00359 const Image* getNESWSizingCursorImage() const;
00360
00371 void setNSSizingCursorImage(const Image* image);
00372
00383 void setEWSizingCursorImage(const Image* image);
00384
00395 void setNWSESizingCursorImage(const Image* image);
00396
00407 void setNESWSizingCursorImage(const Image* image);
00408
00424 void setNSSizingCursorImage(const String& imageset, const String& image);
00425
00441 void setEWSizingCursorImage(const String& imageset, const String& image);
00442
00458 void setNWSESizingCursorImage(const String& imageset, const String& image);
00459
00475 void setNESWSizingCursorImage(const String& imageset, const String& image);
00476
00477
00478 bool isHit(const Point& position, const bool ) const
00479 { return Window::isHit(position) && !d_rolledup; }
00480
00491 Titlebar* getTitlebar() const;
00492
00504 PushButton* getCloseButton() const;
00505
00506
00507
00508
00513 FrameWindow(const String& type, const String& name);
00514
00519 virtual ~FrameWindow(void);
00520
00521
00522 protected:
00523
00524
00525
00533 bool moveLeftEdge(float delta, URect& out_area);
00534
00535
00543 bool moveRightEdge(float delta, URect& out_area);
00544
00545
00553 bool moveTopEdge(float delta, URect& out_area);
00554
00555
00563 bool moveBottomEdge(float delta, URect& out_area);
00564
00565
00579 SizingLocation getSizingBorderAtPoint(const Point& pt) const;
00580
00581
00592 bool isLeftSizingLocation(SizingLocation loc) const {return ((loc == SizingLeft) || (loc == SizingTopLeft) || (loc == SizingBottomLeft));}
00593
00594
00605 bool isRightSizingLocation(SizingLocation loc) const {return ((loc == SizingRight) || (loc == SizingTopRight) || (loc == SizingBottomRight));}
00606
00607
00618 bool isTopSizingLocation(SizingLocation loc) const {return ((loc == SizingTop) || (loc == SizingTopLeft) || (loc == SizingTopRight));}
00619
00620
00631 bool isBottomSizingLocation(SizingLocation loc) const {return ((loc == SizingBottom) || (loc == SizingBottomLeft) || (loc == SizingBottomRight));}
00632
00633
00638 bool closeClickHandler(const EventArgs& e);
00639
00640
00645 void setCursorForPoint(const Point& pt) const;
00646
00647
00652 virtual Rect getSizingRect(void) const {return Rect(0, 0, d_pixelSize.d_width, d_pixelSize.d_height);}
00653
00654
00665 virtual bool testClassName_impl(const String& class_name) const
00666 {
00667 if (class_name=="FrameWindow") return true;
00668 return Window::testClassName_impl(class_name);
00669 }
00670
00671
00672
00673
00674
00680 virtual void onRollupToggled(WindowEventArgs& e);
00681
00682
00687 virtual void onCloseClicked(WindowEventArgs& e);
00688
00690 virtual void onDragSizingStarted(WindowEventArgs& e);
00691
00693 virtual void onDragSizingEnded(WindowEventArgs& e);
00694
00695
00696
00697
00698 virtual void onMouseMove(MouseEventArgs& e);
00699 virtual void onMouseButtonDown(MouseEventArgs& e);
00700 virtual void onMouseButtonUp(MouseEventArgs& e);
00701 virtual void onCaptureLost(WindowEventArgs& e);
00702 virtual void onTextChanged(WindowEventArgs& e);
00703 virtual void onActivated(ActivationEventArgs& e);
00704 virtual void onDeactivated(ActivationEventArgs& e);
00705
00706
00707
00708
00709
00710
00711 bool d_frameEnabled;
00712
00713
00714 bool d_rollupEnabled;
00715 bool d_rolledup;
00716
00717
00718 bool d_sizingEnabled;
00719 bool d_beingSized;
00720 float d_borderSize;
00721 Point d_dragPoint;
00722
00723
00724 const Image* d_nsSizingCursor;
00725 const Image* d_ewSizingCursor;
00726 const Image* d_nwseSizingCursor;
00727 const Image* d_neswSizingCursor;
00728
00729 bool d_dragMovable;
00730
00731
00732 private:
00733
00734
00735
00736 static FrameWindowProperties::SizingEnabled d_sizingEnabledProperty;
00737 static FrameWindowProperties::FrameEnabled d_frameEnabledProperty;
00738 static FrameWindowProperties::TitlebarEnabled d_titlebarEnabledProperty;
00739 static FrameWindowProperties::CloseButtonEnabled d_closeButtonEnabledProperty;
00740 static FrameWindowProperties::RollUpState d_rollUpStateProperty;
00741 static FrameWindowProperties::RollUpEnabled d_rollUpEnabledProperty;
00742 static FrameWindowProperties::DragMovingEnabled d_dragMovingEnabledProperty;
00743 static FrameWindowProperties::SizingBorderThickness d_sizingBorderThicknessProperty;
00744 static FrameWindowProperties::NSSizingCursorImage d_nsSizingCursorProperty;
00745 static FrameWindowProperties::EWSizingCursorImage d_ewSizingCursorProperty;
00746 static FrameWindowProperties::NWSESizingCursorImage d_nwseSizingCursorProperty;
00747 static FrameWindowProperties::NESWSizingCursorImage d_neswSizingCursorProperty;
00748
00749
00750
00751
00752
00753 void addFrameWindowProperties(void);
00754 };
00755
00756 }
00757
00758 #if defined(_MSC_VER)
00759 # pragma warning(pop)
00760 #endif
00761
00762 #endif // end of guard _CEGUIFrameWindow_h_