X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fview%2Fdecodetrace.cpp;h=74d0dd6511b623a4c41aba5b66bd6cf13194f830;hp=670d6ef1dcb3b5b8b66c79516c93b2be8d322815;hb=5ed05b699e5367bae21828f533e3d169b9bab348;hpb=83b1c8d251386ac1980284c4668cbdd8e425550f diff --git a/pv/view/decodetrace.cpp b/pv/view/decodetrace.cpp index 670d6ef1..74d0dd65 100644 --- a/pv/view/decodetrace.cpp +++ b/pv/view/decodetrace.cpp @@ -40,19 +40,18 @@ extern "C" { #include "decodetrace.hpp" -#include -#include -#include +#include #include +#include #include #include -#include +#include +#include #include #include #include #include - using std::all_of; using std::list; using std::make_pair; @@ -171,13 +170,13 @@ pair DecodeTrace::v_extents() const return make_pair(-row_height, row_height * row_count); } -void DecodeTrace::paint_back(QPainter &p, const ViewItemPaintParams &pp) +void DecodeTrace::paint_back(QPainter &p, ViewItemPaintParams &pp) { Trace::paint_back(p, pp); paint_axis(p, pp, get_visual_y()); } -void DecodeTrace::paint_mid(QPainter &p, const ViewItemPaintParams &pp) +void DecodeTrace::paint_mid(QPainter &p, ViewItemPaintParams &pp) { using namespace pv::data::decode; @@ -249,7 +248,7 @@ void DecodeTrace::paint_mid(QPainter &p, const ViewItemPaintParams &pp) max_visible_rows_ = max(max_visible_rows_, (int)visible_rows_.size()); } -void DecodeTrace::paint_fore(QPainter &p, const ViewItemPaintParams &pp) +void DecodeTrace::paint_fore(QPainter &p, ViewItemPaintParams &pp) { using namespace pv::data::decode; @@ -334,6 +333,7 @@ void DecodeTrace::populate_popup_form(QWidget *parent, QFormLayout *form) QPushButton *const stack_button = new QPushButton(tr("Stack Decoder"), parent); stack_button->setMenu(decoder_menu); + stack_button->setToolTip(tr("Stack a higher-level decoder on top of this one")); QHBoxLayout *stack_button_box = new QHBoxLayout; stack_button_box->addWidget(stack_button, 0, Qt::AlignRight); @@ -438,8 +438,7 @@ void DecodeTrace::draw_annotation(const pv::data::decode::Annotation &a, const double start = a.start_sample() / samples_per_pixel - pixels_offset; - const double end = a.end_sample() / samples_per_pixel - - pixels_offset; + const double end = a.end_sample() / samples_per_pixel - pixels_offset; const size_t colour = (base_colour + a.format()) % countof(Colours); p.setPen(OutlineColours[colour]); @@ -451,8 +450,7 @@ void DecodeTrace::draw_annotation(const pv::data::decode::Annotation &a, if (a.start_sample() == a.end_sample()) draw_instant(a, p, h, start, y); else - draw_range(a, p, h, start, end, y, pp, - row_title_width); + draw_range(a, p, h, start, end, y, pp, row_title_width); } void DecodeTrace::draw_annotation_block( @@ -486,11 +484,17 @@ void DecodeTrace::draw_annotation_block( annotations.begin(), annotations.end(), [&](const Annotation &a) { return a.format() == format; }); + const QRectF rect(start, top, end - start, bottom - top); + const int r = h / 4; + + p.setPen(QPen(Qt::NoPen)); + p.setBrush(Qt::white); + p.drawRoundedRect(rect, r, r); + p.setPen((single_format ? OutlineColours[colour] : Qt::gray)); p.setBrush(QBrush((single_format ? Colours[colour] : Qt::gray), Qt::Dense4Pattern)); - p.drawRoundedRect( - QRectF(start, top, end - start, bottom - top), h/4, h/4); + p.drawRoundedRect(rect, r, r); } void DecodeTrace::draw_instant(const pv::data::decode::Annotation &a, QPainter &p, @@ -619,8 +623,7 @@ void DecodeTrace::draw_unresolved_period(QPainter &p, int h, int left, if (!data || data->logic_segments().empty()) return; - const shared_ptr segment = - data->logic_segments().front(); + const shared_ptr segment = data->logic_segments().front(); assert(segment); const int64_t sample_count = (int64_t)segment->get_sample_count(); if (sample_count == 0) @@ -639,7 +642,7 @@ void DecodeTrace::draw_unresolved_period(QPainter &p, int h, int left, samples_per_pixel - pixels_offset, left - 1.0); const double end = min(sample_count / samples_per_pixel - pixels_offset, right + 1.0); - const QRectF no_decode_rect(start, y - h/2 + 0.5, end - start, h); + const QRectF no_decode_rect(start, y - (h / 2) + 0.5, end - start, h); p.setPen(QPen(Qt::NoPen)); p.setBrush(Qt::white); @@ -787,7 +790,10 @@ void DecodeTrace::create_decoder_form(int index, pv::widgets::DecoderGroupBox *const group = new pv::widgets::DecoderGroupBox( - QString::fromUtf8(decoder->name), nullptr, decoder_deletable); + QString::fromUtf8(decoder->name), + tr("%1:\n%2").arg(QString::fromUtf8(decoder->longname), + QString::fromUtf8(decoder->desc)), + nullptr, decoder_deletable); group->set_decoder_visible(dec->shown()); if (decoder_deletable) { @@ -963,7 +969,7 @@ void DecodeTrace::on_delete_decoder(int index) decoder_stack->remove(index); // Update the popup - create_popup_form(); + create_popup_form(); decoder_stack->begin_decode(); }