Branch data Line data Source code
1 : : /*************************************************************************** 2 : : qgslayoutmeasurement.h 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 : : #ifndef QGSLAYOUTMEASUREMENT_H 19 : : #define QGSLAYOUTMEASUREMENT_H 20 : : 21 : : #include "qgis_core.h" 22 : : 23 : : #include "qgsunittypes.h" 24 : : 25 : : /** 26 : : * \ingroup core 27 : : * \class QgsLayoutMeasurement 28 : : * \brief This class provides a method of storing measurements for use in QGIS layouts 29 : : * using a variety of different measurement units. 30 : : * \see QgsLayoutMeasurementConverter 31 : : * \since QGIS 3.0 32 : : */ 33 : : class CORE_EXPORT QgsLayoutMeasurement 34 : : { 35 : : public: 36 : : 37 : : /** 38 : : * Constructor for QgsLayoutMeasurement. 39 : : * \param length measurement length 40 : : * \param units measurement units 41 : : */ 42 : : explicit QgsLayoutMeasurement( double length, QgsUnitTypes::LayoutUnit units = QgsUnitTypes::LayoutMillimeters ); 43 : : 44 : : /** 45 : : * Returns the length of the measurement. 46 : : * \see setLength() 47 : : */ 48 : 0 : double length() const { return mLength; } 49 : : 50 : : /** 51 : : * Sets the \a length of the measurement. 52 : : * \see length() 53 : : */ 54 : 0 : void setLength( const double length ) { mLength = length; } 55 : : 56 : : /** 57 : : * Returns the units for the measurement. 58 : : * \see setUnits() 59 : : */ 60 : 0 : QgsUnitTypes::LayoutUnit units() const { return mUnits; } 61 : : 62 : : /** 63 : : * Sets the \a units for the measurement. Does not alter the stored length, 64 : : * ie. no length conversion is done. 65 : : * \see units() 66 : : */ 67 : 0 : void setUnits( const QgsUnitTypes::LayoutUnit units ) { mUnits = units; } 68 : : 69 : : /** 70 : : * Encodes the layout measurement to a string 71 : : * \see decodeMeasurement() 72 : : */ 73 : : QString encodeMeasurement() const; 74 : : 75 : : /** 76 : : * Decodes a measurement from a \a string. 77 : : * \see encodeMeasurement() 78 : : */ 79 : : static QgsLayoutMeasurement decodeMeasurement( const QString &string ); 80 : : 81 : : bool operator==( QgsLayoutMeasurement other ) const; 82 : : bool operator!=( QgsLayoutMeasurement other ) const; 83 : : 84 : : /** 85 : : * Adds a scalar value to the measurement. 86 : : */ 87 : : QgsLayoutMeasurement operator+( double v ) const; 88 : : 89 : : /** 90 : : * Adds a scalar value to the measurement. 91 : : */ 92 : : QgsLayoutMeasurement operator+=( double v ); 93 : : 94 : : /** 95 : : * Subtracts a scalar value from the measurement. 96 : : */ 97 : : QgsLayoutMeasurement operator-( double v ) const; 98 : : 99 : : /** 100 : : * Subtracts a scalar value from the measurement. 101 : : */ 102 : : QgsLayoutMeasurement operator-=( double v ); 103 : : 104 : : /** 105 : : * Multiplies the measurement by a scalar value. 106 : : */ 107 : : QgsLayoutMeasurement operator*( double v ) const; 108 : : 109 : : /** 110 : : * Multiplies the measurement by a scalar value. 111 : : */ 112 : : QgsLayoutMeasurement operator*=( double v ); 113 : : 114 : : /** 115 : : * Divides the measurement by a scalar value. 116 : : */ 117 : : QgsLayoutMeasurement operator/( double v ) const; 118 : : 119 : : /** 120 : : * Divides the measurement by a scalar value. 121 : : */ 122 : : QgsLayoutMeasurement operator/=( double v ); 123 : : 124 : : #ifdef SIP_RUN 125 : : SIP_PYOBJECT __repr__(); 126 : : % MethodCode 127 : : QString str = QStringLiteral( "<QgsLayoutMeasurement: %1 %2 >" ).arg( sipCpp->length() ).arg( QgsUnitTypes::toAbbreviatedString( sipCpp->units() ) ); 128 : : sipRes = PyUnicode_FromString( str.toUtf8().constData() ); 129 : : % End 130 : : #endif 131 : : 132 : : private: 133 : : 134 : : double mLength = 0.0; 135 : : QgsUnitTypes::LayoutUnit mUnits = QgsUnitTypes::LayoutMillimeters; 136 : : 137 : : }; 138 : : 139 : : #endif // QGSLAYOUTMEASUREMENT_H