00001 /* -*- mode: c++ -*- */ 00002 00014 #ifndef _BinsFunction_H_ 00015 #define _BinsFunction_H_ 00016 00017 #include "axes/AxesType.h" 00018 #include "axes/Range.h" 00019 00020 #include <list> 00021 00022 // class ProjValueBase; 00023 class FunctionBase; 00024 00039 class MDL_HIPPOPLOT_API BinsFunction //: public BinsBase 00040 { 00041 protected: 00042 00044 int m_num_bins; 00045 00048 Range m_x_range; 00049 00052 Range m_y_range; 00053 00056 Range m_xv_range; 00057 00060 Range m_yv_range; 00061 00063 FunctionBase * m_function; 00064 00066 bool m_values_dirty; 00067 00071 void resize ( unsigned int new_size, 00072 std::list < std::vector < double > > & values ); 00073 00075 void smoothCurve ( std::list < std::vector < double > > & ); 00076 00077 public: 00078 00083 BinsFunction ( int num_bins = 10, 00084 double low = 0.0, 00085 double high = 50.0 ); 00086 00088 BinsFunction ( const BinsFunction & binner ); 00089 00091 virtual ~BinsFunction (); 00092 00095 virtual BinsFunction * clone() const; 00096 00097 virtual void setNumberOfBins ( hippodraw::Axes::Type axis, int num_bins ); 00098 00100 virtual void 00101 createValuesArray ( std::list < std::vector < double > > & array ); 00102 00103 virtual const Range & setRange ( hippodraw::Axes::Type axis, 00104 const Range &, 00105 bool hold_width = true ); 00106 00110 void setRangeOn ( hippodraw::Axes::Type axis, 00111 const Range & data, const Range & view ); 00112 00114 void setFunction ( FunctionBase * ); 00115 00116 }; 00117 00118 #endif // _BinsFunction_H_