]> sigrok.org Git - pulseview.git/blobdiff - pv/view/view.hpp
TraceView: Improve the way we do the initial scrolling setup
[pulseview.git] / pv / view / view.hpp
index e083fa13fdc1899d31da1ad6fe5978ebc2bb5483..1819ffddaba08873b30b10d23a900beed0001189 100644 (file)
@@ -20,8 +20,7 @@
 #ifndef PULSEVIEW_PV_VIEWS_TRACEVIEW_VIEW_HPP
 #define PULSEVIEW_PV_VIEWS_TRACEVIEW_VIEW_HPP
 
-#include <stdint.h>
-
+#include <cstdint>
 #include <list>
 #include <memory>
 #include <set>
 
 #include <QAbstractScrollArea>
 #include <QSizeF>
-#include <QTimer>
 
 #include <pv/data/signaldata.hpp>
-#include <pv/views/viewbase.hpp>
 #include <pv/util.hpp>
+#include <pv/views/viewbase.hpp>
 
 #include "cursorpair.hpp"
 #include "flag.hpp"
@@ -55,6 +53,10 @@ namespace pv {
 
 class Session;
 
+namespace data {
+class Logic;
+}
+
 namespace views {
 
 namespace TraceView {
@@ -68,16 +70,18 @@ class Trace;
 class Viewport;
 class TriggerMarker;
 
-class CustomAbstractScrollArea : public QAbstractScrollArea {
+class CustomAbstractScrollArea : public QAbstractScrollArea
+{
        Q_OBJECT
 
 public:
-       CustomAbstractScrollArea(QWidget *parent = 0);
+       CustomAbstractScrollArea(QWidget *parent = nullptr);
        void setViewportMargins(int left, int top, int right, int bottom);
        bool viewportEvent(QEvent *event);
 };
 
-class View : public ViewBase, public TraceTreeItemOwner {
+class View : public ViewBase, public TraceTreeItemOwner
+{
        Q_OBJECT
 
 private:
@@ -91,12 +95,11 @@ private:
        static const pv::util::Timestamp MinScale;
 
        static const int MaxScrollValue;
-       static const int MaxViewAutoUpdateRate;
 
        static const int ScaleUnits[3];
 
 public:
-       explicit View(Session &session, bool is_main_view=false, QWidget *parent = 0);
+       explicit View(Session &session, bool is_main_view=false, QWidget *parent = nullptr);
 
        Session& session();
        const Session& session() const;
@@ -108,7 +111,7 @@ public:
 
        virtual void clear_signals();
 
-       virtual void add_signal(const shared_ptr<Signal> signal);
+       void add_signal(const shared_ptr<Signal> signal);
 
 #ifdef ENABLE_DECODE
        virtual void clear_decode_signals();
@@ -211,11 +214,21 @@ public:
         */
        void enable_coloured_bg(bool state);
 
+       /**
+        * Returns true if the trace background should be drawn with a coloured background.
+        */
+       bool coloured_bg() const;
+
        /**
         * Enable or disable showing sampling points.
         */
        void enable_show_sampling_points(bool state);
 
+       /**
+        * Enable or disable showing the analog minor grid.
+        */
+       void enable_show_analog_minor_grid(bool state);
+
        /**
         * Returns true if cursors are displayed. false otherwise.
         */
@@ -341,9 +354,8 @@ private Q_SLOTS:
 
        void signals_changed();
        void capture_state_updated(int state);
-       void data_updated();
 
-       void perform_delayed_view_update();
+       virtual void perform_delayed_view_update();
 
        void process_sticky_events();
 
@@ -408,7 +420,6 @@ private:
        bool sticky_scrolling_;
        bool coloured_bg_;
        bool always_zoom_to_fit_;
-       QTimer delayed_view_updater_;
 
        pv::util::Timestamp tick_period_;
        pv::util::SIPrefix tick_prefix_;
@@ -433,8 +444,6 @@ private:
 
        // A nonzero value indicates the v offset to restore. See View::resizeEvent()
        int saved_v_offset_;
-
-       bool size_finalized_;
 };
 
 } // namespace TraceView