X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=logicsignal.h;h=81fe6a4b1c9a4b89716ab24a91879243e38de006;hp=91c70ab21a9d644bb0814d3601a44a2b0c9c6d4b;hb=190fc91a86d732c7c9d14603b6bf263894a0e159;hpb=e3f65ace22c6bcd371967302f8d01d0769e3a23f diff --git a/logicsignal.h b/logicsignal.h index 91c70ab2..81fe6a4b 100644 --- a/logicsignal.h +++ b/logicsignal.h @@ -1,5 +1,5 @@ /* - * This file is part of the sigrok project. + * This file is part of the PulseView project. * * Copyright (C) 2012 Joel Holdsworth * @@ -26,12 +26,50 @@ class LogicData; class LogicSignal : public Signal { +private: + static const float Margin; + static const float Oversampling; + + static const QColor EdgeColour; + static const QColor HighColour; + static const QColor LowColour; + + static const QColor LogicSignalColours[10]; + public: - LogicSignal(QString name, boost::shared_ptr data, + LogicSignal(QString name, + boost::shared_ptr data, int probe_index); - void paint(QGLWidget &widget, const QRect &rect); + /** + * Paints the signal with a QPainter + * @param p the QPainter to paint into. + * @param rect the rectangular area to draw the trace into. + * @param scale the scale in seconds per pixel. + * @param offset the time to show at the left hand edge of + * the view in seconds. + **/ + void paint(QPainter &p, const QRect &rect, double scale, double offset); + +private: + + int paint_caps(QPainter &p, QLineF *const lines, + std::vector< std::pair > &edges, + bool level, double samples_per_pixel, double pixels_offset, + int x_offset, int y_offset); + + /** + * Get the colour of the logic signal + */ + QColor get_colour() const; + + /** + * When painting into the rectangle, calculate the y + * offset of the zero point. + **/ + int get_nominal_offset(const QRect &rect) const; private: int _probe_index; + boost::shared_ptr _data; };