From 776569ca81dbaf62eaae620181741d4e87bfad16 Mon Sep 17 00:00:00 2001 From: ElenaSubbotina Date: Wed, 9 Apr 2025 20:03:25 +0300 Subject: [PATCH] fix xfrm --- .../ASCOfficeDrawingConverter.cpp | 54 ++++++++++++++++++- 1 file changed, 53 insertions(+), 1 deletion(-) diff --git a/OOXML/PPTXFormat/DrawingConverter/ASCOfficeDrawingConverter.cpp b/OOXML/PPTXFormat/DrawingConverter/ASCOfficeDrawingConverter.cpp index 3d46d556a3..3e243830fd 100644 --- a/OOXML/PPTXFormat/DrawingConverter/ASCOfficeDrawingConverter.cpp +++ b/OOXML/PPTXFormat/DrawingConverter/ASCOfficeDrawingConverter.cpp @@ -5933,7 +5933,59 @@ HRESULT CDrawingConverter::SaveObject(LONG lStart, LONG lLength, const std::wstr oXmlWriter.WriteString(L"\ "); } - oElem.toXmlWriter(&oXmlWriter); + + if (m_pReader->m_nDocumentType == XMLWRITER_DOC_TYPE_DOCX) + { + PPTX::Logic::Xfrm *pXfrm = NULL; + if (oElem.getType() == OOX::et_pic) + { + PPTX::Logic::Pic& s = oElem.as(); + if (s.spPr.xfrm.IsInit() == false) + { + s.spPr.xfrm.Init(); pXfrm = s.spPr.xfrm.GetPointer(); + } + } + else if (oElem.getType() == OOX::et_graphicFrame) + { + PPTX::Logic::GraphicFrame& s = oElem.as(); + if (s.xfrm.IsInit() == false) + { + s.xfrm.Init(); pXfrm = s.xfrm.GetPointer(); + } + } + else if (oElem.getType() == OOX::et_p_ShapeTree) + { + PPTX::Logic::SpTree& s = oElem.as(); + if (s.grpSpPr.xfrm.IsInit() == false) + { + s.grpSpPr.xfrm.Init(); pXfrm = s.grpSpPr.xfrm.GetPointer(); + } + } + else if (oElem.getType() == OOX::et_a_Shape) + { + PPTX::Logic::Shape& s = oElem.as(); + if (s.spPr.xfrm.IsInit() == false) + { + s.spPr.xfrm.Init(); pXfrm = s.spPr.xfrm.GetPointer(); + } + } + else if (oElem.getType() == OOX::et_cxnSp) + { + PPTX::Logic::CxnSp& s = oElem.as(); + if (s.spPr.xfrm.IsInit() == false) + { + s.spPr.xfrm.Init(); pXfrm = s.spPr.xfrm.GetPointer(); + } + } + if (pXfrm) + { + pXfrm->extX = 0; + pXfrm->extY = 0; + pXfrm->offX = 0; + pXfrm->offY = 0; + } + } + oElem.toXmlWriter(&oXmlWriter); if (bAddGraphicData) oXmlWriter.WriteString(L"");