00001 00010 #ifndef TIMEFADE_H 00011 #define TIMEFADE_H 00012 00013 #include "Color.H" 00014 00015 // Gluebase includes 00016 #define OUTSIDE_GLUE_CORE 00017 #include <std/time.H> 00018 00019 namespace InSpace { 00020 00021 class TimeFade 00022 { 00023 public: 00024 TimeFade(double startTime, Color startCol, 00025 double endTime, Color endCol) { 00026 _startTime = startTime; 00027 _startCol = startCol; 00028 _endTime = endTime; 00029 _endCol = endCol; 00030 } 00031 00032 virtual ~TimeFade() {} 00033 00034 Color getColor() { 00035 return getColor(the_time()); 00036 } 00037 00038 Color getColor(double t) { 00039 float f = (t - _startTime) / (_endTime - _startTime); 00040 if (f < 0.0) f = 0.0; 00041 else if (f > 1.0) f = 1.0; 00042 float f2 = 1.0 - f; 00043 float r = _startCol.r()*f2 + _endCol.r()*f; 00044 float g = _startCol.g()*f2 + _endCol.g()*f; 00045 float b = _startCol.b()*f2 + _endCol.b()*f; 00046 float a = _startCol.a()*f2 + _endCol.a()*f; 00047 return Color(r,g,b,a); 00048 } 00049 00050 protected: 00051 00052 double _startTime; 00053 Color _startCol; 00054 double _endTime; 00055 Color _endCol; 00056 00057 }; 00058 00059 } 00060 #endif