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
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041 #ifndef INC_MGUI_COLORSEL_H
00042 #define INC_MGUI_COLORSEL_H
00043
00044 #ifndef INC_MGUI_COLORBTN_H
00045 #include <mgui/colorbtn.h>
00046 #endif
00047
00048 #ifndef INC_MGUI_CANVAS_H
00049 #include <mgui/canvas.h>
00050 #endif
00051
00052 class COLORPALETTE;
00053
00054 namespace MGUI {
00055
00056
00057
00058
00059 class FORM_COLORSELECTOR : public MGUI::FORM_COMPOSITE {
00060 public:
00061
00062 enum FORMSTYLE {
00063 FORMSTYLE_Default = 0x00,
00064 FORMSTYLE_EditTransparency = 0x01
00065 };
00066
00067
00068 FORM_COLORSELECTOR (
00069 );
00070
00071
00072 virtual ~FORM_COLORSELECTOR (
00073 );
00074
00075
00076 void Create (
00077 MGUI::LAYOUT_PANE_BASE& ParentPane,
00078 FORMSTYLE formstyle = FORMSTYLE_Default
00079 );
00080
00081
00082 const COLOR& GetColor (
00083 ) const { return (m_color); }
00084
00085
00086
00087 virtual bool IsCreated (
00088 ) const;
00089
00090
00091
00092 virtual bool IsEnabled (
00093 ) const;
00094
00095
00096 void SetColor (
00097 const COLOR& color,
00098 bool notify = true
00099 );
00100
00101
00102 virtual void SetEnabled (
00103 bool enabled = true
00104 );
00105
00106
00107 void SetTransparency (
00108 UINT8 transparency,
00109 bool notify = true
00110 );
00111
00112
00113 virtual void SetVisible (
00114 bool visible = true
00115 );
00116
00117 protected:
00118
00119
00120 virtual void OnChangeColor (
00121 );
00122
00123 private:
00124 #ifndef GENERATING_DOXYGEN_OUTPUT
00125 class CANVAS_PALETTE : public MGUI::CANVAS {
00126 public:
00127 CANVAS_PALETTE (
00128 FORM_COLORSELECTOR& form
00129 ): m_form(form) { }
00130 private:
00131 FORM_COLORSELECTOR& m_form;
00132 virtual void v_OnLeftDown (MGUI::POINT point, KEYSTATE keystate);
00133 };
00134 friend class CANVAS_PALETTE;
00135
00136 class EDIT_TRANSPARENCY : public FORM_EDIT_NUMBER {
00137 public:
00138 EDIT_TRANSPARENCY (
00139 FORM_COLORSELECTOR& form
00140 ): m_form(form) { }
00141 private:
00142 FORM_COLORSELECTOR& m_form;
00143 virtual void OnChangeValue ();
00144 };
00145
00146 COLOR m_color;
00147 int m_palindex;
00148 int m_cellsize;
00149 int m_x0;
00150 int m_y0;
00151 CANVAS_PALETTE m_PaletteCanvas;
00152 CTRL_PUSHBUTTON_T<FORM_COLORSELECTOR> m_PalettePB;
00153 FORM_COLORBUTTON_T<FORM_COLORSELECTOR> m_ColorBtn;
00154 EDIT_TRANSPARENCY m_TransparencyEN;
00155 const COLORPALETTE *m_pColorPalette;
00156
00157 void DrawHighlight (int palindex, bool set);
00158 void DrawPalette ();
00159 void OnCmdColor ();
00160 void OnCmdPalette ();
00161 void OnPaletteLeftDown (MGUI::POINT point);
00162
00163 FORM_COLORSELECTOR (const FORM_COLORSELECTOR&);
00164 FORM_COLORSELECTOR& operator= (const FORM_COLORSELECTOR&);
00165 #endif // GENERATING_DOXYGEN_OUTPUT
00166 };
00167
00168 DEFINE_ENUM_OPERATORS(FORM_COLORSELECTOR::FORMSTYLE);
00169
00170
00171
00172
00173
00174 template <class _CT> class FORM_COLORSELECTOR_T : public MGUI::FORM_COLORSELECTOR {
00175 public:
00176
00177
00178 FORM_COLORSELECTOR_T (
00179 ): m_pContainer(0), m_pfOnChangeColor(0) { }
00180
00181
00182 void Create (
00183 MGUI::LAYOUT_PANE_BASE& ParentPane,
00184 _CT *pContainer,
00185 void (_CT::*pfOnChangeColor)(),
00186 FORMSTYLE formstyle = FORMSTYLE_Default
00187 ) {
00188 m_pContainer = pContainer;
00189 m_pfOnChangeColor = pfOnChangeColor;
00190 FORM_COLORSELECTOR::Create(ParentPane,formstyle);
00191 return;
00192 }
00193
00194 protected:
00195
00196
00197 virtual void OnChangeColor (
00198 ) { (m_pContainer->*m_pfOnChangeColor)(); }
00199
00200 private:
00201 #ifndef GENERATING_DOXYGEN_OUTPUT
00202 _CT *m_pContainer;
00203 void (_CT::*m_pfOnChangeColor)();
00204 #endif // GENERATING_DOXYGEN_OUTPUT
00205 };
00206
00207 };
00208
00209
00210 #endif // INC_MGUI_COLORSEL_H