Public Member Functions | Protected Member Functions

PlotDateScaleEngine Class Reference

#include <PlotDateScaleEngine.h>

Inheritance diagram for PlotDateScaleEngine:
Inheritance graph
[legend]
Collaboration diagram for PlotDateScaleEngine:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 PlotDateScaleEngine ()
virtual ~PlotDateScaleEngine ()
virtual void autoScale (int maxSteps, double &x1, double &x2, double &stepSize) const
virtual double divideInterval (double intervalSize, int numSteps) const
virtual QwtScaleDiv divideScale (double x1, double x2, int numMajorSteps, int numMinorSteps, double stepSize=0.0) const
virtual QwtScaleTransformationtransformation () const

Protected Member Functions

QwtDoubleInterval align (const QwtDoubleInterval &, double stepSize) const

Constructor & Destructor Documentation

PlotDateScaleEngine::PlotDateScaleEngine (  ) 

{
  //qDebug( "PlotDateScaleEngine::PlotDateScaleEngine" );
}

PlotDateScaleEngine::~PlotDateScaleEngine (  )  [virtual]

{
  //qDebug( "PlotDateScaleEngine::~PlotDateScaleEngine" );
}


Member Function Documentation

QwtDoubleInterval PlotDateScaleEngine::align ( const QwtDoubleInterval interval,
double  stepSize 
) const [protected]

Referenced by autoScale().

{
  //qDebug( "PlotDateScaleEngine::align" );

  const double x1 = QwtScaleArithmetic::floorEps( interval.minValue(), stepSize );
  const double x2 = QwtScaleArithmetic::ceilEps( interval.maxValue(), stepSize );

  return QwtDoubleInterval( x1, x2 );
}

void PlotDateScaleEngine::autoScale ( int  maxSteps,
double &  x1,
double &  x2,
double &  stepSize 
) const [virtual]

Reimplemented from QwtScaleEngine.

{
  //qDebug( "PlotDateScaleEngine::autoScale" );

  QwtDoubleInterval interval( x1, x2 );
  interval = interval.normalized();

  interval.setMinValue( interval.minValue() - lowerMargin() );
  interval.setMaxValue( interval.maxValue() + upperMargin() );

  if ( testAttribute( QwtScaleEngine::Symmetric ) )
    interval = interval.symmetrize( reference() );

  if ( testAttribute( QwtScaleEngine::IncludeReference ) )
    interval = interval.extend( reference() );

  if ( interval.width() == 0.0 )
    interval = buildInterval( interval.minValue() );

  stepSize = divideInterval( interval.width(), qwtMax( maxNumSteps, 1 ) );

  if ( !testAttribute( QwtScaleEngine::Floating ) )
    interval = align( interval, stepSize );

  x1 = interval.minValue();
  x2 = interval.maxValue();

  if ( testAttribute( QwtScaleEngine::Inverted ) )
  {
    qSwap( x1, x2 );
    stepSize = -stepSize;
  }
}

double PlotDateScaleEngine::divideInterval ( double  intervalSize,
int  numSteps 
) const [virtual]

Reimplemented from QwtScaleEngine.

Referenced by autoScale(), and divideScale().

{
  //qDebug( "PlotDateScaleEngine::divideInterval" );

  // Only this function was changed as compared to the QwtLinearScaleEngine

  if ( numSteps <= 0 )
    return 0.0;

  double x = QwtScaleArithmetic::divideEps( intervalSize, numSteps );

  if ( x == 0.0 )
    return 0.0;

  const double sign = ( x > 0 ) ? 1.0 : -1.0;
  double fr = ceil( x / 86400.0 );

  return sign * fr * 86400.0;
}

QwtScaleDiv PlotDateScaleEngine::divideScale ( double  x1,
double  x2,
int  numMajorSteps,
int  numMinorSteps,
double  stepSize = 0.0 
) const [virtual]

Reimplemented from QwtScaleEngine.

{
  //qDebug( "PlotDateScaleEngine::divideScale" );

  QwtDoubleInterval interval = QwtDoubleInterval( x1, x2 ).normalized();
  if ( interval.width() <= 0 )
    return QwtScaleDiv();

  stepSize = qwtAbs( stepSize );
  if ( stepSize == 0.0 )
  {
    if ( maxMajSteps < 1 )
      maxMajSteps = 1;

    stepSize = divideInterval( interval.width(), maxMajSteps );
  }

  QwtScaleDiv scaleDiv;

  if ( stepSize != 0.0 )
  {
    QwtValueList ticks[ QwtScaleDiv::NTickTypes ];
    buildTicks( interval, stepSize, maxMinSteps, ticks );

    scaleDiv = QwtScaleDiv( interval, ticks );
  }

  if ( x1 > x2 )
    scaleDiv.invert();

  return scaleDiv;
}

QwtScaleTransformation * PlotDateScaleEngine::transformation (  )  const [virtual]

Reimplemented from QwtScaleEngine.

{
  //qDebug( "PlotDateScaleEngine::transformation" );

  return new QwtScaleTransformation( QwtScaleTransformation::Linear );
}


The documentation for this class was generated from the following files: