00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef __WIDGET_STATE_DOT_H
00021 #define __WIDGET_STATE_DOT_H
00022
00023 #include <signalGutz.h>
00024 #include <mathGutz.h>
00025 #include <smartptr.h>
00026
00027 class WidgetItem;
00028
00029
00030
00031
00032
00033
00034
00035 class WidgetState : public gutz::Counted
00036 {
00037 public:
00038 HAS_SLOTS;
00039 virtual ~WidgetState() {}
00040
00041 virtual WidgetState* clone() = 0;
00042
00043
00044
00045
00046
00047
00048
00049 inline void bind() { bindWS(); }
00050 inline void release() { releaseWS(); }
00051
00052
00053
00054 protected:
00055
00056
00057 virtual void bindWS() = 0;
00058
00059 virtual void releaseWS() = 0;
00060
00061
00062 WidgetState() {}
00063 WidgetState(const WidgetState &ws) {}
00064 WidgetState &operator=(const WidgetState &ws) {}
00065
00066 };
00067 typedef gutz::SmartPtr<WidgetState> WidgetStateSP;
00068
00069 const gutz::vec4f defColor = gutz::vec4f(.72165f, .91373f, .62353f, 1.0f);
00070 const gutz::vec4f defPicked = gutz::vec4f(.72165f, .62353f, .91373f, 1.0f);
00071 const gutz::vec4f defSecond = gutz::vec4f(1.0f,.99f, .97f, 1.0f);
00072
00073
00074
00075
00076
00077 class ColorWState : public WidgetState {
00078 public:
00079 virtual ~ColorWState() {}
00080
00081 ColorWState &operator=(const ColorWState &cws)
00082 {
00083 _color = cws._color;
00084 _pickedColor = cws._pickedColor;
00085 _second = cws._second;
00086 }
00087
00088 WidgetState* clone() { return cloneColor(); }
00089 virtual ColorWState* cloneColor() = 0;
00090
00091
00092
00093
00094 void setColor(const gutz::vec4f &c) { _color = c; }
00095 gutz::vec4f getColor() const { return _color; }
00096 void setPickedColor(const gutz::vec4f &pc) { _pickedColor = pc; }
00097 gutz::vec4f getPickedColor() const { return _pickedColor; }
00098 void setSecondary(const gutz::vec4f &sc) { _second = sc; }
00099 gutz::vec4f getSecondary() const { return _second; }
00100
00101
00102
00103
00104
00105
00106
00107
00108 void setPicked(bool yes) { _picked = yes; }
00109 bool getPicked() const { return _picked; }
00110
00111
00112
00113 protected:
00114
00115 friend class WidgetItem;
00116
00117 ColorWState(const gutz::vec4f color = defColor,
00118 const gutz::vec4f pickedColor = defPicked,
00119 const gutz::vec4f second = defSecond)
00120 : _color(color), _pickedColor(pickedColor), _second(second),
00121 _picked(false)
00122 {}
00123 ColorWState(const ColorWState &cws)
00124 : _color(cws._color), _pickedColor(cws._pickedColor), _second(cws._second),
00125 _picked(false)
00126 {}
00127
00128 gutz::vec4f _color;
00129 gutz::vec4f _pickedColor;
00130 gutz::vec4f _second;
00131 bool _picked;
00132
00133 };
00134 typedef gutz::SmartPtr<ColorWState> ColorWStateSP;
00135
00136
00137 #endif
00138
00139