X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fviews%2Ftrace%2Fcursorpair.hpp;h=f506c2305937dd23b62a8531461694e3c9854510;hp=7a73e1980395d16b43c22420ed23bb802e6f0304;hb=66279897e318a2549557054d1204c862f7d99469;hpb=1573bf16ba50d1c023ad3a9ce596f0ab6eaeacff diff --git a/pv/views/trace/cursorpair.hpp b/pv/views/trace/cursorpair.hpp index 7a73e198..f506c230 100644 --- a/pv/views/trace/cursorpair.hpp +++ b/pv/views/trace/cursorpair.hpp @@ -21,10 +21,13 @@ #define PULSEVIEW_PV_VIEWS_TRACEVIEW_CURSORPAIR_HPP #include "cursor.hpp" +#include "pv/globalsettings.hpp" #include +#include #include +#include using std::pair; using std::shared_ptr; @@ -35,11 +38,14 @@ namespace pv { namespace views { namespace trace { -class CursorPair : public TimeItem +class View; + +class CursorPair : public TimeItem, public GlobalSettingsInterface { + Q_OBJECT + private: static const int DeltaPadding; - static const QColor ViewportFillColour; public: /** @@ -48,7 +54,8 @@ public: */ CursorPair(View &view); -public: + ~CursorPair(); + /** * Returns true if the item is visible and enabled. */ @@ -71,11 +78,10 @@ public: float get_x() const override; - QPoint point(const QRect &rect) const override; + QPoint drag_point(const QRect &rect) const override; pv::widgets::Popup* create_popup(QWidget *parent) override; -public: QRectF label_rect(const QRectF &rect) const override; /** @@ -96,16 +102,26 @@ public: /** * Constructs the string to display. */ - QString format_string(); - - void compute_text_size(QPainter &p); + QString format_string(int max_width = 0, std::function query_size + = [](const QString& s) -> double { (void)s; return 0; }); pair get_cursor_offsets() const; + virtual void on_setting_changed(const QString &key, const QVariant &value) override; + +public Q_SLOTS: + void on_hover_point_changed(const QWidget* widget, const QPoint &hp); + +private: + QString format_string_sub(int time_precision, int freq_precision, bool show_unit = true); + private: shared_ptr first_, second_; + QColor fill_color_; QSizeF text_size_; + QRectF label_area_; + bool label_incomplete_; }; } // namespace trace