X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=sigview.h;h=d66898f4c0981b8f2a933cc425402e1251570fc5;hp=318104b9385639f499b4d9e8fbdbeddf2333e04f;hb=1dd95c70180967864bd83d9679f3e9a6c2a4e383;hpb=6fa02541c670ebdd8a1985a29aba798823469f64 diff --git a/sigview.h b/sigview.h index 318104b9..d66898f4 100644 --- a/sigview.h +++ b/sigview.h @@ -21,18 +21,61 @@ #ifndef SIGVIEW_H #define SIGVIEW_H -#include +#include +#include -class SigView : public QAbstractScrollArea +class QPainter; +class QPaintEvent; +class SigSession; + +class SigView : public QGLWidget { Q_OBJECT + +private: + static const int SignalHeight; + static const int LabelMarginWidth; + static const int RulerHeight; + + static const int MinorTickSubdivision; + static const int ScaleUnits[3]; + + static const QString SIPrefixes[9]; + static const int FirstSIPrefixPower; + public: - explicit SigView(QWidget *parent = 0); - -signals: - -public slots: - + explicit SigView(SigSession &session, QWidget *parent = 0); + +protected: + + void initializeGL(); + + void resizeGL(int width, int height); + + void paintEvent(QPaintEvent *event); + +private: + void mousePressEvent(QMouseEvent *event); + void mouseMoveEvent(QMouseEvent *event); + void mouseReleaseEvent(QMouseEvent *event); + void wheelEvent(QWheelEvent *event); + +private: + void setupViewport(int width, int height); + + void paintRuler(QPainter &p); + +private slots: + void dataUpdated(); + +private: + SigSession &_session; + + double _scale; + double _offset; + + QPoint _mouse_down_point; + double _mouse_down_offset; }; #endif // SIGVIEW_H