Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

BinToFullColorScale.cxx

Go to the documentation of this file.
00001 
00012 #include "BinToFullColorScale.h"
00013 
00014 #include <cassert>
00015 
00016 BinToFullColorScale::
00017 BinToFullColorScale ( const char * name )
00018   : BinToColor ( name )
00019 {
00020 
00021 }
00022 
00023 BinToFullColorScale::BinToFullColorScale ( const BinToFullColorScale & bin_to_color )
00024   : BinToColor ( bin_to_color )
00025 {
00026 
00027 }
00028 
00029 BinToColor * BinToFullColorScale:: clone () const
00030 {
00031   return new BinToFullColorScale ( *this );
00032 }
00033 
00034 
00035 
00036 
00037 
00038 void
00039 BinToFullColorScale::
00040 doubleToColor ( double value, Color & color ) const
00041 {
00042    double r=1;
00043    double g=1;
00044    double b=1;
00045    double dv = m_range.length ();
00046    double vmin = m_range.low ();
00047    double v = value;
00048    
00049    if (v < (vmin + ( 0.1667 ) * dv)) {
00050      r = 0;
00051      g = 6 * (v - vmin) / dv;
00052 
00053    } else if (v < (vmin + (0.3333) * dv)) {
00054      r = 0;
00055      b = 1 + 6 * (vmin + (0.1667) * dv - v) / dv;
00056 
00057    } else if (v < (vmin + (0.5) * dv)) {
00058      r = 6 * (v - vmin - (0.3333) * dv) / dv;
00059      b = 0;
00060 
00061    } else if (v < (vmin + (0.6667) * dv) ) {
00062      g = 1 + 6 * (vmin + (0.5) * dv - v) / dv;
00063      b = 0;
00064 
00065    } else if (v < (vmin + (0.8333) * dv) ) {
00066      g = 0;
00067      b = 6 * (v- vmin - (0.6667)*dv) /dv;
00068 
00069    } else if (v < (vmin + dv )){
00070      g=0; 
00071      r = 1 + 6 * ( vmin + (0.8333)*dv - v) / dv;
00072    }  else{ //this else is for guarding against numerical errors
00073      g = 0;
00074      r = 0;
00075    }
00076    
00077   
00078    int red   = static_cast < int > ( r * 255. );
00079    int green = static_cast < int > ( g * 255. );
00080    int blue  = static_cast < int > ( b * 255. );
00081 
00082    assert ( red < 256 && green < 256 && blue < 256 );
00083    color.setColor ( red, green, blue );
00084 }

Generated for HippoDraw-1.14.8.5 by doxygen 1.4.3