Branch data Line data Source code
1 : : /*************************************************************************** 2 : : qgslayoutgeopdfexporter.h 3 : : -------------------------- 4 : : begin : August 2019 5 : : copyright : (C) 2019 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 QGSLAYOUTGEOPDFEXPORTER_H 17 : : #define QGSLAYOUTGEOPDFEXPORTER_H 18 : : 19 : : #include "qgis_core.h" 20 : : #include "qgsabstractgeopdfexporter.h" 21 : : #include "qgslayoutitemmap.h" 22 : : #include <QList> 23 : : #include <QTemporaryDir> 24 : : 25 : : #define SIP_NO_FILE 26 : : 27 : : class QgsLayout; 28 : : class QgsGeoPdfRenderedFeatureHandler; 29 : : 30 : : /** 31 : : * \class QgsLayoutGeoPdfExporter 32 : : * \ingroup core 33 : : * 34 : : * \brief Handles GeoPDF export specific setup, cleanup and processing steps. 35 : : * 36 : : * This class is a low level implementation detail only. Generally, you should use the high level interface exposed by 37 : : * QgsLayoutExporter instead. 38 : : * 39 : : * \warning QgsLayoutGeoPdfExporter is designed to be a short lived object. It should be created for a 40 : : * single layout export operation only, and then immediately destroyed. Failure to correctly 41 : : * destroy the object after exporting a layout will leave the layout in an inconsistent, unstable state. 42 : : * 43 : : * \note Not available in Python bindings 44 : : * 45 : : * \since QGIS 3.10 46 : : */ 47 : : class CORE_EXPORT QgsLayoutGeoPdfExporter : public QgsAbstractGeoPdfExporter 48 : : { 49 : : public: 50 : : 51 : : /** 52 : : * Constructor for QgsLayoutGeoPdfExporter, associated with the specified \a layout. 53 : : */ 54 : : QgsLayoutGeoPdfExporter( QgsLayout *layout ); 55 : : 56 : : ~QgsLayoutGeoPdfExporter() override; 57 : : 58 : : /** 59 : : * Returns any custom layer tree groups defined in the layer's settings. 60 : : */ 61 : 0 : QMap< QString, QString > customLayerTreeGroups() const { return mCustomLayerTreeGroups; } 62 : : 63 : : /** 64 : : * Optional map of map layer ID to initial visibility state. If a layer ID is not present in this, 65 : : * it will default to being initially visible when opening the PDF. 66 : : * 67 : : * \since QGIS 3.14 68 : : */ 69 : 0 : QMap< QString, bool > initialLayerVisibility() const { return mInitialLayerVisibility; } 70 : : 71 : : /** 72 : : * Optional list of map layer IDs in the order they should be shown in the generated GeoPDF layer tree. 73 : : * Layer IDs earlier in the list will appear higher in the GeoPDF layer tree. 74 : : * 75 : : * \since QGIS 3.14 76 : : */ 77 : 0 : QStringList layerOrder() const { return mLayerOrder; } 78 : : 79 : : private: 80 : : 81 : : VectorComponentDetail componentDetailForLayerId( const QString &layerId ) override; 82 : : 83 : : QgsLayout *mLayout = nullptr; 84 : : QHash< QgsLayoutItemMap *, QgsGeoPdfRenderedFeatureHandler * > mMapHandlers; 85 : : 86 : : QMap< QString, bool > mInitialLayerVisibility; 87 : : QMap< QString, QString > mCustomLayerTreeGroups; 88 : : QStringList mLayerOrder; 89 : : 90 : : friend class TestQgsLayoutGeoPdfExport; 91 : : }; 92 : : 93 : : #endif //QGSLAYOUTGEOPDFEXPORTER_H 94 : : 95 : : 96 : :