X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=pv%2Fview%2Fdecodetrace.cpp;h=c8a20dc3c9c6cf7eb3888080351e624ba38349c7;hb=7c238e082a6fadc14f90285805f5901cc8f68570;hp=9f8306ea8ef9c7f0983e99cb321978fdc7eb2bf9;hpb=a855d71e69d4530b4f87d4287b16da60d147fe84;p=pulseview.git diff --git a/pv/view/decodetrace.cpp b/pv/view/decodetrace.cpp index 9f8306ea..c8a20dc3 100644 --- a/pv/view/decodetrace.cpp +++ b/pv/view/decodetrace.cpp @@ -24,7 +24,6 @@ extern "C" { #include -#include #include #include @@ -48,12 +47,12 @@ extern "C" { #include #include -using boost::dynamic_pointer_cast; -using boost::shared_ptr; +using std::dynamic_pointer_cast; using std::list; using std::max; using std::map; using std::min; +using std::shared_ptr; using std::vector; namespace pv { @@ -112,7 +111,7 @@ const QColor DecodeTrace::OutlineColours[16] = { }; DecodeTrace::DecodeTrace(pv::SigSession &session, - boost::shared_ptr decoder_stack, int index) : + std::shared_ptr decoder_stack, int index) : Trace(QString::fromUtf8( decoder_stack->stack().front()->decoder()->name)), _session(session), @@ -137,7 +136,7 @@ bool DecodeTrace::enabled() const return true; } -const boost::shared_ptr& DecodeTrace::decoder() const +const std::shared_ptr& DecodeTrace::decoder() const { return _decoder_stack; } @@ -214,7 +213,7 @@ void DecodeTrace::paint_mid(QPainter &p, int left, int right) _decoder_stack->get_annotation_subset(annotations, row, start_sample, end_sample); if (!annotations.empty()) { - BOOST_FOREACH(const Annotation &a, annotations) + for (const Annotation &a : annotations) draw_annotation(a, p, get_text_colour(), annotation_height, left, right, samples_per_pixel, pixels_offset, y, @@ -289,7 +288,7 @@ void DecodeTrace::populate_popup_form(QWidget *parent, QFormLayout *form) // Add the decoder options _bindings.clear(); - _probe_selectors.clear(); + _channel_selectors.clear(); _decoder_forms.clear(); const list< shared_ptr >& stack = _decoder_stack->stack(); @@ -303,15 +302,14 @@ void DecodeTrace::populate_popup_form(QWidget *parent, QFormLayout *form) } else { - list< shared_ptr >::const_iterator iter = - stack.begin(); + auto iter = stack.cbegin(); for (int i = 0; i < (int)stack.size(); i++, iter++) { shared_ptr dec(*iter); create_decoder_form(i, dec, parent, form); } form->addRow(new QLabel( - tr("* Required Probes"), parent)); + tr("* Required channels"), parent)); } // Add stacking button @@ -373,7 +371,7 @@ void DecodeTrace::draw_instant(const pv::data::decode::Annotation &a, QPainter & { const QString text = a.annotations().empty() ? QString() : a.annotations().back(); - const double w = min(p.boundingRect(QRectF(), 0, text).width(), + const double w = min((double)p.boundingRect(QRectF(), 0, text).width(), 0.0) + h; const QRectF rect(x - w / 2, y - h / 2, w, h); @@ -421,13 +419,16 @@ void DecodeTrace::draw_range(const pv::data::decode::Annotation &a, QPainter &p, QRectF rect(start + cap_width, y - h / 2, end - start - cap_width * 2, h); + if (rect.width() <= 4) + return; + p.setPen(text_color); // Try to find an annotation that will fit QString best_annotation; int best_width = 0; - BOOST_FOREACH(const QString &a, annotations) { + for (const QString &a : annotations) { const int w = p.boundingRect(QRectF(), 0, a).width(); if (w <= rect.width() && w > best_width) best_annotation = a, best_width = w; @@ -475,12 +476,12 @@ void DecodeTrace::draw_unresolved_period(QPainter &p, int h, int left, const list< shared_ptr > &stack = _decoder_stack->stack(); - // We get the logic data of the first probe in the list. + // We get the logic data of the first channel in the list. // This works because we are currently assuming all // LogicSignals have the same data/snapshot - BOOST_FOREACH (const shared_ptr &dec, stack) - if (dec && !dec->probes().empty() && - ((logic_signal = (*dec->probes().begin()).second)) && + for (const shared_ptr &dec : stack) + if (dec && !dec->channels().empty() && + ((logic_signal = (*dec->channels().begin()).second)) && ((data = logic_signal->logic_data()))) break; @@ -518,7 +519,7 @@ void DecodeTrace::create_decoder_form(int index, shared_ptr &dec, QWidget *parent, QFormLayout *form) { - const GSList *probe; + const GSList *l; assert(dec); const srd_decoder *const decoder = dec->decoder(); @@ -539,34 +540,34 @@ void DecodeTrace::create_decoder_form(int index, QFormLayout *const decoder_form = new QFormLayout; group->add_layout(decoder_form); - // Add the mandatory probes - for(probe = decoder->probes; probe; probe = probe->next) { - const struct srd_probe *const p = - (struct srd_probe *)probe->data; - QComboBox *const combo = create_probe_selector(parent, dec, p); + // Add the mandatory channels + for(l = decoder->channels; l; l = l->next) { + const struct srd_channel *const pdch = + (struct srd_channel *)l->data; + QComboBox *const combo = create_channel_selector(parent, dec, pdch); connect(combo, SIGNAL(currentIndexChanged(int)), - this, SLOT(on_probe_selected(int))); + this, SLOT(on_channel_selected(int))); decoder_form->addRow(tr("%1 (%2) *") - .arg(QString::fromUtf8(p->name)) - .arg(QString::fromUtf8(p->desc)), combo); + .arg(QString::fromUtf8(pdch->name)) + .arg(QString::fromUtf8(pdch->desc)), combo); - const ProbeSelector s = {combo, dec, p}; - _probe_selectors.push_back(s); + const ChannelSelector s = {combo, dec, pdch}; + _channel_selectors.push_back(s); } - // Add the optional probes - for(probe = decoder->opt_probes; probe; probe = probe->next) { - const struct srd_probe *const p = - (struct srd_probe *)probe->data; - QComboBox *const combo = create_probe_selector(parent, dec, p); + // Add the optional channels + for(l = decoder->opt_channels; l; l = l->next) { + const struct srd_channel *const pdch = + (struct srd_channel *)l->data; + QComboBox *const combo = create_channel_selector(parent, dec, pdch); connect(combo, SIGNAL(currentIndexChanged(int)), - this, SLOT(on_probe_selected(int))); + this, SLOT(on_channel_selected(int))); decoder_form->addRow(tr("%1 (%2)") - .arg(QString::fromUtf8(p->name)) - .arg(QString::fromUtf8(p->desc)), combo); + .arg(QString::fromUtf8(pdch->name)) + .arg(QString::fromUtf8(pdch->desc)), combo); - const ProbeSelector s = {combo, dec, p}; - _probe_selectors.push_back(s); + const ChannelSelector s = {combo, dec, pdch}; + _channel_selectors.push_back(s); } // Add the options @@ -580,24 +581,22 @@ void DecodeTrace::create_decoder_form(int index, _decoder_forms.push_back(group); } -QComboBox* DecodeTrace::create_probe_selector( +QComboBox* DecodeTrace::create_channel_selector( QWidget *parent, const shared_ptr &dec, - const srd_probe *const probe) + const srd_channel *const pdch) { assert(dec); const vector< shared_ptr > sigs = _session.get_signals(); assert(_decoder_stack); - const map >::const_iterator probe_iter = - dec->probes().find(probe); + const auto channel_iter = dec->channels().find(pdch); QComboBox *selector = new QComboBox(parent); selector->addItem("-", qVariantFromValue((void*)NULL)); - if (probe_iter == dec->probes().end()) + if (channel_iter == dec->channels().end()) selector->setCurrentIndex(0); for(size_t i = 0; i < sigs.size(); i++) { @@ -608,7 +607,7 @@ QComboBox* DecodeTrace::create_probe_selector( { selector->addItem(s->get_name(), qVariantFromValue((void*)s.get())); - if ((*probe_iter).second == s) + if ((*channel_iter).second == s) selector->setCurrentIndex(i + 1); } } @@ -616,14 +615,14 @@ QComboBox* DecodeTrace::create_probe_selector( return selector; } -void DecodeTrace::commit_decoder_probes(shared_ptr &dec) +void DecodeTrace::commit_decoder_channels(shared_ptr &dec) { assert(dec); - map > probe_map; + map > channel_map; const vector< shared_ptr > sigs = _session.get_signals(); - BOOST_FOREACH(const ProbeSelector &s, _probe_selectors) + for (const ChannelSelector &s : _channel_selectors) { if(s._decoder != dec) break; @@ -632,23 +631,22 @@ void DecodeTrace::commit_decoder_probes(shared_ptr &dec) (LogicSignal*)s._combo->itemData( s._combo->currentIndex()).value(); - BOOST_FOREACH(shared_ptr sig, sigs) + for (shared_ptr sig : sigs) if(sig.get() == selection) { - probe_map[s._probe] = + channel_map[s._pdch] = dynamic_pointer_cast(sig); break; } } - dec->set_probes(probe_map); + dec->set_channels(channel_map); } -void DecodeTrace::commit_probes() +void DecodeTrace::commit_channels() { assert(_decoder_stack); - BOOST_FOREACH(shared_ptr dec, - _decoder_stack->stack()) - commit_decoder_probes(dec); + for (shared_ptr dec : _decoder_stack->stack()) + commit_decoder_channels(dec); _decoder_stack->begin_decode(); } @@ -669,9 +667,9 @@ void DecodeTrace::on_delete() _session.remove_decode_signal(this); } -void DecodeTrace::on_probe_selected(int) +void DecodeTrace::on_channel_selected(int) { - commit_probes(); + commit_channels(); } void DecodeTrace::on_stack_decoder(srd_decoder *decoder) @@ -702,7 +700,7 @@ void DecodeTrace::on_show_hide_decoder(int index) const list< shared_ptr > stack(_decoder_stack->stack()); // Find the decoder in the stack - list< shared_ptr >::const_iterator iter = stack.begin(); + auto iter = stack.cbegin(); for(int i = 0; i < index; i++, iter++) assert(iter != stack.end());