Fixed timeline scale
[pulseview.git] / pv / signal.h
index 2351a2f911256c0a591c953a6d7d9d63e1421848..8faff77c6a11ba1dc5550b4be9cb23527724f900 100644 (file)
@@ -34,6 +34,7 @@ class Signal
 {
 private:
        static const QSizeF LabelPadding;
+       static const int LabelHitPadding;
 
 protected:
        Signal(QString name);
@@ -52,15 +53,35 @@ public:
        virtual void paint(QPainter &p, const QRect &rect, double scale,
                double offset) = 0;
 
+
        /**
         * Paints the signal label into a QGLWidget.
         * @param p the QPainter to paint into.
         * @param rect the rectangular area to draw the label into.
+        * @param hover true if the label is being hovered over by the mouse.
         */
-       virtual void paint_label(QPainter &p, const QRect &rect);
+       virtual void paint_label(QPainter &p, const QRect &rect,
+               bool hover);
 
-protected:
+       /**
+        * Determines if a point is in the header label rect.
+        * @param p the QPainter to paint into.
+        * @param rect the rectangular area to draw the label into.
+        * @param point the point to test.
+        */
+       bool pt_in_label_rect(QPainter &p, const QRect &rect,
+               const QPoint &point);
 
+private:
+       /**
+        * Computes the outline rectangle of a label.
+        * @param p the QPainter to lay out text with.
+        * @param rect The rectangle of the signal header.
+        * @return Returns the rectangle of the signal label.
+        */
+       virtual QRectF get_label_rect(QPainter &p, const QRect &rect);
+
+protected:
        /**
         * Get the colour of the logic signal
         */