Changeset 8127 in ntrip for trunk/BNC/qwt/qwt_scale_div.cpp
- Timestamp:
- May 10, 2017, 3:20:54 PM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/BNC/qwt/qwt_scale_div.cpp
r4271 r8127 10 10 #include "qwt_scale_div.h" 11 11 #include "qwt_math.h" 12 #include "qwt_interval.h"13 12 #include <qalgorithms.h> 14 13 15 //! Construct an invalid QwtScaleDiv instance. 16 QwtScaleDiv::QwtScaleDiv(): 17 d_lowerBound( 0.0 ), 18 d_upperBound( 0.0 ), 19 d_isValid( false ) 20 { 21 } 22 23 /*! 24 Construct QwtScaleDiv instance. 14 /*! 15 Construct a division without ticks 16 17 \param lowerBound First boundary 18 \param upperBound Second boundary 19 20 \note lowerBound might be greater than upperBound for inverted scales 21 */ 22 QwtScaleDiv::QwtScaleDiv( double lowerBound, double upperBound ): 23 d_lowerBound( lowerBound ), 24 d_upperBound( upperBound ) 25 { 26 } 27 28 /*! 29 Construct a scale division 25 30 26 31 \param interval Interval … … 30 35 QList<double> ticks[NTickTypes] ): 31 36 d_lowerBound( interval.minValue() ), 32 d_upperBound( interval.maxValue() ), 33 d_isValid( true ) 37 d_upperBound( interval.maxValue() ) 34 38 { 35 39 for ( int i = 0; i < NTickTypes; i++ ) … … 38 42 39 43 /*! 40 Construct QwtScaleDiv instance.41 42 \param lowerBound First interval limit43 \param upperBound Second interval limit44 Construct a scale division 45 46 \param lowerBound First boundary 47 \param upperBound Second boundary 44 48 \param ticks List of major, medium and minor ticks 45 */ 46 QwtScaleDiv::QwtScaleDiv( 47 double lowerBound, double upperBound, 49 50 \note lowerBound might be greater than upperBound for inverted scales 51 */ 52 QwtScaleDiv::QwtScaleDiv( double lowerBound, double upperBound, 48 53 QList<double> ticks[NTickTypes] ): 49 54 d_lowerBound( lowerBound ), 50 d_upperBound( upperBound ), 51 d_isValid( true ) 55 d_upperBound( upperBound ) 52 56 { 53 57 for ( int i = 0; i < NTickTypes; i++ ) … … 56 60 57 61 /*! 62 Construct a scale division 63 64 \param lowerBound First boundary 65 \param upperBound Second boundary 66 \param minorTicks List of minor ticks 67 \param mediumTicks List medium ticks 68 \param majorTicks List of major ticks 69 70 \note lowerBound might be greater than upperBound for inverted scales 71 */ 72 QwtScaleDiv::QwtScaleDiv( double lowerBound, double upperBound, 73 const QList<double> &minorTicks, 74 const QList<double> &mediumTicks, 75 const QList<double> &majorTicks ): 76 d_lowerBound( lowerBound ), 77 d_upperBound( upperBound ) 78 { 79 d_ticks[ MinorTick ] = minorTicks; 80 d_ticks[ MediumTick ] = mediumTicks; 81 d_ticks[ MajorTick ] = majorTicks; 82 } 83 84 /*! 85 Change the interval 86 87 \param lowerBound First boundary 88 \param upperBound Second boundary 89 90 \note lowerBound might be greater than upperBound for inverted scales 91 */ 92 void QwtScaleDiv::setInterval( double lowerBound, double upperBound ) 93 { 94 d_lowerBound = lowerBound; 95 d_upperBound = upperBound; 96 } 97 98 /*! 58 99 Change the interval 100 59 101 \param interval Interval 60 102 */ 61 103 void QwtScaleDiv::setInterval( const QwtInterval &interval ) 62 104 { 63 setInterval( interval.minValue(), interval.maxValue() ); 105 d_lowerBound = interval.minValue(); 106 d_upperBound = interval.maxValue(); 107 } 108 109 /*! 110 \return lowerBound -> upperBound 111 */ 112 QwtInterval QwtScaleDiv::interval() const 113 { 114 return QwtInterval( d_lowerBound, d_upperBound ); 115 } 116 117 /*! 118 Set the first boundary 119 120 \param lowerBound First boundary 121 \sa lowerBiound(), setUpperBound() 122 */ 123 void QwtScaleDiv::setLowerBound( double lowerBound ) 124 { 125 d_lowerBound = lowerBound; 126 } 127 128 /*! 129 \return First boundary 130 \sa upperBound() 131 */ 132 double QwtScaleDiv::lowerBound() const 133 { 134 return d_lowerBound; 135 } 136 137 /*! 138 Set the second boundary 139 140 \param upperBound Second boundary 141 \sa upperBound(), setLowerBound() 142 */ 143 void QwtScaleDiv::setUpperBound( double upperBound ) 144 { 145 d_upperBound = upperBound; 146 } 147 148 /*! 149 \return upper bound 150 \sa lowerBound() 151 */ 152 double QwtScaleDiv::upperBound() const 153 { 154 return d_upperBound; 155 } 156 157 /*! 158 \return upperBound() - lowerBound() 159 */ 160 double QwtScaleDiv::range() const 161 { 162 return d_upperBound - d_lowerBound; 64 163 } 65 164 … … 71 170 { 72 171 if ( d_lowerBound != other.d_lowerBound || 73 d_upperBound != other.d_upperBound || 74 d_isValid != other.d_isValid ) 172 d_upperBound != other.d_upperBound ) 75 173 { 76 174 return false; … … 88 186 /*! 89 187 \brief Inequality 90 \return true if this instance is not equal to s 91 */ 92 bool QwtScaleDiv::operator!=( const QwtScaleDiv &s ) const 93 { 94 return ( !( *this == s ) ); 95 } 96 97 //! Invalidate the scale division 98 void QwtScaleDiv::invalidate() 99 { 100 d_isValid = false; 101 102 // detach arrays 103 for ( int i = 0; i < NTickTypes; i++ ) 104 d_ticks[i].clear(); 105 106 d_lowerBound = d_upperBound = 0; 107 } 108 109 //! Check if the scale division is valid 110 bool QwtScaleDiv::isValid() const 111 { 112 return d_isValid; 188 \return true if this instance is not equal to other 189 */ 190 bool QwtScaleDiv::operator!=( const QwtScaleDiv &other ) const 191 { 192 return ( !( *this == other ) ); 193 } 194 195 //! Check if the scale division is empty( lowerBound() == upperBound() ) 196 bool QwtScaleDiv::isEmpty() const 197 { 198 return ( d_lowerBound == d_upperBound ); 199 } 200 201 //! Check if the scale division is increasing( lowerBound() <= upperBound() ) 202 bool QwtScaleDiv::isIncreasing() const 203 { 204 return d_lowerBound <= d_upperBound; 113 205 } 114 206 … … 121 213 bool QwtScaleDiv::contains( double value ) const 122 214 { 123 if ( !d_isValid )124 return false;125 126 215 const double min = qMin( d_lowerBound, d_upperBound ); 127 216 const double max = qMax( d_lowerBound, d_upperBound ); … … 130 219 } 131 220 132 //! Invert the scale divison 221 /*! 222 Invert the scale division 223 \sa inverted() 224 */ 133 225 void QwtScaleDiv::invert() 134 226 { … … 142 234 const int size2 = size / 2; 143 235 144 for ( int i = 0; i < size2; i++ )145 qSwap( ticks[ i], ticks[size - 1 - i] );236 for ( int j = 0; j < size2; j++ ) 237 qSwap( ticks[j], ticks[size - 1 - j] ); 146 238 } 239 } 240 241 /*! 242 \return A scale division with inverted boundaries and ticks 243 \sa invert() 244 */ 245 QwtScaleDiv QwtScaleDiv::inverted() const 246 { 247 QwtScaleDiv other = *this; 248 other.invert(); 249 250 return other; 251 } 252 253 /*! 254 Return a scale division with an interval [lowerBound, upperBound] 255 where all ticks outside this interval are removed 256 257 \param lowerBound Lower bound 258 \param upperBound Upper bound 259 260 \return Scale division with all ticks inside of the given interval 261 262 \note lowerBound might be greater than upperBound for inverted scales 263 */ 264 QwtScaleDiv QwtScaleDiv::bounded( 265 double lowerBound, double upperBound ) const 266 { 267 const double min = qMin( lowerBound, upperBound ); 268 const double max = qMax( lowerBound, upperBound ); 269 270 QwtScaleDiv sd; 271 sd.setInterval( lowerBound, upperBound ); 272 273 for ( int tickType = 0; tickType < QwtScaleDiv::NTickTypes; tickType++ ) 274 { 275 const QList<double> &ticks = d_ticks[ tickType ]; 276 277 QList<double> boundedTicks; 278 for ( int i = 0; i < ticks.size(); i++ ) 279 { 280 const double tick = ticks[i]; 281 if ( tick >= min && tick <= max ) 282 boundedTicks += tick; 283 } 284 285 sd.setTicks( tickType, boundedTicks ); 286 } 287 288 return sd; 289 147 290 } 148 291 … … 155 298 void QwtScaleDiv::setTicks( int type, const QList<double> &ticks ) 156 299 { 157 if ( type >= 0 ||type < NTickTypes )300 if ( type >= 0 && type < NTickTypes ) 158 301 d_ticks[type] = ticks; 159 302 } … … 163 306 164 307 \param type MinorTick, MediumTick or MajorTick 165 */ 166 const QList<double> &QwtScaleDiv::ticks( int type ) const 167 { 168 if ( type >= 0 || type < NTickTypes ) 308 \return Tick list 309 */ 310 QList<double> QwtScaleDiv::ticks( int type ) const 311 { 312 if ( type >= 0 && type < NTickTypes ) 169 313 return d_ticks[type]; 170 314 171 static QList<double> noTicks; 172 return noTicks; 173 } 315 return QList<double>(); 316 } 317 318 #ifndef QT_NO_DEBUG_STREAM 319 320 QDebug operator<<( QDebug debug, const QwtScaleDiv &scaleDiv ) 321 { 322 debug << scaleDiv.lowerBound() << "<->" << scaleDiv.upperBound(); 323 debug << "Major: " << scaleDiv.ticks( QwtScaleDiv::MajorTick ); 324 debug << "Medium: " << scaleDiv.ticks( QwtScaleDiv::MediumTick ); 325 debug << "Minor: " << scaleDiv.ticks( QwtScaleDiv::MinorTick ); 326 327 return debug; 328 } 329 330 #endif 331
Note:
See TracChangeset
for help on using the changeset viewer.