X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=pv%2Fview%2Fview.cpp;h=6cd274b0dc8f74605f480baaadfb61e7a725cfd3;hb=d4e39570ee6021766c375654801dddba45b9198a;hp=aac6333addd032c0adb85886c60f2fdf9b48a248;hpb=7f4038d6abbe86e8a8c511df188293a704064167;p=pulseview.git diff --git a/pv/view/view.cpp b/pv/view/view.cpp index aac6333a..6cd274b0 100644 --- a/pv/view/view.cpp +++ b/pv/view/view.cpp @@ -50,14 +50,14 @@ #include "pv/session.hpp" #include "pv/data/logic.hpp" -#include "pv/data/logicsnapshot.hpp" +#include "pv/data/logicsegment.hpp" #include "pv/util.hpp" using boost::shared_lock; using boost::shared_mutex; using pv::data::SignalData; -using pv::data::Snapshot; +using pv::data::Segment; using pv::util::format_time; using std::back_inserter; @@ -104,7 +104,7 @@ View::View(Session &session, QWidget *parent) : tick_period_(0.0), tick_prefix_(0), show_cursors_(false), - cursors_(*this), + cursors_(new CursorPair(*this)), hover_point_(-1, -1) { connect(horizontalScrollBar(), SIGNAL(valueChanged(int)), @@ -121,9 +121,9 @@ View::View(Session &session, QWidget *parent) : connect(&session_, SIGNAL(frame_ended()), this, SLOT(data_updated())); - connect(cursors_.first().get(), SIGNAL(time_changed()), + connect(cursors_->first().get(), SIGNAL(time_changed()), this, SLOT(marker_time_changed())); - connect(cursors_.second().get(), SIGNAL(time_changed()), + connect(cursors_->second().get(), SIGNAL(time_changed()), this, SLOT(marker_time_changed())); connect(header_, SIGNAL(signals_moved()), @@ -195,6 +195,15 @@ const Viewport* View::viewport() const return viewport_; } +vector< shared_ptr > View::time_items() const +{ + vector< shared_ptr > items; + items.push_back(cursors_); + items.push_back(cursors_->first()); + items.push_back(cursors_->second()); + return items; +} + double View::scale() const { return scale_; @@ -263,7 +272,10 @@ void View::zoom_one_to_one() double samplerate = 0.0; for (const shared_ptr d : visible_data) { assert(d); - samplerate = max(samplerate, d->samplerate()); + const vector< shared_ptr > segments = + d->segments(); + for (const shared_ptr &s : segments) + samplerate = max(samplerate, s->samplerate()); } if (samplerate == 0.0) @@ -311,12 +323,12 @@ pair View::get_time_extents() const const set< shared_ptr > visible_data = get_visible_data(); for (const shared_ptr d : visible_data) { - double samplerate = d->samplerate(); - samplerate = (samplerate <= 0.0) ? 1.0 : samplerate; + const vector< shared_ptr > segments = + d->segments(); + for (const shared_ptr &s : segments) { + double samplerate = s->samplerate(); + samplerate = (samplerate <= 0.0) ? 1.0 : samplerate; - const vector< shared_ptr > snapshots = - d->snapshots(); - for (const shared_ptr &s : snapshots) { const double start_time = s->start_time(); left_time = min(left_time, start_time); right_time = max(right_time, start_time + @@ -346,18 +358,13 @@ void View::show_cursors(bool show) void View::centre_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); + cursors_->first()->set_time(offset_ + time_width * 0.4); + cursors_->second()->set_time(offset_ + time_width * 0.6); cursorheader_->update(); viewport_->update(); } -CursorPair& View::cursors() -{ - return cursors_; -} - -const CursorPair& View::cursors() const +std::shared_ptr View::cursors() const { return cursors_; } @@ -476,11 +483,11 @@ void View::update_scroll() // Set the vertical scrollbar verticalScrollBar()->setPageStep(areaSize.height()); + verticalScrollBar()->setSingleStep(areaSize.height() / 8); const pair extents = v_extents(); - const int extra_scroll_height = (extents.second - extents.first) / 4; - verticalScrollBar()->setRange(extents.first - extra_scroll_height, - extents.first + extra_scroll_height); + verticalScrollBar()->setRange(extents.first - (areaSize.height() / 2), + extents.second - (areaSize.height() / 2)); } void View::update_layout() @@ -499,16 +506,16 @@ void View::update_layout() update_scroll(); } -void View::paint_label(QPainter &p, int right, bool hover) +void View::paint_label(QPainter &p, const QRect &rect, bool hover) { (void)p; - (void)right; + (void)rect; (void)hover; } -QRectF View::label_rect(int right) +QRectF View::label_rect(const QRectF &rect) { - (void)right; + (void)rect; return QRectF(); } @@ -611,8 +618,8 @@ void View::appearance_changed(bool label, bool content) void View::extents_changed(bool horz, bool vert) { sticky_events_ |= - (horz ? SelectableItemHExtentsChanged : 0) | - (vert ? SelectableItemVExtentsChanged : 0); + (horz ? RowItemHExtentsChanged : 0) | + (vert ? RowItemVExtentsChanged : 0); lazy_event_handler_.start(); } @@ -735,9 +742,9 @@ void View::on_signals_moved() void View::process_sticky_events() { - if (sticky_events_ & SelectableItemHExtentsChanged) + if (sticky_events_ & RowItemHExtentsChanged) update_layout(); - if (sticky_events_ & SelectableItemVExtentsChanged) + if (sticky_events_ & RowItemVExtentsChanged) restack_all_row_items(); // Clear the sticky events