Skip to content

Commit 0b68762

Browse files
committedMar 27, 2019
Remove more methods from renderer
1 parent dedf0ab commit 0b68762

File tree

4 files changed

+47
-113
lines changed

4 files changed

+47
-113
lines changed
 

‎src/server/services/wms/qgswmsrendercontext.cpp

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,32 @@ QString QgsWmsRenderContext::layerNickname( const QgsMapLayer &layer ) const
214214
return name;
215215
}
216216

217+
QgsMapLayer *QgsWmsRenderContext::layer( const QString &nickname ) const
218+
{
219+
QgsMapLayer *mlayer = nullptr;
220+
221+
for ( auto layer : mLayersToRender )
222+
{
223+
if ( layerNickname( *layer ).compare( nickname ) == 0 )
224+
{
225+
mlayer = layer;
226+
break;
227+
}
228+
}
229+
230+
return mlayer;
231+
}
232+
233+
bool QgsWmsRenderContext::isValidLayer( const QString &nickname ) const
234+
{
235+
return layer( nickname ) != nullptr;
236+
}
237+
238+
bool QgsWmsRenderContext::isValidGroup( const QString &name ) const
239+
{
240+
return mLayerGroups.contains( name );
241+
}
242+
217243
void QgsWmsRenderContext::initNicknameLayers()
218244
{
219245
for ( QgsMapLayer *ml : mProject->mapLayers() )

‎src/server/services/wms/qgswmsrendercontext.h

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,22 @@ namespace QgsWms
158158
*/
159159
QString layerNickname( const QgsMapLayer &layer ) const;
160160

161+
/**
162+
* Returns the layer corresponding to the nickname, or a nullptr if not
163+
* found or if the layer do not need to be rendered.
164+
*/
165+
QgsMapLayer *layer( const QString &nickname ) const;
166+
167+
/**
168+
* Returns true if the layer has to be rendered, false otherwise.
169+
*/
170+
bool isValidLayer( const QString &nickname ) const;
171+
172+
/**
173+
* Returns true if \a name is a group.
174+
*/
175+
bool isValidGroup( const QString &name ) const;
176+
161177
/**
162178
* Returns default dots per mm according to the current configuration.
163179
*/

‎src/server/services/wms/qgswmsrenderer.cpp

Lines changed: 5 additions & 102 deletions
Original file line numberDiff line numberDiff line change
@@ -124,17 +124,13 @@ namespace QgsWms
124124

125125
mWmsParameters = mContext.parameters();
126126
mWmsParameters.dump();
127-
128-
initRestrictedLayers();
129-
initNicknameLayers();
130127
}
131128

132129
QgsRenderer::~QgsRenderer()
133130
{
134131
removeTemporaryLayers();
135132
}
136133

137-
138134
QImage *QgsRenderer::getLegendGraphics()
139135
{
140136
// check parameters
@@ -599,12 +595,13 @@ namespace QgsWms
599595
QList<QgsMapLayer *> layerSet;
600596
for ( auto layer : cMapParams.mLayers )
601597
{
602-
if ( ! mNicknameLayers.contains( layer.mNickname ) )
598+
QgsMapLayer *mlayer = mContext.layer( layer.mNickname );
599+
600+
if ( ! mlayer )
603601
{
604602
continue;
605603
}
606604

607-
QgsMapLayer *mlayer = mNicknameLayers[ layer.mNickname ];
608605
setLayerStyle( mlayer, layer.mStyle );
609606
layerSet << mlayer;
610607
}
@@ -1285,12 +1282,12 @@ namespace QgsWms
12851282
break;
12861283
}
12871284
}
1288-
if ( !validLayer && !mNicknameLayers.contains( queryLayer ) && !mLayerGroups.contains( queryLayer ) )
1285+
if ( !validLayer && !mContext.isValidLayer( queryLayer ) && !mContext.isValidGroup( queryLayer ) )
12891286
{
12901287
QString msg = QObject::tr( "Layer '%1' not found" ).arg( queryLayer );
12911288
throw QgsBadRequestException( QStringLiteral( "LayerNotDefined" ), msg );
12921289
}
1293-
else if ( ( validLayer && !queryableLayer ) || ( !validLayer && mLayerGroups.contains( queryLayer ) ) )
1290+
else if ( ( validLayer && !queryableLayer ) || ( !validLayer && mContext.isValidGroup( queryLayer ) ) )
12941291
{
12951292
QString msg = QObject::tr( "Layer '%1' is not queryable" ).arg( queryLayer );
12961293
throw QgsBadRequestException( QStringLiteral( "LayerNotQueryable" ), msg );
@@ -2422,100 +2419,6 @@ namespace QgsWms
24222419
return ( mapSettings.mapToLayerCoordinates( ml, mapRectangle ) );
24232420
}
24242421

