[Libreoffice-commits] core.git: 2 commits - sw/source
Miklos Vajna
vmiklos at collabora.co.uk
Tue Dec 10 08:50:32 PST 2013
sw/source/filter/ww8/docxattributeoutput.cxx | 230 +++++++++++++++++----------
sw/source/filter/ww8/docxattributeoutput.hxx | 10 -
2 files changed, 160 insertions(+), 80 deletions(-)
New commits:
commit 4614af18d3e033e0eed27db3d4c897afb8c8baa1
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date: Tue Dec 10 15:55:13 2013 +0100
DOCX shape export: when in experimental mode, use DML instead of VML
Change-Id: I8a07b74c047dfa2c4b1096e3cd3ace3bd5f93d0a
diff --git a/sw/source/filter/ww8/docxattributeoutput.cxx b/sw/source/filter/ww8/docxattributeoutput.cxx
index 8e33651..b546b37 100644
--- a/sw/source/filter/ww8/docxattributeoutput.cxx
+++ b/sw/source/filter/ww8/docxattributeoutput.cxx
@@ -110,6 +110,7 @@
#include <osl/file.hxx>
#include <rtl/tencinfo.h>
#include <vcl/embeddedfontshelper.hxx>
+#include <svtools/miscopt.hxx>
#include <com/sun/star/i18n/ScriptType.hpp>
#include <com/sun/star/chart2/XChartDocument.hpp>
@@ -1058,7 +1059,10 @@ void DocxAttributeOutput::StartRunProperties()
m_postponedDiagram = new std::list< PostponedDiagram >;
OSL_ASSERT( m_postponedVMLDrawing == NULL );
- m_postponedVMLDrawing = new std::list< PostponedVMLDrawing >;
+ m_postponedVMLDrawing = new std::list< PostponedDrawing >;
+
+ assert(!m_postponedDMLDrawing);
+ m_postponedDMLDrawing = new std::list< PostponedDrawing >;
}
void DocxAttributeOutput::InitCollectedRunProperties()
@@ -1178,6 +1182,7 @@ void DocxAttributeOutput::EndRunProperties( const SwRedlineData* pRedlineData )
//We need to write w:pict tag after the w:rPr.
WritePostponedVMLDrawing();
+ WritePostponedDMLDrawing();
// merge the properties _before_ the run text (strictly speaking, just
// after the start of the run)
@@ -3316,7 +3321,7 @@ void DocxAttributeOutput::WritePostponedVMLDrawing()
if(m_postponedVMLDrawing == NULL)
return;
- for( std::list< PostponedVMLDrawing >::iterator it = m_postponedVMLDrawing->begin();
+ for( std::list< PostponedDrawing >::iterator it = m_postponedVMLDrawing->begin();
it != m_postponedVMLDrawing->end();
++it )
{
@@ -3326,6 +3331,21 @@ void DocxAttributeOutput::WritePostponedVMLDrawing()
m_postponedVMLDrawing = NULL;
}
+void DocxAttributeOutput::WritePostponedDMLDrawing()
+{
+ if(m_postponedDMLDrawing == NULL)
+ return;
+
+ for( std::list< PostponedDrawing >::iterator it = m_postponedDMLDrawing->begin();
+ it != m_postponedDMLDrawing->end();
+ ++it )
+ {
+ WriteDMLDrawing(it->object, it->frame);
+ }
+ delete m_postponedDMLDrawing;
+ m_postponedDMLDrawing = NULL;
+}
+
void DocxAttributeOutput::WriteDMLDrawing( const SdrObject* pSdrObject, const SwFrmFmt* pFrmFmt )
{
Size aSize(pSdrObject->GetSnapRect().GetWidth(), pSdrObject->GetSnapRect().GetHeight());
@@ -3422,11 +3442,23 @@ void DocxAttributeOutput::OutputFlyFrame_Impl( const sw::Frame &rFrame, const Po
}
else
{
- if ( m_postponedVMLDrawing == NULL )
- WriteVMLDrawing( pSdrObj, rFrame.GetFrmFmt(), rNdTopLeft);
- else // we are writing out attributes, but w:pict should not be inside w:rPr,
- { // so write it out later
- m_postponedVMLDrawing->push_back( PostponedVMLDrawing( pSdrObj, &(rFrame.GetFrmFmt()), &rNdTopLeft ) );
+ SvtMiscOptions aMiscOptions;
+ if (aMiscOptions.IsExperimentalMode())
+ {
+ if ( m_postponedDMLDrawing == NULL )
+ WriteDMLDrawing( pSdrObj, &rFrame.GetFrmFmt());
+ else
+ // we are writing out attributes, but w:drawing should not be inside w:rPr, so write it out later
+ m_postponedDMLDrawing->push_back(PostponedDrawing(pSdrObj, &(rFrame.GetFrmFmt()), &rNdTopLeft));
+ }
+ else
+ {
+ if ( m_postponedVMLDrawing == NULL )
+ WriteVMLDrawing( pSdrObj, rFrame.GetFrmFmt(), rNdTopLeft);
+ else // we are writing out attributes, but w:pict should not be inside w:rPr,
+ { // so write it out later
+ m_postponedVMLDrawing->push_back( PostponedDrawing( pSdrObj, &(rFrame.GetFrmFmt()), &rNdTopLeft ) );
+ }
}
}
}
@@ -6406,6 +6438,7 @@ DocxAttributeOutput::DocxAttributeOutput( DocxExport &rExport, FSHelperPtr pSeri
m_postponedGraphic( NULL ),
m_postponedDiagram( NULL ),
m_postponedVMLDrawing(NULL),
+ m_postponedDMLDrawing(NULL),
m_postponedMath( NULL ),
m_postponedChart( NULL ),
pendingPlaceholder( NULL ),
diff --git a/sw/source/filter/ww8/docxattributeoutput.hxx b/sw/source/filter/ww8/docxattributeoutput.hxx
index 4326cde..bac7c8a 100644
--- a/sw/source/filter/ww8/docxattributeoutput.hxx
+++ b/sw/source/filter/ww8/docxattributeoutput.hxx
@@ -646,6 +646,7 @@ private:
void WritePostponedDiagram();
void WritePostponedChart();
void WritePostponedVMLDrawing();
+ void WritePostponedDMLDrawing();
void WriteCommentRanges();
void StartField_Impl( FieldInfos& rInfos, bool bWriteRun = sal_False );
@@ -747,14 +748,15 @@ private:
};
std::list< PostponedDiagram >* m_postponedDiagram;
- struct PostponedVMLDrawing
+ struct PostponedDrawing
{
- PostponedVMLDrawing( const SdrObject* sdrObj, const SwFrmFmt* frm, const Point* pt ) : object( sdrObj ), frame( frm ), point( pt ) {};
+ PostponedDrawing( const SdrObject* sdrObj, const SwFrmFmt* frm, const Point* pt ) : object( sdrObj ), frame( frm ), point( pt ) {};
const SdrObject* object;
const SwFrmFmt* frame;
const Point* point;
};
- std::list< PostponedVMLDrawing >* m_postponedVMLDrawing;
+ std::list< PostponedDrawing >* m_postponedVMLDrawing;
+ std::list< PostponedDrawing >* m_postponedDMLDrawing;
const SwOLENode* m_postponedMath;
const SdrObject* m_postponedChart;
commit 03f0128c15ef59bbcf193bcd85e1763111c29ad7
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date: Tue Dec 10 15:36:53 2013 +0100
DOCX export: add method to write wp + dml markup for an SdrObject
Also, factor out common code from FlyFrameGraphic() and
WriteDMLDrawing() to lcl_startDMLAnchorInline() and
lcl_endDMLAnchorInline() to avoid code duplication.
Change-Id: Ic1bed48e45b1cdb2d061ed7099206c0b1aa4f9f7
diff --git a/sw/source/filter/ww8/docxattributeoutput.cxx b/sw/source/filter/ww8/docxattributeoutput.cxx
index 9e0c8a3..8e33651 100644
--- a/sw/source/filter/ww8/docxattributeoutput.cxx
+++ b/sw/source/filter/ww8/docxattributeoutput.cxx
@@ -2750,50 +2750,17 @@ void DocxAttributeOutput::WriteSrcRect(const SdrObject* pSdrObj )
}
}
-void DocxAttributeOutput::FlyFrameGraphic( const SwGrfNode* pGrfNode, const Size& rSize, const SwFlyFrmFmt* pOLEFrmFmt, SwOLENode* pOLENode, const SdrObject* pSdrObj )
+void lcl_endDMLAnchorInline(sax_fastparser::FSHelperPtr pSerializer, const SwFrmFmt* pFrmFmt)
{
- OSL_TRACE( "TODO DocxAttributeOutput::FlyFrameGraphic( const SwGrfNode* pGrfNode, const Size& rSize, const SwFlyFrmFmt* pOLEFrmFmt, SwOLENode* pOLENode, const SdrObject* pSdrObj ) - some stuff still missing" );
- // detect mis-use of the API
- assert(pGrfNode || (pOLEFrmFmt && pOLENode));
- const SwFrmFmt* pFrmFmt = pGrfNode ? pGrfNode->GetFlyFmt() : pOLEFrmFmt;
- // create the relation ID
- OString aRelId;
- sal_Int32 nImageType;
- if ( pGrfNode && pGrfNode->IsLinkedFile() )
- {
- // linked image, just create the relation
- OUString aFileName;
- pGrfNode->GetFileFilterNms( &aFileName, 0 );
-
- // TODO Convert the file name to relative for better interoperability
-
- aRelId = m_rExport.AddRelation(
- "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",
- aFileName );
-
- nImageType = XML_link;
- }
- else
- {
- // inline, we also have to write the image itself
- const Graphic* pGraphic = 0;
- if (pGrfNode)
- pGraphic = &const_cast< Graphic& >( pGrfNode->GetGrf() );
- else
- pGraphic = pOLENode->GetGraphic();
-
- m_rDrawingML.SetFS( m_pSerializer ); // to be sure that we write to the right stream
- OUString aImageId = m_rDrawingML.WriteImage( *pGraphic );
-
- aRelId = OUStringToOString( aImageId, RTL_TEXTENCODING_UTF8 );
-
- nImageType = XML_embed;
- }
+ bool isAnchor = pFrmFmt->GetAnchor().GetAnchorId() != FLY_AS_CHAR;
+ pSerializer->endElementNS( XML_wp, isAnchor ? XML_anchor : XML_inline );
- if ( aRelId.isEmpty() )
- return;
+ pSerializer->endElementNS( XML_w, XML_drawing );
+}
- m_pSerializer->startElementNS( XML_w, XML_drawing, FSEND );
+void lcl_startDMLAnchorInline(sax_fastparser::FSHelperPtr pSerializer, const SwFrmFmt* pFrmFmt, const Size& rSize)
+{
+ pSerializer->startElementNS( XML_w, XML_drawing, FSEND );
const SvxLRSpaceItem pLRSpaceItem = pFrmFmt->GetLRSpace(false);
const SvxULSpaceItem pULSpaceItem = pFrmFmt->GetULSpace(false);
@@ -2801,7 +2768,7 @@ void DocxAttributeOutput::FlyFrameGraphic( const SwGrfNode* pGrfNode, const Size
bool isAnchor = pFrmFmt->GetAnchor().GetAnchorId() != FLY_AS_CHAR;
if( isAnchor )
{
- ::sax_fastparser::FastAttributeList* attrList = m_pSerializer->createAttrList();
+ ::sax_fastparser::FastAttributeList* attrList = pSerializer->createAttrList();
attrList->add( XML_behindDoc, pFrmFmt->GetOpaque().GetValue() ? "0" : "1" );
attrList->add( XML_distT, OString::number( TwipsToEMU( pULSpaceItem.GetUpper() ) ).getStr( ) );
attrList->add( XML_distB, OString::number( TwipsToEMU( pULSpaceItem.GetLower() ) ).getStr( ) );
@@ -2813,8 +2780,8 @@ void DocxAttributeOutput::FlyFrameGraphic( const SwGrfNode* pGrfNode, const Size
attrList->add( XML_allowOverlap, "1" ); // TODO
if( const SdrObject* pObj = pFrmFmt->FindRealSdrObject())
attrList->add( XML_relativeHeight, OString::number( pObj->GetOrdNum()));
- m_pSerializer->startElementNS( XML_wp, XML_anchor, XFastAttributeListRef( attrList ));
- m_pSerializer->singleElementNS( XML_wp, XML_simplePos, XML_x, "0", XML_y, "0", FSEND ); // required, unused
+ pSerializer->startElementNS( XML_wp, XML_anchor, XFastAttributeListRef( attrList ));
+ pSerializer->singleElementNS( XML_wp, XML_simplePos, XML_x, "0", XML_y, "0", FSEND ); // required, unused
const char* relativeFromH;
const char* relativeFromV;
const char* alignH = NULL;
@@ -2897,49 +2864,50 @@ void DocxAttributeOutput::FlyFrameGraphic( const SwGrfNode* pGrfNode, const Size
default:
break;
}
- m_pSerializer->startElementNS( XML_wp, XML_positionH, XML_relativeFrom, relativeFromH, FSEND );
+ pSerializer->startElementNS( XML_wp, XML_positionH, XML_relativeFrom, relativeFromH, FSEND );
if( alignH != NULL )
{
- m_pSerializer->startElementNS( XML_wp, XML_align, FSEND );
- m_pSerializer->write( alignH );
- m_pSerializer->endElementNS( XML_wp, XML_align );
+ pSerializer->startElementNS( XML_wp, XML_align, FSEND );
+ pSerializer->write( alignH );
+ pSerializer->endElementNS( XML_wp, XML_align );
}
else
{
- m_pSerializer->startElementNS( XML_wp, XML_posOffset, FSEND );
- m_pSerializer->write( TwipsToEMU( pFrmFmt->GetHoriOrient().GetPos()));
- m_pSerializer->endElementNS( XML_wp, XML_posOffset );
+ pSerializer->startElementNS( XML_wp, XML_posOffset, FSEND );
+ pSerializer->write( TwipsToEMU( pFrmFmt->GetHoriOrient().GetPos()));
+ pSerializer->endElementNS( XML_wp, XML_posOffset );
}
- m_pSerializer->endElementNS( XML_wp, XML_positionH );
- m_pSerializer->startElementNS( XML_wp, XML_positionV, XML_relativeFrom, relativeFromV, FSEND );
+ pSerializer->endElementNS( XML_wp, XML_positionH );
+ pSerializer->startElementNS( XML_wp, XML_positionV, XML_relativeFrom, relativeFromV, FSEND );
if( alignV != NULL )
{
- m_pSerializer->startElementNS( XML_wp, XML_align, FSEND );
- m_pSerializer->write( alignV );
- m_pSerializer->endElementNS( XML_wp, XML_align );
+ pSerializer->startElementNS( XML_wp, XML_align, FSEND );
+ pSerializer->write( alignV );
+ pSerializer->endElementNS( XML_wp, XML_align );
}
else
{
- m_pSerializer->startElementNS( XML_wp, XML_posOffset, FSEND );
- m_pSerializer->write( TwipsToEMU( pFrmFmt->GetVertOrient().GetPos()));
- m_pSerializer->endElementNS( XML_wp, XML_posOffset );
+ pSerializer->startElementNS( XML_wp, XML_posOffset, FSEND );
+ pSerializer->write( TwipsToEMU( pFrmFmt->GetVertOrient().GetPos()));
+ pSerializer->endElementNS( XML_wp, XML_posOffset );
}
- m_pSerializer->endElementNS( XML_wp, XML_positionV );
+ pSerializer->endElementNS( XML_wp, XML_positionV );
}
else
{
- m_pSerializer->startElementNS( XML_wp, XML_inline,
+ pSerializer->startElementNS( XML_wp, XML_inline,
XML_distT, OString::number( TwipsToEMU( pULSpaceItem.GetUpper() ) ).getStr( ),
XML_distB, OString::number( TwipsToEMU( pULSpaceItem.GetLower() ) ).getStr( ),
XML_distL, OString::number( TwipsToEMU( pLRSpaceItem.GetLeft() ) ).getStr( ),
XML_distR, OString::number( TwipsToEMU( pLRSpaceItem.GetRight() ) ).getStr( ),
FSEND );
}
+
// now the common parts
// extent of the image
OString aWidth( OString::number( TwipsToEMU( rSize.Width() ) ) );
OString aHeight( OString::number( TwipsToEMU( rSize.Height() ) ) );
- m_pSerializer->singleElementNS( XML_wp, XML_extent,
+ pSerializer->singleElementNS( XML_wp, XML_extent,
XML_cx, aWidth.getStr(),
XML_cy, aHeight.getStr(),
FSEND );
@@ -2970,7 +2938,7 @@ void DocxAttributeOutput::FlyFrameGraphic( const SwGrfNode* pGrfNode, const Size
}
}
- m_pSerializer->singleElementNS( XML_wp, XML_effectExtent,
+ pSerializer->singleElementNS( XML_wp, XML_effectExtent,
XML_l, aLeftExt, XML_t, aTopExt, XML_r, aRightExt, XML_b, aBottomExt,
FSEND );
@@ -2979,22 +2947,69 @@ void DocxAttributeOutput::FlyFrameGraphic( const SwGrfNode* pGrfNode, const Size
switch( pFrmFmt->GetSurround().GetValue())
{
case SURROUND_NONE:
- m_pSerializer->singleElementNS( XML_wp, XML_wrapTopAndBottom, FSEND );
+ pSerializer->singleElementNS( XML_wp, XML_wrapTopAndBottom, FSEND );
break;
case SURROUND_THROUGHT:
- m_pSerializer->singleElementNS( XML_wp, XML_wrapNone, FSEND );
+ pSerializer->singleElementNS( XML_wp, XML_wrapNone, FSEND );
break;
case SURROUND_PARALLEL:
- m_pSerializer->singleElementNS( XML_wp, XML_wrapSquare,
+ pSerializer->singleElementNS( XML_wp, XML_wrapSquare,
XML_wrapText, "bothSides", FSEND );
break;
case SURROUND_IDEAL:
default:
- m_pSerializer->singleElementNS( XML_wp, XML_wrapSquare,
+ pSerializer->singleElementNS( XML_wp, XML_wrapSquare,
XML_wrapText, "largest", FSEND );
break;
}
}
+}
+
+void DocxAttributeOutput::FlyFrameGraphic( const SwGrfNode* pGrfNode, const Size& rSize, const SwFlyFrmFmt* pOLEFrmFmt, SwOLENode* pOLENode, const SdrObject* pSdrObj )
+{
+ OSL_TRACE( "TODO DocxAttributeOutput::FlyFrameGraphic( const SwGrfNode* pGrfNode, const Size& rSize, const SwFlyFrmFmt* pOLEFrmFmt, SwOLENode* pOLENode, const SdrObject* pSdrObj ) - some stuff still missing" );
+ // detect mis-use of the API
+ assert(pGrfNode || (pOLEFrmFmt && pOLENode));
+ const SwFrmFmt* pFrmFmt = pGrfNode ? pGrfNode->GetFlyFmt() : pOLEFrmFmt;
+ // create the relation ID
+ OString aRelId;
+ sal_Int32 nImageType;
+ if ( pGrfNode && pGrfNode->IsLinkedFile() )
+ {
+ // linked image, just create the relation
+ OUString aFileName;
+ pGrfNode->GetFileFilterNms( &aFileName, 0 );
+
+ // TODO Convert the file name to relative for better interoperability
+
+ aRelId = m_rExport.AddRelation(
+ "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",
+ aFileName );
+
+ nImageType = XML_link;
+ }
+ else
+ {
+ // inline, we also have to write the image itself
+ const Graphic* pGraphic = 0;
+ if (pGrfNode)
+ pGraphic = &const_cast< Graphic& >( pGrfNode->GetGrf() );
+ else
+ pGraphic = pOLENode->GetGraphic();
+
+ m_rDrawingML.SetFS( m_pSerializer ); // to be sure that we write to the right stream
+ OUString aImageId = m_rDrawingML.WriteImage( *pGraphic );
+
+ aRelId = OUStringToOString( aImageId, RTL_TEXTENCODING_UTF8 );
+
+ nImageType = XML_embed;
+ }
+
+ if ( aRelId.isEmpty() )
+ return;
+
+ lcl_startDMLAnchorInline(m_pSerializer, pFrmFmt, rSize);
+
// picture description (used for pic:cNvPr later too)
::sax_fastparser::FastAttributeList* docPrattrList = m_pSerializer->createAttrList();
docPrattrList->add( XML_id, OString::number( m_anchorId++).getStr());
@@ -3078,6 +3093,8 @@ void DocxAttributeOutput::FlyFrameGraphic( const SwGrfNode* pGrfNode, const Size
m_pSerializer->singleElementNS( XML_a, XML_off,
XML_x, "0", XML_y, "0",
FSEND );
+ OString aWidth( OString::number( TwipsToEMU( rSize.Width() ) ) );
+ OString aHeight( OString::number( TwipsToEMU( rSize.Height() ) ) );
m_pSerializer->singleElementNS( XML_a, XML_ext,
XML_cx, aWidth.getStr(),
XML_cy, aHeight.getStr(),
@@ -3106,6 +3123,7 @@ void DocxAttributeOutput::FlyFrameGraphic( const SwGrfNode* pGrfNode, const Size
m_pSerializer->endElementNS( XML_a, XML_ln );
// Output effects
+ SvxShadowItem aShadowItem = pFrmFmt->GetShadow();
if ( aShadowItem.GetLocation() != SVX_SHADOW_NONE )
{
// Distance is measured diagonally from corner
@@ -3149,9 +3167,7 @@ void DocxAttributeOutput::FlyFrameGraphic( const SwGrfNode* pGrfNode, const Size
m_pSerializer->endElementNS( XML_a, XML_graphicData );
m_pSerializer->endElementNS( XML_a, XML_graphic );
- m_pSerializer->endElementNS( XML_wp, isAnchor ? XML_anchor : XML_inline );
-
- m_pSerializer->endElementNS( XML_w, XML_drawing );
+ lcl_endDMLAnchorInline(m_pSerializer, pFrmFmt);
}
void DocxAttributeOutput::WriteOLE2Obj( const SdrObject* pSdrObj, SwOLENode& rOLENode, const Size& rSize, const SwFlyFrmFmt* pFlyFrmFmt )
@@ -3310,6 +3326,33 @@ void DocxAttributeOutput::WritePostponedVMLDrawing()
m_postponedVMLDrawing = NULL;
}
+void DocxAttributeOutput::WriteDMLDrawing( const SdrObject* pSdrObject, const SwFrmFmt* pFrmFmt )
+{
+ Size aSize(pSdrObject->GetSnapRect().GetWidth(), pSdrObject->GetSnapRect().GetHeight());
+ lcl_startDMLAnchorInline(m_pSerializer, pFrmFmt, aSize);
+
+ sax_fastparser::FastAttributeList* pDocPrAttrList = m_pSerializer->createAttrList();
+ pDocPrAttrList->add( XML_id, OString::number( m_anchorId++).getStr());
+ pDocPrAttrList->add( XML_name, OUStringToOString(pSdrObject->GetName(), RTL_TEXTENCODING_UTF8).getStr() );
+ XFastAttributeListRef xDocPrAttrListRef( pDocPrAttrList );
+ m_pSerializer->singleElementNS( XML_wp, XML_docPr, xDocPrAttrListRef );
+
+ m_pSerializer->startElementNS( XML_a, XML_graphic,
+ FSNS( XML_xmlns, XML_a ), "http://schemas.openxmlformats.org/drawingml/2006/main",
+ FSEND );
+ m_pSerializer->startElementNS( XML_a, XML_graphicData,
+ XML_uri, "http://schemas.microsoft.com/office/word/2010/wordprocessingShape",
+ FSEND );
+
+ uno::Reference<drawing::XShape> xShape(const_cast<SdrObject*>(pSdrObject)->getUnoShape(), uno::UNO_QUERY_THROW);
+ m_rExport.OutputDML(xShape);
+
+ m_pSerializer->endElementNS( XML_a, XML_graphicData );
+ m_pSerializer->endElementNS( XML_a, XML_graphic );
+
+ lcl_endDMLAnchorInline(m_pSerializer, pFrmFmt);
+}
+
void DocxAttributeOutput::WriteVMLDrawing( const SdrObject* sdrObj, const SwFrmFmt& rFrmFmt,const Point& rNdTopLeft )
{
bool bSwapInPage = false;
diff --git a/sw/source/filter/ww8/docxattributeoutput.hxx b/sw/source/filter/ww8/docxattributeoutput.hxx
index 65416af..4326cde 100644
--- a/sw/source/filter/ww8/docxattributeoutput.hxx
+++ b/sw/source/filter/ww8/docxattributeoutput.hxx
@@ -374,6 +374,8 @@ private:
/// writes VML data
void WriteVMLDrawing( const SdrObject* sdrObj, const SwFrmFmt& rFrmFmt,const Point& rNdTopLeft );
+ /// Writes wp wrapper code around an SdrObject, which itself is written using drawingML syntax.
+ void WriteDMLDrawing( const SdrObject* pSdrObj, const SwFrmFmt* pFrmFmt );
void InitTableHelper( ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfoInner );
void StartTable( ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfoInner );
void StartTableRow( ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfoInner );
More information about the Libreoffice-commits
mailing list