oox/source/export/vmlexport.cxx | 77 +++++++-------- sw/qa/extras/ooxmlexport/data/NoFillAttrInImagedata.docx |binary sw/qa/extras/ooxmlexport/ooxmlexport2.cxx | 11 ++ 3 files changed, 51 insertions(+), 37 deletions(-)
New commits: commit 101cc7a8a471b50947ccca0711417b2c0f3ef574 Author: Joren De Cuyper <jore...@libreoffice.org> Date: Thu May 7 21:39:49 2015 +0200 Do not write v:fill properties on export of imagedata See validation log of fdo73214: ERROR cvc-complex-type.3.2.2: Attribute 'type' is not allowed to appear in element 'v:imagedata'. ERROR cvc-complex-type.3.2.2: Attribute 'color2' is not allowed to appear in element 'v:imagedata'. http://dev-builds.libreoffice.org/crashtest/d879d5346b525c478e93363b7ec06e797ce01461/validation/docx/fdo73214-1.docx.log Change-Id: I99eacc05ed28c3cd848326fd08f3668a1ce0f4fb Reviewed-on: https://gerrit.libreoffice.org/15668 Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: Caolán McNamara <caol...@redhat.com> Tested-by: Caolán McNamara <caol...@redhat.com> diff --git a/oox/source/export/vmlexport.cxx b/oox/source/export/vmlexport.cxx index 570416d..a7ed878 100644 --- a/oox/source/export/vmlexport.cxx +++ b/oox/source/export/vmlexport.cxx @@ -562,39 +562,6 @@ void VMLExport::Commit( EscherPropertyContainer& rProps, const Rectangle& rRect sal_uInt32 nValue; sax_fastparser::FastAttributeList *pAttrList = FastSerializerHelper::createAttrList(); - if ( rProps.GetOpt( ESCHER_Prop_fillType, nValue ) ) - { - const char *pFillType = NULL; - switch ( nValue ) - { - case ESCHER_FillSolid: pFillType = "solid"; break; - // TODO case ESCHER_FillPattern: pFillType = ""; break; - case ESCHER_FillTexture: pFillType = "tile"; break; - // TODO case ESCHER_FillPicture: pFillType = ""; break; - // TODO case ESCHER_FillShade: pFillType = ""; break; - // TODO case ESCHER_FillShadeCenter: pFillType = ""; break; - // TODO case ESCHER_FillShadeShape: pFillType = ""; break; - // TODO case ESCHER_FillShadeScale: pFillType = ""; break; - // TODO case ESCHER_FillShadeTitle: pFillType = ""; break; - // TODO case ESCHER_FillBackground: pFillType = ""; break; - default: -#if OSL_DEBUG_LEVEL > 0 - fprintf( stderr, "TODO: unhandled fill type\n" ); -#endif - break; - } - if ( pFillType ) - pAttrList->add( XML_type, pFillType ); - } - else if (!rProps.GetOpt(ESCHER_Prop_fillColor, nValue)) - pAttrList->add( XML_on, "false" ); - - if ( rProps.GetOpt( ESCHER_Prop_fillColor, nValue ) ) - impl_AddColor( m_pShapeAttrList, XML_fillcolor, nValue ); - - if ( rProps.GetOpt( ESCHER_Prop_fillBackColor, nValue ) ) - impl_AddColor( pAttrList, XML_color2, nValue ); - bool imageData = false; EscherPropSortStruct aStruct; if ( rProps.GetOpt( ESCHER_Prop_fillBlip, aStruct ) && m_pTextExport) @@ -613,14 +580,50 @@ void VMLExport::Commit( EscherPropertyContainer& rProps, const Rectangle& rRect if ( rProps.GetOpt( ESCHER_Prop_fNoFillHitTest, nValue ) ) impl_AddBool( pAttrList, FSNS(XML_o, XML_detectmouseclick), nValue != 0 ); - if (rProps.GetOpt(ESCHER_Prop_fillOpacity, nValue)) - // Partly undo the transformation at the end of EscherPropertyContainer::CreateFillProperties(): VML opacity is 0..1. - pAttrList->add(XML_opacity, OString::number(double((nValue * 100) >> 16) / 100)); - if (imageData) m_pSerializer->singleElementNS( XML_v, XML_imagedata, XFastAttributeListRef( pAttrList ) ); else + { + if ( rProps.GetOpt( ESCHER_Prop_fillType, nValue ) ) + { + const char *pFillType = NULL; + switch ( nValue ) + { + case ESCHER_FillSolid: pFillType = "solid"; break; + // TODO case ESCHER_FillPattern: pFillType = ""; break; + case ESCHER_FillTexture: pFillType = "tile"; break; + // TODO case ESCHER_FillPicture: pFillType = ""; break; + // TODO case ESCHER_FillShade: pFillType = ""; break; + // TODO case ESCHER_FillShadeCenter: pFillType = ""; break; + // TODO case ESCHER_FillShadeShape: pFillType = ""; break; + // TODO case ESCHER_FillShadeScale: pFillType = ""; break; + // TODO case ESCHER_FillShadeTitle: pFillType = ""; break; + // TODO case ESCHER_FillBackground: pFillType = ""; break; + default: + #if OSL_DEBUG_LEVEL > 0 + fprintf( stderr, "TODO: unhandled fill type\n" ); + #endif + break; + } + if ( pFillType ) + pAttrList->add( XML_type, pFillType ); + } + else if (!rProps.GetOpt(ESCHER_Prop_fillColor, nValue)) + pAttrList->add( XML_on, "false" ); + + if ( rProps.GetOpt( ESCHER_Prop_fillColor, nValue ) ) + impl_AddColor( m_pShapeAttrList, XML_fillcolor, nValue ); + + if ( rProps.GetOpt( ESCHER_Prop_fillBackColor, nValue ) ) + impl_AddColor( pAttrList, XML_color2, nValue ); + + + if (rProps.GetOpt(ESCHER_Prop_fillOpacity, nValue)) + // Partly undo the transformation at the end of EscherPropertyContainer::CreateFillProperties(): VML opacity is 0..1. + pAttrList->add(XML_opacity, OString::number(double((nValue * 100) >> 16) / 100)); m_pSerializer->singleElementNS( XML_v, XML_fill, XFastAttributeListRef( pAttrList ) ); + + } } bAlreadyWritten[ ESCHER_Prop_fillType ] = true; bAlreadyWritten[ ESCHER_Prop_fillColor ] = true; diff --git a/sw/qa/extras/ooxmlexport/data/NoFillAttrInImagedata.docx b/sw/qa/extras/ooxmlexport/data/NoFillAttrInImagedata.docx new file mode 100644 index 0000000..3819e79 Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/NoFillAttrInImagedata.docx differ diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport2.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport2.cxx index 6a76477..a14388d 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport2.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport2.cxx @@ -1108,6 +1108,17 @@ DECLARE_OOXMLEXPORT_TEST(testTransparentShadow, "transparent-shadow.docx") CPPUNIT_ASSERT_EQUAL(sal_Int16(50), nShadowTransparence); } +DECLARE_OOXMLEXPORT_TEST(NoFillAttrInImagedata, "NoFillAttrInImagedata.docx") +{ + //problem was that type and color2 which are v:fill attributes were written in 'v:imagedata' + xmlDocPtr pXmlDoc = parseExport("word/document.xml"); + if (!pXmlDoc) + return; + + assertXPath(pXmlDoc, "/w:document/w:body/w:p/w:r/mc:AlternateContent[2]/mc:Fallback/w:pict/v:rect/v:imagedata", "type", ""); + assertXPath(pXmlDoc, "/w:document/w:body/w:p/w:r/mc:AlternateContent[2]/mc:Fallback/w:pict/v:rect/v:imagedata", "color2", ""); +} + DECLARE_OOXMLEXPORT_TEST(testBnc837302, "bnc837302.docx") { // The problem was that text with empty author was not inserted as a redline
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits