]> sigrok.org Git - pulseview.git/blobdiff - sigview.cpp
Added initial toolbar
[pulseview.git] / sigview.cpp
index 8461af6e455f37b1182ef9b9bc1a8197ada54d09..c46476a30f386920b799e68580b1c31f4c0b2cf2 100644 (file)
@@ -35,6 +35,9 @@
 using namespace boost;
 using namespace std;
 
+const double SigView::MaxScale = 1e9;
+const double SigView::MinScale = 1e-15;
+
 const int SigView::SignalHeight = 50;
 const int SigView::LabelMarginWidth = 70;
 const int SigView::RulerHeight = 30;
@@ -86,6 +89,8 @@ void SigView::paintEvent(QPaintEvent *event)
        glClear(GL_COLOR_BUFFER_BIT);
 
        // Plot the signal
+       glEnable(GL_SCISSOR_TEST);
+       glScissor(LabelMarginWidth, 0, width(), height());
        offset = RulerHeight;
        BOOST_FOREACH(const shared_ptr<Signal> s, sigs)
        {
@@ -99,6 +104,8 @@ void SigView::paintEvent(QPaintEvent *event)
                offset += SignalHeight;
        }
 
+       glDisable(GL_SCISSOR_TEST);
+
        // Prepare for QPainter rendering
        glMatrixMode(GL_MODELVIEW);
        glPopMatrix();
@@ -161,6 +168,7 @@ void SigView::wheelEvent(QWheelEvent *event)
        const double x = event->x() - LabelMarginWidth;
        const double cursor_offset = _offset + _scale * x;
        _scale *= powf(3.0/2.0, -event->delta() / 120);
+       _scale = max(min(_scale, MaxScale), MinScale);
        _offset = cursor_offset - _scale * x;
        update();
 }