00001 #ifndef HISTOGRAM_H 00002 #define HISTOGRAM_H 00003 00004 #define HISTOGRAMMPOINTWIDTH 5 00005 00006 00007 #include <QtGui/QWidget> 00008 #include <iostream> 00009 #include <Vector> 00010 #include "glwidget.h" 00011 #include "histogrampoint.h" 00012 00013 00014 00015 class Histogram : public QWidget 00016 { 00017 Q_OBJECT 00018 00019 public: 00020 Histogram(QWidget *parent = 0); 00021 ~Histogram(); 00022 00023 void setHistogramValues(int *values) {m_histogramValues = values; m_points.clear();}; 00024 void setMinDensity(int density) {m_startRange = density;}; 00025 void setMaxDensity(int density) {m_endRange = density;}; 00026 std::vector<HistogramPoint> *getTransferPoints() {return &m_points;}; 00027 void setGLWidget(GLWidget *widget) {m_glwidget = widget;}; 00028 public slots: 00029 00030 signals: 00031 00032 protected: 00033 void paintEvent(QPaintEvent *event); 00034 void mousePressEvent(QMouseEvent *e); 00035 void mouseReleaseEvent(QMouseEvent *e); 00036 void mouseDoubleClickEvent(QMouseEvent *e); 00037 void mouseMoveEvent(QMouseEvent *e); 00038 00039 std::vector<HistogramPoint>::iterator getHistogramPoint(int x, int y); 00040 void drawPointLine(QPainter &painter, HistogramPoint &from, HistogramPoint &to); 00041 00042 private: 00043 int *m_histogramValues; 00044 int m_startRange; 00045 int m_endRange; 00046 HistogramPoint m_activePoint; 00047 std::vector<HistogramPoint> m_points; 00048 GLWidget *m_glwidget; 00049 00050 00051 }; 00053 00054 #endif