X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=sigview.h;h=cc7b78af35fa410a4775907a4d7cb3b996996daa;hb=adb4b10cf99ca7c257b2f749bff90b67286d9992;hp=0d1c06f7ca0f29339c5091507704432adbc183e0;hpb=e9c41f8ce607164040ce86abd35a0a8751193f1f;p=pulseview.git diff --git a/sigview.h b/sigview.h index 0d1c06f7..cc7b78af 100644 --- a/sigview.h +++ b/sigview.h @@ -21,53 +21,63 @@ #ifndef SIGVIEW_H #define SIGVIEW_H -#include -#include +#include + +#include -class QPainter; -class QPaintEvent; class SigSession; +class SigViewport; -class SigView : public QGLWidget -{ +class SigView : public QAbstractScrollArea { Q_OBJECT private: - static const int SignalHeight; + static const double MaxScale; + static const double MinScale; + static const int LabelMarginWidth; static const int RulerHeight; - static const int ScaleUnits[3]; - public: explicit SigView(SigSession &session, QWidget *parent = 0); -protected: + double scale() const; + double offset() const; + int v_offset() const; - void initializeGL(); + void zoom(double steps); - void resizeGL(int width, int height); - - void paintEvent(QPaintEvent *event); + void set_scale_offset(double scale, double offset); private: - void mouseMoveEvent(QMouseEvent *event); - void mousePressEvent(QMouseEvent *event); - void mouseReleaseEvent(QMouseEvent *event); + void update_scroll(); + + void zoom(double steps, int offset); private: - void setupViewport(int width, int height); + bool viewportEvent(QEvent *e); - void paintRuler(QPainter &p); + void resizeEvent(QResizeEvent *e); private slots: - void dataUpdated(); + void h_scroll_value_changed(int value); + void v_scroll_value_changed(int value); + + void data_updated(); private: SigSession &_session; + SigViewport *_viewport; + + uint64_t _data_length; + double _scale; double _offset; + + int _v_offset; + + friend class SigViewport; }; #endif // SIGVIEW_H