Kaydet (Commit) a3a0eac0 authored tarafından Aron Budea's avatar Aron Budea Kaydeden (comit) Miklos Vajna

tdf#106001: Clamp CharScaleWidth outliers when exporting to DOCX

Atribute is of type ST_TextScale, which has to be
between 1 and 600.

Change-Id: I9b9cddc47d194f1364d91675c9b825752b2f5e06
Reviewed-on: https://gerrit.libreoffice.org/34713Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarMiklos Vajna <vmiklos@collabora.co.uk>
üst 4c09fc48
......@@ -231,6 +231,16 @@ DECLARE_OOXMLEXPORT_TEST(testTdf106001, "tdf106001.docx")
CPPUNIT_ASSERT_EQUAL( static_cast<sal_Int16>( 100 ), getProperty<sal_Int16>(getRun(getParagraph(1), 1), "CharScaleWidth" ));
}
DECLARE_OOXMLEXPORT_TEST(testTdf106001_2, "tdf106001-2.odt")
{
// In test ODT CharScaleWidth = 900, this was not changed upon OOXML export to stay in [1..600], now it's clamped to 600
// Note: we disregard what's set in pPr / rPr and only care about r / rPr
xmlDocPtr pXmlDoc = parseExport("word/document.xml");
if (!pXmlDoc)
return;
assertXPath(pXmlDoc, "/w:document/w:body/w:p/w:r/w:rPr/w:w","val","600");
}
DECLARE_OOXMLEXPORT_TEST(testTdf103931, "tdf103931.docx")
{
uno::Reference<text::XTextSectionsSupplier> xTextSectionsSupplier(mxComponent, uno::UNO_QUERY);
......
......@@ -6566,8 +6566,11 @@ void DocxAttributeOutput::CharTwoLines( const SvxTwoLinesItem& rTwoLines )
void DocxAttributeOutput::CharScaleWidth( const SvxCharScaleWidthItem& rScaleWidth )
{
// Clamp CharScaleWidth to OOXML limits ([1..600])
const sal_Int16 nScaleWidth( std::max<sal_Int16>( 1,
std::min<sal_Int16>( rScaleWidth.GetValue(), 600 ) ) );
m_pSerializer->singleElementNS( XML_w, XML_w,
FSNS( XML_w, XML_val ), OString::number( rScaleWidth.GetValue() ).getStr(), FSEND );
FSNS( XML_w, XML_val ), OString::number( nScaleWidth ).getStr(), FSEND );
}
void DocxAttributeOutput::CharRelief( const SvxCharReliefItem& rRelief )
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment