Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef BREATHCOLORMODE_H
00019 #define BREATHCOLORMODE_H
00020
00021 #include <mode.h>
00022
00023 class BreathColorMode : public Mode
00024 {
00025 public:
00026 BreathColorMode(color::rgba color, int priority = 0, double freq = 0.25, int pulses = 0, double timeout = 0)
00027 :Mode(priority, freq, pulses, timeout), _timer_inc(0.0)
00028 {
00029 _color = color;
00030 h = 0.0;
00031 _inc = ((M_PI*2) / UPDATE_RATE_HZ) * _freq;
00032 }
00033
00034 void execute()
00035 {
00036 float r = 0;
00037 float g = 0;
00038 float b = 0;
00039
00040 color::Color::hsv2rgb(h, 1.0, 1.0, r, g, b);
00041
00042 h += 0.001;
00043 if(h > 1.0) h = 0.0;
00044
00045
00046 double fV = (exp(sin(_timer_inc))-0.36787944)*0.42545906411;
00047
00048 _timer_inc += _inc;
00049 if(_timer_inc >= M_PI*2)
00050 {
00051 _timer_inc = 0.0;
00052 _pulsed++;
00053 }
00054
00055 color::rgba col;
00056 col.r = r;
00057 col.g = g;
00058 col.b = b;
00059 col.a = fV;
00060
00061 m_sigColorReady(col);
00062 }
00063
00064 std::string getName(){ return std::string("BreathColorMode"); }
00065
00066 private:
00067 double _timer_inc;
00068 double _inc;
00069 float h;
00070 };
00071
00072 #endif