diff options
author | Miklos Vajna <vmiklos@collabora.com> | 2020-01-06 20:35:08 +0100 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.com> | 2020-01-07 09:26:47 +0100 |
commit | bf540873f5e258452fed5006f65a403c95e7872a (patch) | |
tree | 027f723b6a0477cd2ae8c49aaebbd30339b26d9b /sw/qa | |
parent | ecb5130e16898c0d2485e99564c57882b5ef25b0 (diff) |
sw: add rendering for semi-transparent text
I considered passing the text color's alpha value down to the various
vcl backends, but this would need changes everywhere (cairo, opengl, pdf
export, etc). It's much easier to go via DrawTransparent(), that's how
semi-transparent text in Draw/Impress already works.
Change-Id: I96f15e6764c3c88ba67dd72dc8708414d7c6050c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/86294
Tested-by: Jenkins
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
Diffstat (limited to 'sw/qa')
-rw-r--r-- | sw/qa/core/text/text.cxx | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/sw/qa/core/text/text.cxx b/sw/qa/core/text/text.cxx index 8074cbc9f45e..4e6d4fcdb14e 100644 --- a/sw/qa/core/text/text.cxx +++ b/sw/qa/core/text/text.cxx @@ -8,6 +8,9 @@ */ #include <swmodeltestbase.hxx> + +#include <vcl/gdimtf.hxx> + #include <wrtsh.hxx> static char const DATA_DIRECTORY[] = "/sw/qa/core/text/data/"; @@ -46,6 +49,35 @@ CPPUNIT_TEST_FIXTURE(SwCoreTextTest, testFootnoteConnect) pWrtShell->DelLeft(); } +CPPUNIT_TEST_FIXTURE(SwCoreTextTest, testSemiTransparentText) +{ + // Create an in-memory empty document. + loadURL("private:factory/swriter", nullptr); + + // Set text to half-transparent and type a character. + uno::Reference<beans::XPropertySet> xParagraph(getParagraph(1), uno::UNO_QUERY); + CPPUNIT_ASSERT(xParagraph.is()); + sal_Int16 nTransparence = 50; + xParagraph->setPropertyValue("CharTransparence", uno::makeAny(nTransparence)); + uno::Reference<text::XTextRange> xTextRange(xParagraph, uno::UNO_QUERY); + CPPUNIT_ASSERT(xTextRange.is()); + xTextRange->setString("x"); + + // Render the document to a metafile. + SwXTextDocument* pTextDoc = dynamic_cast<SwXTextDocument*>(mxComponent.get()); + CPPUNIT_ASSERT(pTextDoc); + SwDocShell* pDocShell = pTextDoc->GetDocShell(); + CPPUNIT_ASSERT(pDocShell); + std::shared_ptr<GDIMetaFile> xMetaFile = pDocShell->GetPreviewMetaFile(); + CPPUNIT_ASSERT(xMetaFile); + + // Make sure that DrawTransparent() was used during rendering. + MetafileXmlDump dumper; + xmlDocPtr pXmlDoc = dumpAndParse(dumper, *xMetaFile); + CPPUNIT_ASSERT(pXmlDoc); + assertXPath(pXmlDoc, "//floattransparent"); +} + CPPUNIT_PLUGIN_IMPLEMENT(); /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |