From aeba901db44db667933a13acd8e2d74e1e4a0028 Mon Sep 17 00:00:00 2001 From: Miklos Vajna Date: Mon, 31 Aug 2015 09:05:59 +0200 Subject: tdf#89245 xmloff: fix Calc header background image saving Regression from commit 7d9bb549d498d6beed2c4050c402d09643febdfa (Related: #i124638# Second step of DrawingLayer FillAttributes..., 2014-06-02), the problem was that the new CTF_PM_REPEAT_OFFSET_X..CTF_PM_FILLTRANSNAME range's values overlapped with the existing CTF_PM_HEADERHEIGHT..CTF_PM_HEADERGRAPHICURL range's values, so when the new code in XMLPageMasterExportPropMapper::ContextFilter() tried to tweak header repeat offset properties, it actually disabled HeaderBackGraphicURL instead. (cherry picked from commit 3b40329f9a64b93b1e1230b1bff74ed8cda8cd70) Conflicts: sc/qa/unit/subsequent_export-test.cxx Change-Id: I9c2700fa71a4ef2a813ec671049ee9d98171b57e Reviewed-on: https://gerrit.libreoffice.org/18162 Reviewed-by: Andras Timar Tested-by: Andras Timar --- include/xmloff/PageMasterStyleMap.hxx | 12 ++++++------ sc/qa/unit/data/ods/header-image.ods | Bin 0 -> 12036 bytes sc/qa/unit/subsequent_export-test.cxx | 16 ++++++++++++++++ 3 files changed, 22 insertions(+), 6 deletions(-) create mode 100644 sc/qa/unit/data/ods/header-image.ods diff --git a/include/xmloff/PageMasterStyleMap.hxx b/include/xmloff/PageMasterStyleMap.hxx index a4007bd012f5..859f3e0e6e84 100644 --- a/include/xmloff/PageMasterStyleMap.hxx +++ b/include/xmloff/PageMasterStyleMap.hxx @@ -90,12 +90,12 @@ // at export time using CTF_PM_FLAGMASK and XML_PM_CTF_START as detector // to find the first entry for header/footer (!), see // SvXMLAutoStylePoolP_Impl::exportXML, look for XML_STYLE_FAMILY_PAGE_MASTER -#define CTF_PM_REPEAT_OFFSET_X (XML_PM_CTF_START + 0x0035) -#define CTF_PM_REPEAT_OFFSET_Y (XML_PM_CTF_START + 0x0036) -#define CTF_PM_FILLGRADIENTNAME (XML_PM_CTF_START + 0x0037) -#define CTF_PM_FILLHATCHNAME (XML_PM_CTF_START + 0x0038) -#define CTF_PM_FILLBITMAPNAME (XML_PM_CTF_START + 0x0039) -#define CTF_PM_FILLTRANSNAME (XML_PM_CTF_START + 0x0040) +#define CTF_PM_REPEAT_OFFSET_X (XML_PM_CTF_START + 0x0037) +#define CTF_PM_REPEAT_OFFSET_Y (XML_PM_CTF_START + 0x0038) +#define CTF_PM_FILLGRADIENTNAME (XML_PM_CTF_START + 0x0039) +#define CTF_PM_FILLHATCHNAME (XML_PM_CTF_START + 0x0040) +#define CTF_PM_FILLBITMAPNAME (XML_PM_CTF_START + 0x0041) +#define CTF_PM_FILLTRANSNAME (XML_PM_CTF_START + 0x0042) #define CTF_PM_SCALETO (XML_PM_CTF_START + 0x0051) // calc specific #define CTF_PM_SCALETOPAGES (XML_PM_CTF_START + 0x0052) diff --git a/sc/qa/unit/data/ods/header-image.ods b/sc/qa/unit/data/ods/header-image.ods new file mode 100644 index 000000000000..c19b902415dd Binary files /dev/null and b/sc/qa/unit/data/ods/header-image.ods differ diff --git a/sc/qa/unit/subsequent_export-test.cxx b/sc/qa/unit/subsequent_export-test.cxx index 33312e46dce2..a6f273b7e4c8 100644 --- a/sc/qa/unit/subsequent_export-test.cxx +++ b/sc/qa/unit/subsequent_export-test.cxx @@ -135,6 +135,7 @@ public: void testLinkedGraphicRT(); void testSupBookVirtualPath(); + void testHeaderImage(); CPPUNIT_TEST_SUITE(ScExportTest); CPPUNIT_TEST(test); @@ -180,6 +181,7 @@ public: #endif CPPUNIT_TEST(testSwappedOutImageExport); CPPUNIT_TEST(testLinkedGraphicRT); + CPPUNIT_TEST(testHeaderImage); CPPUNIT_TEST_SUITE_END(); @@ -2417,6 +2419,20 @@ void ScExportTest::testLinkedGraphicRT() } } +void ScExportTest::testHeaderImage() +{ + // Graphic as header background was lost on export. + ScDocShellRef xShell = loadDoc("header-image.", ODS); + ScDocShellRef xDocSh = saveAndReload(&(*xShell), ODS); + uno::Reference xStyleFamiliesSupplier(xDocSh->GetModel(), uno::UNO_QUERY); + uno::Reference xStyleFamilies = xStyleFamiliesSupplier->getStyleFamilies(); + uno::Reference xPageStyles(xStyleFamilies->getByName("PageStyles"), uno::UNO_QUERY); + uno::Reference xStyle(xPageStyles->getByName("Default"), uno::UNO_QUERY); + OUString aURL; + xStyle->getPropertyValue("HeaderBackGraphicURL") >>= aURL; + CPPUNIT_ASSERT(aURL.startsWith("vnd.sun.star.GraphicObject:")); +} + CPPUNIT_TEST_SUITE_REGISTRATION(ScExportTest); CPPUNIT_PLUGIN_IMPLEMENT(); -- cgit v1.2.3