CutController.h
Go to the documentation of this file.
1 /* -*- mode: c++ -*- */
2 
14 #ifndef _CutController_H_
15 #define _CutController_H_
16 
17 #include "graphics/Color.h"
18 #include "axes/AxesType.h"
19 
20 #include <list>
21 
22 namespace hippodraw {
23 class DataRep;
24 class DataSource;
25 class PlotterBase;
26 class CutPlotter;
27 class Cut1DPlotter;
28 class Cut2DPlotter;
29 class NTupleProjector;
30 class Range;
31 class TupleCut;
32 class ViewBase;
33 
39 {
40 
41 private:
42 
46  typedef std::vector < PlotterBase * > PlotterList_t;
47 
50 
52  CutController ( const CutController & );
53 
55  std:: list < std::pair< PlotterBase *, Axes::Type > > m_zoom_pan;
56 
61  mutable std::vector < PlotterBase * > m_cut_list;
62 
64  mutable std::vector < std::string > m_cut_strings;
65 
72  void connectDataRep ( DataRep * rep,
73  const std::vector < const ViewBase * > & views );
74 
81  void connectDataRep ( const TupleCut * cut,
82  DataRep * rep,
83  const std::vector < const ViewBase * > & views );
84 
85 protected:
86 
89  CutController();
90 
91  public:
92 
94  static CutController * instance ();
95 
103  Cut1DPlotter * addCut ( PlotterBase * plotter, const std::string & label );
104 
110  PlotterBase * addCut ( PlotterBase * plotter,
111  std::vector< std::string > & bindings );
112 
120  void addCut ( PlotterBase * cut_plotter,
121  PlotterBase * plotter );
122 
125  void addCuts ( const std::vector < PlotterBase * > & cut_list,
126  PlotterBase * plotter );
127 
132  void linkCutAndRep ( CutPlotter * cut_plotter,
133  DataRep * target );
134 
135 
143  CutPlotter *
144  createCut ( const std::string & name,
145  const DataSource * source,
146  const std::vector < std::string > & bindings,
147  const Color & color ) const;
148 
151  void removeCut ( PlotterBase * cut_plotter, PlotterBase * plotter );
152 
156  void fillCutList ( const std::vector < PlotterBase * > & plotter_list,
157  std::vector < CutPlotter * > & cut_list );
158 
162  void fillCutList ( const PlotterBase * plotter,
163  std::vector < PlotterBase * > & cut_list );
164 
165 private:
169  void fillCutList ( const DataRep * data_rep,
170  std::vector < PlotterBase * > & cut_list );
171 
172 public:
175  const std::vector < const TupleCut * > &
176  getCutList ( const DataRep * rep ) const;
177 
181  const std::vector < PlotterBase * > &
182  getCutList ( const std::vector < PlotterBase * > &,
183  const DataSource * rep ) const;
184 
190  void fillCutWeb ( const std::vector < PlotterBase * > & plotters,
191  std::vector < PlotterBase * > & web );
192 
196  void appendToWeb ( PlotterBase * plotter, PlotterList_t & web );
197 
199  void appendToWeb ( CutPlotter * cutter,
200  PlotterList_t & web );
201 
203  void appendToWeb ( const std::vector < PlotterBase * > & cutters,
204  PlotterList_t & web );
205 
209  PlotterBase * findPlotter ( const DataRep * data_rep );
210 
215  void fillTupleCutList ( const std::vector < const ViewBase * > & views,
216  std::vector < const TupleCut * > & cut_list );
217 
224  void connectDataRep ( const std::list < ViewBase * > & targets,
225  const std::vector < const ViewBase * > & views );
226 
231  void setZoomPan ( PlotterBase * plotter,
232  hippodraw::Axes::Type axis, bool yes );
233 
236  bool isZoomPan ( const PlotterBase * cut_plotter,
237  hippodraw::Axes::Type axis ) const;
238 
239  static void fillAcceptedRows ( std::vector < bool > & array,
240  const DataSource * source,
241  const std::vector< const TupleCut * > & cuts);
242 
244  void createIdCut ( const DataSource * source, DataSource * destination );
245 
246 };
247 
248 } // namespace hippodraw
249 
250 #endif // _CutController_H_

Generated for HippoDraw Class Library by doxygen