Branch data Line data Source code
1 : : /*************************************************************************** 2 : : qgslayoutreportcontext.h 3 : : ------------------- 4 : : begin : July 2017 5 : : copyright : (C) 2017 by Nyall Dawson 6 : : email : nyall dot dawson at gmail dot com 7 : : ***************************************************************************/ 8 : : /*************************************************************************** 9 : : * * 10 : : * This program is free software; you can redistribute it and/or modify * 11 : : * it under the terms of the GNU General Public License as published by * 12 : : * the Free Software Foundation; either version 2 of the License, or * 13 : : * (at your option) any later version. * 14 : : * * 15 : : ***************************************************************************/ 16 : : #ifndef QGSLAYOUTREPORTCONTEXT_H 17 : : #define QGSLAYOUTREPORTCONTEXT_H 18 : : 19 : : #include "qgis_core.h" 20 : : #include "qgsfeature.h" 21 : : #include "qgslayout.h" 22 : : 23 : : #include <QtGlobal> 24 : : #include <QPointer> 25 : : 26 : : /** 27 : : * \ingroup core 28 : : * \class QgsLayoutReportContext 29 : : * \brief Stores information relating to the current reporting context for a layout. 30 : : * \since QGIS 3.0 31 : : */ 32 : : class CORE_EXPORT QgsLayoutReportContext : public QObject 33 : : { 34 : : 35 : : Q_OBJECT 36 : : 37 : : public: 38 : : 39 : : /** 40 : : * Constructor for QgsLayoutReportContext. 41 : : */ 42 : : QgsLayoutReportContext( QgsLayout *layout SIP_TRANSFERTHIS ); 43 : : 44 : : /** 45 : : * Sets the current \a feature for evaluating the layout. This feature may 46 : : * be used for altering an item's content and appearance for a report 47 : : * or atlas layout. 48 : : * 49 : : * Emits the changed() signal. 50 : : * 51 : : * \see feature() 52 : : */ 53 : : void setFeature( const QgsFeature &feature ); 54 : : 55 : : /** 56 : : * Returns the current feature for evaluating the layout. This feature may 57 : : * be used for altering an item's content and appearance for a report 58 : : * or atlas layout. 59 : : * \see currentGeometry() 60 : : * \see setFeature() 61 : : */ 62 : 0 : QgsFeature feature() const { return mFeature; } 63 : : 64 : : /** 65 : : * Returns the current feature() geometry in the given \a crs. 66 : : * If no CRS is specified, the original feature geometry is returned. 67 : : * 68 : : * Reprojection only works if a valid layer is set for layer(). 69 : : * 70 : : * \see feature() 71 : : * \see layer() 72 : : */ 73 : : QgsGeometry currentGeometry( const QgsCoordinateReferenceSystem &crs = QgsCoordinateReferenceSystem() ) const; 74 : : 75 : : /** 76 : : * Returns the vector layer associated with the layout's context. 77 : : * \see setLayer() 78 : : */ 79 : : QgsVectorLayer *layer() const; 80 : : 81 : : /** 82 : : * Sets the vector \a layer associated with the layout's context. 83 : : * 84 : : * Emits the changed() signal. 85 : : * 86 : : * \see layer() 87 : : */ 88 : : void setLayer( QgsVectorLayer *layer ); 89 : : 90 : : /** 91 : : * Sets the list of predefined \a scales to use with the layout. This is used 92 : : * for maps which are set to the predefined atlas scaling mode. 93 : : * \see predefinedScales() 94 : : * \deprecated Use QgsLayoutRenderContext::setPredefinedScales() 95 : : */ 96 : : Q_DECL_DEPRECATED void setPredefinedScales( const QVector<qreal> &scales ) SIP_DEPRECATED; 97 : : 98 : : /** 99 : : * Returns the current list of predefined scales for use with the layout. 100 : : * \see setPredefinedScales() 101 : : * \deprecated Use QgsLayoutRenderContext::predefinedScales() 102 : : */ 103 : 0 : Q_DECL_DEPRECATED QVector<qreal> predefinedScales() const SIP_DEPRECATED { return mPredefinedScales; } 104 : : 105 : : signals: 106 : : 107 : : /** 108 : : * Emitted when the context's \a layer is changed. 109 : : */ 110 : : void layerChanged( QgsVectorLayer *layer ); 111 : : 112 : : /** 113 : : * Emitted certain settings in the context is changed, e.g. by setting a new feature or vector layer 114 : : * for the context. 115 : : */ 116 : : void changed(); 117 : : 118 : : private: 119 : : 120 : : QgsLayout *mLayout = nullptr; 121 : : 122 : : QgsFeature mFeature; 123 : : QPointer< QgsVectorLayer > mLayer; 124 : : 125 : : // projected geometry cache 126 : : mutable QMap<long, QgsGeometry> mGeometryCache; 127 : : 128 : : //list of predefined scales 129 : : QVector<qreal> mPredefinedScales; 130 : : 131 : : friend class QgsLayoutExporter; 132 : : friend class TestQgsLayout; 133 : : 134 : : }; 135 : : 136 : : #endif //QGSLAYOUTREPORTCONTEXT_H 137 : : 138 : : 139 : :