summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndy Shaw <qt-info@nokia.com>2010-07-21 11:44:25 (GMT)
committerAndy Shaw <qt-info@nokia.com>2010-07-21 11:44:25 (GMT)
commit8d15fffc4d57c55949f799e52f2f52d3b0b66321 (patch)
tree6834187be71d61b90b5bc569fb59ad2517e0da43
parent0c57f26a32382c7431f0d536508c8e979f7e0313 (diff)
downloadQt-8d15fffc4d57c55949f799e52f2f52d3b0b66321.zip
Qt-8d15fffc4d57c55949f799e52f2f52d3b0b66321.tar.gz
Qt-8d15fffc4d57c55949f799e52f2f52d3b0b66321.tar.bz2
Ensure that font sizes that are > 0 and < 1 are still respected
What was happening was that when a font size of 0.5 was used then it would end up being set to be point size 0. This now respects the setting used. Autotest is included in this patch for this case. Reviewed-by: Kim
-rw-r--r--src/svg/qsvgstyle_p.h2
-rw-r--r--tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp26
2 files changed, 27 insertions, 1 deletions
diff --git a/src/svg/qsvgstyle_p.h b/src/svg/qsvgstyle_p.h
index af3b4e5..dfea12c 100644
--- a/src/svg/qsvgstyle_p.h
+++ b/src/svg/qsvgstyle_p.h
@@ -338,7 +338,7 @@ public:
{
// Store the _pixel_ size in the font. Since QFont::setPixelSize() only takes an int, call
// QFont::SetPointSize() instead. Set proper font size just before rendering.
- m_qfont.setPointSize(size);
+ m_qfont.setPointSizeF(size);
m_sizeSet = 1;
}
diff --git a/tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp b/tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp
index 106fd8c..519f4f5 100644
--- a/tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp
+++ b/tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp
@@ -85,6 +85,7 @@ private slots:
void testFillInheritance();
void testStopOffsetOpacity();
void testUseElement();
+ void smallFont();
#ifndef QT_NO_COMPRESS
void testGzLoading();
@@ -1342,5 +1343,30 @@ void tst_QSvgRenderer::testUseElement()
}
}
+void tst_QSvgRenderer::smallFont()
+{
+ static const char *svgs[] = { "<svg width=\"50px\" height=\"50px\"><text x=\"10\" y=\"10\" font-size=\"0\">Hello world</text></svg>",
+ "<svg width=\"50px\" height=\"50px\"><text x=\"10\" y=\"10\" font-size=\"0.5\">Hello world</text></svg>"
+ };
+ const int COUNT = sizeof(svgs) / sizeof(svgs[0]);
+ QImage images[COUNT];
+ QPainter p;
+
+ for (int i = 0; i < COUNT; ++i) {
+ QByteArray data(svgs[i]);
+ if (i == 0) {
+ QTest::ignoreMessage(QtWarningMsg, "QFont::setPointSizeF: Point size <= 0 (0.000000), must be greater than 0");
+ QTest::ignoreMessage(QtWarningMsg, "QFont::setPointSize: Point size <= 0 (0), must be greater than 0");
+ }
+ QSvgRenderer renderer(data);
+ images[i] = QImage(50, 50, QImage::Format_ARGB32_Premultiplied);
+ images[i].fill(-1);
+ p.begin(&images[i]);
+ renderer.render(&p);
+ p.end();
+ }
+ QVERIFY(images[0] != images[1]);
+}
+
QTEST_MAIN(tst_QSvgRenderer)
#include "tst_qsvgrenderer.moc"