#define PULSEVIEW_PV_VIEWS_TRACEVIEW_CURSORPAIR_HPP
#include "cursor.hpp"
+#include "pv/globalsettings.hpp"
#include <memory>
+#include <QColor>
#include <QPainter>
+#include <QRect>
using std::pair;
using std::shared_ptr;
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:
/**
*/
CursorPair(View &view);
-public:
+ ~CursorPair();
+
/**
* Returns true if the item is visible and enabled.
*/
*/
void set_time(const pv::util::Timestamp& time) override;
+ virtual const pv::util::Timestamp time() const override;
+
float get_x() const override;
- QPoint point(const QRect &rect) const override;
+ virtual const pv::util::Timestamp delta(const pv::util::Timestamp& other) const override;
+
+ QPoint drag_point(const QRect &rect) const override;
pv::widgets::Popup* create_popup(QWidget *parent) override;
-public:
+ QMenu* create_header_context_menu(QWidget *parent) override;
+
QRectF label_rect(const QRectF &rect) const override;
/**
/**
* Constructs the string to display.
*/
- QString format_string();
-
- void compute_text_size(QPainter &p);
+ QString format_string(int max_width = 0, std::function<double(const QString&)> query_size
+ = [](const QString& s) -> double { (void)s; return 0; });
pair<float, float> 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<Cursor> first_, second_;
+ QColor fill_color_;
QSizeF text_size_;
+ QRectF label_area_;
+ bool label_incomplete_;
+ bool show_interval_, show_frequency_, show_samples_;
};
} // namespace trace