X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=sigview.h;h=3630d17e572cfe074a893d7463370d0af4148a3e;hb=f0fa92c6c431e15f2012003bd35e6e474d7fca8f;hp=c4ddc15b527cbd294b1d6d0f413f5cabd684e521;hpb=fb0d32cb540e2ae39d80f7eab02779fb965d9f46;p=pulseview.git diff --git a/sigview.h b/sigview.h index c4ddc15..3630d17 100644 --- a/sigview.h +++ b/sigview.h @@ -24,6 +24,8 @@ #include #include +class QPainter; +class QPaintEvent; class SigSession; class SigView : public QGLWidget @@ -31,32 +33,56 @@ class SigView : public QGLWidget Q_OBJECT private: + static const double MaxScale; + static const double MinScale; + 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(SigSession &session, QWidget *parent = 0); + void zoom(double steps); + protected: void initializeGL(); void resizeGL(int width, int height); - void paintGL(); + void paintEvent(QPaintEvent *event); private: - void mouseMoveEvent(QMouseEvent *event); void mousePressEvent(QMouseEvent *event); + void mouseMoveEvent(QMouseEvent *event); void mouseReleaseEvent(QMouseEvent *event); + void wheelEvent(QWheelEvent *event); + +private: + void setup_viewport(int width, int height); + + void paint_ruler(QPainter &p); + + void zoom(double steps, int offset); private slots: - void dataUpdated(); + void data_updated(); private: SigSession &_session; double _scale; double _offset; + + QPoint _mouse_down_point; + double _mouse_down_offset; }; #endif // SIGVIEW_H