From d10ec078d13463907c8054a3259100212ebb7663 Mon Sep 17 00:00:00 2001 From: Matthias Kuhn Date: Thu, 21 Nov 2019 16:21:46 +0100 Subject: [PATCH 1/2] Add DXF server export params NO_MTEXT and FORCE_2D --- src/server/services/wms/qgswmsparameters.cpp | 26 ++++++++++++++++++++ src/server/services/wms/qgswmsparameters.h | 21 +++++++++++++++- src/server/services/wms/qgswmsrenderer.cpp | 7 ++++++ 3 files changed, 53 insertions(+), 1 deletion(-) diff --git a/src/server/services/wms/qgswmsparameters.cpp b/src/server/services/wms/qgswmsparameters.cpp index cabd62b4636..1bdfeb08e46 100644 --- a/src/server/services/wms/qgswmsparameters.cpp +++ b/src/server/services/wms/qgswmsparameters.cpp @@ -1480,6 +1480,32 @@ namespace QgsWms return filters; } + bool QgsWmsParameters::force2D() const + { + bool force2D = false; + const QMap options = dxfFormatOptions(); + + if ( options.contains( DxfFormatOption::FORCE_2D ) ) + { + force2D = QVariant( options[ DxfFormatOption::FORCE_2D ] ).toBool(); + } + + return force2D; + } + + bool QgsWmsParameters::noMText() const + { + bool noMText = false; + const QMap options = dxfFormatOptions(); + + if ( options.contains( DxfFormatOption::NO_MTEXT ) ) + { + noMText = QVariant( options[ DxfFormatOption::NO_MTEXT ] ).toBool(); + } + + return noMText; + } + QList QgsWmsParameters::layersParameters() const { const QStringList layers = allLayersNickname(); diff --git a/src/server/services/wms/qgswmsparameters.h b/src/server/services/wms/qgswmsparameters.h index dd108133a23..2902b7c4969 100644 --- a/src/server/services/wms/qgswmsparameters.h +++ b/src/server/services/wms/qgswmsparameters.h @@ -349,7 +349,9 @@ namespace QgsWms MODE, LAYERATTRIBUTES, USE_TITLE_AS_LAYERNAME, - CODEC + CODEC, + NO_MTEXT, + FORCE_2D }; Q_ENUM( DxfFormatOption ) @@ -1309,6 +1311,22 @@ namespace QgsWms */ QMap dimensionValues() const; + /** + * \returns true if the FORCE_MTEXT parameter is set and the DXF should + * be produced with MTEXT instead of TEXT. + * + * \since QGIS 3.12 + */ + bool noMText() const; + + /** + * \returns true if the FORCE_2D parameter is set and the DXF should + * be produced in 2D. + * + * \since QGIS 3.12 + */ + bool force2D() const; + private: static bool isExternalLayer( const QString &name ); @@ -1325,6 +1343,7 @@ namespace QgsWms QMultiMap layerFilters( const QStringList &layers ) const; + QMap mWmsParameters; QMap > mExternalWMSParameters; QList mVersions; diff --git a/src/server/services/wms/qgswmsrenderer.cpp b/src/server/services/wms/qgswmsrenderer.cpp index 19632423cd1..de70296ef29 100644 --- a/src/server/services/wms/qgswmsrenderer.cpp +++ b/src/server/services/wms/qgswmsrenderer.cpp @@ -848,6 +848,13 @@ namespace QgsWms dxf->setSymbologyScale( mWmsParameters.dxfScale() ); } + dxf->setForce2d( mWmsParameters.force2D() ); + QgsDxfExport::Flags flags; + if ( mWmsParameters.noMText() ) + flags.setFlag( QgsDxfExport::Flag::FlagNoMText ); + + dxf->setFlags( flags ); + return dxf; } From 841086046feca0b394bbfe51c34dff88e9621b81 Mon Sep 17 00:00:00 2001 From: Matthias Kuhn Date: Fri, 29 Nov 2019 18:15:33 +0100 Subject: [PATCH 2/2] Change variable name to clarify the getter purpose --- src/server/services/wms/qgswmsparameters.cpp | 2 +- src/server/services/wms/qgswmsparameters.h | 2 +- src/server/services/wms/qgswmsrenderer.cpp | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/server/services/wms/qgswmsparameters.cpp b/src/server/services/wms/qgswmsparameters.cpp index 1bdfeb08e46..43b2634f8ed 100644 --- a/src/server/services/wms/qgswmsparameters.cpp +++ b/src/server/services/wms/qgswmsparameters.cpp @@ -1480,7 +1480,7 @@ namespace QgsWms return filters; } - bool QgsWmsParameters::force2D() const + bool QgsWmsParameters::isForce2D() const { bool force2D = false; const QMap options = dxfFormatOptions(); diff --git a/src/server/services/wms/qgswmsparameters.h b/src/server/services/wms/qgswmsparameters.h index 2902b7c4969..82ddc4f7c93 100644 --- a/src/server/services/wms/qgswmsparameters.h +++ b/src/server/services/wms/qgswmsparameters.h @@ -1325,7 +1325,7 @@ namespace QgsWms * * \since QGIS 3.12 */ - bool force2D() const; + bool isForce2D() const; private: static bool isExternalLayer( const QString &name ); diff --git a/src/server/services/wms/qgswmsrenderer.cpp b/src/server/services/wms/qgswmsrenderer.cpp index de70296ef29..608a0ca1e5c 100644 --- a/src/server/services/wms/qgswmsrenderer.cpp +++ b/src/server/services/wms/qgswmsrenderer.cpp @@ -848,7 +848,7 @@ namespace QgsWms dxf->setSymbologyScale( mWmsParameters.dxfScale() ); } - dxf->setForce2d( mWmsParameters.force2D() ); + dxf->setForce2d( mWmsParameters.isForce2D() ); QgsDxfExport::Flags flags; if ( mWmsParameters.noMText() ) flags.setFlag( QgsDxfExport::Flag::FlagNoMText );