21
21
#include " qgscoordinatetransform.h"
22
22
#include " qgsftptransaction.h"
23
23
#include " qgshttptransaction.h"
24
- #include " qgssinglesymbolrenderer .h"
25
- #include " qgssldrenderer .h"
26
- #include " qgssymbol .h"
24
+ #include " qgsrendererv2 .h"
25
+ #include " qgssinglesymbolrendererv2 .h"
26
+ #include " qgssymbolv2 .h"
27
27
#include " qgsvectordataprovider.h"
28
28
#include " qgsvectorlayer.h"
29
29
#include " qgsmapserviceexception.h"
32
32
#include " qgsmsutils.h"
33
33
#include " qgsrasterlayer.h"
34
34
#include " qgscolorrampshader.h"
35
- #include " qgssldrule.h"
36
35
#include " qgscoordinatereferencesystem.h"
37
36
#include " qgslabelattributes.h"
38
37
@@ -274,9 +273,9 @@ QList<QgsMapLayer*> QgsSLDParser::mapLayerFromStyle( const QString& layerName, c
274
273
QgsVectorLayer* v = dynamic_cast <QgsVectorLayer*>( fallbackLayerList.at ( 0 ) );
275
274
if ( v )
276
275
{
277
- QgsRenderer * r = rendererFromUserStyle ( userStyleElement, v );
278
- v->setRenderer ( r );
279
- v->setUsingRendererV2 ( false );
276
+ QgsFeatureRendererV2 * r = rendererFromUserStyle ( userStyleElement, v );
277
+ v->setRendererV2 ( r );
278
+ v->setUsingRendererV2 ( true );
280
279
labelSettingsFromUserStyle ( userStyleElement, v );
281
280
#ifdef DIAGRAMSERVER
282
281
overlaysFromUserStyle ( userStyleElement, v );
@@ -337,7 +336,7 @@ QList<QgsMapLayer*> QgsSLDParser::mapLayerFromStyle( const QString& layerName, c
337
336
return resultList;
338
337
}
339
338
340
- QgsRenderer * theRenderer = 0 ;
339
+ QgsFeatureRendererV2 * theRenderer = 0 ;
341
340
342
341
QgsVectorLayer* theVectorLayer = dynamic_cast <QgsVectorLayer*>( theMapLayer );
343
342
if ( !theVectorLayer )
@@ -370,15 +369,8 @@ QList<QgsMapLayer*> QgsSLDParser::mapLayerFromStyle( const QString& layerName, c
370
369
371
370
if ( userStyleElement.isNull () )// apply a default style
372
371
{
373
- theRenderer = new QgsSingleSymbolRenderer ( theVectorLayer->geometryType () );
374
- QgsSymbol* defaultSymbol = new QgsSymbol ( theVectorLayer->geometryType () );
375
- QPen defaultPen;
376
- defaultPen.setWidth ( 1 );
377
- defaultSymbol->setPen ( defaultPen );
378
- QBrush defaultBrush;
379
- defaultBrush.setStyle ( Qt::NoBrush );
380
- defaultSymbol->setBrush ( defaultBrush );
381
- ( static_cast <QgsSingleSymbolRenderer*>( theRenderer ) )->addSymbol ( defaultSymbol );
372
+ QgsSymbolV2* symbol = QgsSymbolV2::defaultSymbol ( theVectorLayer->geometryType () );
373
+ theRenderer = new QgsSingleSymbolRendererV2 ( symbol );
382
374
}
383
375
else
384
376
{
@@ -399,48 +391,30 @@ QList<QgsMapLayer*> QgsSLDParser::mapLayerFromStyle( const QString& layerName, c
399
391
delete theVectorLayer;
400
392
return resultList;
401
393
}
402
- theVectorLayer->setRenderer ( theRenderer );
403
- theVectorLayer->setUsingRendererV2 ( false );
394
+ theVectorLayer->setRendererV2 ( theRenderer );
395
+ theVectorLayer->setUsingRendererV2 ( true );
404
396
QgsDebugMsg ( " Returning the vectorlayer" );
405
397
setOpacityForLayer ( userLayerElement, theVectorLayer );
406
398
resultList.push_back ( theVectorLayer );
407
399
return resultList;
408
400
}
409
401
410
- QgsRenderer * QgsSLDParser::rendererFromUserStyle ( const QDomElement& userStyleElement, QgsVectorLayer* vec ) const
402
+ QgsFeatureRendererV2 * QgsSLDParser::rendererFromUserStyle ( const QDomElement& userStyleElement, QgsVectorLayer* vec ) const
411
403
{
412
- if ( !vec )
404
+ if ( !vec || userStyleElement. isNull () )
413
405
{
414
406
return 0 ;
415
407
}
416
408
417
409
QgsDebugMsg ( " Entering" );
418
410
419
- QgsSLDRenderer* theRenderer = new QgsSLDRenderer ( vec->geometryType () );
420
- theRenderer->setScaleDenominator ( mScaleDenominator );
421
-
422
- if ( !userStyleElement.isNull () )
411
+ QString errorMessage;
412
+ QgsFeatureRendererV2* renderer = QgsFeatureRendererV2::loadSld ( userStyleElement.parentNode (), vec->geometryType (), errorMessage );
413
+ if ( !renderer )
423
414
{
424
- QDomNodeList featureTypeList = userStyleElement.elementsByTagName ( " FeatureTypeStyle" );
425
- for ( int i = 0 ; i < featureTypeList.size (); ++i )
426
- {
427
- QDomNodeList ruleNodeList = featureTypeList.item ( i ).toElement ().elementsByTagName ( " Rule" );
428
- for ( int j = 0 ; j < ruleNodeList.size (); ++j )
429
- {
430
- QDomElement ruleElement = ruleNodeList.item ( j ).toElement ();
431
- QgsSLDRule* r = new QgsSLDRule ();
432
- if ( r->setFromXml ( ruleElement, vec, mFilesToRemove ) == 0 )
433
- {
434
- theRenderer->addRule ( r );
435
- }
436
- else
437
- {
438
- delete r;
439
- }
440
- }
441
- }
415
+ throw QgsMapServiceException ( " SLD error" , errorMessage );
442
416
}
443
- return theRenderer ;
417
+ return renderer ;
444
418
}
445
419
446
420
bool QgsSLDParser::rasterSymbologyFromUserStyle ( const QDomElement& userStyleElement, QgsRasterLayer* r ) const
@@ -1405,8 +1379,9 @@ QgsVectorLayer* QgsSLDParser::contourLayerFromRaster( const QDomElement& userSty
1405
1379
QgsVectorLayer* contourLayer = new QgsVectorLayer ( tmpFileName, " layer" , " ogr" );
1406
1380
1407
1381
// create renderer
1408
- QgsRenderer* theRenderer = rendererFromUserStyle ( userStyleElem, contourLayer );
1409
- contourLayer->setRenderer ( theRenderer );
1382
+ QgsFeatureRendererV2* theRenderer = rendererFromUserStyle ( userStyleElem, contourLayer );
1383
+ contourLayer->setRendererV2 ( theRenderer );
1384
+ contourLayer->setUsingRendererV2 ( true );
1410
1385
1411
1386
// add labelling if requested
1412
1387
labelSettingsFromUserStyle ( userStyleElem, contourLayer );
0 commit comments