X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fviews%2Ftrace%2Fview.cpp;h=8e2a2b329daa7bfae8ffbe96f507b550de88fa92;hp=79277b4e17074708b0f1e3718ef6eeb4996d2c93;hb=39173000c5d0d164c52443d16a1dc434d538b198;hpb=e23567ed84aa55e2a0c48252080058186f6b80e7 diff --git a/pv/views/trace/view.cpp b/pv/views/trace/view.cpp index 79277b4e..8e2a2b32 100644 --- a/pv/views/trace/view.cpp +++ b/pv/views/trace/view.cpp @@ -362,12 +362,6 @@ void View::save_settings(QSettings &settings) const settings.setValue("splitter_state", splitter_->saveState()); settings.setValue("segment_display_mode", segment_display_mode_); - { - stringstream ss; - boost::archive::text_oarchive oa(ss); - oa << boost::serialization::make_nvp("ruler_shift", ruler_shift_); - settings.setValue("ruler_shift", QString::fromStdString(ss.str())); - } { stringstream ss; boost::archive::text_oarchive oa(ss); @@ -390,20 +384,6 @@ void View::restore_settings(QSettings &settings) if (settings.contains("scale")) set_scale(settings.value("scale").toDouble()); - if (settings.contains("ruler_shift")) { - util::Timestamp shift; - stringstream ss; - ss << settings.value("ruler_shift").toString().toStdString(); - - try { - boost::archive::text_iarchive ia(ss); - ia >> boost::serialization::make_nvp("ruler_shift", shift); - ruler_shift_ = shift; - } catch (boost::archive::archive_exception&) { - qDebug() << "Could not restore the view ruler shift"; - } - } - if (settings.contains("offset")) { util::Timestamp offset; stringstream ss; @@ -476,11 +456,21 @@ void View::set_scale(double scale) } } +pv::util::Timestamp View::absolute_to_ruler_time(const pv::util::Timestamp& abs_time) const +{ + return abs_time + zero_offset_; +} + +pv::util::Timestamp View::ruler_to_absolute_time(const pv::util::Timestamp& ruler_time) const +{ + return ruler_time - zero_offset_; +} + void View::set_offset(const pv::util::Timestamp& offset, bool force_update) { if ((offset_ != offset) || force_update) { offset_ = offset; - ruler_offset_ = offset_ + ruler_shift_; + ruler_offset_ = offset_ + zero_offset_; offset_changed(); } } @@ -497,10 +487,7 @@ const Timestamp& View::ruler_offset() const void View::set_zero_position(const pv::util::Timestamp& position) { - // ruler shift is a negative offset and the new zero position is relative - // to the current offset. Hence, we adjust the ruler shift only by the - // difference. - ruler_shift_ = -(position + (-ruler_shift_)); + zero_offset_ = -position; // Force an immediate update of the offsets set_offset(offset_, true); @@ -509,7 +496,7 @@ void View::set_zero_position(const pv::util::Timestamp& position) void View::reset_zero_position() { - ruler_shift_ = 0; + zero_offset_ = 0; // Force an immediate update of the offsets set_offset(offset_, true); @@ -813,22 +800,36 @@ bool View::cursors_shown() const void View::show_cursors(bool show) { - show_cursors_ = show; - cursor_state_changed(show); + if (show_cursors_ != show) { + show_cursors_ = show; + + cursor_state_changed(show); + ruler_->update(); + viewport_->update(); + } +} + +void View::set_cursors(pv::util::Timestamp& first, pv::util::Timestamp& second) +{ + assert(cursors_); + + cursors_->first()->set_time(first); + cursors_->second()->set_time(second); + ruler_->update(); viewport_->update(); } void View::centre_cursors() { - if (cursors_) { - const double time_width = scale_ * viewport_->width(); - cursors_->first()->set_time(offset_ + time_width * 0.4); - cursors_->second()->set_time(offset_ + time_width * 0.6); + assert(cursors_); - ruler_->update(); - viewport_->update(); - } + const double time_width = scale_ * viewport_->width(); + cursors_->first()->set_time(offset_ + time_width * 0.4); + cursors_->second()->set_time(offset_ + time_width * 0.6); + + ruler_->update(); + viewport_->update(); } shared_ptr View::cursors() const @@ -1699,6 +1700,7 @@ void View::capture_state_updated(int state) set_time_unit(util::TimeUnit::Samples); trigger_markers_.clear(); + set_zero_position(0); scale_at_acq_start_ = scale_; offset_at_acq_start_ = offset_;