summaryrefslogtreecommitdiff
path: root/svgio
diff options
context:
space:
mode:
authorMike Kaganski <mike.kaganski@collabora.com>2024-04-10 12:15:55 +0500
committerXisco Fauli <xiscofauli@libreoffice.org>2024-05-03 13:32:20 +0200
commitaa2df54f37926cf95261eefade1b87da3229cfd7 (patch)
treebd22010f80d4a63e09232e6eb53df373d9de6810 /svgio
parent799767d5670efc7f996892de5dd7d1afdb4a6cce (diff)
tdf#160622: Let SalLayout::GetBoundRect return basegfx::B2DRectangle
This avoids premature rounding in TextLayouterDevice::getTextBoundRect. The box in D2DWriteTextOutRenderer::performRender needs to be expanded to allow room for the line width (which now will be guaranteed on all sides; previously, the rounding could happen to give no room on some side, even prior to commit 8962141a12c966b2d891829925e6203bf8d51852). Fixes some lines partially cut off in smaller text (or zoomed out). Change-Id: I07335136021f894cf045363b4d736bfab06c64d4 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/166236 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com> Signed-off-by: Xisco Fauli <xiscofauli@libreoffice.org> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167014
Diffstat (limited to 'svgio')
-rw-r--r--svgio/qa/cppunit/SvgImportTest.cxx11
1 files changed, 10 insertions, 1 deletions
diff --git a/svgio/qa/cppunit/SvgImportTest.cxx b/svgio/qa/cppunit/SvgImportTest.cxx
index f56966a4423c..43910078e59f 100644
--- a/svgio/qa/cppunit/SvgImportTest.cxx
+++ b/svgio/qa/cppunit/SvgImportTest.cxx
@@ -39,6 +39,8 @@ protected:
Primitive2DSequence parseSvg(std::u16string_view aSource);
xmlDocUniquePtr dumpAndParseSvg(std::u16string_view aSource);
+ void assertXPathDouble(const xmlDocUniquePtr& pXmlDoc, const OString& rXPath,
+ const OString& rAttribute, double nExpectedValue, double delta);
};
Primitive2DSequence Test::parseSvg(std::u16string_view aSource)
@@ -91,6 +93,13 @@ void Test::checkRectPrimitive(Primitive2DSequence const & rPrimitive)
}
+void Test::assertXPathDouble(const xmlDocUniquePtr& pXmlDoc, const OString& rXPath,
+ const OString& rAttribute, double nExpectedValue, double delta)
+{
+ auto sVal = getXPath(pXmlDoc, rXPath, rAttribute);
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(nExpectedValue, sVal.toDouble(), delta);
+}
+
namespace
{
bool arePrimitive2DSequencesEqual(const Primitive2DSequence& rA, const Primitive2DSequence& rB)
@@ -812,7 +821,7 @@ CPPUNIT_TEST_FIXTURE(Test, testTdf156834)
assertXPath(pDocument, "/primitive2D/transform/textsimpleportion[3]"_ostr, "text"_ostr, "Hanging");
assertXPath(pDocument, "/primitive2D/transform/textsimpleportion[3]"_ostr, "x"_ostr, "30");
- assertXPath(pDocument, "/primitive2D/transform/textsimpleportion[3]"_ostr, "y"_ostr, "94");
+ assertXPathDouble(pDocument, "/primitive2D/transform/textsimpleportion[3]"_ostr, "y"_ostr, 93.5, 0.5);
assertXPath(pDocument, "/primitive2D/transform/textsimpleportion[4]"_ostr, "text"_ostr, "Central");
assertXPath(pDocument, "/primitive2D/transform/textsimpleportion[4]"_ostr, "x"_ostr, "30");