Skip to content

Commit 9ce19af

Browse files
committed
Fix failing test
1 parent 9d2c4fc commit 9ce19af

File tree

4 files changed

+12
-13
lines changed

4 files changed

+12
-13
lines changed

python/core/qgstextrenderer.sip.in

+1-1
Original file line numberDiff line numberDiff line change
@@ -1629,7 +1629,7 @@ formats like SVG to maintain text as text objects, but at the cost of degraded
16291629
rendering and may result in side effects like misaligned text buffers.
16301630
%End
16311631

1632-
static QFontMetricsF fontMetrics( const QgsRenderContext &context, const QgsTextFormat &format );
1632+
static QFontMetricsF fontMetrics( QgsRenderContext &context, const QgsTextFormat &format );
16331633
%Docstring
16341634
Returns the font metrics for the given text ``format``, when rendered
16351635
in the specified render ``context``. The font metrics will take into account

src/core/qgstextrenderer.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -1873,9 +1873,9 @@ void QgsTextRenderer::drawPart( QPointF origin, double rotation, QgsTextRenderer
18731873
}
18741874
}
18751875

1876-
QFontMetricsF QgsTextRenderer::fontMetrics( const QgsRenderContext &context, const QgsTextFormat &format )
1876+
QFontMetricsF QgsTextRenderer::fontMetrics( QgsRenderContext &context, const QgsTextFormat &format )
18771877
{
1878-
return QFontMetricsF( format.scaledFont( context ) );
1878+
return QFontMetricsF( format.scaledFont( context ), context.painter() ? context.painter()->device() : nullptr );
18791879
}
18801880

18811881
void QgsTextRenderer::drawBuffer( QgsRenderContext &context, const QgsTextRenderer::Component &component, const QgsTextFormat &format )

src/core/qgstextrenderer.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -1408,7 +1408,7 @@ class CORE_EXPORT QgsTextRenderer
14081408
* all scaling required by the render context.
14091409
* \since QGIS 3.2
14101410
*/
1411-
static QFontMetricsF fontMetrics( const QgsRenderContext &context, const QgsTextFormat &format );
1411+
static QFontMetricsF fontMetrics( QgsRenderContext &context, const QgsTextFormat &format );
14121412

14131413
/**
14141414
* Returns the width of a text based on a given format.

tests/src/python/test_qgstextrenderer.py

+8-9
Original file line numberDiff line numberDiff line change
@@ -448,18 +448,17 @@ def testFontMetrics(self):
448448

449449
string = 'xxxxxxxxxxxxxxxxxxxxxx'
450450

451-
# calculated expected width
452-
f = s.toQFont()
453-
expected = QFontMetricsF(f).width(string)
454-
scale = expected / 416.625
455-
456-
context = QgsRenderContext()
451+
image = QImage(400, 400, QImage.Format_RGB32)
452+
painter = QPainter(image)
453+
context = QgsRenderContext.fromQPainter(painter)
457454
context.setScaleFactor(1)
458455
metrics = QgsTextRenderer.fontMetrics(context, s)
459-
self.assertAlmostEqual(metrics.width(string), 51.9 * scale, -1)
460456
context.setScaleFactor(2)
461-
metrics = QgsTextRenderer.fontMetrics(context, s)
462-
self.assertAlmostEqual(metrics.width(string), 104.15 * scale, -1)
457+
metrics2 = QgsTextRenderer.fontMetrics(context, s)
458+
painter.end()
459+
460+
self.assertAlmostEqual(metrics.width(string), 51.9, 1)
461+
self.assertAlmostEqual(metrics2.width(string), 104.15, 1)
463462

464463
def imageCheck(self, name, reference_image, image):
465464
self.report += "<h2>Render {}</h2>\n".format(name)

0 commit comments

Comments
 (0)