Branch data Line data Source code
1 : : /*************************************************************************** 2 : : qgslayoutmeasurement.cpp 3 : : -------------------- 4 : : begin : June 2017 5 : : copyright : (C) 2017 by Nyall Dawson 6 : : email : nyall dot dawson at gmail dot com 7 : : ***************************************************************************/ 8 : : 9 : : /*************************************************************************** 10 : : * * 11 : : * This program is free software; you can redistribute it and/or modify * 12 : : * it under the terms of the GNU General Public License as published by * 13 : : * the Free Software Foundation; either version 2 of the License, or * 14 : : * (at your option) any later version. * 15 : : * * 16 : : ***************************************************************************/ 17 : : 18 : : #include "qgslayoutmeasurement.h" 19 : : #include "qgis.h" 20 : : #include <QStringList> 21 : : 22 : 0 : QgsLayoutMeasurement::QgsLayoutMeasurement( const double length, const QgsUnitTypes::LayoutUnit units ) 23 : 0 : : mLength( length ) 24 : 0 : , mUnits( units ) 25 : : { 26 : 0 : } 27 : : 28 : 0 : QString QgsLayoutMeasurement::encodeMeasurement() const 29 : : { 30 : 0 : return QStringLiteral( "%1,%2" ).arg( mLength ).arg( QgsUnitTypes::encodeUnit( mUnits ) ); 31 : 0 : } 32 : : 33 : 0 : QgsLayoutMeasurement QgsLayoutMeasurement::decodeMeasurement( const QString &string ) 34 : : { 35 : 0 : QStringList parts = string.split( ',' ); 36 : 0 : if ( parts.count() != 2 ) 37 : : { 38 : 0 : return QgsLayoutMeasurement( 0 ); 39 : : } 40 : 0 : return QgsLayoutMeasurement( parts[0].toDouble(), QgsUnitTypes::decodeLayoutUnit( parts[1] ) ); 41 : 0 : } 42 : : 43 : 0 : bool QgsLayoutMeasurement::operator==( const QgsLayoutMeasurement other ) const 44 : : { 45 : 0 : return other.units() == mUnits && qgsDoubleNear( other.length(), mLength ); 46 : : } 47 : : 48 : 0 : bool QgsLayoutMeasurement::operator!=( const QgsLayoutMeasurement other ) const 49 : : { 50 : 0 : return ( ! operator==( other ) ); 51 : : } 52 : : 53 : 0 : QgsLayoutMeasurement QgsLayoutMeasurement::operator+( const double v ) const 54 : : { 55 : 0 : return QgsLayoutMeasurement( mLength + v, mUnits ); 56 : : } 57 : : 58 : 0 : QgsLayoutMeasurement QgsLayoutMeasurement::operator+=( const double v ) 59 : : { 60 : 0 : *this = *this + v; 61 : 0 : return *this; 62 : : } 63 : : 64 : 0 : QgsLayoutMeasurement QgsLayoutMeasurement::operator-( const double v ) const 65 : : { 66 : 0 : return QgsLayoutMeasurement( mLength - v, mUnits ); 67 : : } 68 : : 69 : 0 : QgsLayoutMeasurement QgsLayoutMeasurement::operator-=( const double v ) 70 : : { 71 : 0 : *this = *this - v; 72 : 0 : return *this; 73 : : } 74 : : 75 : 0 : QgsLayoutMeasurement QgsLayoutMeasurement::operator*( const double v ) const 76 : : { 77 : 0 : return QgsLayoutMeasurement( mLength * v, mUnits ); 78 : : } 79 : : 80 : 0 : QgsLayoutMeasurement QgsLayoutMeasurement::operator*=( const double v ) 81 : : { 82 : 0 : *this = *this * v; 83 : 0 : return *this; 84 : : } 85 : : 86 : 0 : QgsLayoutMeasurement QgsLayoutMeasurement::operator/( const double v ) const 87 : : { 88 : 0 : return QgsLayoutMeasurement( mLength / v, mUnits ); 89 : : } 90 : : 91 : 0 : QgsLayoutMeasurement QgsLayoutMeasurement::operator/=( const double v ) 92 : : { 93 : 0 : *this = *this / v; 94 : 0 : return *this; 95 : : }