]> sigrok.org Git - pulseview.git/blobdiff - pv/views/trace/logicsignal.hpp
AnalogSignal/LogicSignal: Internally cache settings used for painting
[pulseview.git] / pv / views / trace / logicsignal.hpp
index 04ba1305fc455a8addd8f75236e529ebd04dc5d1..b170e2c08d76da930f5b6d482fad9ad1ce4cb6d4 100644 (file)
@@ -21,6 +21,7 @@
 #define PULSEVIEW_PV_VIEWS_TRACEVIEW_LOGICSIGNAL_HPP
 
 #include <QCache>
+#include <QColor>
 #include <QDebug>
 #include <QSpinBox>
 
@@ -103,6 +104,15 @@ public:
         */
        virtual void paint_fore(QPainter &p, ViewItemPaintParams &pp);
 
+       /**
+        * Determines the closest level change (i.e. edge) to a given sample, which
+        * is useful for e.g. the "snap to edge" functionality.
+        *
+        * @param sample_pos Sample to use
+        * @return The changes left and right of the given position
+        */
+       virtual vector<data::LogicSegment::EdgePair> get_nearest_level_changes(uint64_t sample_pos);
+
 private:
        void paint_caps(QPainter &p, QLineF *const lines,
                vector< pair<int64_t, bool> > &edges,
@@ -124,12 +134,16 @@ private:
        static const QPixmap* get_pixmap(const char *path);
 
 private Q_SLOTS:
+       void on_setting_changed(const QString &key, const QVariant &value);
+
        void on_trigger();
 
        void on_signal_height_changed(int height);
 
 private:
        int signal_height_;
+       QColor high_fill_color_;
+       bool show_sampling_points_, fill_high_areas_;
 
        shared_ptr<pv::devices::Device> device_;