00001 /* -*- mode: c++; -*- */ 00002 00014 #ifndef _BinnerAxisLog_H_ 00015 #define _BinnerAxisLog_H_ 00016 00017 #include "BinnerAxis.h" 00018 00019 #include <vector> 00020 00027 class MDL_HIPPOPLOT_API BinnerAxisLog : public BinnerAxis 00028 { 00029 private: // data members 00030 00032 BinnerAxisLog ( const BinnerAxisLog & binner ); 00033 00036 std::vector<double> bins; 00037 00038 public: // member functions 00039 00041 BinnerAxisLog (); 00042 00044 virtual ~BinnerAxisLog(); 00045 00048 BinnerAxis * clone(); 00049 00052 virtual int axisBinNumber ( double x ) const; 00053 00060 virtual double getCoordinate ( int i ) const; 00061 00064 virtual double axisBinWidth ( int bins_number) const; 00065 00067 virtual void axisSetNumberOfBins( int nb ); 00068 00070 virtual double getConstWid ( ) const; 00071 00072 virtual double getBinWidth ( ) const; 00073 00074 00077 virtual double scaleFactorWid ( ); 00078 00081 virtual const Range & setBinWidth ( double width ); 00082 00083 virtual double calcBinWidth ( int parm, bool dragging ) const; 00084 virtual double calcOffset ( int parm, bool dragging ) const; 00085 00087 virtual double getOffset () const; 00088 00090 virtual const void setOffset ( double offset ); 00091 00092 00093 virtual const Range & setRange ( const Range &, 00094 bool hold_width = true ); 00095 00096 private: // member functions 00097 00098 virtual int getNob ( double wid ) const; 00099 virtual int getNob ( const Range & range ) const; 00100 00103 void setBins(); 00104 00108 virtual void setConstWid ( ); 00109 00111 double calcWidthParm ( int number ) const; 00112 00113 }; 00114 00115 #endif // _BinnerAxisLog_H_