X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fsignal.h;h=2afe9528dfe8cceac605d38c6600977f7381b61c;hp=2351a2f911256c0a591c953a6d7d9d63e1421848;hb=b3b57abc4fcfea1471529e9d116eaf11905f6639;hpb=51e77110d4316fd0106f8306f5e1f0523c5bf7d7 diff --git a/pv/signal.h b/pv/signal.h index 2351a2f9..2afe9528 100644 --- a/pv/signal.h +++ b/pv/signal.h @@ -18,8 +18,12 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +#ifndef PULSEVIEW_PV_SIGNAL_H +#define PULSEVIEW_PV_SIGNAL_H + #include +#include #include #include #include @@ -33,14 +37,32 @@ class SignalData; class Signal { private: - static const QSizeF LabelPadding; + static const int LabelHitPadding; protected: Signal(QString name); public: + /** + * Gets the name of this signal. + */ QString get_name() const; + /** + * Sets the name of the signal. + */ + void set_name(QString name); + + /** + * Get the colour of the signal. + */ + QColor get_colour() const; + + /** + * Set the colour of the signal. + */ + void set_colour(QColor colour); + /** * Paints the signal with a QPainter * @param p the QPainter to paint into. @@ -52,20 +74,39 @@ 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 rect the rectangular area to draw the label into. + * @param point the point to test. + */ + bool pt_in_label_rect(const QRect &rect, const QPoint &point); + +private: /** - * Get the colour of the logic signal + * Computes an caches the size of the label text. */ - virtual QColor get_colour() const = 0; + void compute_text_size(QPainter &p); + /** + * 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. + */ + QRectF get_label_rect(const QRect &rect); + +protected: /** * When painting into the rectangle, calculate the y * offset of the zero point. @@ -74,6 +115,11 @@ protected: protected: QString _name; + QColor _colour; + + QSizeF _text_size; }; } // namespace pv + +#endif // PULSEVIEW_PV_SIGNAL_H