@@ -20,6 +20,7 @@ email : david dot marteau at 3liz dot com
20
20
#include " qgsmaplayer.h"
21
21
#include " qgsvectorlayer.h"
22
22
#include " qgsdxfexport.h"
23
+ #include " qgswmsrenderer.h"
23
24
24
25
namespace QgsWms
25
26
{
@@ -44,118 +45,20 @@ namespace QgsWms
44
45
return options;
45
46
}
46
47
47
- void readDxfLayerSettings ( const QgsServerRequest::Parameters ¶meters, QgsWmsConfigParser *configParser,
48
- QList< QPair<QgsVectorLayer *, int > > &layers,
49
- const QMap<QString, QString> &options )
50
- {
51
- QSet<QString> wfsLayers = QSet<QString>::fromList ( configParser->wfsLayerNames () );
52
-
53
- QStringList layerAttributes;
54
- QMap<QString, QString>::const_iterator layerAttributesIt = options.find ( QStringLiteral ( " LAYERATTRIBUTES" ) );
55
- if ( layerAttributesIt != options.constEnd () )
56
- {
57
- layerAttributes = options.value ( QStringLiteral ( " LAYERATTRIBUTES" ) ).split ( ' ,' );
58
- }
59
-
60
- // LAYERS and STYLES
61
- QStringList layerList, styleList;
62
- readLayersAndStyles ( parameters, layerList, styleList );
63
-
64
- for ( int i = 0 ; i < layerList.size (); ++i )
65
- {
66
- QString layerName = layerList.at ( i );
67
- QString styleName;
68
- if ( styleList.size () > i )
69
- {
70
- styleName = styleList.at ( i );
71
- }
72
-
73
- QList<QgsMapLayer *> layerList = configParser->mapLayerFromStyle ( layerName, styleName );
74
- for ( auto layerIt = layerList.constBegin (); layerIt != layerList.constEnd (); ++layerIt )
75
- {
76
- if ( !( *layerIt ) )
77
- {
78
- continue ;
79
- }
80
-
81
- // vector layer?
82
- if ( ( *layerIt )->type () != QgsMapLayer::VectorLayer )
83
- {
84
- continue ;
85
- }
86
-
87
- QgsVectorLayer *vlayer = static_cast <QgsVectorLayer *>( *layerIt );
88
-
89
- int layerAttribute = -1 ;
90
- if ( layerAttributes.size () > i )
91
- {
92
- layerAttribute = vlayer->pendingFields ().indexFromName ( layerAttributes.at ( i ) );
93
- }
94
-
95
- // only wfs layers are allowed to be published
96
- if ( !wfsLayers.contains ( vlayer->name () ) )
97
- {
98
- continue ;
99
- }
100
-
101
- layers.append ( qMakePair ( vlayer, layerAttribute ) );
102
- }
103
- }
104
- }
105
-
106
48
}
107
49
108
- void writeAsDxf ( QgsServerInterface *serverIface, const QString &version, const QgsServerRequest &request, QgsServerResponse &response )
50
+ void writeAsDxf ( QgsServerInterface *serverIface, const QgsProject *project,
51
+ const QString &version, const QgsServerRequest &request,
52
+ QgsServerResponse &response )
109
53
{
110
54
Q_UNUSED ( version );
111
55
112
- QgsWmsConfigParser *configParser = getConfigParser ( serverIface );
113
-
114
- QgsDxfExport dxf;
115
56
QgsServerRequest::Parameters params = request.parameters ();
116
-
117
- QgsRectangle extent = parseBbox ( params.value ( QStringLiteral ( " BBOX" ) ) );
118
- dxf.setExtent ( extent );
57
+ QgsRenderer renderer ( serverIface, project, params, getConfigParser ( serverIface ) );
119
58
120
59
QMap<QString, QString> formatOptionsMap = parseFormatOptions ( params.value ( QStringLiteral ( " FORMAT_OPTIONS" ) ) );
121
60
122
- QList< QPair<QgsVectorLayer *, int > > layers;
123
- readDxfLayerSettings ( params, configParser, layers, formatOptionsMap );
124
- dxf.addLayers ( layers );
125
-
126
- dxf.setLayerTitleAsName ( formatOptionsMap.contains ( QStringLiteral ( " USE_TITLE_AS_LAYERNAME" ) ) );
127
-
128
- // MODE
129
- QMap<QString, QString>::const_iterator modeIt = formatOptionsMap.find ( QStringLiteral ( " MODE" ) );
130
-
131
- QgsDxfExport::SymbologyExport se;
132
- if ( modeIt == formatOptionsMap.constEnd () )
133
- {
134
- se = QgsDxfExport::NoSymbology;
135
- }
136
- else
137
- {
138
- if ( modeIt->compare ( QLatin1String ( " SymbolLayerSymbology" ), Qt::CaseInsensitive ) == 0 )
139
- {
140
- se = QgsDxfExport::SymbolLayerSymbology;
141
- }
142
- else if ( modeIt->compare ( QLatin1String ( " FeatureSymbology" ), Qt::CaseInsensitive ) == 0 )
143
- {
144
- se = QgsDxfExport::FeatureSymbology;
145
- }
146
- else
147
- {
148
- se = QgsDxfExport::NoSymbology;
149
- }
150
- }
151
- dxf.setSymbologyExport ( se );
152
-
153
- // SCALE
154
- QMap<QString, QString>::const_iterator scaleIt = formatOptionsMap.find ( QStringLiteral ( " SCALE" ) );
155
- if ( scaleIt != formatOptionsMap.constEnd () )
156
- {
157
- dxf.setSymbologyScale ( scaleIt->toDouble () );
158
- }
61
+ QgsDxfExport dxf = renderer.getDxf ( formatOptionsMap );
159
62
160
63
QString codec = QStringLiteral ( " ISO-8859-1" );
161
64
QMap<QString, QString>::const_iterator codecIt = formatOptionsMap.find ( QStringLiteral ( " CODEC" ) );
0 commit comments