Skip to content

Commit d499940

Browse files
committedJan 4, 2019
[server] Respect layer title space when rendering legends
Fixes #20693 - LAYERTITLESPACE in GetLegendGraphic is not taken into account
1 parent 899dcbf commit d499940

File tree

4 files changed

+31
-6
lines changed

4 files changed

+31
-6
lines changed
 

‎src/core/qgslegendrenderer.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -543,6 +543,7 @@ QSizeF QgsLegendRenderer::drawLayerTitle( QgsLayerTreeLayer *nodeLayer, QPainter
543543
}
544544
}
545545
size.rheight() = y - point.y();
546+
size.rheight() += mSettings.style( nodeLegendStyle( nodeLayer ) ).margin( QgsLegendStyle::Side::Bottom );
546547

547548
return size;
548549
}

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

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1109,12 +1109,13 @@ namespace QgsWms
11091109
settings.setBoxSpace( boxSpaceAsDouble() );
11101110
settings.setSymbolSize( QSizeF( symbolWidthAsDouble(), symbolHeightAsDouble() ) );
11111111

1112-
settings.rstyle( QgsLegendStyle::Subgroup ).setMargin( QgsLegendStyle::Top, layerSpaceAsDouble() );
1113-
settings.rstyle( QgsLegendStyle::Subgroup ).setFont( layerFont() );
1112+
settings.rstyle( QgsLegendStyle::Style::Subgroup ).setMargin( QgsLegendStyle::Side::Top, layerSpaceAsDouble() );
1113+
settings.rstyle( QgsLegendStyle::Style::Subgroup ).setMargin( QgsLegendStyle::Side::Bottom, layerTitleSpaceAsDouble() );
1114+
settings.rstyle( QgsLegendStyle::Style::Subgroup ).setFont( layerFont() );
11141115

1115-
settings.rstyle( QgsLegendStyle::SymbolLabel ).setFont( itemFont() );
1116-
settings.rstyle( QgsLegendStyle::Symbol ).setMargin( QgsLegendStyle::Top, symbolSpaceAsDouble() );
1117-
settings.rstyle( QgsLegendStyle::SymbolLabel ).setMargin( QgsLegendStyle::Left, iconLabelSpaceAsDouble() );
1116+
settings.rstyle( QgsLegendStyle::Style::SymbolLabel ).setFont( itemFont() );
1117+
settings.rstyle( QgsLegendStyle::Style::Symbol ).setMargin( QgsLegendStyle::Side::Top, symbolSpaceAsDouble() );
1118+
settings.rstyle( QgsLegendStyle::Style::SymbolLabel ).setMargin( QgsLegendStyle::Side::Left, iconLabelSpaceAsDouble() );
11181119

11191120
return settings;
11201121
}

‎tests/src/python/test_qgsserver_wms_getlegendgraphic.py

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@
4040

4141

4242
class TestQgsServerWMSGetLegendGraphic(QgsServerTestBase):
43-
4443
"""QGIS Server WMS Tests for GetLegendGraphic request"""
4544

4645
def test_getLegendGraphics(self):
@@ -105,6 +104,30 @@ def test_wms_GetLegendGraphic_LayerSpace(self):
105104
r, h = self._result(self._execute_request(qs))
106105
self._img_diff_error(r, h, "WMS_GetLegendGraphic_LayerSpace")
107106

107+
def test_wms_GetLegendGraphic_LayerTitleSpace(self):
108+
qs = "?" + "&".join(["%s=%s" % i for i in list({
109+
"MAP": urllib.parse.quote(self.projectPath),
110+
"SERVICE": "WMS",
111+
"VERSION": "1.1.1",
112+
"REQUEST": "GetLegendGraphic",
113+
"LAYER": "Country,Hello",
114+
"FORMAT": "image/png",
115+
# "HEIGHT": "500",
116+
# "WIDTH": "500",
117+
"LAYERTITLESPACE": "20.0",
118+
"LAYERFONTBOLD": "TRUE",
119+
"LAYERFONTSIZE": "30",
120+
"ITEMFONTBOLD": "TRUE",
121+
"ITEMFONTSIZE": "20",
122+
"LAYERFONTFAMILY": self.fontFamily,
123+
"ITEMFONTFAMILY": self.fontFamily,
124+
"LAYERTITLE": "TRUE",
125+
"CRS": "EPSG:3857"
126+
}.items())])
127+
128+
r, h = self._result(self._execute_request(qs))
129+
self._img_diff_error(r, h, "WMS_GetLegendGraphic_LayerTitleSpace")
130+
108131
def test_wms_GetLegendGraphic_ShowFeatureCount(self):
109132
qs = "?" + "&".join(["%s=%s" % i for i in list({
110133
"MAP": urllib.parse.quote(self.projectPath),

0 commit comments

Comments
 (0)
Please sign in to comment.