]> sigrok.org Git - pulseview.git/commitdiff
View: Use max time to calculate label length, not offset_
authorSoeren Apel <redacted>
Sat, 15 Aug 2015 21:05:18 +0000 (23:05 +0200)
committerUwe Hermann <redacted>
Sun, 16 Aug 2015 16:54:18 +0000 (18:54 +0200)
Using offset_ gives false results, in particular when
offset_ happens to be 0. With this fix, realistic values
are used for the label length calculation.

pv/view/view.cpp

index 032546dba034eda4cea63cc3f60489127cd28d9d..e6be30e0680b48670a885fb0630d25209b9953b7 100644 (file)
@@ -496,6 +496,11 @@ void View::calculate_tick_spacing()
        const double SpacingIncrement = 32.0f;
        const double MinValueSpacing = 32.0f;
 
        const double SpacingIncrement = 32.0f;
        const double MinValueSpacing = 32.0f;
 
+       // Figure out the highest numeric value visible on a label
+       const QSize areaSize = viewport_->size();
+       const double max_time = max(fabs(offset_),
+               fabs(offset_ + scale_ * areaSize.width()));
+
        double min_width = SpacingIncrement;
        double label_width, tick_period_width;
 
        double min_width = SpacingIncrement;
        double label_width, tick_period_width;
 
@@ -523,7 +528,7 @@ void View::calculate_tick_spacing()
                tick_period_width = tick_period_ / scale_;
 
                const QString label_text =
                tick_period_width = tick_period_ / scale_;
 
                const QString label_text =
-                       format_time(offset_, tick_prefix_, time_unit_, tick_precision_);
+                       format_time(max_time, tick_prefix_, time_unit_, tick_precision_);
 
                label_width = m.boundingRect(0, 0, INT_MAX, INT_MAX,
                        Qt::AlignLeft | Qt::AlignTop, label_text).width() +
 
                label_width = m.boundingRect(0, 0, INT_MAX, INT_MAX,
                        Qt::AlignLeft | Qt::AlignTop, label_text).width() +