00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef OST_GFX_GRADIENT_HH
00020 #define OST_GFX_GRADIENT_HH
00021
00022
00023
00024
00025
00026 #include <vector>
00027
00028 #include "color.hh"
00029
00030 #include <ost/info/info.hh>
00031 #include <ost/info/info_fw.hh>
00032
00033 namespace ost { namespace gfx {
00034
00059 class DLLEXPORT_OST_GFX Gradient {
00060 public:
00061 struct Stop {
00062 Stop(): t(0.0) {}
00063
00064 Stop(float tt, const Color& c): t(tt), color(c) {}
00065 float t;
00066 Color color;
00067
00068 Color GetColor() const {
00069 return color;
00070 }
00071
00072 float GetRel() const {
00073 return t;
00074 }
00075
00076 bool operator==(const Stop& ref) const
00077 {
00078 return t==ref.t && color==ref.color;
00079 }
00080
00081 };
00082
00083 typedef std::vector<Stop> StopList;
00084
00085 public:
00090 Gradient();
00091
00093 Gradient(const String& name);
00094
00096 Color GetColorAt(float t) const;
00101 void SetColorAt(float t, const Color& color);
00102
00104
00105
00106 void GradientToInfo(info::InfoGroup& group) const;
00107
00109 StopList GetStops() const;
00110
00112
00113
00114 static gfx::Gradient GradientFromInfo(const info::InfoGroup& group);
00115
00117 void SetHSVMode(bool m) {hsv_mode_=m;}
00119 bool GetHSVMode() const {return hsv_mode_;}
00120
00121 private:
00122 std::vector<Stop> stops_;
00123 bool hsv_mode_;
00124 };
00125
00126
00130 }}
00131
00132 #endif