]> sigrok.org Git - pulseview.git/blobdiff - pv/view/analogsignal.cpp
Use a type with a greater resolution to represent time values
[pulseview.git] / pv / view / analogsignal.cpp
index 0ac6311116610356b12f0663fa0fc933539f801e..8e541dac1672da902233105215f49d0c4c271c01 100644 (file)
@@ -113,15 +113,15 @@ void AnalogSignal::paint_mid(QPainter &p, const ViewItemPaintParams &pp)
 
        const double pixels_offset = pp.pixels_offset();
        const double samplerate = segment->samplerate();
-       const double start_time = segment->start_time();
+       const pv::util::Timestamp& start_time = segment->start_time();
        const int64_t last_sample = segment->get_sample_count() - 1;
        const double samples_per_pixel = samplerate * pp.scale();
-       const double start = samplerate * (pp.offset() - start_time);
-       const double end = start + samples_per_pixel * pp.width();
+       const pv::util::Timestamp start = samplerate * (pp.offset() - start_time);
+       const pv::util::Timestamp end = start + samples_per_pixel * pp.width();
 
-       const int64_t start_sample = min(max((int64_t)floor(start),
+       const int64_t start_sample = min(max(floor(start).convert_to<int64_t>(),
                (int64_t)0), last_sample);
-       const int64_t end_sample = min(max((int64_t)ceil(end) + 1,
+       const int64_t end_sample = min(max((ceil(end) + 1).convert_to<int64_t>(),
                (int64_t)0), last_sample);
 
        if (samples_per_pixel < EnvelopeThreshold)