Branch data Line data Source code
1 : : /*************************************************************************** 2 : : qgsbearingnumericformat.h 3 : : -------------------------- 4 : : begin : January 2020 5 : : copyright : (C) 2020 by Nyall Dawson 6 : : email : nyall dot dawson at gmail dot com 7 : : *************************************************************************** 8 : : * * 9 : : * This program is free software; you can redistribute it and/or modify * 10 : : * it under the terms of the GNU General Public License as published by * 11 : : * the Free Software Foundation; either version 2 of the License, or * 12 : : * (at your option) any later version. * 13 : : * * 14 : : ***************************************************************************/ 15 : : #ifndef QGSBEARINGNUMERICFORMAT_H 16 : : #define QGSBEARINGNUMERICFORMAT_H 17 : : 18 : : #include "qgis_core.h" 19 : : #include "qgis_sip.h" 20 : : #include "qgsbasicnumericformat.h" 21 : : 22 : : /** 23 : : * \ingroup core 24 : : * \brief A numeric formatter which returns a text representation of a direction/bearing. 25 : : * 26 : : * \since QGIS 3.12 27 : : */ 28 : 32 : class CORE_EXPORT QgsBearingNumericFormat : public QgsBasicNumericFormat 29 : : { 30 : : public: 31 : : 32 : : /** 33 : : * Directional formatting option, which controls how bearing direction is 34 : : * described in the returned strings. 35 : : */ 36 : : enum FormatDirectionOption 37 : : { 38 : : UseRange0To180WithEWDirectionalSuffix = 0, //!< Return values between 0 and 180, with a E or W directional suffix 39 : : UseRangeNegative180ToPositive180, //!< Return values between -180 and 180 40 : : UseRange0To360, //!< Return values between 0 to 360 41 : : }; 42 : : 43 : : /** 44 : : * Default constructor 45 : : */ 46 : : QgsBearingNumericFormat(); 47 : : 48 : : QString id() const override; 49 : : QString visibleName() const override; 50 : : int sortKey() override; 51 : : double suggestSampleValue() const override; 52 : : QString formatDouble( double value, const QgsNumericFormatContext &context ) const override; 53 : : QgsBearingNumericFormat *clone() const override SIP_FACTORY; 54 : : QgsNumericFormat *create( const QVariantMap &configuration, const QgsReadWriteContext &context ) const override SIP_FACTORY; 55 : : QVariantMap configuration( const QgsReadWriteContext &context ) const override; 56 : : 57 : : /** 58 : : * Returns the directional formatting option, which controls how bearing direction is 59 : : * described in the returned strings. 60 : : * 61 : : * \see setDirectionFormat() 62 : : */ 63 : : FormatDirectionOption directionFormat() const; 64 : : 65 : : /** 66 : : * Sets the directional formatting option, which controls how bearing direction is 67 : : * described in the returned strings. 68 : : * 69 : : * \see directionFormat() 70 : : */ 71 : : void setDirectionFormat( FormatDirectionOption format ); 72 : : 73 : : void setConfiguration( const QVariantMap &configuration, const QgsReadWriteContext &context ) override; 74 : : 75 : : private: 76 : : 77 : : FormatDirectionOption mDirectionFormat = UseRange0To180WithEWDirectionalSuffix; 78 : : 79 : : }; 80 : : 81 : : #endif // QGSBEARINGNUMERICFORMAT_H