123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174 |
- /* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997 Josef Wilgen
- * Copyright (C) 2002 Uwe Rathmann
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
- #include "qwt_scale_div.h"
- #include "qwt_math.h"
- #include "qwt_interval.h"
- #include <qalgorithms.h>
- //! Construct an invalid QwtScaleDiv instance.
- QwtScaleDiv::QwtScaleDiv():
- d_lowerBound( 0.0 ),
- d_upperBound( 0.0 ),
- d_isValid( false )
- {
- }
- /*!
- Construct QwtScaleDiv instance.
- \param interval Interval
- \param ticks List of major, medium and minor ticks
- */
- QwtScaleDiv::QwtScaleDiv( const QwtInterval &interval,
- QList<double> ticks[NTickTypes] ):
- d_lowerBound( interval.minValue() ),
- d_upperBound( interval.maxValue() ),
- d_isValid( true )
- {
- for ( int i = 0; i < NTickTypes; i++ )
- d_ticks[i] = ticks[i];
- }
- /*!
- Construct QwtScaleDiv instance.
- \param lowerBound First interval limit
- \param upperBound Second interval limit
- \param ticks List of major, medium and minor ticks
- */
- QwtScaleDiv::QwtScaleDiv(
- double lowerBound, double upperBound,
- QList<double> ticks[NTickTypes] ):
- d_lowerBound( lowerBound ),
- d_upperBound( upperBound ),
- d_isValid( true )
- {
- for ( int i = 0; i < NTickTypes; i++ )
- d_ticks[i] = ticks[i];
- }
- /*!
- Change the interval
- \param interval Interval
- */
- void QwtScaleDiv::setInterval( const QwtInterval &interval )
- {
- setInterval( interval.minValue(), interval.maxValue() );
- }
- /*!
- \brief Equality operator
- \return true if this instance is equal to other
- */
- bool QwtScaleDiv::operator==( const QwtScaleDiv &other ) const
- {
- if ( d_lowerBound != other.d_lowerBound ||
- d_upperBound != other.d_upperBound ||
- d_isValid != other.d_isValid )
- {
- return false;
- }
- for ( int i = 0; i < NTickTypes; i++ )
- {
- if ( d_ticks[i] != other.d_ticks[i] )
- return false;
- }
- return true;
- }
- /*!
- \brief Inequality
- \return true if this instance is not equal to s
- */
- bool QwtScaleDiv::operator!=( const QwtScaleDiv &s ) const
- {
- return ( !( *this == s ) );
- }
- //! Invalidate the scale division
- void QwtScaleDiv::invalidate()
- {
- d_isValid = false;
- // detach arrays
- for ( int i = 0; i < NTickTypes; i++ )
- d_ticks[i].clear();
- d_lowerBound = d_upperBound = 0;
- }
- //! Check if the scale division is valid
- bool QwtScaleDiv::isValid() const
- {
- return d_isValid;
- }
- /*!
- Return if a value is between lowerBound() and upperBound()
- \param value Value
- \return true/false
- */
- bool QwtScaleDiv::contains( double value ) const
- {
- if ( !d_isValid )
- return false;
- const double min = qMin( d_lowerBound, d_upperBound );
- const double max = qMax( d_lowerBound, d_upperBound );
- return value >= min && value <= max;
- }
- //! Invert the scale divison
- void QwtScaleDiv::invert()
- {
- qSwap( d_lowerBound, d_upperBound );
- for ( int i = 0; i < NTickTypes; i++ )
- {
- QList<double>& ticks = d_ticks[i];
- const int size = ticks.count();
- const int size2 = size / 2;
- for ( int i = 0; i < size2; i++ )
- qSwap( ticks[i], ticks[size - 1 - i] );
- }
- }
- /*!
- Assign ticks
- \param type MinorTick, MediumTick or MajorTick
- \param ticks Values of the tick positions
- */
- void QwtScaleDiv::setTicks( int type, const QList<double> &ticks )
- {
- if ( type >= 0 || type < NTickTypes )
- d_ticks[type] = ticks;
- }
- /*!
- Return a list of ticks
- \param type MinorTick, MediumTick or MajorTick
- */
- const QList<double> &QwtScaleDiv::ticks( int type ) const
- {
- if ( type >= 0 || type < NTickTypes )
- return d_ticks[type];
- static QList<double> noTicks;
- return noTicks;
- }
|