@@ -130,6 +130,22 @@ namespace QgsWms
130
130
initNicknameLayers ();
131
131
}
132
132
133
+ QgsRenderer::QgsRenderer ( const QgsWmsRenderContext &context )
134
+ : mContext( context )
135
+ {
136
+ #ifdef HAVE_SERVER_PYTHON_PLUGINS
137
+ mAccessControl = mContext .accessControl ();
138
+ #endif
139
+
140
+ mProject = mContext .project ();
141
+
142
+ mWmsParameters = mContext .parameters ();
143
+ mWmsParameters .dump ();
144
+
145
+ initRestrictedLayers ();
146
+ initNicknameLayers ();
147
+ }
148
+
133
149
QgsRenderer::~QgsRenderer ()
134
150
{
135
151
removeTemporaryLayers ();
@@ -3436,4 +3452,84 @@ namespace QgsWms
3436
3452
return mWmsParameters .widthAsInt ();
3437
3453
}
3438
3454
3455
+ void QgsRenderer::configureLayers ( QList<QgsMapLayer *> &layers, QgsMapSettings *settings )
3456
+ {
3457
+ const bool useSld = !mContext .parameters ().sldBody ().isEmpty ();
3458
+
3459
+ for ( auto layer : layers )
3460
+ {
3461
+ const QgsWmsParametersLayer param = mContext .parameters ( *layer );
3462
+
3463
+ if ( param.mNickname .isEmpty () )
3464
+ {
3465
+ continue ;
3466
+ }
3467
+
3468
+ if ( useSld )
3469
+ {
3470
+ setLayerSld ( layer, mContext .sld ( *layer ) );
3471
+ }
3472
+ else
3473
+ {
3474
+ setLayerStyle ( layer, mContext .style ( *layer ) );
3475
+ }
3476
+
3477
+ if ( mContext .testFlag ( QgsWmsRenderContext::UseOpacity ) )
3478
+ {
3479
+ setLayerOpacity ( layer, param.mOpacity );
3480
+ }
3481
+
3482
+ if ( mContext .testFlag ( QgsWmsRenderContext::UseFilter ) )
3483
+ {
3484
+ setLayerFilter ( layer, param.mFilter );
3485
+ }
3486
+
3487
+ if ( mContext .testFlag ( QgsWmsRenderContext::UseSelection ) )
3488
+ {
3489
+ setLayerSelection ( layer, param.mSelection );
3490
+ }
3491
+
3492
+ if ( settings && mContext .updateExtent () )
3493
+ {
3494
+ updateExtent ( layer, *settings );
3495
+ }
3496
+
3497
+ if ( mContext .testFlag ( QgsWmsRenderContext::SetAccessControl ) )
3498
+ {
3499
+ setLayerAccessControlFilter ( layer );
3500
+ }
3501
+ }
3502
+
3503
+ if ( mContext .testFlag ( QgsWmsRenderContext::AddHighlightLayers ) )
3504
+ {
3505
+ layers = highlightLayers ( mWmsParameters .highlightLayersParameters () ) << layers;
3506
+ }
3507
+
3508
+ if ( mContext .testFlag ( QgsWmsRenderContext::AddExternalLayers ) )
3509
+ {
3510
+ layers = externalLayers ( mWmsParameters .externalLayersParameters () ) << layers;
3511
+ }
3512
+ }
3513
+
3514
+ void QgsRenderer::setLayerStyle ( QgsMapLayer *layer, const QString &style ) const
3515
+ {
3516
+ if ( style.isEmpty () )
3517
+ {
3518
+ return ;
3519
+ }
3520
+
3521
+ bool rc = layer->styleManager ()->setCurrentStyle ( style );
3522
+ if ( ! rc )
3523
+ {
3524
+ throw QgsMapServiceException ( QStringLiteral ( " StyleNotDefined" ),
3525
+ QStringLiteral ( " Style \" %1\" does not exist for layer \" %2\" " ).arg ( style, layer->name () ) );
3526
+ }
3527
+ }
3528
+
3529
+ void QgsRenderer::setLayerSld ( QgsMapLayer *layer, const QDomElement &sld ) const
3530
+ {
3531
+ QString err;
3532
+ layer->readSld ( sld, err );
3533
+ layer->setCustomProperty ( " readSLD" , true );
3534
+ }
3439
3535
} // namespace QgsWms
0 commit comments