summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Stahl <mstahl@redhat.com>2015-08-27 15:14:20 +0200
committerMarkus Mohrhard <markus.mohrhard@googlemail.com>2015-08-28 00:17:46 +0000
commit651315eab0a605fb0a22e74b6daa4417602fc072 (patch)
tree3808b92a2bf33bd3f4c0f04c89f8d905c8e382bf
parent125fd9e3df5b33b9cd80de1ee3e4fa64c8587387 (diff)
xmloff: ODF export: actually ODF 1.2 does not allow graphic-properties
... in a style with family "paragraph", as detected by a --with-export-validation build due to the unit test added yesterday. So use the loext namespace for the style:graphic-properties element, and also omit it entirely (and rely on the style:paragraph-properties attributes fo:background-*) if the ODF version is set to 1.2 or 1.1. Also adapt a previous check that was missing the "drawing-page" style family, where the style:graphic-properties is allowed (commit 9746dc9ad62e7f3a39961733f2ac204e90289034) (regression from 7d9bb549d498d6beed2c4050c402d09643febdfa) Change-Id: Iedd66483f63020328bd61e1c1e19c62787b8ff6b (cherry picked from commit b1922eecb55b233de3e6abaaa644fe9f313cf0f1) Reviewed-on: https://gerrit.libreoffice.org/18064 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
-rw-r--r--include/xmloff/xmlexppr.hxx3
-rw-r--r--xmloff/source/style/impastpl.cxx1
-rw-r--r--xmloff/source/style/styleexp.cxx8
-rw-r--r--xmloff/source/style/xmlexppr.cxx23
4 files changed, 26 insertions, 9 deletions
diff --git a/include/xmloff/xmlexppr.hxx b/include/xmloff/xmlexppr.hxx
index dad0faa8b655..03c95c52dd7d 100644
--- a/include/xmloff/xmlexppr.hxx
+++ b/include/xmloff/xmlexppr.hxx
@@ -151,7 +151,8 @@ public:
void exportXML(
SvXMLExport& rExport,
const ::std::vector< XMLPropertyState >& rProperties,
- SvXmlExportFlags nFlags = SvXmlExportFlags::NONE ) const;
+ SvXmlExportFlags nFlags = SvXmlExportFlags::NONE,
+ bool bUseExtensionNamespaceForGraphicProperties = false ) const;
/** like above but only properties whose property map index is within the
* specified range are exported
diff --git a/xmloff/source/style/impastpl.cxx b/xmloff/source/style/impastpl.cxx
index a2a34ff7a824..6717895cdf71 100644
--- a/xmloff/source/style/impastpl.cxx
+++ b/xmloff/source/style/impastpl.cxx
@@ -683,6 +683,7 @@ void SvXMLAutoStylePoolP_Impl::exportXML(
GetExport().AddAttribute(
XML_NAMESPACE_STYLE, XML_FAMILY, aStrFamilyName );
if(aStrFamilyName != "graphic" &&
+ aStrFamilyName != "drawing-page" &&
aStrFamilyName != "presentation" &&
aStrFamilyName != "chart" )
bExtensionNamespace = true;
diff --git a/xmloff/source/style/styleexp.cxx b/xmloff/source/style/styleexp.cxx
index c6b62e886306..0ab12cce8c5e 100644
--- a/xmloff/source/style/styleexp.cxx
+++ b/xmloff/source/style/styleexp.cxx
@@ -316,8 +316,14 @@ bool XMLStyleExport::exportStyle(
// <style:properties>
::std::vector< XMLPropertyState > xPropStates =
rPropMapper->Filter( xPropSet, true );
+ bool const bUseExtensionNamespaceForGraphicProperties(
+ rXMLFamily != "drawing-page" &&
+ rXMLFamily != "graphic" &&
+ rXMLFamily != "presentation" &&
+ rXMLFamily != "chart");
rPropMapper->exportXML( GetExport(), xPropStates,
- SvXmlExportFlags::IGN_WS );
+ SvXmlExportFlags::IGN_WS,
+ bUseExtensionNamespaceForGraphicProperties );
rPropMapper->SetStyleName( OUString() );
diff --git a/xmloff/source/style/xmlexppr.cxx b/xmloff/source/style/xmlexppr.cxx
index ce43f2fa0b33..16b48126b4d3 100644
--- a/xmloff/source/style/xmlexppr.cxx
+++ b/xmloff/source/style/xmlexppr.cxx
@@ -749,16 +749,18 @@ void SvXMLExportPropertyMapper::exportXML( SvXMLAttributeList& rAttrList,
void SvXMLExportPropertyMapper::exportXML(
SvXMLExport& rExport,
const ::std::vector< XMLPropertyState >& rProperties,
- SvXmlExportFlags nFlags ) const
+ SvXmlExportFlags nFlags,
+ bool bUseExtensionNamespaceForGraphicProperties) const
{
- exportXML( rExport, rProperties, -1, -1, nFlags );
+ exportXML(rExport, rProperties, -1, -1, nFlags, bUseExtensionNamespaceForGraphicProperties);
}
+
void SvXMLExportPropertyMapper::exportXML(
SvXMLExport& rExport,
const ::std::vector< XMLPropertyState >& rProperties,
sal_Int32 nPropMapStartIdx, sal_Int32 nPropMapEndIdx,
- SvXmlExportFlags nFlags, bool bExtensionNamespace ) const
+ SvXmlExportFlags nFlags, bool bUseExtensionNamespaceForGraphicProperties) const
{
sal_uInt16 nPropTypeFlags = 0;
for( sal_uInt16 i=0; i<MAX_PROP_TYPES; ++i )
@@ -766,6 +768,17 @@ void SvXMLExportPropertyMapper::exportXML(
sal_uInt16 nPropType = aPropTokens[i].nType;
if( 0==i || (nPropTypeFlags & (1 << nPropType)) != 0 )
{
+ sal_uInt16 nNamespace = XML_NAMESPACE_STYLE;
+ if (bUseExtensionNamespaceForGraphicProperties &&
+ aPropTokens[i].eToken == xmloff::token::XML_GRAPHIC_PROPERTIES)
+ {
+ nNamespace = XML_NAMESPACE_LO_EXT;
+ if (rExport.getDefaultVersion() <= SvtSaveOptions::ODFVER_012)
+ {
+ continue; // don't write for ODF <= 1.2
+ }
+ }
+
std::vector<sal_uInt16> aIndexArray;
_exportXML( nPropType, nPropTypeFlags,
@@ -779,10 +792,6 @@ void SvXMLExportPropertyMapper::exportXML(
(nFlags & SvXmlExportFlags::EMPTY) ||
!aIndexArray.empty() )
{
- sal_uInt16 nNamespace = XML_NAMESPACE_STYLE;
- if(bExtensionNamespace && aPropTokens[i].eToken ==
- xmloff::token::XML_GRAPHIC_PROPERTIES)
- nNamespace = XML_NAMESPACE_LO_EXT;
SvXMLElementExport aElem( rExport, nNamespace,
aPropTokens[i].eToken,
bool(nFlags & SvXmlExportFlags::IGN_WS),