BinToFullColorScale.cxx

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

Generated for HippoDraw Class Library by doxygen