@@ -306,11 +306,11 @@ QImage* QgsWMSServer::getLegendGraphics()
306
306
double fontOversamplingFactor = 10.0 ;
307
307
308
308
// get icon size, spaces between legend items and font from config parser
309
- double boxSpace, layerSpace, symbolSpace, iconLabelSpace, symbolWidth, symbolHeight;
309
+ double boxSpace, layerSpace, layerTitleSpace, symbolSpace, iconLabelSpace, symbolWidth, symbolHeight;
310
310
QFont layerFont, itemFont;
311
311
QColor layerFontColor, itemFontColor;
312
- legendParameters ( mmToPixelFactor, fontOversamplingFactor, boxSpace, layerSpace, symbolSpace, iconLabelSpace, symbolWidth, symbolHeight ,
313
- layerFont, itemFont, layerFontColor, itemFontColor );
312
+ legendParameters ( mmToPixelFactor, fontOversamplingFactor, boxSpace, layerSpace, layerTitleSpace, symbolSpace ,
313
+ iconLabelSpace, symbolWidth, symbolHeight, layerFont, itemFont, layerFontColor, itemFontColor );
314
314
315
315
// first find out image dimensions without painting
316
316
QStandardItem* rootItem = legendModel.invisibleRootItem ();
@@ -331,9 +331,12 @@ QImage* QgsWMSServer::getLegendGraphics()
331
331
QgsComposerLayerItem* layerItem = dynamic_cast <QgsComposerLayerItem*>( rootItem->child ( i ) );
332
332
if ( layerItem )
333
333
{
334
-
334
+ if ( i > 0 )
335
+ {
336
+ currentY += layerSpace;
337
+ }
335
338
drawLegendLayerItem ( layerItem, 0 , maxTextWidth, maxSymbolWidth, currentY, layerFont, layerFontColor, itemFont, itemFontColor,
336
- boxSpace, layerSpace, symbolSpace, iconLabelSpace, symbolWidth, symbolHeight, fontOversamplingFactor,
339
+ boxSpace, layerSpace, layerTitleSpace, symbolSpace, iconLabelSpace, symbolWidth, symbolHeight, fontOversamplingFactor,
337
340
theImage->dotsPerMeterX () * 0.0254 );
338
341
}
339
342
}
@@ -352,18 +355,24 @@ QImage* QgsWMSServer::getLegendGraphics()
352
355
QgsComposerLayerItem* layerItem = dynamic_cast <QgsComposerLayerItem*>( rootItem->child ( i ) );
353
356
if ( layerItem )
354
357
{
358
+ if ( i > 0 )
359
+ {
360
+ currentY += layerSpace;
361
+ }
355
362
drawLegendLayerItem ( layerItem, &p, maxTextWidth, maxSymbolWidth, currentY, layerFont, layerFontColor, itemFont, itemFontColor, boxSpace,
356
- layerSpace, symbolSpace, iconLabelSpace, symbolWidth, symbolHeight, fontOversamplingFactor,
363
+ layerSpace, layerTitleSpace, symbolSpace, iconLabelSpace, symbolWidth, symbolHeight, fontOversamplingFactor,
357
364
theImage->dotsPerMeterX () * 0.0254 );
358
365
}
366
+ currentY += layerSpace;
359
367
}
360
368
361
369
QgsMapLayerRegistry::instance ()->mapLayers ().clear ();
362
370
delete theImage;
363
371
return paintImage;
364
372
}
365
373
366
- void QgsWMSServer::legendParameters ( double mmToPixelFactor, double fontOversamplingFactor, double & boxSpace, double & layerSpace, double & symbolSpace, double & iconLabelSpace, double & symbolWidth, double & symbolHeight,
374
+ void QgsWMSServer::legendParameters ( double mmToPixelFactor, double fontOversamplingFactor, double & boxSpace, double & layerSpace, double & layerTitleSpace,
375
+ double & symbolSpace, double & iconLabelSpace, double & symbolWidth, double & symbolHeight,
367
376
QFont& layerFont, QFont& itemFont, QColor& layerFontColor, QColor& itemFontColor )
368
377
{
369
378
// spaces between legend elements
@@ -373,6 +382,9 @@ void QgsWMSServer::legendParameters( double mmToPixelFactor, double fontOversamp
373
382
QMap<QString, QString>::const_iterator layerSpaceIt = mParameterMap .find ( " LAYERSPACE" );
374
383
layerSpace = ( layerSpaceIt == mParameterMap .constEnd () ) ? mConfigParser ->legendLayerSpace () * mmToPixelFactor :
375
384
layerSpaceIt.value ().toDouble () * mmToPixelFactor;
385
+ QMap<QString, QString>::const_iterator layerTitleSpaceIt = mParameterMap .find ( " LAYERTITLESPACE" );
386
+ layerTitleSpace = ( layerTitleSpaceIt == mParameterMap .constEnd () ) ? mConfigParser ->legendLayerTitleSpace () * mmToPixelFactor :
387
+ layerTitleSpaceIt.value ().toDouble () * mmToPixelFactor;
376
388
QMap<QString, QString>::const_iterator symbolSpaceIt = mParameterMap .find ( " SYMBOLSPACE" );
377
389
symbolSpace = ( symbolSpaceIt == mParameterMap .constEnd () ) ? mConfigParser ->legendSymbolSpace () * mmToPixelFactor :
378
390
symbolSpaceIt.value ().toDouble () * mmToPixelFactor;
@@ -1430,7 +1442,7 @@ QStringList QgsWMSServer::layerSet( const QStringList &layersList,
1430
1442
1431
1443
void QgsWMSServer::drawLegendLayerItem ( QgsComposerLayerItem* item, QPainter* p, double & maxTextWidth, double & maxSymbolWidth, double & currentY, const QFont& layerFont,
1432
1444
const QColor& layerFontColor, const QFont& itemFont, const QColor& itemFontColor, double boxSpace, double layerSpace,
1433
- double symbolSpace, double iconLabelSpace, double symbolWidth, double symbolHeight, double fontOversamplingFactor,
1445
+ double layerTitleSpace, double symbolSpace, double iconLabelSpace, double symbolWidth, double symbolHeight, double fontOversamplingFactor,
1434
1446
double dpi ) const
1435
1447
{
1436
1448
if ( !item )
@@ -1460,7 +1472,7 @@ void QgsWMSServer::drawLegendLayerItem( QgsComposerLayerItem* item, QPainter* p,
1460
1472
}
1461
1473
}
1462
1474
1463
- currentY += layerSpace ;
1475
+ currentY += layerTitleSpace ;
1464
1476
1465
1477
int opacity = 0 ;
1466
1478
QgsMapLayer* layerInstance = QgsMapLayerRegistry::instance ()->mapLayer ( item->layerID () );
@@ -1542,7 +1554,10 @@ void QgsWMSServer::drawLegendLayerItem( QgsComposerLayerItem* item, QPainter* p,
1542
1554
}
1543
1555
1544
1556
currentY += symbolItemHeight;
1545
- currentY += symbolSpace;
1557
+ if ( i < ( nChildItems - 1 ) )
1558
+ {
1559
+ currentY += symbolSpace;
1560
+ }
1546
1561
}
1547
1562
}
1548
1563
0 commit comments