Kaydet (Commit) dafbc860 authored tarafından Miklos Vajna's avatar Miklos Vajna

tdf#121804 DOCX import: handle sub/superscript inside group shapes

Regression from commit d5c934d1
(n#792778 DOCX import: parse group shapes in oox only, 2012-12-14),
where where manual wordprocessingML -> drawingML translation did not
handle this character property.

Change-Id: I87481bc9c26651fd15dd39a58a92f467e8311256
Reviewed-on: https://gerrit.libreoffice.org/65289
Tested-by: Jenkins
Reviewed-by: 's avatarMiklos Vajna <vmiklos@collabora.com>
üst 7a46f18d
......@@ -205,6 +205,17 @@ ContextHandlerRef TextCharacterPropertiesContext::onCreateContext( sal_Int32 aEl
mrTextCharacterProperties.moCaseMap = XML_none;
}
break;
case W_TOKEN(vertAlign):
{
// Map wordprocessingML <w:vertAlign w:val="..."/> to drawingML
// <a:rPr baseline="...">.
sal_Int32 nVal = rAttribs.getToken(W_TOKEN(val), 0);
if (nVal == XML_superscript)
mrTextCharacterProperties.moBaseline = 30000;
else if (nVal == XML_subscript)
mrTextCharacterProperties.moBaseline = -25000;
break;
}
case OOX_TOKEN(w14, glow):
case OOX_TOKEN(w14, shadow):
case OOX_TOKEN(w14, reflection):
......
......@@ -222,6 +222,24 @@ DECLARE_OOXMLIMPORT_TEST(testTdf113946, "tdf113946.docx")
CPPUNIT_ASSERT_EQUAL(OUString("1695"), aTop);
}
DECLARE_OOXMLIMPORT_TEST(testTdf121804, "tdf121804.docx")
{
uno::Reference<container::XIndexAccess> xGroup(getShape(1), uno::UNO_QUERY);
uno::Reference<text::XTextRange> xShape(xGroup->getByIndex(0), uno::UNO_QUERY);
uno::Reference<text::XTextRange> xFirstPara = getParagraphOfText(1, xShape->getText());
uno::Reference<text::XTextRange> xFirstRun = getRun(xFirstPara, 1);
CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(0),
getProperty<sal_Int32>(xFirstRun, "CharEscapement"));
// This failed with a NoSuchElementException, super/subscript property was
// lost on import, so the whole paragraph was a single run.
uno::Reference<text::XTextRange> xSecondRun = getRun(xFirstPara, 2);
CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(30),
getProperty<sal_Int32>(xSecondRun, "CharEscapement"));
uno::Reference<text::XTextRange> xThirdRun = getRun(xFirstPara, 3);
CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(-25),
getProperty<sal_Int32>(xThirdRun, "CharEscapement"));
}
DECLARE_OOXMLIMPORT_TEST(testTdf114217, "tdf114217.docx")
{
uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(mxComponent, uno::UNO_QUERY);
......
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