00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #if !defined(_XRB_CELLPADDINGWIDGET_HPP_)
00012 #define _XRB_CELLPADDINGWIDGET_HPP_
00013
00014 #include "xrb.hpp"
00015
00016 #include "xrb_containerwidget.hpp"
00017 #include "xrb_ntuple.hpp"
00018
00019 namespace Xrb
00020 {
00021
00022 class CellPaddingWidget : public ContainerWidget
00023 {
00024 public:
00025
00026 CellPaddingWidget (
00027 ContainerWidget *const parent,
00028 std::string const &name = "CellPaddingWidget");
00029 virtual ~CellPaddingWidget () { }
00030
00031 inline Alignment2 const &GetAlignment () const { return m_alignment; }
00032 Widget *SingleChildWidget ();
00033 Widget const *SingleChildWidget () const;
00034
00035 virtual Bool2 ContentsMinSizeEnabled () const;
00036 virtual ScreenCoordVector2 ContentsMinSize () const;
00037 virtual Bool2 ContentsMaxSizeEnabled () const;
00038 virtual ScreenCoordVector2 ContentsMaxSize () const;
00039
00040 void SetAlignment (Uint32 const index, Alignment const alignment);
00041 void SetAlignment (Alignment2 const &alignment);
00042
00043 virtual void SetSizePropertyEnabled (
00044 SizeProperties::Property property,
00045 Uint32 component,
00046 bool value);
00047 virtual void SetSizePropertyEnabled (
00048 SizeProperties::Property property,
00049 Bool2 const &value);
00050
00051 virtual void SetSizeProperty (
00052 SizeProperties::Property property,
00053 Uint32 component,
00054 ScreenCoord value);
00055 virtual void SetSizeProperty (
00056 SizeProperties::Property property,
00057 ScreenCoordVector2 const &value);
00058
00059 virtual void SetMainWidget (Widget *main_widget)
00060 {
00061 ASSERT0(false && "Setting a main widget in a CellPaddingWidget is pointless");
00062 }
00063
00064 virtual ScreenCoordVector2 Resize (ScreenCoordVector2 const &size);
00065 virtual void AttachChild (Widget *child);
00066 virtual void DetachChild (Widget *child);
00067
00068 protected:
00069
00070 virtual void ChildSizePropertiesChanged (Widget *child);
00071
00072 private:
00073
00074 void PositionSingleChildWidget ();
00075
00076
00077 void DirtyContentsSizeProperties ();
00078
00079
00080 void UpdateContentsSizeProperties () const;
00081
00082
00083 Alignment2 m_alignment;
00084
00085 mutable bool m_contents_size_properties_need_update;
00086 mutable SizeProperties m_contents_size_properties;
00087 };
00088
00089 }
00090
00091 #endif // !defined(_XRB_CELLPADDINGWIDGET_HPP_)