2425-
2426-
void QgsRenderer::initRestrictedLayers()
2427-
{
2428-
mRestrictedLayers.clear();
2429-
2430-
// get name of restricted layers/groups in project
2431-
QStringList restricted = QgsServerProjectUtils::wmsRestrictedLayers( *mProject );
2432-
2433-
// extract restricted layers from excluded groups
2434-
QStringList restrictedLayersNames;
2435-
QgsLayerTreeGroup *root = mProject->layerTreeRoot();
2436-
2437-
for ( const QString &l : restricted )
2438-
{
2439-
QgsLayerTreeGroup *group = root->findGroup( l );
2440-
if ( group )
2441-
{
2442-
QList<QgsLayerTreeLayer *> groupLayers = group->findLayers();
2443-
for ( QgsLayerTreeLayer *treeLayer : groupLayers )
2444-
{
2445-
restrictedLayersNames.append( treeLayer->name() );
2446-
}
2447-
}
2448-
else
2449-
{
2450-
restrictedLayersNames.append( l );
2451-
}
2452-
}
2453-
2454-
// build output with names, ids or short name according to the configuration
2455-
QList<QgsLayerTreeLayer *> layers = root->findLayers();
2456-
for ( QgsLayerTreeLayer *layer : layers )
2457-
{
2458-
if ( restrictedLayersNames.contains( layer->name() ) )
2459-
{
2460-
mRestrictedLayers.append( mContext.layerNickname( *layer->layer() ) );
2461-
}
2462-
}
2463-
}
2464-
2465-
void QgsRenderer::initNicknameLayers()
2466-
{
2467-
for ( QgsMapLayer *ml : mProject->mapLayers() )
2468-
{
2469-
mNicknameLayers[ mContext.layerNickname( *ml ) ] = ml;
2470-
}
2471-
2472-
// init groups
2473-
const QString rootName { QgsServerProjectUtils::wmsRootName( *mProject ) };
2474-
const QgsLayerTreeGroup *root = mProject->layerTreeRoot();
2475-
initLayerGroupsRecursive( root, rootName.isEmpty() ? mProject->title() : rootName );
2476-
}
2477-
2478-
void QgsRenderer::initLayerGroupsRecursive( const QgsLayerTreeGroup *group, const QString &groupName )
2479-
{
2480-
if ( !groupName.isEmpty() )
2481-
{
2482-
mLayerGroups[groupName] = QList<QgsMapLayer *>();
2483-
for ( QgsLayerTreeLayer *layer : group->findLayers() )
2484-
{
2485-
mLayerGroups[groupName].append( layer->layer() );
2486-
}
2487-
}
2488-
2489-
for ( const QgsLayerTreeNode *child : group->children() )
2490-
{
2491-
if ( child->nodeType() == QgsLayerTreeNode::NodeGroup )
2492-
{
2493-
QString name = child->customProperty( QStringLiteral( "wmsShortName" ) ).toString();
2494-
2495-
if ( name.isEmpty() )
2496-
name = child->name();
2497-
2498-
initLayerGroupsRecursive( static_cast<const QgsLayerTreeGroup *>( child ), name );
2499-
2500-
}
2501-
}
2502-
}
2503-
2504-
/*QString QgsRenderer::layerNickname( const QgsMapLayer &layer ) const
2505-
{
2506-
QString name = layer.shortName();
2507-
if ( QgsServerProjectUtils::wmsUseLayerIds( *mProject ) )
2508-
{
2509-
name = layer.id();
2510-
}
2511-
else if ( name.isEmpty() )
2512-
{
2513-
name = layer.name();
2514-
}
2515-
2516-
return name;
2517-
}*/
2518-
25192422
QList<QgsMapLayer *> QgsRenderer::highlightLayers( QList<QgsWmsParametersHighlightLayer> params )
25202423
{
25212424
QList<QgsMapLayer *> highlightLayers;

‎src/server/services/wms/qgswmsrenderer.h

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -114,20 +114,12 @@ namespace QgsWms
114114

115115
private:
116116

117-
// Init the restricted layers with nicknames
118-
void initRestrictedLayers();
119-
120117
// Build and returns highlight layers
121118
QList<QgsMapLayer *> highlightLayers( QList<QgsWmsParametersHighlightLayer> params );
122119

123120
// Build and returns external layers
124121
QList<QgsMapLayer *> externalLayers( const QList<QgsWmsParametersExternalLayer> &params );
125122

126-
// Init a map with nickname for layers' project
127-
void initNicknameLayers();
128-
129-
void initLayerGroupsRecursive( const QgsLayerTreeGroup *group, const QString &groupName );
130-
131123
// Rendering step for layers
132124
QPainter *layersRendering( const QgsMapSettings &mapSettings, QImage &image, HitTest *hitTest = nullptr ) const;
133125

@@ -301,9 +293,6 @@ namespace QgsWms
301293

302294
QgsServerSettings mSettings;
303295
const QgsProject *mProject = nullptr;
304-
QStringList mRestrictedLayers;
305-
QMap<QString, QgsMapLayer *> mNicknameLayers;
306-
QMap<QString, QList<QgsMapLayer *> > mLayerGroups;
307296
QList<QgsMapLayer *> mTemporaryLayers;
308297
QgsWmsRenderContext mContext;
309298
};

0 commit comments

Comments
 (0)
Please sign in to comment.