33 using std::shared_ptr;
44 first_(new
Cursor(view, 0.0)),
45 second_(new
Cursor(view, 1.0))
68 second_->set_time(time + delta);
78 return first_->point(rect);
91 const pair<float, float> normal_offsets(
92 (offsets.first < offsets.second) ? offsets :
93 make_pair(offsets.second, offsets.first));
95 const float height = label_size.height();
96 const float left = max(normal_offsets.first +
DeltaPadding, -height);
97 const float right = min(normal_offsets.second -
DeltaPadding,
98 (
float)rect.width() + height);
100 return QRectF(left, rect.height() - label_size.height() -
102 right - left, height);
113 const QColor text_colour =
116 p.setPen(text_colour);
120 const int radius = delta_rect.height() / 2;
121 const QRectF text_rect(delta_rect.intersected(
122 rect).adjusted(radius, 0, -radius, 0));
123 if (text_rect.width() >=
text_size_.width()) {
124 const int highlight_radius = delta_rect.height() / 2 - 2;
127 p.setBrush(Qt::transparent);
129 p.drawRoundedRect(delta_rect, radius, radius);
135 p.drawRoundedRect(delta_rect, radius, radius);
137 delta_rect.adjust(1, 1, -1, -1);
139 p.drawRoundedRect(delta_rect, highlight_radius, highlight_radius);
141 p.setPen(text_colour);
142 p.drawText(text_rect, Qt::AlignCenter | Qt::AlignVCenter,
156 const int l = (int)max(min(
157 offsets.first, offsets.second), 0.0f);
158 const int r = (int)min(max(
159 offsets.first, offsets.second), (float)pp.
width());
161 p.drawRect(l, pp.
top(), r - l, pp.
height());
174 return QString(
"%1 / %2").arg(s1).arg(s2);
190 return pair<float, float>(
static const QSizeF LabelPadding
void paint_back(QPainter &p, const ViewItemPaintParams &pp)
std::pair< float, float > get_cursor_offsets() const
pv::util::SIPrefix tick_prefix() const
std::shared_ptr< Cursor > first() const
static const QColor ViewportFillColour
QString format_time_si(const Timestamp &v, SIPrefix prefix, unsigned int precision, QString unit, bool sign)
void paint_label(QPainter &p, const QRect &rect, bool hover)
std::shared_ptr< Cursor > second() const
static const int ArrowSize
static const QColor FillColour
unsigned int tick_precision() const
static QColor select_text_colour(QColor background)
static QString format_time_with_distance(const pv::util::Timestamp &distance, const pv::util::Timestamp &t, pv::util::SIPrefix prefix=pv::util::SIPrefix::unspecified, pv::util::TimeUnit unit=pv::util::TimeUnit::Time, unsigned precision=0, bool sign=true)
static const int DeltaPadding
void compute_text_size(QPainter &p)
util::TimeUnit time_unit() const
bool cursors_shown() const
pv::widgets::Popup * create_popup(QWidget *parent)
void set_time(const pv::util::Timestamp &time) override
QPoint point(const QRect &rect) const
const pv::util::Timestamp & offset() const
boost::multiprecision::number< boost::multiprecision::cpp_dec_float< 24 >, boost::multiprecision::et_off > Timestamp
Timestamp type providing yoctosecond resolution.
std::shared_ptr< Cursor > first_
static QPen highlight_pen()
std::shared_ptr< Cursor > second_
QRectF label_rect(const QRectF &rect) const