projects
/
pulseview.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fix catching polymorphic types by value
[pulseview.git]
/
pv
/
views
/
trace
/
analogsignal.cpp
diff --git
a/pv/views/trace/analogsignal.cpp
b/pv/views/trace/analogsignal.cpp
index 90e441e09f125392c5ccd215e0b2441b55f3c026..3595840ecfebbf211df9c1cc5d67155329f5a65a 100644
(file)
--- a/
pv/views/trace/analogsignal.cpp
+++ b/
pv/views/trace/analogsignal.cpp
@@
-47,7
+47,6
@@
#include <libsigrokcxx/libsigrokcxx.hpp>
#include <libsigrokcxx/libsigrokcxx.hpp>
-using std::bind;
using std::deque;
using std::div;
using std::div_t;
using std::deque;
using std::div;
using std::div_t;
@@
-57,7
+56,6
@@
using std::min;
using std::numeric_limits;
using std::out_of_range;
using std::pair;
using std::numeric_limits;
using std::out_of_range;
using std::pair;
-using std::placeholders::_1;
using std::shared_ptr;
using std::vector;
using std::shared_ptr;
using std::vector;
@@
-118,8
+116,7
@@
AnalogSignal::AnalogSignal(
connect(analog_data, SIGNAL(min_max_changed(float, float)),
this, SLOT(on_min_max_changed(float, float)));
connect(analog_data, SIGNAL(min_max_changed(float, float)),
this, SLOT(on_min_max_changed(float, float)));
- GlobalSettings::register_change_handler(GlobalSettings::Key_View_ConversionThresholdDispMode,
- bind(&AnalogSignal::on_settingViewConversionThresholdDispMode_changed, this, _1));
+ GlobalSettings::add_change_handler(this);
GlobalSettings gs;
conversion_threshold_disp_mode_ =
GlobalSettings gs;
conversion_threshold_disp_mode_ =
@@
-131,6
+128,11
@@
AnalogSignal::AnalogSignal(
update_scale();
}
update_scale();
}
+AnalogSignal::~AnalogSignal()
+{
+ GlobalSettings::remove_change_handler(this);
+}
+
shared_ptr<pv::data::SignalData> AnalogSignal::data() const
{
return base_->analog_data();
shared_ptr<pv::data::SignalData> AnalogSignal::data() const
{
return base_->analog_data();
@@
-206,6
+208,12
@@
void AnalogSignal::scale_handle_drag_release()
update_scale();
}
update_scale();
}
+void AnalogSignal::on_setting_changed(const QString &key, const QVariant &value)
+{
+ if (key == GlobalSettings::Key_View_ConversionThresholdDispMode)
+ on_settingViewConversionThresholdDispMode_changed(value);
+}
+
void AnalogSignal::paint_back(QPainter &p, ViewItemPaintParams &pp)
{
if (!base_->enabled())
void AnalogSignal::paint_back(QPainter &p, ViewItemPaintParams &pp)
{
if (!base_->enabled())
@@
-275,7
+283,7
@@
void AnalogSignal::paint_mid(QPainter &p, ViewItemPaintParams &pp)
const double pixels_offset = pp.pixels_offset();
const double samplerate = max(1.0, segment->samplerate());
const pv::util::Timestamp& start_time = segment->start_time();
const double pixels_offset = pp.pixels_offset();
const double samplerate = max(1.0, segment->samplerate());
const pv::util::Timestamp& start_time = segment->start_time();
- const int64_t last_sample = segment->get_sample_count() - 1;
+ const int64_t last_sample =
(int64_t)
segment->get_sample_count() - 1;
const double samples_per_pixel = samplerate * pp.scale();
const pv::util::Timestamp start = samplerate * (pp.offset() - start_time);
const pv::util::Timestamp end = start + samples_per_pixel * pp.width();
const double samples_per_pixel = samplerate * pp.scale();
const pv::util::Timestamp start = samplerate * (pp.offset() - start_time);
const pv::util::Timestamp end = start + samples_per_pixel * pp.width();
@@
-439,8
+447,7
@@
void AnalogSignal::paint_trace(QPainter &p,
}
}
}
}
- sampling_points[idx].push_back(
- QRectF(x - (w / 2), y - sample_block[block_sample] * scale_ - (w / 2), w, w));
+ sampling_points[idx].emplace_back(x - (w / 2), y - sample_block[block_sample] * scale_ - (w / 2), w, w);
}
}
delete[] sample_block;
}
}
delete[] sample_block;
@@
-542,7
+549,7
@@
void AnalogSignal::paint_logic_mid(QPainter &p, ViewItemPaintParams &pp)
const double pixels_offset = pp.pixels_offset();
const pv::util::Timestamp& start_time = segment->start_time();
const double pixels_offset = pp.pixels_offset();
const pv::util::Timestamp& start_time = segment->start_time();
- const int64_t last_sample = segment->get_sample_count() - 1;
+ const int64_t last_sample =
(int64_t)
segment->get_sample_count() - 1;
const double samples_per_pixel = samplerate * pp.scale();
const double pixels_per_sample = 1 / samples_per_pixel;
const pv::util::Timestamp start = samplerate * (pp.offset() - start_time);
const double samples_per_pixel = samplerate * pp.scale();
const double pixels_per_sample = 1 / samples_per_pixel;
const pv::util::Timestamp start = samplerate * (pp.offset() - start_time);
@@
-658,11
+665,12
@@
shared_ptr<pv::data::AnalogSegment> AnalogSignal::get_analog_segment_to_paint()
if (segment_display_mode_ == ShowLastSegmentOnly)
segment = segments.back();
if (segment_display_mode_ == ShowLastSegmentOnly)
segment = segments.back();
- if (segment_display_mode_ == ShowSingleSegmentOnly) {
+ if ((segment_display_mode_ == ShowSingleSegmentOnly) ||
+ (segment_display_mode_ == ShowLastCompleteSegmentOnly)) {
try {
segment = segments.at(current_segment_);
try {
segment = segments.at(current_segment_);
- } catch (out_of_range) {
- qDebug() << "Current analog segment out of range for signal" << base_->name();
+ } catch (out_of_range
&
) {
+ qDebug() << "Current analog segment out of range for signal" << base_->name()
<< ":" << current_segment_
;
}
}
}
}
}
}
@@
-681,11
+689,12
@@
shared_ptr<pv::data::LogicSegment> AnalogSignal::get_logic_segment_to_paint() co
if (segment_display_mode_ == ShowLastSegmentOnly)
segment = segments.back();
if (segment_display_mode_ == ShowLastSegmentOnly)
segment = segments.back();
- if (segment_display_mode_ == ShowSingleSegmentOnly) {
+ if ((segment_display_mode_ == ShowSingleSegmentOnly) ||
+ (segment_display_mode_ == ShowLastCompleteSegmentOnly)) {
try {
segment = segments.at(current_segment_);
try {
segment = segments.at(current_segment_);
- } catch (out_of_range) {
- qDebug() << "Current logic segment out of range for signal" << base_->name();
+ } catch (out_of_range
&
) {
+ qDebug() << "Current logic segment out of range for signal" << base_->name()
<< ":" << current_segment_
;
}
}
}
}
}
}