]> sigrok.org Git - pulseview.git/blobdiff - pv/view/analogsignal.cpp
AnalogSignal: Don't paint logic when there's no logic data
[pulseview.git] / pv / view / analogsignal.cpp
index 4479885da72589eb678b45ad7f45d16830b8fc18..5777628747cd550b8b3624567b3a65407c8fe07f 100644 (file)
@@ -40,9 +40,9 @@
 #include "pv/data/logic.hpp"
 #include "pv/data/logicsegment.hpp"
 #include "pv/data/signalbase.hpp"
-#include "pv/view/view.hpp"
-#include "pv/view/logicsignal.hpp"
 #include "pv/globalsettings.hpp"
+#include "pv/view/logicsignal.hpp"
+#include "pv/view/view.hpp"
 
 #include <libsigrokcxx/libsigrokcxx.hpp>
 
@@ -176,7 +176,7 @@ void AnalogSignal::scale_handle_drag_release()
        update_scale();
 }
 
-void AnalogSignal::paint_back(QPainter &p, const ViewItemPaintParams &pp)
+void AnalogSignal::paint_back(QPainter &p, ViewItemPaintParams &pp)
 {
        if (base_->enabled()) {
                Trace::paint_back(p, pp);
@@ -184,7 +184,7 @@ void AnalogSignal::paint_back(QPainter &p, const ViewItemPaintParams &pp)
        }
 }
 
-void AnalogSignal::paint_mid(QPainter &p, const ViewItemPaintParams &pp)
+void AnalogSignal::paint_mid(QPainter &p, ViewItemPaintParams &pp)
 {
        assert(base_->analog_data());
        assert(owner_);
@@ -237,7 +237,7 @@ void AnalogSignal::paint_mid(QPainter &p, const ViewItemPaintParams &pp)
        }
 }
 
-void AnalogSignal::paint_fore(QPainter &p, const ViewItemPaintParams &pp)
+void AnalogSignal::paint_fore(QPainter &p, ViewItemPaintParams &pp)
 {
        if (!enabled())
                return;
@@ -264,13 +264,19 @@ void AnalogSignal::paint_grid(QPainter &p, int y, int left, int right)
 {
        p.setRenderHint(QPainter::Antialiasing, false);
 
+       GlobalSettings settings;
+       const bool show_analog_minor_grid =
+               settings.value(GlobalSettings::Key_View_ShowAnalogMinorGrid).toBool();
+
        if (pos_vdivs_ > 0) {
                p.setPen(QPen(GridMajorColor, 1, Qt::DashLine));
                for (int i = 1; i <= pos_vdivs_; i++) {
                        const float dy = i * div_height_;
                        p.drawLine(QLineF(left, y - dy, right, y - dy));
                }
+       }
 
+       if ((pos_vdivs_ > 0) && show_analog_minor_grid) {
                p.setPen(QPen(GridMinorColor, 1, Qt::DashLine));
                for (int i = 0; i < pos_vdivs_; i++) {
                        const float dy = i * div_height_;
@@ -289,7 +295,9 @@ void AnalogSignal::paint_grid(QPainter &p, int y, int left, int right)
                        const float dy = i * div_height_;
                        p.drawLine(QLineF(left, y + dy, right, y + dy));
                }
+       }
 
+       if ((pos_vdivs_ > 0) && show_analog_minor_grid) {
                p.setPen(QPen(GridMinorColor, 1, Qt::DashLine));
                for (int i = 0; i < neg_vdivs_; i++) {
                        const float dy = i * div_height_;
@@ -412,7 +420,7 @@ void AnalogSignal::paint_envelope(QPainter &p,
        delete[] e.samples;
 }
 
-void AnalogSignal::paint_logic_mid(QPainter &p, const ViewItemPaintParams &pp)
+void AnalogSignal::paint_logic_mid(QPainter &p, ViewItemPaintParams &pp)
 {
        QLineF *line;
 
@@ -422,7 +430,7 @@ void AnalogSignal::paint_logic_mid(QPainter &p, const ViewItemPaintParams &pp)
 
        const int y = get_visual_y();
 
-       if (!base_->enabled())
+       if (!base_->enabled() || !base_->logic_data())
                return;
 
        const int signal_margin =
@@ -435,6 +443,7 @@ void AnalogSignal::paint_logic_mid(QPainter &p, const ViewItemPaintParams &pp)
 
        const deque< shared_ptr<pv::data::LogicSegment> > &segments =
                base_->logic_data()->logic_segments();
+
        if (segments.empty())
                return;