diff options
author | Luboš Luňák <l.lunak@suse.cz> | 2011-08-12 20:34:14 +0200 |
---|---|---|
committer | Luboš Luňák <l.lunak@suse.cz> | 2011-08-18 15:15:50 +0200 |
commit | 28d84e1b04a1936901695d9ecb8c5c8ee8f3c874 (patch) | |
tree | 62e49daf21be855643996784f1a59d4dac88bef9 /sw | |
parent | ece27b6e1c7d924715cc8a75f9d4a85636d84fff (diff) |
placeholder for writing math to .docx
Diffstat (limited to 'sw')
-rw-r--r-- | sw/source/filter/ww8/docxattributeoutput.cxx | 36 | ||||
-rw-r--r-- | sw/source/filter/ww8/docxattributeoutput.hxx | 4 |
2 files changed, 36 insertions, 4 deletions
diff --git a/sw/source/filter/ww8/docxattributeoutput.cxx b/sw/source/filter/ww8/docxattributeoutput.cxx index 7c5a399028ec..b2c43917b409 100644 --- a/sw/source/filter/ww8/docxattributeoutput.cxx +++ b/sw/source/filter/ww8/docxattributeoutput.cxx @@ -113,6 +113,7 @@ #include <htmltbl.hxx> #include <lineinfo.hxx> #include <ndgrf.hxx> +#include <ndole.hxx> #include <ndtxt.hxx> #include <node.hxx> #include <pagedesc.hxx> @@ -2207,7 +2208,15 @@ void DocxAttributeOutput::FlyFrameGraphic( const SwGrfNode& rGrfNode, const Size m_pSerializer->endElementNS( XML_w, XML_drawing ); } -void DocxAttributeOutput::WriteOLE2Obj( const SdrObject* pSdrObj, const Size& rSize ) +void DocxAttributeOutput::WriteOLE2Obj( const SdrObject* pSdrObj, const SwOLENode& rOLENode, const Size& rSize ) +{ + if( WriteOLEChart( pSdrObj, rSize )) + return; + if( WriteOLEMath( pSdrObj, rOLENode, rSize )) + return; +} + +bool DocxAttributeOutput::WriteOLEChart( const SdrObject* pSdrObj, const Size& rSize ) { uno::Reference< chart2::XChartDocument > xChartDoc; uno::Reference< drawing::XShape > xShape( ((SdrObject*)pSdrObj)->getUnoShape(), uno::UNO_QUERY ); @@ -2277,7 +2286,23 @@ void DocxAttributeOutput::WriteOLE2Obj( const SdrObject* pSdrObj, const Size& rS m_pSerializer->endElementNS( XML_a, XML_graphic ); m_pSerializer->endElementNS( XML_wp, XML_inline ); m_pSerializer->endElementNS( XML_w, XML_drawing ); + + return true; } + return false; +} + +bool DocxAttributeOutput::WriteOLEMath( const SdrObject*, const SwOLENode& rOLENode, const Size& ) +{ + uno::Reference < embed::XEmbeddedObject > xObj(const_cast<SwOLENode&>(rOLENode).GetOLEObj().GetOleRef()); + sal_Int64 nAspect = rOLENode.GetAspect(); + svt::EmbeddedObjectRef aObjRef( xObj, nAspect ); + SvGlobalName aObjName(aObjRef->getClassID()); + + if( !SotExchange::IsMath(aObjName) ) + return false; + // TODO + return true; } void DocxAttributeOutput::OutputFlyFrame_Impl( const sw::Frame &rFrame, const Point& /*rNdTopLeft*/ ) @@ -2339,9 +2364,14 @@ void DocxAttributeOutput::OutputFlyFrame_Impl( const sw::Frame &rFrame, const Po break; case sw::Frame::eOle: { - const SdrObject* pSdrObj = rFrame.GetFrmFmt().FindRealSdrObject(); + const SwFrmFmt &rFrmFmt = rFrame.GetFrmFmt(); + const SdrObject *pSdrObj = rFrmFmt.FindRealSdrObject(); if ( pSdrObj ) - WriteOLE2Obj( pSdrObj, rFrame.GetLayoutSize() ); + { + SwNodeIndex aIdx(*rFrmFmt.GetCntnt().GetCntntIdx(), 1); + SwOLENode& rOLENd = *aIdx.GetNode().GetOLENode(); + WriteOLE2Obj( pSdrObj, rOLENd, rFrame.GetLayoutSize() ); + } } break; default: diff --git a/sw/source/filter/ww8/docxattributeoutput.hxx b/sw/source/filter/ww8/docxattributeoutput.hxx index f875dc9dafd0..550ba9fdd1f4 100644 --- a/sw/source/filter/ww8/docxattributeoutput.hxx +++ b/sw/source/filter/ww8/docxattributeoutput.hxx @@ -301,7 +301,9 @@ private: /// Output graphic fly frames. void FlyFrameGraphic( const SwGrfNode& rGrfNode, const Size& rSize ); - void WriteOLE2Obj( const SdrObject* pSdrObj, const Size& rSize ); + void WriteOLE2Obj( const SdrObject* pSdrObj, const SwOLENode& rNode, const Size& rSize ); + bool WriteOLEChart( const SdrObject* pSdrObj, const Size& rSize ); + bool WriteOLEMath( const SdrObject* pSdrObj, const SwOLENode& rNode, const Size& rSize ); void InitTableHelper( ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfoInner ); void StartTable( ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfoInner ); |