X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=logicsignal.h;h=da9c3a42b749c2cf6473136623c1df9784b71e7c;hp=3f8f913db75f23297a3ddfb3803b58ed0688fd19;hb=17d94d7c698b47df918d195a99c32989c9ef7494;hpb=fb0d32cb540e2ae39d80f7eab02779fb965d9f46 diff --git a/logicsignal.h b/logicsignal.h index 3f8f913d..da9c3a42 100644 --- a/logicsignal.h +++ b/logicsignal.h @@ -27,10 +27,14 @@ class LogicData; class LogicSignal : public Signal { private: - struct Point2F - { - GLfloat x, y; - }; + 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, @@ -38,18 +42,32 @@ public: int probe_index); /** - * Paints the signal into a QGLWidget. - * @param widget the QGLWidget to paint into. + * 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(QGLWidget &widget, const QRect &rect, double scale, - double offset); + void paint(QPainter &p, const QRect &rect, double scale, double offset); private: - static void paint_lines(Point2F *points, int count); + + 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;