00001
00023 #ifndef INC_MGUI_COLORBTN_H
00024 #define INC_MGUI_COLORBTN_H
00025
00026 #ifndef INC_MGUI_CTRL_H
00027 #include <mgui/ctrl.h>
00028 #endif
00029
00030 #ifndef INC_MI32_COLOR_H
00031 #include <mi32/color.h>
00032 #endif
00033
00034 namespace MGUI {
00035
00036
00039 class CTRL_COLORBUTTON : public MGUI::CTRL {
00040 public:
00041
00042 enum STYLE {
00043 STYLE_Default = 0x0000,
00044 STYLE_OutputOnly = 0x0001,
00045 STYLE_AllowTransparent = 0x0002,
00046 STYLE_AllowTransparency = 0x0004,
00047 };
00048
00050 CTRL_COLORBUTTON (
00051 );
00052
00054 virtual ~CTRL_COLORBUTTON (
00055 );
00056
00058 void Create (
00059 MGUI::LAYOUT_PANE_BASE& ParentPane,
00060 const COLOR& dftcolor,
00061 STYLE style = STYLE_Default,
00062 MGUI::LAYOUT_SIZEALIGN sizealign = MGUI::LAYOUT_SIZEALIGN_FixedSize
00063 );
00064
00066 const COLOR& GetColor (
00067 ) const { return (m_color); }
00068
00070 COLORREF GetColorRef (
00071 ) const { return (m_color.GetColorRef()); }
00072
00074 void SetDelegateOnChangeColor (
00075 DELEGATE_VOID_NOPARMS delegate
00076 ) { m_DelegateOnChangeColor = delegate; }
00077
00079 void SetColor (
00080 const COLOR& color,
00081 bool notify = true
00082 );
00083
00085 void SetColor (
00086 const COLORREF color,
00087 bool notify = true
00088 ) { COLOR c; c.SetColorRef(color); SetColor(c, notify); }
00089
00090 private:
00091 #ifndef GENERATING_DOXYGEN_OUTPUT
00092 MPIXEL m_pixel;
00093 DELEGATE_VOID_NOPARMS m_DelegateOnChangeColor;
00094 COLOR m_color;
00095 STYLE m_style;
00096
00097 static void CCB_ChangeColorMap (void*, UINT8*);
00098 static void CB_PushButton (Widget, CTRL_COLORBUTTON*, void*);
00099 void UpdateButtonColor ();
00100 void OnChangeColor ();
00101
00102 CTRL_COLORBUTTON (const CTRL_COLORBUTTON&);
00103 CTRL_COLORBUTTON& operator= (const CTRL_COLORBUTTON&);
00104 #endif
00105 };
00106
00107 #ifndef GENERATING_DOXYGEN_OUTPUT
00108 DEFINE_ENUM_OP_BITWISE(CTRL_COLORBUTTON::STYLE)
00109 #endif
00110
00111
00114 class FORM_COLORBUTTON : public MGUI::FORM_COMPOSITE {
00115 public:
00116
00118 FORM_COLORBUTTON (
00119 );
00120
00122 virtual ~FORM_COLORBUTTON (
00123 );
00124
00126 void Create (
00127 MGUI::LAYOUT_PANE_BASE& ParentPane,
00128 const MISTRING& label,
00129 const COLOR& dftcolor,
00130 MGUI::CTRL_COLORBUTTON::STYLE buttonstyle = MGUI::CTRL_COLORBUTTON::STYLE_Default,
00131 MGUI::LAYOUT_SIZEALIGN sizealign = MGUI::LAYOUT_SIZEALIGN_FixedSize,
00132 MGUI::CTRL_LABEL::STYLE labelstyle = MGUI::CTRL_LABEL::STYLE_LeftNoWrap
00133 );
00134
00136 MGUI::CTRL_COLORBUTTON& GetButton (
00137 ) { return (m_button); }
00138
00140 const COLOR& GetColor (
00141 ) const { return (m_button.GetColor()); }
00142
00144 COLORREF GetColorRef (
00145 ) const { return (m_button.GetColorRef()); }
00146
00149 MGUI::CTRL_LABEL& GetLabel (
00150 ) { return (m_label); }
00151
00153 void SetColor (
00154 const COLOR& color,
00155 bool notify = true
00156 ) { m_button.SetColor(color,notify); }
00157
00159 void SetColor (
00160 const COLORREF color,
00161 bool notify = true
00162 ) { m_button.SetColor(color,notify); }
00163
00165 void SetDelegateOnChangeColor (
00166 DELEGATE_VOID_NOPARMS delegate
00167 ) { m_button.SetDelegateOnChangeColor(delegate); }
00168
00170 void SetLabel (
00171 const MISTRING& label
00172 ) { m_label.SetLabel(label); }
00173
00174 private:
00175 #ifndef GENERATING_DOXYGEN_OUTPUT
00176 CTRL_COLORBUTTON m_button;
00177 MGUI::CTRL_LABEL m_label;
00178
00179 FORM_COLORBUTTON (const FORM_COLORBUTTON&);
00180 FORM_COLORBUTTON& operator= (const FORM_COLORBUTTON&);
00181 #endif // GENERATING_DOXYGEN_OUTPUT
00182 };
00183
00184
00185
00186
00187 }
00188
00189 #endif // INC_MGUI_COLORBTN_H