CutController.h

Go to the documentation of this file.
00001 /* -*- mode: c++ -*- */
00002 
00014 #ifndef _CutController_H_
00015 #define _CutController_H_
00016 
00017 #include "graphics/Color.h"
00018 #include "axes/AxesType.h"
00019 
00020 #include <list>
00021 
00022 namespace hippodraw {
00023 class DataRep;
00024 class DataSource;
00025 class PlotterBase;
00026 class CutPlotter;
00027 class Cut1DPlotter;
00028 class Cut2DPlotter;
00029 class NTupleProjector;
00030 class Range;
00031 class TupleCut;
00032 class ViewBase;
00033 
00038 class MDL_HIPPOPLOT_API CutController
00039 {
00040 
00041 private:
00042 
00046   typedef std::vector < PlotterBase * > PlotterList_t;
00047 
00049   static CutController * s_instance;
00050 
00052   CutController ( const CutController & );
00053 
00055   std:: list < std::pair< PlotterBase *, Axes::Type > > m_zoom_pan;
00056   
00061   mutable std::vector < PlotterBase * > m_cut_list;
00062 
00064   mutable std::vector < std::string > m_cut_strings;
00065 
00072   void connectDataRep ( DataRep * rep, 
00073                         const std::vector < const ViewBase * > & views );
00074 
00081   void connectDataRep ( const TupleCut * cut,
00082                         DataRep * rep,
00083                         const std::vector < const ViewBase * > & views );
00084 
00085 protected:
00086 
00089   CutController();
00090 
00091  public:
00092 
00094   static CutController  * instance ();
00095 
00103   Cut1DPlotter * addCut ( PlotterBase * plotter, const std::string & label );
00104 
00110   PlotterBase * addCut ( PlotterBase * plotter,
00111                          std::vector< std::string > & bindings );
00112   
00120   void addCut ( PlotterBase * cut_plotter,
00121                 PlotterBase * plotter );
00122 
00125   void addCuts ( const std::vector < PlotterBase * > & cut_list,
00126                  PlotterBase * plotter );
00127 
00132   void linkCutAndRep ( CutPlotter * cut_plotter,
00133                        DataRep * target );
00134 
00135   
00143   CutPlotter * 
00144   createCut ( const std::string & name, 
00145               const DataSource * source,
00146               const std::vector < std::string > & bindings,
00147               const Color & color ) const;
00148   
00151   void removeCut ( PlotterBase * cut_plotter, PlotterBase * plotter );
00152 
00156   void fillCutList ( const std::vector < PlotterBase * > & plotter_list,
00157                      std::vector < CutPlotter * > & cut_list );
00158 
00162   void fillCutList ( const PlotterBase * plotter,
00163                      std::vector < PlotterBase * > & cut_list );
00164 
00165 private:
00169   void fillCutList ( const DataRep * data_rep,
00170                      std::vector < PlotterBase * > & cut_list );
00171 
00172 public:
00175   const std::vector < const TupleCut * > & 
00176   getCutList ( const DataRep * rep  ) const; 
00177 
00181   const std::vector < PlotterBase * > & 
00182   getCutList ( const std::vector < PlotterBase * > &,
00183                const DataSource * rep  ) const; 
00184 
00190   void fillCutWeb ( const std::vector < PlotterBase * > & plotters,
00191                     std::vector < PlotterBase * > & web );
00192 
00196   void appendToWeb ( PlotterBase * plotter,  PlotterList_t & web );
00197 
00199   void appendToWeb ( CutPlotter * cutter,
00200                      PlotterList_t & web );
00201 
00203   void appendToWeb ( const std::vector < PlotterBase * > & cutters,
00204                      PlotterList_t & web );
00205 
00209   PlotterBase * findPlotter ( const DataRep * data_rep );
00210 
00215   void fillTupleCutList ( const std::vector < const ViewBase * > & views,
00216                           std::vector < const TupleCut * > & cut_list );
00217 
00224   void connectDataRep ( const std::list < ViewBase * > & targets,
00225                         const std::vector < const ViewBase * > & views );
00226 
00231   void setZoomPan ( PlotterBase * plotter,
00232                     hippodraw::Axes::Type axis,  bool yes );
00233 
00236   bool isZoomPan ( const PlotterBase * cut_plotter,
00237                    hippodraw::Axes::Type axis ) const;
00238 
00239   static void fillAcceptedRows ( std::vector < bool > & array,
00240                                  const DataSource * source,
00241                                  const std::vector< const TupleCut * > & cuts);
00242 
00244   void createIdCut ( const DataSource * source, DataSource * destination );
00245 
00246 };
00247 
00248 } // namespace hippodraw
00249 
00250 #endif // _CutController_H_

Generated for HippoDraw Class Library by doxygen