graph_inset.h

Go to the documentation of this file.
00001 #ifndef __GRAPH_INSET_H
00002 #define __GRAPH_INSET_H
00003 
00009 #include <config.h>
00010 #include <vector>
00011 #include <list>
00012 #include <string>
00013 
00014 #include <graph/vertex.h>
00015 #include <util/vector.h>
00016 #include <util/parms.h>
00017 
00018 class Viewer;
00019 class QString;
00020 
00021 namespace util
00022 {
00023   class Palette;
00024 
00030   class GraphInset
00031   {
00032   public:
00036     struct Data
00037     {
00038       Data(double t, const std::vector<double>& vs, bool c)
00039         : time(t)
00040         , values(vs)
00041         , changed(c)
00042       { }
00043 
00044       Data(const Data& copy)
00045         : time(copy.time)
00046         , values(copy.values)
00047         , changed(copy.changed)
00048       { }
00049 
00053       double time;
00054 
00058       std::vector<double> values;
00059 
00063       bool changed;
00064     };
00065 
00069     typedef std::list<Data>::const_iterator iterator;
00070 
00074     typedef std::list<Data>::const_reverse_iterator reverse_iterator;
00075 
00079     typedef Data value_type;
00083     typedef const Data* pointer;
00087     typedef const Data& reference;
00088 
00095     GraphInset(int nb_lines = 0);
00096 
00103     void readParms(const QString& section, util::Parms parms);
00104 
00113     void addData( double time, const std::vector<double>& values, bool changed = false);
00114 
00118     void addData( double time, double value, bool changed = false)
00119     {
00120       std::vector<double> vs(1, value);
00121       addData(time, vs, changed);
00122     }
00123 
00127     void addData( double time, double value1, double value2, bool changed = false)
00128     {
00129       std::vector<double> vs(2, value1);
00130       vs[1] = value2;
00131       addData(time, vs, changed);
00132     }
00133 
00137     void addData( double time, double value1, double value2, double value3, bool changed = false)
00138     {
00139       std::vector<double> vs(3, value1);
00140       vs[1] = value2;
00141       vs[2] = value3;
00142       addData(time, vs, changed);
00143     }
00144 
00148     void addData( double time, double value1, double value2, double value3, double value4, bool changed = false)
00149     {
00150       std::vector<double> vs(4, value1);
00151       vs[1] = value2;
00152       vs[2] = value3;
00153       vs[3] = value4;
00154       addData(time, vs, changed);
00155     }
00156 
00160     void addData( double time, double value1, double value2, double value3, double value4, double value5, bool changed = false)
00161     {
00162       std::vector<double> vs(5, value1);
00163       vs[1] = value2;
00164       vs[2] = value3;
00165       vs[3] = value4;
00166       vs[4] = value5;
00167       addData(time, vs, changed);
00168     }
00169 
00173     template <size_t N>
00174     void addData( double time, const util::Vector<N,double>& values, bool changed = false)
00175     {
00176       std::vector<double> vec_values(N);
00177       for(size_t i = 0 ; i < N ; ++i)
00178       {
00179         vec_values[i] = values[i];
00180       }
00181       addData(time, vec_values, changed);
00182     }
00183 
00187     void addData( double time, const double* values, bool changed = false)
00188     {
00189       std::vector<double> vec_values(_numberOfLines);
00190       for(size_t i = 0 ; i < _numberOfLines ; ++i)
00191       {
00192         vec_values[i] = values[i];
00193       }
00194       addData(time, vec_values, changed);
00195     }
00196 
00197     void dataSourceChanged();
00198 
00203     void cleanData();
00204 
00208     void draw(Viewer* viewer, const util::Palette& palette);
00209 
00216     void drawWithName(size_t id, Viewer* viewer);
00217 
00223     void drawFrame(size_t id, Viewer* viewer);
00224 
00228     void closeGraph();
00229 
00233     void openGraph();
00234 
00238     bool graphClosed() const { return closed; }
00239 
00243     void setTime(double t) { time = t; }
00244 
00248     void clear();
00249 
00253     int numberOfLines() const { return (int)_numberOfLines; }
00254 
00260     void setNumberOfLines(size_t nb_lines);
00261 
00268     void check();
00269 
00273     bool writeCSV(const QString& filename);
00274 
00276 
00277 
00280     size_t size() const { return data.size(); }
00281 
00282     iterator begin() const { return data.begin(); }
00283 
00284     iterator end() const { return data.end(); }
00285 
00286     reverse_iterator rbegin() const { return data.rbegin(); }
00287 
00288     reverse_iterator rend() const { return data.rend(); }
00289 
00290     reference front() const { return data.front(); }
00291 
00292     reference back() const { return data.back(); }
00294 
00295   protected:
00299     size_t _numberOfLines;
00300 
00304     bool initialized;
00305 
00309     bool closed;
00310 
00314     std::list<Data> data;
00315 
00316   public:
00317 
00321     double timeSpan;
00322 
00328     int backColor;
00329 
00333     std::vector<int> linesColor;
00334 
00338     std::vector<double> linesWidth;
00339 
00343     std::vector<util::Vector<2, double> > linesMinMaxView;
00344 
00348     int contourColor;
00349 
00353     int contourWidth;
00354 
00364     util::Vector<2,int> windowPosition;
00365 
00369     util::Vector<2,size_t> windowSize;
00370 
00375     int changeSourceColor;
00376 
00381     int changeSourceWidth;
00382 
00386     double backgroundOffset;
00387 
00391     double contourOffset;
00392 
00396     double changeSourceOffset;
00397 
00401     std::vector<double> linesOffset;
00402 
00406     double time;
00407 
00411     bool keepAllData;
00412 
00420     bool autoOpenClose;
00421 
00425     bool showAll;
00426 
00430     std::vector<size_t> showIndices;
00431 
00432   };
00433 }
00434 
00435 #endif // GRAPH_INSET_H
00436 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
Generated on Fri May 31 15:37:53 2013 for VVE by  doxygen 1.6.3