00001
00002
00014 #ifndef _XyPlotter_H_
00015 #define _XyPlotter_H_
00016
00017 #include "PlotterBase.h"
00018
00019 class AxisRepBase;
00020 class CompositePlotter;
00021 class FontBase;
00022
00043 class MDL_HIPPOPLOT_API XyPlotter : public PlotterBase
00044 {
00045 private:
00046
00050 typedef std::vector < CompositePlotter * > PlotterList_t;
00051
00055 PlotterList_t m_plotters;
00056
00060 double m_x_ratio;
00061
00065 double m_y_ratio;
00066
00069 int m_active_index;
00070
00074 void checkAutoScale ();
00075
00079 void prepareToDraw ();
00080
00081 protected:
00082
00085 CompositePlotter * m_plotter;
00086
00090 AxisRepBase * m_axis_rep;
00091
00094 double m_z_ratio;
00095
00100 void calcAxisRatios ( const CompositePlotter * );
00101
00104 TupleCut * getCutAt ( unsigned int i );
00105
00106 public:
00107
00109 XyPlotter ( const std::string & name = "XyPlotter" );
00110
00112 XyPlotter ( const XyPlotter & plotter );
00113
00115 virtual ~XyPlotter ();
00116
00119 PlotterBase * clone();
00120
00121
00124 void prepareMarginRect ( ViewBase * view );
00125
00128 virtual void setEnableZ ( bool yes = true );
00129
00130 virtual void drawIn ( ViewBase * view );
00131
00136 virtual void drawCrossHairs ( ViewBase * view );
00137
00139 virtual float userToMarginColor ( double c ) const;
00140
00141 virtual NTuple * createNTuple () const;
00142
00145 virtual bool wantsPixmap ( ) const;
00146
00150 void setLabelFont( FontBase* font, hippodraw::Axes::Type axes );
00151
00156 FontBase* labelFont ( hippodraw::Axes::Type axes ) const;
00157
00159 void setTitleFont( FontBase* font );
00160
00164 const FontBase * titleFont ( ) const;
00165
00172 virtual void setActivePlot ( int index, bool redraw );
00173
00176 virtual int activePlotIndex () const;
00177
00181 virtual void addDataRep ( DataRep * rep );
00182
00187 virtual void addDataRepStacked ( DataRep * rep );
00188
00191 virtual void removeDataRep ( DataRep * rep );
00192
00198 virtual void autoScale ( );
00199
00204 virtual void setValueRep ( BinToColor * rep );
00205
00209 virtual void setAutoRanging ( bool flag );
00210
00215 virtual void setAutoRanging ( hippodraw::Axes::Type axis, bool flag );
00216
00219 virtual void setTransform ( TransformBase * );
00220
00223 virtual float userToMarginX ( double x ) const;
00224
00227 virtual float userToMarginY ( double y ) const;
00228
00232 virtual float userToInvertedMarginY ( double y ) const;
00233
00237 virtual double marginToUserX ( double x ) const;
00238
00242 virtual double marginToUserY ( double y ) const;
00243
00247 virtual double marginToInvertedUserY ( double y ) const;
00248
00249 virtual void marginToUserXY ( double mx, double my, bool scaled,
00250 double & ux, double & uy ) const;
00251
00264 virtual NTuple * createPickTuple ();
00265
00280 virtual void fillPickedPoint ( double mx, double my,
00281 std::vector < double > & picked ) const;
00282
00285 virtual void setLowRange ( hippodraw::Axes::Type axis, int parm,
00286 bool dragging );
00287
00290 virtual void setHighRange ( hippodraw::Axes::Type axis, int parm,
00291 bool dragging );
00292
00295 virtual void setScaling ( hippodraw::Axes::Type axis, bool on = true );
00296
00303 virtual double getAspectRatio () const;
00304
00305 virtual void update ();
00306
00310 virtual void setRepresentation ( RepBase * pointrep );
00311
00314 virtual RepBase * representation ( ) const;
00315
00319 virtual AxisModelBase * getAxisModel ( hippodraw::Axes::Type axis ) const;
00320
00324 virtual void setAxisModel ( AxisModelBase * , hippodraw::Axes::Type );
00325
00328 virtual void setErrorDisplay ( hippodraw::Axes::Type axis, bool );
00329
00332 virtual bool errorDisplay ( hippodraw::Axes::Type axis ) const;
00333
00336 virtual void setRepColor ( const Color & );
00337
00340 virtual const Color & repColor () const;
00341
00347 virtual void drawProjValues ( ViewBase * view );
00348
00351 bool hasAutoScaled () const;
00352
00356 virtual bool hasNTupleBindings () const;
00357
00361 virtual bool hasZoomY () const;
00362
00365 virtual void checkAxisScaling ();
00366
00369 virtual ProjectorBase * getProjector ( int i ) const;
00370
00373 virtual ProjectorBase * activeProjector () const;
00374
00377 virtual DataRep * getDataRep ( int index ) const;
00378
00381 virtual DataRep * getTarget ( ) const;
00382
00385 bool isTargetable () const;
00386
00390 virtual int getNumDataReps () const;
00391
00394 virtual int indexOf ( const DataRep * ) const;
00395
00398 virtual double getBinWidth ( hippodraw::Axes::Type ) const;
00399
00403 virtual void setBinWidth ( hippodraw::Axes::Type axis, double width );
00404
00406 virtual void reset ( );
00407
00412 virtual const Range & getRange ( hippodraw::Axes::Type axis,
00413 bool scaled ) const;
00414
00417 virtual double getPosRange ( hippodraw::Axes::Type axis ) const;
00418
00422 virtual double getOffset (hippodraw::Axes::Type axis) const;
00423
00426 virtual TransformBase * getTransform () const;
00427
00433 virtual void addValues ( const std::vector < double > & v );
00434
00435 virtual const std::string &
00436 getInternalLabel ( hippodraw::Axes::Type axis ) const;
00437
00440 virtual const std::string & getLabel ( hippodraw::Axes::Type ) const;
00441
00444 virtual void setLabel ( hippodraw::Axes::Type, const std::string & value );
00445
00448 virtual int getNumberOfEntries () const;
00449
00452 virtual bool hasAxis ( hippodraw::Axes::Type axis ) const;
00453
00458 virtual const BinToColor * getValueRep () const;
00459
00463 virtual bool isAutoRanging ( hippodraw::Axes::Type axis ) const;
00464
00469 virtual void matrixTranspose ( bool yes );
00470
00474 virtual DataRep * selectedDataRep () const;
00475
00478 virtual void setAutoTicks ( hippodraw::Axes::Type axis, bool yes );
00479
00482 virtual void setTicks ( hippodraw::Axes::Type axis,
00483 const std::vector < AxisTick > & ticks );
00484
00489 virtual void setNumberOfBins ( hippodraw::Axes::Type axis,
00490 unsigned int number );
00491
00496 virtual void setOffset ( hippodraw::Axes::Type axis, double offset );
00497
00508 virtual void setRange ( hippodraw::Axes::Type axis, const Range & range,
00509 bool scaled = false, bool adjust_width = true );
00510
00514 void fillCutList ( std::vector < const TupleCut * > & cuts ) const;
00515
00518 virtual void setCutRangeAt ( const Range & range, unsigned int i );
00519
00522 virtual void setCutInverted ( unsigned int i, bool yes = true );
00523
00526 virtual void setCutEnabled ( unsigned int i, bool yes = true );
00527
00528 };
00529
00530 #endif // _XyPlotter_H_