Quark  0.1
ChartView.h++
Go to the documentation of this file.
1 #ifndef __libquark_chart_ChartView_hxx
2 #define __libquark_chart_ChartView_hxx
3 
4 #include <QAbstractItemModel>
5 #include <QFontMetrics>
6 #include <QPainter>
7 #include <QResizeEvent>
8 #include <QWidget>
9 
10 #include <quark/Quark.h++>
11 
12 namespace quark {
13 namespace chart {
14 
15 class LIBQUARK_API ChartView : public QWidget
16 {
17  Q_OBJECT;
18 
19  public:
20 
21  virtual ~ChartView();
22 
23  void setModel(QAbstractItemModel *model);
24  QAbstractItemModel *model() const
25  { return(_model); }
26 
27  Qt::Orientation orientation() const
28  { return(_orientation); }
29  qreal tickInterval() const
30  { return(_tickInterval); }
31  int precision() const
32  { return(_precision); }
33 
34  public slots:
35 
36  void setOrientation(Qt::Orientation orientation);
37 
38  void setTickInterval(qreal tickInterval);
39 
40  void setPrecision(int precision);
41 
42  virtual bool isHorizontalOrientationSupported() const;
43  virtual bool isVerticalOrientationSupported() const;
44 
45  protected:
46 
47  ChartView(QWidget *parent = NULL);
48 
49  int drawHorizontalScale(QPainter &painter, int y);
50  int drawVerticalScale(QPainter &painter, int x);
51 
52  virtual bool hasScale() const = 0;
53  virtual void getMinMaxValues(qreal &minValue, qreal &maxValue) const;
54 
55  void getMinMaxValuesPerSample(qreal &minValue, qreal &maxValue) const;
56  void getMinMaxSumsPerSample(qreal &minSum, qreal &maxSum) const;
57 
58  qreal getSumForSample(int sample) const;
59  qreal scale() const
60  { return(_scale); }
61 
62  virtual void resizeEvent(QResizeEvent *event);
63 
64  virtual QString makeTickLabel(qreal value) const;
65 
66  int coordinateForValue(qreal value) const;
67 
68  static const int SCALE_GAP;
69  static const int INSET;
70 
71  protected slots:
72 
73  virtual void dataChanged();
74 
75  private:
76 
77  static const int TICK_WIDTH;
78 
79  void recalculateScale();
80 
81  void drawVerticalTick(int y, qreal tick, QFontMetrics &fm,
82  QPainter &painter);
83  void drawHorizontalTick(int x, qreal tick, QFontMetrics &fm,
84  QPainter &painter);
85 
86  Qt::Orientation _orientation;
87  qreal _scale;
88  qreal _tickInterval;
89  int _precision;
90  int _scaleWidth;
91  int _zeroX;
92  int _zeroY;
93  QAbstractItemModel *_model;
94 
95  Q_DISABLE_COPY(ChartView)
96 };
97 
98 } // namespace chart
99 } // namespace quark
100 
101 #endif // __libquark_chart_ChartView_hxx
qreal tickInterval() const
Definition: ChartView.h++:29
qreal scale() const
Definition: ChartView.h++:59
static const int INSET
Definition: ChartView.h++:69
Definition: BarChartView.h++:6
Definition: ChartView.h++:15
static const int SCALE_GAP
Definition: ChartView.h++:68
Qt::Orientation orientation() const
Definition: ChartView.h++:27
#define LIBQUARK_API
Definition: Quark.h++:18
QAbstractItemModel * model() const
Definition: ChartView.h++:24
int precision() const
Definition: ChartView.h++:31