tdf#130812 DOC import: fix unexpected transparency of text
DOC can have black with transparency set to 0xff, and that is meant to be just black. Allow COL_AUTO, though; the rendering will not consider that as transparent anyway. Other than that, DOC does not support text with transparency, it's a DOCX-only feature. Change-Id: I33f61b54b8ebd7958845063ae61900182d6f5e80 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/89321 Reviewed-by: Miklos Vajna <vmiklos@collabora.com> Tested-by: Jenkins
This commit is contained in:
parent
5e8b6d3b72
commit
634a9ba15d
4 changed files with 20 additions and 0 deletions
|
@ -29,6 +29,7 @@ $(eval $(call gb_CppunitTest_use_libraries,sw_ww8import, \
|
|||
sfx \
|
||||
svl \
|
||||
sw \
|
||||
tl \
|
||||
utl \
|
||||
))
|
||||
|
||||
|
|
BIN
sw/qa/extras/ww8import/data/transparent-text.doc
Normal file
BIN
sw/qa/extras/ww8import/data/transparent-text.doc
Normal file
Binary file not shown.
|
@ -133,6 +133,18 @@ DECLARE_WW8IMPORT_TEST(testTdf106291, "tdf106291.doc")
|
|||
CPPUNIT_ASSERT(cellHeight.toInt32() > 200); // height might depend on font size
|
||||
}
|
||||
|
||||
DECLARE_WW8IMPORT_TEST(testTransparentText, "transparent-text.doc")
|
||||
{
|
||||
uno::Reference<text::XText> xHeaderText = getProperty<uno::Reference<text::XText>>(
|
||||
getStyles("PageStyles")->getByName("Standard"), "HeaderText");
|
||||
uno::Reference<text::XTextRange> xParagraph = getParagraphOfText(3, xHeaderText);
|
||||
// Without the accompanying fix in place, this test would have failed: transparency was set to
|
||||
// 100%, so the text was not readable.
|
||||
sal_Int32 nExpected(COL_BLACK);
|
||||
sal_Int32 nActual(getProperty<sal_Int16>(xParagraph, "CharTransparence"));
|
||||
CPPUNIT_ASSERT_EQUAL(nExpected, nActual);
|
||||
}
|
||||
|
||||
DECLARE_WW8IMPORT_TEST( testTdf105570, "tdf105570.doc" )
|
||||
{
|
||||
/*****
|
||||
|
|
|
@ -3589,6 +3589,13 @@ void SwWW8ImplReader::Read_TextForeColor(sal_uInt16, const sal_uInt8* pData, sho
|
|||
else
|
||||
{
|
||||
Color aColor(msfilter::util::BGRToRGB(SVBT32ToUInt32(pData)));
|
||||
|
||||
// At least when transparency is 0xff and the color is black, Word renders that as black.
|
||||
if (aColor.GetTransparency() && aColor != COL_AUTO)
|
||||
{
|
||||
aColor.SetTransparency(0);
|
||||
}
|
||||
|
||||
NewAttr(SvxColorItem(aColor, RES_CHRATR_COLOR));
|
||||
if (m_pCurrentColl && m_xStyles)
|
||||
m_xStyles->mbTextColChanged = true;
|
||||
|
|
Loading…
Reference in a new issue