00001
00027 #ifndef INC_MGUI_POPUPCOLOR_H
00028 #define INC_MGUI_POPUPCOLOR_H
00029
00030 #ifndef INC_MGUI_POPUP_H
00031 #include <mgui/popup.h>
00032 #endif
00033
00034 #ifndef INC_MGUI_CANVAS_H
00035 #include <mgui/canvas.h>
00036 #endif
00037
00038 #ifndef INC_MGUI_SLIDER_H
00039 #include <mgui/slider.h>
00040 #endif
00041
00042
00043 #ifndef GENERATING_DOXYGEN_OUTPUT
00044
00045 class COLORPALETTE;
00046 namespace MGD {
00047 class CONTEXT;
00048 }
00049 #endif
00050
00051
00052 namespace MGUI {
00053
00054
00056 class POPUP_COLOR : public MGUI::POPUP {
00057 public:
00058
00059 enum STYLE {
00060 STYLE_Default = 0x00,
00061 STYLE_AllowTransparency = 0x01,
00062 };
00063
00065 explicit POPUP_COLOR (
00066 STYLE style = STYLE_Default
00067 );
00068
00070 ~POPUP_COLOR ();
00071
00074 void AddToggle (
00075 MGUI::ID id,
00076 const MISTRING& label,
00077 bool dft = false
00078 );
00079
00081 const COLOR& GetColor () const
00082 { return (m_color); }
00083
00085 bool GetToggleValue (
00086 MGUI::ID id
00087 ) const;
00088
00091 void Initialize (
00092 const MISTRING& label,
00093 const COLOR& color,
00094 STYLE style = STYLE_Default
00095 );
00096
00098 void SetColor (
00099 const COLOR& color
00100 ) { m_color = color; }
00101
00104 void SetLabel (
00105 const MISTRING& label
00106 ) { m_labelstr = label; }
00107
00109 void SetToggleValue (
00110 MGUI::ID id,
00111 bool value
00112 );
00113
00114 private:
00115 #ifndef GENERATING_DOXYGEN_OUTPUT
00116 typedef POPUP_COLOR THISCLASS;
00117
00118 struct TGLITEM {
00119 CTRL_TOGGLEBUTTON *m_pTgl;
00120 MISTRING m_labelstr;
00121 MGUI::ID m_id;
00122 bool m_dftvalue;
00123
00124 TGLITEM ()
00125 : m_pTgl(0), m_id(-1), m_dftvalue(false) { }
00126
00127 TGLITEM (MGUI::ID id, const MISTRING& labelstr, bool dftvalue)
00128 : m_pTgl(0), m_labelstr(labelstr), m_id(id), m_dftvalue(dftvalue) { }
00129
00130 ~TGLITEM ()
00131 { delete m_pTgl; }
00132 };
00133 typedef MILIST<TGLITEM> TGLLIST;
00134
00135 STYLE m_style;
00136 MISTRING m_labelstr;
00137 COLOR m_color;
00138 int m_palindex;
00139 int m_cellsize;
00140 int m_x0;
00141 int m_y0;
00142 CTRL_LABEL m_Label;
00143 CTRL_SEPARATOR m_Sep;
00144 CANVAS m_CnvPalette;
00145 TGLLIST m_TglList;
00146 CTRL_LABEL m_LblTransparency;
00147 FORM_SLIDER m_CtlTransparency;
00148 CTRL_PUSHBUTTON m_BtnMore;
00149 const COLORPALETTE *m_pColorPalette;
00150
00151 int ComputePaletteIndex (MGUI::POINT ptCanvas) const;
00152 void DrawHighlight (int palindex, bool set);
00153 void DrawPalette ();
00154 void OnBtnMore ();
00155 void OnChgTransparency ();
00156 void OnCnvPalettePaint (MGD::CONTEXT *gc);
00157 bool OnCnvPalettePointerButtonDown (MGUI::POINT ptCanvas, POINTERBUTTON button, KEYSTATE keystate);
00158 bool OnCnvPalettePointerButtonUp (MGUI::POINT ptCanvas, POINTERBUTTON button, KEYSTATE keystate);
00159 bool OnCnvPalettePointerMove (MGUI::POINT ptCanvas, POINTERBUTTON button, KEYSTATE keystate, bool hasmore);
00160 void OnTgl ();
00161
00162
00163 virtual ERRVALUE v_CreateContent ();
00164 virtual void v_OnOpen ();
00165 #endif
00166 };
00167
00168 #ifndef GENERATING_DOXYGEN_OUTPUT
00169 DEFINE_ENUM_OP_BITWISE(POPUP_COLOR::STYLE)
00170 #endif
00171
00172
00173
00174 }
00175
00176 #endif // INC_MGUI_POPUPCOLOR_H