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

ColorSymbolPointRep.cxx

Go to the documentation of this file.
00001 
00012 // For truncation warning
00013 #ifdef _MSC_VER
00014 #include "msdevstudio/MSconfig.h"
00015 #endif
00016 
00017 #include "ColorSymbolPointRep.h"
00018 
00019 #include "BinToColor.h"
00020 #include "BinToColorFactory.h"
00021 
00022 #include "datasrcs/DataPointTuple.h"
00023 #include "datasrcs/DataSource.h"
00024 #include "graphics/ViewBase.h"
00025 #include "transforms/BinaryTransform.h"
00026 
00027 #include <cassert>
00028 
00029 using namespace hippodraw;
00030 
00031 using std::vector;
00032 
00033 ColorSymbolPointRep::
00034 ColorSymbolPointRep ( hippodraw::Symbol::Type symbol, float size )
00035   : SymbolPointRep ( symbol, size )
00036 {
00037   BinToColorFactory * factory = BinToColorFactory::instance ();
00038   m_color_gen = factory -> create ( "Rainbow" );
00039   m_name = "ColorSymbol"; // need to override what base class did
00040 }
00041 
00042 ColorSymbolPointRep::ColorSymbolPointRep ( )
00043   : SymbolPointRep ( )
00044 {
00045   BinToColorFactory * factory = BinToColorFactory::instance ();
00046   m_color_gen = factory -> create ( "Rainbow" );
00047   m_name = "ColorSymbol"; // need to override what base class did
00048 }
00049 
00050 ColorSymbolPointRep::ColorSymbolPointRep( const ColorSymbolPointRep & rep )
00051   : SymbolPointRep ( rep ),
00052     m_color_gen ( rep.m_color_gen->clone () )
00053 {
00054 }
00055 
00056 ColorSymbolPointRep::~ColorSymbolPointRep()
00057 {
00058 }
00059 
00060 RepBase * ColorSymbolPointRep::clone()
00061 {
00062   return new ColorSymbolPointRep( *this );
00063 }
00064 
00065 const BinToColor *
00066 ColorSymbolPointRep::
00067 getValueTransform ( ) const
00068 {
00069   return m_color_gen;
00070 }
00071 
00072 void
00073 ColorSymbolPointRep::
00074 setValueTransform ( BinToColor * btc )
00075 {
00076   delete m_color_gen;
00077   m_color_gen = btc;
00078 }
00079 
00080 namespace dp = hippodraw::DataPoint3DTuple;
00081 
00082 void
00083 ColorSymbolPointRep::
00084 drawProjectedValues ( const DataSource * ntuple,
00085                       TransformBase * transform,
00086                       ViewBase * view )
00087 {
00088   m_x.clear ();
00089   m_y.clear ();
00090 
00091   unsigned int size = ntuple -> rows ();
00092   const BinaryTransform * bt 
00093     = dynamic_cast < const BinaryTransform * > ( transform );
00094 
00095   SymbolPointRep::beginPlot ( size, bt, view );
00096   const Range & range = view -> getRange ( Axes::Z );
00097   double high = range.high();
00098   double low = range.low();
00099 
00100   bt -> transformZ ( high );
00101   bt -> transformZ ( low );
00102 
00103   Range newrange ( low, high, range.pos() );
00104 
00105   // This needs to be done before we quit.
00106   m_color_gen->setRange ( newrange );
00107 
00108   if ( size == 0 ) return;
00109 
00110   m_x.reserve ( size );  
00111   m_y.reserve ( size );
00112 
00113   m_colors.clear ();
00114   m_colors.reserve ( size );
00115 
00116   for ( unsigned int i = 0; i < size; i++ ) {
00117     const vector < double > & row = ntuple -> getRow ( i );
00118 
00119     double value = row [ dp::Z ];
00120 
00121     if ( range.includes ( value ) == false ) continue;
00122 
00123 
00124     const Range & limit_z = bt -> limitZ ();
00125     bool retval =  limit_z.includes ( value );
00126     if ( retval == false ) continue;
00127     retval = drawProjectedValue ( i, ntuple, bt, view );
00128     if ( retval = false ) continue;
00129 
00130     bt -> transformZ ( value );
00131     Color color;
00132     m_color_gen -> doubleToColor ( value, color );
00133     m_colors.push_back ( color );
00134   }
00135   view -> drawPoints ( m_x, m_y, m_colors, m_plot_symbol, m_size );
00136 }

Generated for HippoDraw-1.14.8.5 by doxygen 1.4.3