Skip to content

Commit

Permalink
[legend] insure multi-line labels are vertically centered with tall s…
Browse files Browse the repository at this point in the history
…ymbols
  • Loading branch information
nirvn committed Oct 19, 2016
1 parent 4bcd970 commit 4558742
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 3 deletions.
6 changes: 3 additions & 3 deletions src/core/layertree/qgslayertreemodellegendnode.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -108,9 +108,9 @@ QSizeF QgsLayerTreeModelLegendNode::drawSymbolText( const QgsLegendSettings& set

// Vertical alignment of label with symbol
if ( labelSize.height() < symbolSize.height() )
labelY += symbolSize.height() / 2 + textHeight / 2; // label centered with symbol
else
labelY += textHeight; // label starts at top and runs under symbol
labelY += symbolSize.height() / 2 - labelSize.height() / 2; // label centered with symbol

labelY += textHeight;
}

for ( QStringList::Iterator itemPart = lines.begin(); itemPart != lines.end(); ++itemPart )
Expand Down
23 changes: 23 additions & 0 deletions tests/src/core/testqgslegendrenderer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,7 @@ class TestQgsLegendRenderer : public QObject
void testBasic();
void testBigMarker();
void testMapUnits();
void testTallSymbol();
void testLongSymbolText();
void testThreeColumns();
void testFilterByMap();
Expand Down Expand Up @@ -338,6 +339,28 @@ void TestQgsLegendRenderer::testMapUnits()
QVERIFY( _verifyImage( testName, mReport ) );
}

void TestQgsLegendRenderer::testTallSymbol()
{
QString testName = "legend_tall_symbol";

QgsCategorizedSymbolRenderer* catRenderer = dynamic_cast<QgsCategorizedSymbolRenderer*>( mVL3->renderer() );
QVERIFY( catRenderer );
catRenderer->updateCategoryLabel( 1, "This is\nthree lines\nlong label" );

mVL2->setName( "This is a two lines\nlong label" );

QgsLayerTreeModel legendModel( mRoot );

QgsLegendSettings settings;
settings.setWrapChar( "\n" );
settings.setSymbolSize( QSizeF( 10.0, 10.0 ) );
_setStandardTestFont( settings );
_renderLegend( testName, &legendModel, settings );
QVERIFY( _verifyImage( testName, mReport ) );

mVL2->setName( "Polygon Layer" );
}

void TestQgsLegendRenderer::testLongSymbolText()
{
QString testName = "legend_long_symbol_text";
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 4558742

Please sign in to comment.