Branch data Line data Source code
1 : : /*************************************************************************** 2 : : qgscalloutposition.h 3 : : ------------------- 4 : : begin : February 2021 5 : : copyright : (C) 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 : : 16 : : #ifndef QGSCALLOUTPOSITION_H 17 : : #define QGSCALLOUTPOSITION_H 18 : : 19 : : #include "qgis_core.h" 20 : : #include "qgis_sip.h" 21 : : 22 : : #include "qgsfeatureid.h" 23 : : 24 : : #include <QPointF> 25 : : 26 : : /** 27 : : * \ingroup core 28 : : * \class QgsCalloutPosition 29 : : * \brief Represents the calculated placement of a map label callout line. 30 : : * \since QGIS 3.20 31 : : */ 32 : 0 : class CORE_EXPORT QgsCalloutPosition 33 : : { 34 : : public: 35 : : 36 : : /** 37 : : * Constructor for QgsCalloutPosition. 38 : : * \param id associated feature ID 39 : : * \param layer ID of associated map layer 40 : : * \param providerId ID of associated label provider 41 : : */ 42 : : QgsCalloutPosition( QgsFeatureId id, const QString &layer, const QString &providerId = QString() ) 43 : : : featureId( id ) 44 : : , layerID( layer ) 45 : : , providerID( providerId ) 46 : : {} 47 : : 48 : : //! Constructor for QgsCalloutPosition 49 : 0 : QgsCalloutPosition() = default; 50 : : 51 : : /** 52 : : * ID of feature associated with this callout. 53 : : */ 54 : 0 : QgsFeatureId featureId = FID_NULL; 55 : : 56 : : /** 57 : : * ID of associated map layer. 58 : : */ 59 : : QString layerID; 60 : : 61 : : /** 62 : : * ID of the associated label provider. 63 : : */ 64 : : QString providerID; 65 : : 66 : : /** 67 : : * Returns the origin of the callout line, in map coordinates. 68 : : * 69 : : * The origin of the callout line is the line point associated with the label text. 70 : : * 71 : : * \see setOrigin() 72 : : * \see destination() 73 : : */ 74 : 0 : QPointF origin() const { return mOrigin; } 75 : : 76 : : /** 77 : : * Sets the \a origin of the callout line, in map coordinates. 78 : : * 79 : : * The origin of the callout line is the line point associated with the label text. 80 : : * 81 : : * \see origin() 82 : : * \see setDestination() 83 : : */ 84 : 0 : void setOrigin( const QPointF &origin ) { mOrigin = origin; } 85 : : 86 : : /** 87 : : * Returns the destination of the callout line, in map coordinates. 88 : : * 89 : : * The destination of the callout line is the line point associated with the feature's geometry. 90 : : * 91 : : * \see setDestination() 92 : : * \see origin() 93 : : */ 94 : 0 : QPointF destination() const { return mDestination; } 95 : : 96 : : /** 97 : : * Sets the \a destination of the callout line, in map coordinates. 98 : : * 99 : : * The destination of the callout line is the line point associated with the feature's geometry. 100 : : * 101 : : * \see destination() 102 : : * \see setOrigin() 103 : : */ 104 : 0 : void setDestination( const QPointF &destination ) { mDestination = destination; } 105 : : 106 : : /** 107 : : * Returns TRUE if the origin of the callout has pinned (manually placed). 108 : : * 109 : : * The origin of the callout line is the line point associated with the label text. 110 : : * 111 : : * \see destinationIsPinned() 112 : : * \see setOriginIsPinned() 113 : : */ 114 : : bool originIsPinned() const { return mOriginIsPinned; } 115 : : 116 : : /** 117 : : * Sets whether the origin of the callout has pinned (manually placed). 118 : : * 119 : : * The origin of the callout line is the line point associated with the label text. 120 : : * 121 : : * \see setDestinationIsPinned() 122 : : * \see originIsPinned() 123 : : */ 124 : 0 : void setOriginIsPinned( bool pinned ) { mOriginIsPinned = pinned; } 125 : : 126 : : /** 127 : : * Returns TRUE if the destination of the callout has pinned (manually placed). 128 : : * 129 : : * The destination of the callout line is the line point associated with the feature's geometry. 130 : : * 131 : : * \see originIsPinned() 132 : : * \see setDestinationIsPinned() 133 : : */ 134 : : bool destinationIsPinned() const { return mDestinationIsPinned; } 135 : : 136 : : /** 137 : : * Sets whether the destination of the callout has pinned (manually placed). 138 : : * 139 : : * The destination of the callout line is the line point associated with the feature's geometry. 140 : : * 141 : : * \see setOriginIsPinned() 142 : : * \see destinationIsPinned() 143 : : */ 144 : 0 : void setDestinationIsPinned( bool pinned ) { mDestinationIsPinned = pinned; } 145 : : 146 : : private: 147 : : 148 : : QPointF mOrigin; 149 : : 150 : : QPointF mDestination; 151 : : 152 : 0 : bool mOriginIsPinned = false; 153 : 0 : bool mDestinationIsPinned = false; 154 : : }; 155 : : 156 : : #endif // QGSCALLOUTPOSITION_H