X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=logicsignal.h;h=8677afe3c03e30e9c5851ca952f8a91296593a7e;hp=28c8247a90c7cb3d43ed358e4c388c2f43116ab2;hb=adb4b10cf99ca7c257b2f749bff90b67286d9992;hpb=3b18c57d8f224791481e0b768065bd4d11a3d79e diff --git a/logicsignal.h b/logicsignal.h index 28c8247a..8677afe3 100644 --- a/logicsignal.h +++ b/logicsignal.h @@ -26,21 +26,58 @@ class LogicData; class LogicSignal : public Signal { +private: + struct Point2F + { + GLfloat x, y; + }; + +private: + static const float Margin; + + static const float EdgeColour[3]; + static const float HighColour[3]; + static const float LowColour[3]; + + static const QColor LogicSignalColours[10]; + public: - LogicSignal(QString name, boost::shared_ptr data, + LogicSignal(QString name, + boost::shared_ptr data, int probe_index); /** * Paints the signal into a QGLWidget. * @param widget the QGLWidget to paint into. * @param rect the rectangular area to draw the trace into. - * @param scale the scale in femtoseconds per pixel. + * @param scale the scale in seconds per pixel. * @param offset the time to show at the left hand edge of - * the view in femtoseconds. + * the view in seconds. + **/ + void paint(QGLWidget &widget, const QRect &rect, double scale, + double offset); + +private: + + int paint_caps(Point2F *const cap_points, + std::vector< std::pair > &edges, + bool level, double samples_per_pixel, double pixels_offset, + int x_offset, int y_offset); + + static void paint_lines(Point2F *points, int count); + + /** + * Get the colour of the logic signal + */ + QColor get_colour() const; + + /** + * When painting into the rectangle, calculate the y + * offset of the zero point. **/ - void paint(QGLWidget &widget, const QRect &rect, uint64_t scale, - int64_t offset); + int get_nominal_offset(const QRect &rect) const; private: int _probe_index; + boost::shared_ptr _data; };