CString RtfOle::RenderToOOX(RenderParameter oRenderParameter) { if( false == IsValid() ) return _T(""); CString sResult; if( RENDER_TO_OOX_PARAM_OLE_ONLY == oRenderParameter.nType ) { sResult.Append( RenderToOOXOnlyOle(oRenderParameter) ); } else { sResult.Append( _T("<w:r>") ); sResult.AppendFormat( _T("<w:object w:dxaOrig=\"%d\" w:dyaOrig=\"%d\">"), m_nWidth, m_nHeight ); RenderParameter oNewRenderParameter = oRenderParameter; oNewRenderParameter.nType = RENDER_TO_OOX_PARAM_SHAPE_WSHAPE2; m_oResultPic->m_bIsOle = true; sResult.Append( m_oResultPic->RenderToOOX(oNewRenderParameter) ); oNewRenderParameter.nValue = m_oResultPic->m_nID; sResult.Append( RenderToOOXOnlyOle(oNewRenderParameter) ); sResult.Append( _T("</w:object>") ); sResult.Append( _T("</w:r>") ); } return sResult; }
std::wstring RtfOle::RenderToOOX(RenderParameter oRenderParameter) { if( false == IsValid() ) return L""; std::wstring sResult; RtfDocument* poRtfDocument = static_cast<RtfDocument*> (oRenderParameter.poDocument); OOXWriter* poOOXWriter = static_cast<OOXWriter*> (oRenderParameter.poWriter); if( RENDER_TO_OOX_PARAM_OLE_ONLY == oRenderParameter.nType ) { sResult += RenderToOOXOnlyOle(oRenderParameter); } else { RtfCharProperty * pCharProps = &m_oCharProperty; //------------------------------------------ // todooo общая часть с RtfChar bool bInsert = false; bool bDelete = false; if (pCharProps->m_nRevised != PROP_DEF) { bInsert = true; std::wstring sAuthor = poRtfDocument->m_oRevisionTable.GetAuthor(pCharProps->m_nRevauth); std::wstring sDate(RtfUtility::convertDateTime(pCharProps->m_nRevdttm).c_str()); sResult += L"<w:ins w:date=\"" + sDate + L"\" w:author=\"" + sAuthor + L"\" w:id=\"" + std::to_wstring(poOOXWriter->m_nCurTrackChangesId++).c_str() + L"\">"; pCharProps->m_nRevised = PROP_DEF; } if (pCharProps->m_nDeleted != PROP_DEF) { bDelete = true; std::wstring sAuthor = poRtfDocument->m_oRevisionTable.GetAuthor(pCharProps->m_nRevauthDel); std::wstring sDate(RtfUtility::convertDateTime(pCharProps->m_nRevdttmDel).c_str()); sResult += L"<w:del w:date=\"" + sDate + L"\" w:author=\"" + sAuthor + L"\" w:id=\"" + std::to_wstring(poOOXWriter->m_nCurTrackChangesId++).c_str() + L"\">"; pCharProps->m_nDeleted = PROP_DEF; } //---------- sResult += L"<w:r>"; std::wstring sCharProp = pCharProps->RenderToOOX(oRenderParameter); if (!sCharProp .empty()) { sResult += L"<w:rPr>"; sResult += sCharProp; sResult += L"</w:rPr>"; } sResult += L"<w:object w:dxaOrig=\"" + std::to_wstring(m_nWidth) + L"\" w:dyaOrig=\"" + std::to_wstring(m_nHeight) + L"\">"; RenderParameter oNewRenderParameter = oRenderParameter; oNewRenderParameter.nType = RENDER_TO_OOX_PARAM_SHAPE_WSHAPE2; if (m_oResultShape) { m_oResultShape->m_bIsOle = true; sResult += m_oResultShape->RenderToOOX(oNewRenderParameter); oNewRenderParameter.nValue = m_oResultShape->m_nID; } sResult += RenderToOOXOnlyOle(oNewRenderParameter); sResult += L"</w:object>"; sResult += L"</w:r>"; if (bDelete)sResult += L"</w:del>"; if (bInsert)sResult += L"</w:ins>"; } return sResult; }