Work at SourceForge, help us to make it a better place! We have an immediate need for a Support Technician in our San Francisco or Denver office.

Close

#190 QwtDateScaleEngine not adapting correctly

None
closed
Uwe Rathmann
None
5
2013-08-26
2013-06-11
Eric Lemanissier
No

When using a QwtDateScaleEngine with data ranging from 0m0s to 5m59s makes a scale that does not end with a major tick, whereas the Floating attribute is never set. Major step is 2m, medium step 1m, and minor step 30s. The scale seems to end around 6m40. Could it be 400 seconds ?

With data ranging from 0m0s to 6m29s, the scale ends with a major ticks, but it is 6m0s, so the curve is not completely displayed

Discussion

  • Uwe Rathmann
    Uwe Rathmann
    2013-06-12

    Confirmed - the code below demonstrates the bad alignment:

    QDateTime dt1( QDate( 2010, 10, 10 ), QTime( 0, 0, 0 ) );
    QDateTime dt2( QDate( 2010, 10, 10 ), QTime( 0, 5, 59 ) );
    
    double x1 = QwtDate::toDouble( dt1 );
    double x2 = QwtDate::toDouble( dt2 );
    double stepSize;
    
    QwtDateScaleEngine se;
    se.autoScale( 10, x1, x2, stepSize );
    
    qDebug() << dt1 << dt2;
    qDebug() << QwtDate::toDateTime( x1, Qt::LocalTime )
        << QwtDate::toDateTime( x2, Qt::LocalTime ) << stepSize;
    

    The output is:

    QDateTime("Sun Oct 10 00:00:00 2010") QDateTime("Sun Oct 10 00:05:59 2010")
    QDateTime("Sun Oct 10 00:00:00 2010") QDateTime("Sun Oct 10 00:06:40 2010") 50000

     
  • Uwe Rathmann
    Uwe Rathmann
    2013-06-18

    QwtDateScaleEngine::alignDate with up == true ( ceiling ) doesn't work ( floors instead ), what is the reason for the problem with 6:29.

     
  • Uwe Rathmann
    Uwe Rathmann
    2013-06-30

    The ceiling error is fixed in SVN ( trunk and 6.1 ).

    QwtDateScaleEngine in Qwt 6.1.0 is incomplete - the calculation of the ticks is done, but the autoscaling part is using code that aligns like for a linear scale with a base 10. So the bad alignment ( to 400 ) is not really a bug - more an issue of using a weak/wrong algorithm. The problem here is that a time/date scale needs more than one algorithm - one for each type of interval ( ms, s, h, d, w, m, y ).

    I will try to implement something better for 6.1.1.

     


Anonymous


Cancel   Add attachments