MNE-CPP  beta 1.0
plotter.h
1 #ifndef PLOTTER_H
2 #define PLOTTER_H
3 
4 #include <QMap>
5 #include <QPixmap>
6 #include <QVector>
7 #include <QWidget>
8 #include <QToolButton>
9 #include <QStylePainter>
10 #include <QStyleOptionFocusRect>
11 
12 
13 //class QToolButton;
14 class PlotSettings;
15 
16 class plotter : public QWidget
17 {
18  Q_OBJECT
19 public:
20  plotter(QWidget *parent=0);
21 
22  void setPlotSettings(const PlotSettings &settings);
23  void setCurveData(int id, const QVector <QPointF> &data);
24  void clearCurve(int id);
25 
26  QSize minimumSizeHint() const;
27  QSize sizeHint() const;
28 
29 //public slots:
30 // void zoomIn();
31 // void zoomOut();
32 
33 protected:
34  void paintEvent(QPaintEvent *event);
35  void resizeEvent(QResizeEvent *event);
36 
37 private:
38  void updateRubberBandRegion();
39  void refreshPixmap();
40  void drawGrid(QPainter *painter);
41  void drawCurve(QPainter *painter);
42  void drawRotatedText(QPainter *painter, int x, int y, const QString &text);
43 
44 
45  enum {Margin = 30, xMargin = 80};
46 
47 // QToolButton *zoomInButton;
48 // QToolButton *zoomOutButton;
49  QMap<int, QVector<QPointF> > curveMap;
50  QVector<PlotSettings> zoomStack;
51  int curZoom;
52  bool rubberBandIsShown;
53  QRect rubberBandRect;
54  QPixmap pixmap;
55 
56 
57 
58 };
59 
61 {
62 public:
63  PlotSettings();
64 
65  void scroll(int dx, int dy);
66  void adjust();
67  double spanX() const { return maxX - minX; }
68  double spanY() const { return maxY - minY; }
69 
70  double minX;
71  double maxX;
72  int numXTicks;
73  double minY;
74  double maxY;
75  int numYTicks;
76  QString xlabel;
77  QString ylabel;
78 
79 private:
80  static void adjustAxis(double &min, double &max, int &numTicks);
81 };
82 
83 #endif // PLOTTER_H