00001 /* -*- mode: c++ -*- */ 00002 00014 #ifndef _LineProjector_H_ 00015 #define _LineProjector_H_ 00016 00017 #include "ProjectorBase.h" 00018 00019 #include "axes/AxesType.h" 00020 #include "datasrcs/DataPointTuple.h" 00021 00026 class MDL_HIPPOPLOT_API LineProjector : public ProjectorBase 00027 { 00028 00029 private: 00030 00033 double m_value; 00034 00037 hippodraw::Axes::Type m_axis; 00038 00041 std::string m_title; 00042 00044 LineProjector( const LineProjector & ); 00045 00046 public: 00047 00050 LineProjector ( hippodraw::Axes::Type, double value ); 00051 00054 virtual ~LineProjector(); 00055 00056 virtual ProjectorBase * clone(); 00057 00058 /* The required virtual functions. */ 00059 virtual void addPointReps (); 00060 virtual bool isEmpty () const; 00061 virtual Range dataRangeOn ( hippodraw::Axes::Type ) const; 00062 virtual const std::string & getTitle() const; 00063 virtual Range valueRange () const; 00064 virtual double getPosOn ( hippodraw::Axes::Type ) const; 00065 virtual const std::string & getXLabel() const; 00066 virtual const std::string & getYLabel ( bool flag = false ) const; 00067 virtual int getNumberOfEntries () const; 00068 virtual DataSource * createNTuple () const; 00069 00070 virtual void prepareValues (); 00071 00074 void setValue ( double value ); 00075 00076 protected: 00077 00078 virtual void fillProjectedValues ( DataSource * ntuple, 00079 bool in_range = false ) const; 00080 00081 virtual void fillDataSource ( DataSource * ntuple, 00082 bool in_range = false ) const; 00083 00084 }; 00085 00086 #endif // _LineProjector_H_