]> sigrok.org Git - pulseview.git/blobdiff - pv/util.cpp
Use a type with a greater resolution to represent time values
[pulseview.git] / pv / util.cpp
index d2d70827335d0fb86cbeb0b0a2cd160ebc33569b..192a2e06ba1571766bbab637e1135d1980b5904a 100644 (file)
@@ -41,7 +41,7 @@ const int FirstSIPrefix = 8;
 const int FirstSIPrefixPower = -(FirstSIPrefix * 3);
 const double MinTimeDelta = 1e-15; // Anything below 1 fs can be considered zero
 
-QString format_si_value(double v, QString unit, int prefix,
+static QString format_si_value(double v, QString unit, int prefix,
        unsigned int precision, bool sign)
 {
        if (prefix < 0) {
@@ -71,6 +71,12 @@ QString format_si_value(double v, QString unit, int prefix,
        return s;
 }
 
+QString format_si_value(const Timestamp& v, QString unit, int prefix,
+       unsigned int precision, bool sign)
+{
+       return format_si_value(v.convert_to<double>(), unit, prefix, precision, sign);
+}
+
 static QString pad_number(unsigned int number, int length)
 {
        return QString("%1").arg(number, length, 10, QChar('0'));
@@ -156,7 +162,7 @@ static QString format_time_with_si(double t, QString unit, int prefix,
        return format_si_value(t, unit, prefix, relative_prec);
 }
 
-QString format_time(double t, int prefix, TimeUnit unit, unsigned int precision)
+static QString format_time(double t, int prefix, TimeUnit unit, unsigned int precision)
 {
        // Make 0 appear as 0, not random +0 or -0
        if (fabs(t) < MinTimeDelta)
@@ -176,9 +182,14 @@ QString format_time(double t, int prefix, TimeUnit unit, unsigned int precision)
                return format_time_in_full(t, precision);
 }
 
-QString format_second(double second)
+QString format_time(const Timestamp& t, int prefix, TimeUnit unit, unsigned int precision)
+{
+       return format_time(t.convert_to<double>(), prefix, unit, precision);
+}
+
+QString format_second(const Timestamp& second)
 {
-       return format_si_value(second, "s", -1, 0, false);
+       return format_si_value(second.convert_to<double>(), "s", -1, 0, false);
 }
 
 } // namespace util