Skip to content

Commit

Permalink
Use template method for format options also for dxf
Browse files Browse the repository at this point in the history
  • Loading branch information
mhugent committed Apr 20, 2023
1 parent 45f7ebe commit 74969ff
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 40 deletions.
39 changes: 8 additions & 31 deletions src/server/services/wms/qgswmsparameters.cpp
Expand Up @@ -1574,7 +1574,7 @@ namespace QgsWms
bool QgsWmsParameters::isForce2D() const
{
bool force2D = false;
const QMap<DxfFormatOption, QString> options = dxfFormatOptions();
const QMap<DxfFormatOption, QString> options = formatOptions<QgsWmsParameters::DxfFormatOption>();

if ( options.contains( DxfFormatOption::FORCE_2D ) )
{
Expand All @@ -1587,7 +1587,7 @@ namespace QgsWms
bool QgsWmsParameters::noMText() const
{
bool noMText = false;
const QMap<DxfFormatOption, QString> options = dxfFormatOptions();
const QMap<DxfFormatOption, QString> options = formatOptions<QgsWmsParameters::DxfFormatOption>();

if ( options.contains( DxfFormatOption::NO_MTEXT ) )
{
Expand Down Expand Up @@ -2146,7 +2146,7 @@ namespace QgsWms
QStringList QgsWmsParameters::dxfLayerAttributes() const
{
QStringList attributes;
const QMap<DxfFormatOption, QString> options = dxfFormatOptions();
const QMap<DxfFormatOption, QString> options = formatOptions<QgsWmsParameters::DxfFormatOption>();

if ( options.contains( DxfFormatOption::LAYERATTRIBUTES ) )
{
Expand All @@ -2159,7 +2159,7 @@ namespace QgsWms
bool QgsWmsParameters::dxfUseLayerTitleAsName() const
{
bool use = false;
const QMap<DxfFormatOption, QString> options = dxfFormatOptions();
const QMap<DxfFormatOption, QString> options = formatOptions<QgsWmsParameters::DxfFormatOption>();

if ( options.contains( DxfFormatOption::USE_TITLE_AS_LAYERNAME ) )
{
Expand All @@ -2171,7 +2171,7 @@ namespace QgsWms

double QgsWmsParameters::dxfScale() const
{
const QMap<DxfFormatOption, QString> options = dxfFormatOptions();
const QMap<DxfFormatOption, QString> options = formatOptions<QgsWmsParameters::DxfFormatOption>();

double scale = -1;
if ( options.contains( DxfFormatOption::SCALE ) )
Expand All @@ -2184,7 +2184,7 @@ namespace QgsWms

QgsDxfExport::SymbologyExport QgsWmsParameters::dxfMode() const
{
const QMap<DxfFormatOption, QString> options = dxfFormatOptions();
const QMap<DxfFormatOption, QString> options = formatOptions<QgsWmsParameters::DxfFormatOption>();

QgsDxfExport::SymbologyExport symbol = QgsDxfExport::NoSymbology;

Expand All @@ -2210,37 +2210,14 @@ namespace QgsWms
{
QString codec = QStringLiteral( "ISO-8859-1" );

if ( dxfFormatOptions().contains( DxfFormatOption::CODEC ) )
if ( formatOptions<QgsWmsParameters::DxfFormatOption>().contains( DxfFormatOption::CODEC ) )
{
codec = dxfFormatOptions()[ DxfFormatOption::CODEC ];
codec = formatOptions<QgsWmsParameters::DxfFormatOption>()[ DxfFormatOption::CODEC ];
}

return codec;
}

QMap<QgsWmsParameters::DxfFormatOption, QString> QgsWmsParameters::dxfFormatOptions() const
{
QMap<QgsWmsParameters::DxfFormatOption, QString> options;

const QMetaEnum metaEnum( QMetaEnum::fromType<QgsWmsParameters::DxfFormatOption>() );
const QStringList opts = mWmsParameters.value( QgsWmsParameter::FORMAT_OPTIONS ).toStringList( ';' );

for ( auto it = opts.constBegin(); it != opts.constEnd(); ++it )
{
const int equalIdx = it->indexOf( ':' );
if ( equalIdx > 0 && equalIdx < ( it->length() - 1 ) )
{
const QString name = it->left( equalIdx ).toUpper();
const QgsWmsParameters::DxfFormatOption option =
( QgsWmsParameters::DxfFormatOption ) metaEnum.keyToValue( name.toStdString().c_str() );
const QString value = it->right( it->length() - equalIdx - 1 );
options.insert( option, value );
}
}

return options;
}

bool QgsWmsParameters::writeGeoPdf() const
{
bool geoPdf = false;
Expand Down
10 changes: 2 additions & 8 deletions src/server/services/wms/qgswmsparameters.h
Expand Up @@ -1328,12 +1328,6 @@ namespace QgsWms
*/
QStringList atlasPk() const;

/**
* Returns a map of DXF options defined within FORMAT_OPTIONS parameter.
* \since QGIS 3.8
*/
QMap<DxfFormatOption, QString> dxfFormatOptions() const;

/**
* Returns the DXF LAYERATTRIBUTES parameter.
* \since QGIS 3.8
Expand Down Expand Up @@ -1450,8 +1444,6 @@ namespace QgsWms

QString request() const override;

private:

/**
* Returns the format options for an output format. Possible template types are QgsWmsParameters::PdfFormatOption or QgsWmsParameters::DxfFormatOption
* \returns a key-value map
Expand Down Expand Up @@ -1482,6 +1474,8 @@ namespace QgsWms
return options;
}

private:

static bool isExternalLayer( const QString &name );

bool loadParameter( const QString &name, const QString &value ) override;
Expand Down
2 changes: 1 addition & 1 deletion src/server/services/wms/qgswmsrenderer.cpp
Expand Up @@ -1096,7 +1096,7 @@ namespace QgsWms
dxf->addLayers( dxfLayers );
dxf->setLayerTitleAsName( mWmsParameters.dxfUseLayerTitleAsName() );
dxf->setSymbologyExport( mWmsParameters.dxfMode() );
if ( mWmsParameters.dxfFormatOptions().contains( QgsWmsParameters::DxfFormatOption::SCALE ) )
if ( mWmsParameters.formatOptions<QgsWmsParameters::DxfFormatOption>().contains( QgsWmsParameters::DxfFormatOption::SCALE ) )
{
dxf->setSymbologyScale( mWmsParameters.dxfScale() );
}
Expand Down

0 comments on commit 74969ff

Please sign in to comment.