Kaydet (Commit) 651315ea authored tarafından Michael Stahl's avatar Michael Stahl Kaydeden (comit) Markus Mohrhard

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
9746dc9a)

(regression from 7d9bb549)

Change-Id: Iedd66483f63020328bd61e1c1e19c62787b8ff6b
(cherry picked from commit b1922eec)
Reviewed-on: https://gerrit.libreoffice.org/18064Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarMarkus Mohrhard <markus.mohrhard@googlemail.com>
üst 125fd9e3
...@@ -151,7 +151,8 @@ public: ...@@ -151,7 +151,8 @@ public:
void exportXML( void exportXML(
SvXMLExport& rExport, SvXMLExport& rExport,
const ::std::vector< XMLPropertyState >& rProperties, 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 /** like above but only properties whose property map index is within the
* specified range are exported * specified range are exported
......
...@@ -683,6 +683,7 @@ void SvXMLAutoStylePoolP_Impl::exportXML( ...@@ -683,6 +683,7 @@ void SvXMLAutoStylePoolP_Impl::exportXML(
GetExport().AddAttribute( GetExport().AddAttribute(
XML_NAMESPACE_STYLE, XML_FAMILY, aStrFamilyName ); XML_NAMESPACE_STYLE, XML_FAMILY, aStrFamilyName );
if(aStrFamilyName != "graphic" && if(aStrFamilyName != "graphic" &&
aStrFamilyName != "drawing-page" &&
aStrFamilyName != "presentation" && aStrFamilyName != "presentation" &&
aStrFamilyName != "chart" ) aStrFamilyName != "chart" )
bExtensionNamespace = true; bExtensionNamespace = true;
......
...@@ -316,8 +316,14 @@ bool XMLStyleExport::exportStyle( ...@@ -316,8 +316,14 @@ bool XMLStyleExport::exportStyle(
// <style:properties> // <style:properties>
::std::vector< XMLPropertyState > xPropStates = ::std::vector< XMLPropertyState > xPropStates =
rPropMapper->Filter( xPropSet, true ); rPropMapper->Filter( xPropSet, true );
bool const bUseExtensionNamespaceForGraphicProperties(
rXMLFamily != "drawing-page" &&
rXMLFamily != "graphic" &&
rXMLFamily != "presentation" &&
rXMLFamily != "chart");
rPropMapper->exportXML( GetExport(), xPropStates, rPropMapper->exportXML( GetExport(), xPropStates,
SvXmlExportFlags::IGN_WS ); SvXmlExportFlags::IGN_WS,
bUseExtensionNamespaceForGraphicProperties );
rPropMapper->SetStyleName( OUString() ); rPropMapper->SetStyleName( OUString() );
......
...@@ -749,16 +749,18 @@ void SvXMLExportPropertyMapper::exportXML( SvXMLAttributeList& rAttrList, ...@@ -749,16 +749,18 @@ void SvXMLExportPropertyMapper::exportXML( SvXMLAttributeList& rAttrList,
void SvXMLExportPropertyMapper::exportXML( void SvXMLExportPropertyMapper::exportXML(
SvXMLExport& rExport, SvXMLExport& rExport,
const ::std::vector< XMLPropertyState >& rProperties, 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( void SvXMLExportPropertyMapper::exportXML(
SvXMLExport& rExport, SvXMLExport& rExport,
const ::std::vector< XMLPropertyState >& rProperties, const ::std::vector< XMLPropertyState >& rProperties,
sal_Int32 nPropMapStartIdx, sal_Int32 nPropMapEndIdx, sal_Int32 nPropMapStartIdx, sal_Int32 nPropMapEndIdx,
SvXmlExportFlags nFlags, bool bExtensionNamespace ) const SvXmlExportFlags nFlags, bool bUseExtensionNamespaceForGraphicProperties) const
{ {
sal_uInt16 nPropTypeFlags = 0; sal_uInt16 nPropTypeFlags = 0;
for( sal_uInt16 i=0; i<MAX_PROP_TYPES; ++i ) for( sal_uInt16 i=0; i<MAX_PROP_TYPES; ++i )
...@@ -766,6 +768,17 @@ void SvXMLExportPropertyMapper::exportXML( ...@@ -766,6 +768,17 @@ void SvXMLExportPropertyMapper::exportXML(
sal_uInt16 nPropType = aPropTokens[i].nType; sal_uInt16 nPropType = aPropTokens[i].nType;
if( 0==i || (nPropTypeFlags & (1 << nPropType)) != 0 ) 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; std::vector<sal_uInt16> aIndexArray;
_exportXML( nPropType, nPropTypeFlags, _exportXML( nPropType, nPropTypeFlags,
...@@ -779,10 +792,6 @@ void SvXMLExportPropertyMapper::exportXML( ...@@ -779,10 +792,6 @@ void SvXMLExportPropertyMapper::exportXML(
(nFlags & SvXmlExportFlags::EMPTY) || (nFlags & SvXmlExportFlags::EMPTY) ||
!aIndexArray.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, SvXMLElementExport aElem( rExport, nNamespace,
aPropTokens[i].eToken, aPropTokens[i].eToken,
bool(nFlags & SvXmlExportFlags::IGN_WS), bool(nFlags & SvXmlExportFlags::IGN_WS),
......
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