X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fview%2Flogicsignal.cpp;h=08a5225fa41f2f35cb4d7406ded8f96fc8727ec2;hp=1ee99cb90595a46a9ff57fceae478d57399cf78b;hb=bc01bb31fb03f69c8ceef57676b3399d7a08dcd9;hpb=97904bf71258d3b522b00eb3dcae1efea6bd1298 diff --git a/pv/view/logicsignal.cpp b/pv/view/logicsignal.cpp index 1ee99cb9..08a5225f 100644 --- a/pv/view/logicsignal.cpp +++ b/pv/view/logicsignal.cpp @@ -34,7 +34,7 @@ #include #include #include -#include +#include #include #include @@ -145,16 +145,14 @@ std::pair LogicSignal::v_extents() const return make_pair(-SignalHeight - SignalMargin, SignalMargin); } -void LogicSignal::paint_back(QPainter &p, const RowItemPaintParams &pp) +void LogicSignal::paint_back(QPainter &p, const ViewItemPaintParams &pp) { if (channel_->enabled()) paint_axis(p, pp, get_visual_y()); } -void LogicSignal::paint_mid(QPainter &p, const RowItemPaintParams &pp) +void LogicSignal::paint_mid(QPainter &p, const ViewItemPaintParams &pp) { - using pv::view::View; - QLineF *line; vector< pair > edges; @@ -165,42 +163,34 @@ void LogicSignal::paint_mid(QPainter &p, const RowItemPaintParams &pp) const int y = get_visual_y(); - const View *const view = owner_->view(); - assert(view); - - const double scale = view->scale(); - assert(scale > 0); - - const double offset = view->offset(); - if (!channel_->enabled()) return; const float high_offset = y - SignalHeight + 0.5f; const float low_offset = y + 0.5f; - const deque< shared_ptr > &snapshots = - data_->get_snapshots(); - if (snapshots.empty()) + const deque< shared_ptr > &segments = + data_->logic_segments(); + if (segments.empty()) return; - const shared_ptr &snapshot = - snapshots.front(); + const shared_ptr &segment = + segments.front(); - double samplerate = data_->samplerate(); + double samplerate = segment->samplerate(); // Show sample rate as 1Hz when it is unknown if (samplerate == 0.0) samplerate = 1.0; - const double pixels_offset = offset / scale; - const double start_time = data_->get_start_time(); - const int64_t last_sample = snapshot->get_sample_count() - 1; - const double samples_per_pixel = samplerate * scale; - const double start = samplerate * (offset - start_time); + const double pixels_offset = pp.pixels_offset(); + const double start_time = segment->start_time(); + const int64_t last_sample = segment->get_sample_count() - 1; + const double samples_per_pixel = samplerate * pp.scale(); + const double start = samplerate * (pp.offset() - start_time); const double end = start + samples_per_pixel * pp.width(); - snapshot->get_subsampled_edges(edges, + segment->get_subsampled_edges(edges, min(max((int64_t)floor(start), (int64_t)0), last_sample), min(max((int64_t)ceil(end), (int64_t)0), last_sample), samples_per_pixel / Oversampling, channel_->index()); @@ -235,7 +225,7 @@ void LogicSignal::paint_mid(QPainter &p, const RowItemPaintParams &pp) delete[] cap_lines; } -void LogicSignal::paint_fore(QPainter &p, const RowItemPaintParams &pp) +void LogicSignal::paint_fore(QPainter &p, const ViewItemPaintParams &pp) { // Draw the trigger marker if (!trigger_match_) @@ -256,15 +246,15 @@ void LogicSignal::paint_fore(QPainter &p, const RowItemPaintParams &pp) if (!pixmap) continue; - const int pad = TriggerMarkerPadding; + const float pad = TriggerMarkerPadding - 0.5f; const QSize size = pixmap->size(); const QPoint point( pp.right() - size.width() - pad * 2, y - (SignalHeight + size.height()) / 2); - p.setPen(QPen(Qt::NoPen)); + p.setPen(QPen(TriggerMarkerBackgroundColour.darker())); p.setBrush(TriggerMarkerBackgroundColour); - p.drawRoundedRect(QRect(point, size).adjusted( + p.drawRoundedRect(QRectF(point, size).adjusted( -pad, -pad, pad, pad), pad, pad); p.drawPixmap(point, *pixmap); @@ -432,7 +422,7 @@ void LogicSignal::modify_trigger() new_trigger->stages().empty() ? nullptr : new_trigger); if (owner_) - owner_->appearance_changed(false, true); + owner_->row_item_appearance_changed(false, true); } const QIcon* LogicSignal::get_icon(const char *path)