00001
00012
00013 #ifdef _MSC_VER
00014 #include "msdevstudio/MSconfig.h"
00015 #endif
00016
00017 #include "BinnerAxis.h"
00018
00019 using std::vector;
00020 using std::string;
00021
00022 int BinnerAxis::s_num_bins = 50;
00023 double BinnerAxis::s_bin_factor = 0.75;
00024
00025 BinnerAxis::BinnerAxis ( const char * name )
00026 : m_name ( name ),
00027 m_dragging ( false ),
00028 m_num_bins ( s_num_bins ),
00029 m_range( 0.0, 50.0 ),
00030 m_offset( 0.0 ),
00031 m_width ( -1.0 )
00032 {
00033 }
00034
00035 BinnerAxis::BinnerAxis ( const BinnerAxis & binner )
00036 : m_name ( binner.m_name ),
00037 m_dragging ( false ),
00038 m_num_bins( binner.m_num_bins ),
00039 m_range ( binner.m_range ),
00040 m_offset ( binner.m_offset ),
00041 m_width ( binner.m_width )
00042 {
00043 }
00044
00045 BinnerAxis::~BinnerAxis ()
00046 {
00047 }
00048
00049 const string &
00050 BinnerAxis::
00051 name () const
00052 {
00053 return m_name;
00054 }
00055
00056 bool
00057 BinnerAxis::hasEqualWidths () const
00058 {
00059 return false;
00060 }
00061
00062 double
00063 BinnerAxis::axisGetLow() const
00064 {
00065 return m_range.low();
00066 }
00067
00068 double
00069 BinnerAxis::axisGetHigh() const
00070 {
00071 return m_range.high();
00072 }
00073
00074 const Range &
00075 BinnerAxis::
00076 getRange() const
00077 {
00078 return m_range;
00079 }
00080
00081 int
00082 BinnerAxis::axisNumberOfBins () const
00083 {
00084 return m_num_bins;
00085 }
00086
00087 void
00088 BinnerAxis::setStartRange ( bool dragging ) const
00089 {
00090 if ( m_dragging == false ) {
00091 m_range_start = m_range;
00092 }
00093
00094 m_dragging = dragging;
00095 }
00096
00097 void
00098 BinnerAxis::setStartWidth ( bool dragging ) const
00099 {
00100 if ( m_dragging == false ) {
00101 m_width_start = m_width;
00102 }
00103
00104 m_dragging = dragging;
00105 }
00106
00107
00108 const vector< double > & BinnerAxis::binEdges ()
00109 {
00110
00111 if( m_bin_edges.size() == 0 )
00112 {
00113 m_bin_edges.resize( m_num_bins + 1);
00114
00115 m_bin_edges[0] = m_range.low();
00116
00117 for( int i = 0; i < m_num_bins; i ++ )
00118 m_bin_edges[i] = m_bin_edges[i-1] + axisBinWidth( i );
00119
00120 m_bin_edges[ m_num_bins + 1 ] = m_range.high();
00121 }
00122
00123 return m_bin_edges;
00124 }