]> sigrok.org Git - pulseview.git/commitdiff
SignalData: Moved start_time into Snapshot
authorJoel Holdsworth <redacted>
Sat, 29 Nov 2014 18:48:06 +0000 (18:48 +0000)
committerJoel Holdsworth <redacted>
Tue, 9 Dec 2014 18:24:59 +0000 (18:24 +0000)
pv/data/decoderstack.cpp
pv/data/signaldata.cpp
pv/data/signaldata.hpp
pv/data/snapshot.cpp
pv/data/snapshot.hpp
pv/view/analogsignal.cpp
pv/view/logicsignal.cpp
pv/view/view.cpp

index bb2818bb79aab0d2c336a0045d5e0a0eb3c2a5a6..e5a758773b17d0a886b424492fbd50dad59fb6e7 100644 (file)
@@ -263,7 +263,7 @@ void DecoderStack::begin_decode()
        snapshot_ = snapshots.front();
 
        // Get the samplerate and start time
-       start_time_ = data->get_start_time();
+       start_time_ = snapshot_->start_time();
        samplerate_ = data->samplerate();
        if (samplerate_ == 0.0)
                samplerate_ = 1.0;
index 42409b8299c6bf69abdd5de3123f9878e2a901e6..ceeef0b424fbc5c5edbd2415563a2353a195851a 100644 (file)
@@ -24,7 +24,6 @@ namespace pv {
 namespace data {
 
 SignalData::SignalData() :
-       start_time_(0),
        samplerate_(0)
 {
 }
@@ -40,10 +39,5 @@ void SignalData::set_samplerate(double samplerate)
        clear();
 }
 
-double SignalData::get_start_time() const
-{
-       return start_time_;
-}
-
 } // namespace data
 } // namespace pv
index 35b1305fcfcf0a4d90b7890f1d829218d0a8c65f..7d67add14d9caf1027c9da05c06dbb49be16c781 100644 (file)
@@ -40,8 +40,6 @@ public:
        double samplerate() const;
        void set_samplerate(double samplerate);
 
-       double get_start_time() const;
-
        virtual std::vector< std::shared_ptr<Snapshot> > snapshots() const = 0;
 
        virtual void clear() = 0;
@@ -49,7 +47,6 @@ public:
        virtual uint64_t get_max_sample_count() const = 0;
 
 protected:
-       double start_time_;
        double samplerate_;
 };
 
index 58da4dbd56f48f65077a0be4264cfd8dcc69aa49..6e1235d24218fafce46f95c8c99a93c759d87109 100644 (file)
@@ -32,6 +32,7 @@ namespace data {
 
 Snapshot::Snapshot(unsigned int unit_size) :
        sample_count_(0),
+       start_time_(0),
        capacity_(0),
        unit_size_(unit_size)
 {
@@ -50,6 +51,11 @@ uint64_t Snapshot::get_sample_count() const
        return sample_count_;
 }
 
+double Snapshot::start_time() const
+{
+       return start_time_;
+}
+
 unsigned int Snapshot::unit_size() const
 {
        return unit_size_;
index 29d0eed44bc98b14c6b2c0528d9c9faadea84029..b9dacc7eb6beb85323747854ccecd4ddd7b027c3 100644 (file)
@@ -37,6 +37,8 @@ public:
 
        uint64_t get_sample_count() const;
 
+       double start_time() const;
+
        unsigned int unit_size() const;
 
        /**
@@ -73,6 +75,7 @@ protected:
        mutable std::recursive_mutex mutex_;
        std::vector<uint8_t> data_;
        uint64_t sample_count_;
+       double start_time_;
        uint64_t capacity_;
        unsigned int unit_size_;
 };
index c4d31cb6c689995ca5cd0085006f1cabbca31cbb..382d1e35ad75f6fdf22f9d16aeea3b34835cc0cc 100644 (file)
@@ -113,7 +113,7 @@ void AnalogSignal::paint_mid(QPainter &p, const RowItemPaintParams &pp)
 
        const double pixels_offset = pp.pixels_offset();
        const double samplerate = data_->samplerate();
-       const double start_time = data_->get_start_time();
+       const double start_time = snapshot->start_time();
        const int64_t last_sample = snapshot->get_sample_count() - 1;
        const double samples_per_pixel = samplerate * pp.scale();
        const double start = samplerate * (pp.offset() - start_time);
index 79f8457a7f9cc82046620f51ae9cb676b266f953..48316f8b56340c6ae22c10dccccdedceaac38999 100644 (file)
@@ -184,7 +184,7 @@ void LogicSignal::paint_mid(QPainter &p, const RowItemPaintParams &pp)
                samplerate = 1.0;
 
        const double pixels_offset = pp.pixels_offset();
-       const double start_time = data_->get_start_time();
+       const double start_time = snapshot->start_time();
        const int64_t last_sample = snapshot->get_sample_count() - 1;
        const double samples_per_pixel = samplerate * pp.scale();
        const double start = samplerate * (pp.offset() - start_time);
index 5877c22d87584ed2e506e5dfdf5e76b35d5b6fa8..aac6333addd032c0adb85886c60f2fdf9b48a248 100644 (file)
@@ -57,6 +57,7 @@ using boost::shared_lock;
 using boost::shared_mutex;
 
 using pv::data::SignalData;
+using pv::data::Snapshot;
 using pv::util::format_time;
 
 using std::back_inserter;
@@ -306,22 +307,26 @@ set< shared_ptr<SignalData> > View::get_visible_data() const
 
 pair<double, double> View::get_time_extents() const
 {
-       const set< shared_ptr<SignalData> > visible_data = get_visible_data();
-       if (visible_data.empty())
-               return make_pair(0.0, 0.0);
-
        double left_time = DBL_MAX, right_time = DBL_MIN;
+       const set< shared_ptr<SignalData> > visible_data = get_visible_data();
        for (const shared_ptr<SignalData> d : visible_data)
        {
-               const double start_time = d->get_start_time();
                double samplerate = d->samplerate();
                samplerate = (samplerate <= 0.0) ? 1.0 : samplerate;
 
-               left_time = min(left_time, start_time);
-               right_time = max(right_time, start_time +
-                       d->get_max_sample_count() / samplerate);
+               const vector< shared_ptr<Snapshot> > snapshots =
+                       d->snapshots();
+               for (const shared_ptr<Snapshot> &s : snapshots) {
+                       const double start_time = s->start_time();
+                       left_time = min(left_time, start_time);
+                       right_time = max(right_time, start_time +
+                               d->get_max_sample_count() / samplerate);
+               }
        }
 
+       if (left_time == DBL_MAX && right_time == DBL_MIN)
+               return make_pair(0.0, 0.0);
+
        assert(left_time < right_time);
        return make_pair(left_time, right_time);
 }