[Libreoffice-commits] core.git: 3 commits - sw/source writerfilter/source
Miklos Vajna
vmiklos at collabora.co.uk
Mon Jan 13 12:51:11 PST 2014
sw/source/filter/ww8/docxattributeoutput.cxx | 168 ++-------------------
sw/source/filter/ww8/docxattributeoutput.hxx | 6
sw/source/filter/ww8/docxsdrexport.cxx | 154 ++++++++++++++++++-
sw/source/filter/ww8/docxsdrexport.hxx | 8 -
writerfilter/source/dmapper/GraphicImport.cxx | 2
writerfilter/source/dmapper/LatentStyleHandler.cxx | 38 ++--
writerfilter/source/dmapper/LatentStyleHandler.hxx | 46 +++--
writerfilter/source/doctok/resources.xmi | 57 -------
writerfilter/source/ooxml/OOXMLDocumentImpl.cxx | 2
writerfilter/source/ooxml/model.xml | 1
10 files changed, 220 insertions(+), 262 deletions(-)
New commits:
commit a75bc5fa700fdb570d46ab55e2e0954a7f8b3140
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date: Mon Jan 13 21:47:41 2014 +0100
writerfilter: whitespace fixes in LatentStyleHandler
Change-Id: Ia90bdec8416be387f4d59f8c824c274ad7bb6fa0
diff --git a/writerfilter/source/dmapper/LatentStyleHandler.cxx b/writerfilter/source/dmapper/LatentStyleHandler.cxx
index 013e3c0..39b677e 100644
--- a/writerfilter/source/dmapper/LatentStyleHandler.cxx
+++ b/writerfilter/source/dmapper/LatentStyleHandler.cxx
@@ -10,8 +10,10 @@
#include <ooxml/resourceids.hxx>
#include "dmapperLoggers.hxx"
-namespace writerfilter {
-namespace dmapper {
+namespace writerfilter
+{
+namespace dmapper
+{
using namespace ::com::sun::star;
@@ -30,30 +32,30 @@ void LatentStyleHandler::lcl_attribute(Id rName, Value& rVal)
bool bFound = true;
switch (rName)
{
- case NS_ooxml::LN_CT_LsdException_name:
- aValue.Name = "name";
+ case NS_ooxml::LN_CT_LsdException_name:
+ aValue.Name = "name";
break;
- case NS_ooxml::LN_CT_LsdException_locked:
- aValue.Name = "locked";
+ case NS_ooxml::LN_CT_LsdException_locked:
+ aValue.Name = "locked";
break;
- case NS_ooxml::LN_CT_LsdException_uiPriority:
- aValue.Name = "uiPriority";
+ case NS_ooxml::LN_CT_LsdException_uiPriority:
+ aValue.Name = "uiPriority";
break;
- case NS_ooxml::LN_CT_LsdException_semiHidden:
- aValue.Name = "semiHidden";
+ case NS_ooxml::LN_CT_LsdException_semiHidden:
+ aValue.Name = "semiHidden";
break;
- case NS_ooxml::LN_CT_LsdException_unhideWhenUsed:
- aValue.Name = "unhideWhenUsed";
+ case NS_ooxml::LN_CT_LsdException_unhideWhenUsed:
+ aValue.Name = "unhideWhenUsed";
break;
- case NS_ooxml::LN_CT_LsdException_qFormat:
- aValue.Name = "qFormat";
+ case NS_ooxml::LN_CT_LsdException_qFormat:
+ aValue.Name = "qFormat";
break;
- default:
- bFound = false;
+ default:
+ bFound = false;
#ifdef DEBUG_DOMAINMAPPER
- dmapper_logger->element("unhandled");
+ dmapper_logger->element("unhandled");
#endif
- break;
+ break;
}
if (bFound)
{
diff --git a/writerfilter/source/dmapper/LatentStyleHandler.hxx b/writerfilter/source/dmapper/LatentStyleHandler.hxx
index 081ddc2..289dab6 100644
--- a/writerfilter/source/dmapper/LatentStyleHandler.hxx
+++ b/writerfilter/source/dmapper/LatentStyleHandler.hxx
@@ -13,28 +13,30 @@
#include <boost/shared_ptr.hpp>
#include <com/sun/star/beans/PropertyValue.hpp>
-namespace writerfilter {
- namespace dmapper {
-
- /// Handler for a latent style (w:lsdException element)
- class LatentStyleHandler
- : public LoggedProperties
- {
- std::vector<beans::PropertyValue> m_aAttributes;
-
- // Properties
- virtual void lcl_attribute(Id Name, Value & val);
- virtual void lcl_sprm(Sprm & sprm);
-
- public:
- LatentStyleHandler();
- virtual ~LatentStyleHandler();
-
- com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> getAttributes() const;
- };
-
- typedef boost::shared_ptr<LatentStyleHandler> LatentStyleHandlerPtr;
- } // namespace dmapper
+namespace writerfilter
+{
+namespace dmapper
+{
+
+/// Handler for a latent style (w:lsdException element)
+class LatentStyleHandler
+ : public LoggedProperties
+{
+ std::vector<beans::PropertyValue> m_aAttributes;
+
+ // Properties
+ virtual void lcl_attribute(Id Name, Value& val);
+ virtual void lcl_sprm(Sprm& sprm);
+
+public:
+ LatentStyleHandler();
+ virtual ~LatentStyleHandler();
+
+ com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> getAttributes() const;
+};
+
+typedef boost::shared_ptr<LatentStyleHandler> LatentStyleHandlerPtr;
+} // namespace dmapper
} // namespace writerfilter
#endif
commit 8dc10235a29e00ae8ebf58b84650aaffd7f0329d
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date: Mon Jan 13 21:34:08 2014 +0100
DocxAttributeOutput: factor out writeDMLTextFrame() into DocxSdrExport
Also move the related m_pBodyPrAttrList and m_bDMLTextFrameSyntax
members as well.
Change-Id: I5c9f5b07b472efc930878ee2a26224346f036600
diff --git a/sw/source/filter/ww8/docxattributeoutput.cxx b/sw/source/filter/ww8/docxattributeoutput.cxx
index 8416554..20ce7f0 100644
--- a/sw/source/filter/ww8/docxattributeoutput.cxx
+++ b/sw/source/filter/ww8/docxattributeoutput.cxx
@@ -270,137 +270,6 @@ void DocxAttributeOutput::StartParagraph( ww8::WW8TableNodeInfo::Pointer_t pText
m_bParagraphOpened = true;
}
-void DocxAttributeOutput::WriteDMLTextFrame(sw::Frame* pParentFrame)
-{
- const SwFrmFmt& rFrmFmt = pParentFrame->GetFrmFmt( );
- const SwNodeIndex* pNodeIndex = rFrmFmt.GetCntnt().GetCntntIdx();
-
- sal_uLong nStt = pNodeIndex ? pNodeIndex->GetIndex()+1 : 0;
- sal_uLong nEnd = pNodeIndex ? pNodeIndex->GetNode().EndOfSectionIndex() : 0;
-
- //Save data here and restore when out of scope
- ExportDataSaveRestore aDataGuard(m_rExport, nStt, nEnd, pParentFrame);
-
- // When a frame has some low height, but automatically expanded due
- // to lots of contents, this size contains the real size.
- const Size aSize = pParentFrame->GetSize();
-
- m_rExport.SdrExporter().startDMLAnchorInline(&rFrmFmt, aSize);
-
- sax_fastparser::FastAttributeList* pDocPrAttrList = m_pSerializer->createAttrList();
- pDocPrAttrList->add(XML_id, OString::number(m_anchorId++).getStr());
- pDocPrAttrList->add(XML_name, OUStringToOString(rFrmFmt.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);
- m_pSerializer->startElementNS(XML_wps, XML_wsp, FSEND);
- m_pSerializer->singleElementNS(XML_wps, XML_cNvSpPr,
- XML_txBox, "1",
- FSEND);
-
- uno::Any aRotation ;
- const SdrObject* pSdrObj = rFrmFmt.FindRealSdrObject();
- uno::Reference< drawing::XShape > xShape( ((SdrObject*)pSdrObj)->getUnoShape(), uno::UNO_QUERY );
- uno::Reference< beans::XPropertySet > xPropertySet( xShape, uno::UNO_QUERY );
- uno::Reference< beans::XPropertySetInfo > xPropSetInfo = xPropertySet->getPropertySetInfo();
- sal_Int32 nRotation = 0;
-
- if ( xPropSetInfo->hasPropertyByName( "FrameInteropGrabBag" ) )
- {
- uno::Sequence< beans::PropertyValue > propList;
- xPropertySet->getPropertyValue( "FrameInteropGrabBag" ) >>= propList;
- for ( sal_Int32 nProp=0; nProp < propList.getLength(); ++nProp )
- {
- OUString propName = propList[nProp].Name;
- if ( propName == "mso-rotation-angle")
- {
- aRotation = propList[nProp].Value ;
- break;
- }
- }
- }
- aRotation >>= nRotation ;
- OString sRotation(OString::number(nRotation));
- // Shape properties
- m_pSerializer->startElementNS(XML_wps, XML_spPr, FSEND);
- if(nRotation)
- {
- m_pSerializer->startElementNS(XML_a, XML_xfrm,
- XML_rot, sRotation.getStr(),
- FSEND);
-
- }
- else
- {
- m_pSerializer->startElementNS(XML_a, XML_xfrm, FSEND);
- }
- m_pSerializer->singleElementNS(XML_a, XML_off,
- XML_x, "0",
- XML_y, "0",
- FSEND);
- OString aWidth(OString::number(TwipsToEMU(aSize.Width())));
- OString aHeight(OString::number(TwipsToEMU(aSize.Height())));
- m_pSerializer->singleElementNS(XML_a, XML_ext,
- XML_cx, aWidth.getStr(),
- XML_cy, aHeight.getStr(),
- FSEND);
- m_pSerializer->endElementNS(XML_a, XML_xfrm);
- OUString shapeType = "rect";
- if ( xPropSetInfo->hasPropertyByName( "FrameInteropGrabBag" ) )
- {
- uno::Sequence< beans::PropertyValue > propList;
- xPropertySet->getPropertyValue( "FrameInteropGrabBag" ) >>= propList;
- for ( sal_Int32 nProp=0; nProp < propList.getLength(); ++nProp )
- {
- OUString propName = propList[nProp].Name;
- if ( propName == "mso-orig-shape-type")
- {
- propList[nProp].Value >>= shapeType;
- break;
- }
- }
- }
-
- m_pSerializer->singleElementNS(XML_a, XML_prstGeom,
- XML_prst, OUStringToOString( shapeType, RTL_TEXTENCODING_UTF8 ).getStr(),
- FSEND);
- m_bDMLTextFrameSyntax = true;
- m_pBodyPrAttrList = m_pSerializer->createAttrList();
- m_rExport.OutputFormat( pParentFrame->GetFrmFmt(), false, false, true );
- m_bDMLTextFrameSyntax = false;
- m_rExport.SdrExporter().writeDMLEffectLst(rFrmFmt);
- m_pSerializer->endElementNS(XML_wps, XML_spPr);
-
- m_rExport.mpParentFrame = NULL;
- m_pSerializer->startElementNS( XML_wps, XML_txbx, FSEND );
- m_pSerializer->startElementNS( XML_w, XML_txbxContent, FSEND );
-
- m_rExport.SdrExporter().setFrameBtLr(m_rExport.SdrExporter().checkFrameBtlr(m_rExport.pDoc->GetNodes()[nStt], 0, m_pBodyPrAttrList));
- m_rExport.WriteText( );
- m_rExport.SdrExporter().setFrameBtLr(false);
-
- m_pSerializer->endElementNS( XML_w, XML_txbxContent );
- m_pSerializer->endElementNS( XML_wps, XML_txbx );
- XFastAttributeListRef xBodyPrAttrList(m_pBodyPrAttrList);
- m_pBodyPrAttrList = NULL;
- m_pSerializer->startElementNS( XML_wps, XML_bodyPr, xBodyPrAttrList );
- // AutoSize of the Text Frame.
- const SwFmtFrmSize& rSize = rFrmFmt.GetFrmSize();
- m_pSerializer->singleElementNS(XML_a, (rSize.GetHeightSizeType() == ATT_VAR_SIZE ? XML_spAutoFit : XML_noAutofit), FSEND);
- m_pSerializer->endElementNS( XML_wps, XML_bodyPr );
-
- m_pSerializer->endElementNS(XML_wps, XML_wsp);
- m_pSerializer->endElementNS(XML_a, XML_graphicData);
- m_pSerializer->endElementNS(XML_a, XML_graphic);
- m_rExport.SdrExporter().endDMLAnchorInline(&rFrmFmt);
-}
-
void DocxAttributeOutput::EndParagraph( ww8::WW8TableNodeInfoInner::Pointer_t pTextNodeInfoInner )
{
// write the paragraph properties + the run, already in the correct order
@@ -437,7 +306,7 @@ void DocxAttributeOutput::EndParagraph( ww8::WW8TableNodeInfoInner::Pointer_t pT
//Reset the table infos after saving.
m_rExport.mpTableInfo = ww8::WW8TableInfo::Pointer_t(new ww8::WW8TableInfo());
- WriteDMLTextFrame(pParentFrame);
+ m_rExport.SdrExporter().writeDMLTextFrame(pParentFrame, m_anchorId++);
m_pSerializer->endElementNS(XML_mc, XML_Choice);
// Reset table infos, otherwise the depth of the cells will be incorrect,
@@ -5335,7 +5204,7 @@ void DocxAttributeOutput::FormatFrameSize( const SwFmtFrmSize& rSize )
m_rExport.SdrExporter().getTextFrameStyle().append(";width:").append(double(pSize->Width()) / 20);
m_rExport.SdrExporter().getTextFrameStyle().append("pt;height:").append(double(pSize->Height()) / 20).append("pt");
}
- else if (m_bDMLTextFrameSyntax)
+ else if (m_rExport.SdrExporter().getDMLTextFrameSyntax())
{
}
else if ( m_rExport.bOutFlyFrmAttrs )
@@ -5384,7 +5253,7 @@ void DocxAttributeOutput::FormatLRSpace( const SvxLRSpaceItem& rLRSpace )
m_rExport.SdrExporter().getTextFrameStyle().append(";mso-wrap-distance-left:").append(double(rLRSpace.GetLeft()) / 20).append("pt");
m_rExport.SdrExporter().getTextFrameStyle().append(";mso-wrap-distance-right:").append(double(rLRSpace.GetRight()) / 20).append("pt");
}
- else if (m_bDMLTextFrameSyntax)
+ else if (m_rExport.SdrExporter().getDMLTextFrameSyntax())
{
}
else if ( m_rExport.bOutFlyFrmAttrs )
@@ -5438,7 +5307,7 @@ void DocxAttributeOutput::FormatULSpace( const SvxULSpaceItem& rULSpace )
m_rExport.SdrExporter().getTextFrameStyle().append(";mso-wrap-distance-top:").append(double(rULSpace.GetUpper()) / 20).append("pt");
m_rExport.SdrExporter().getTextFrameStyle().append(";mso-wrap-distance-bottom:").append(double(rULSpace.GetLower()) / 20).append("pt");
}
- else if (m_bDMLTextFrameSyntax)
+ else if (m_rExport.SdrExporter().getDMLTextFrameSyntax())
{
}
else if ( m_rExport.bOutFlyFrmAttrs )
@@ -5551,7 +5420,7 @@ void DocxAttributeOutput::FormatSurround( const SwFmtSurround& rSurround )
m_rExport.SdrExporter().getFlyWrapAttrList()->add(XML_side, sSide);
}
}
- else if (m_bDMLTextFrameSyntax)
+ else if (m_rExport.SdrExporter().getDMLTextFrameSyntax())
{
}
else if ( m_rExport.bOutFlyFrmAttrs )
@@ -5583,7 +5452,7 @@ void DocxAttributeOutput::FormatVertOrientation( const SwFmtVertOrient& rFlyVert
{
m_rExport.SdrExporter().getTextFrameStyle().append(";margin-top:").append(double(rFlyVert.GetPos()) / 20).append("pt");
}
- else if (m_bDMLTextFrameSyntax)
+ else if (m_rExport.SdrExporter().getDMLTextFrameSyntax())
{
}
else if ( m_rExport.bOutFlyFrmAttrs )
@@ -5645,7 +5514,7 @@ void DocxAttributeOutput::FormatHorizOrientation( const SwFmtHoriOrient& rFlyHor
{
m_rExport.SdrExporter().getTextFrameStyle().append(";margin-left:").append(double(rFlyHori.GetPos()) / 20).append("pt");
}
- else if (m_bDMLTextFrameSyntax)
+ else if (m_rExport.SdrExporter().getDMLTextFrameSyntax())
{
}
else if ( m_rExport.bOutFlyFrmAttrs )
@@ -5740,7 +5609,7 @@ void DocxAttributeOutput::FormatBackground( const SvxBrushItem& rBrush )
sColor = "#" + sColor;
AddToAttrList( m_rExport.SdrExporter().getFlyAttrList(), XML_fillcolor, sColor.getStr() );
}
- else if (m_bDMLTextFrameSyntax)
+ else if (m_rExport.SdrExporter().getDMLTextFrameSyntax())
{
bool bImageBackground = false;
const SfxPoolItem* pItem = GetExport().HasItem(RES_FILL_STYLE);
@@ -5799,7 +5668,7 @@ void DocxAttributeOutput::FormatFillStyle( const XFillStyleItem& rFillStyle )
void DocxAttributeOutput::FormatFillGradient( const XFillGradientItem& rFillGradient )
{
- if (m_oFillStyle && *m_oFillStyle == XFILL_GRADIENT && !m_bDMLTextFrameSyntax)
+ if (m_oFillStyle && *m_oFillStyle == XFILL_GRADIENT && !m_rExport.SdrExporter().getDMLTextFrameSyntax())
{
AddToAttrList( m_rExport.SdrExporter().getFlyFillAttrList(), XML_type, "gradient" );
@@ -5843,7 +5712,7 @@ void DocxAttributeOutput::FormatFillGradient( const XFillGradientItem& rFillGrad
AddToAttrList( m_rExport.SdrExporter().getFlyAttrList(), XML_fillcolor, sColor1.getStr() );
AddToAttrList( m_rExport.SdrExporter().getFlyFillAttrList(), XML_color2, sColor2.getStr() );
}
- else if (m_oFillStyle && *m_oFillStyle == XFILL_GRADIENT && m_bDMLTextFrameSyntax)
+ else if (m_oFillStyle && *m_oFillStyle == XFILL_GRADIENT && m_rExport.SdrExporter().getDMLTextFrameSyntax())
{
uno::Reference<beans::XPropertySet> xPropertySet = SwXFrames::GetObject(const_cast<SwFrmFmt&>(m_rExport.mpParentFrame->GetFrmFmt()), FLYCNTTYPE_FRM);
m_rDrawingML.SetFS(m_pSerializer);
@@ -5854,7 +5723,7 @@ void DocxAttributeOutput::FormatFillGradient( const XFillGradientItem& rFillGrad
void DocxAttributeOutput::FormatBox( const SvxBoxItem& rBox )
{
- if (m_bDMLTextFrameSyntax)
+ if (m_rExport.SdrExporter().getDMLTextFrameSyntax())
{
// <a:gradFill> should be before <a:ln>.
const SfxPoolItem* pItem = GetExport().HasItem(RES_FILL_STYLE);
@@ -5880,7 +5749,7 @@ void DocxAttributeOutput::FormatBox( const SvxBoxItem& rBox )
}
m_bIgnoreNextFill = true;
}
- if (m_rExport.SdrExporter().getTextFrameSyntax() || m_bDMLTextFrameSyntax)
+ if (m_rExport.SdrExporter().getTextFrameSyntax() || m_rExport.SdrExporter().getDMLTextFrameSyntax())
{
const SvxBorderLine* pLeft = rBox.GetLeft( );
const SvxBorderLine* pTop = rBox.GetTop( );
@@ -5930,12 +5799,12 @@ void DocxAttributeOutput::FormatBox( const SvxBoxItem& rBox )
}
}
- if (m_bDMLTextFrameSyntax)
+ if (m_rExport.SdrExporter().getDMLTextFrameSyntax())
{
- m_pBodyPrAttrList->add(XML_lIns, OString::number(TwipsToEMU(rBox.GetDistance(BOX_LINE_LEFT))));
- m_pBodyPrAttrList->add(XML_tIns, OString::number(TwipsToEMU(rBox.GetDistance(BOX_LINE_TOP))));
- m_pBodyPrAttrList->add(XML_rIns, OString::number(TwipsToEMU(rBox.GetDistance(BOX_LINE_RIGHT))));
- m_pBodyPrAttrList->add(XML_bIns, OString::number(TwipsToEMU(rBox.GetDistance(BOX_LINE_BOTTOM))));
+ m_rExport.SdrExporter().getBodyPrAttrList()->add(XML_lIns, OString::number(TwipsToEMU(rBox.GetDistance(BOX_LINE_LEFT))));
+ m_rExport.SdrExporter().getBodyPrAttrList()->add(XML_tIns, OString::number(TwipsToEMU(rBox.GetDistance(BOX_LINE_TOP))));
+ m_rExport.SdrExporter().getBodyPrAttrList()->add(XML_rIns, OString::number(TwipsToEMU(rBox.GetDistance(BOX_LINE_RIGHT))));
+ m_rExport.SdrExporter().getBodyPrAttrList()->add(XML_bIns, OString::number(TwipsToEMU(rBox.GetDistance(BOX_LINE_BOTTOM))));
return;
}
@@ -6282,7 +6151,6 @@ DocxAttributeOutput::DocxAttributeOutput( DocxExport &rExport, FSHelperPtr pSeri
m_pSectionSpacingAttrList( NULL ),
m_pParagraphSpacingAttrList( NULL ),
m_pHyperlinkAttrList( NULL ),
- m_pBodyPrAttrList( NULL ),
m_pColorAttrList( NULL ),
m_pBackgroundAttrList( NULL ),
m_pFootnotesList( new ::docx::FootnotesList() ),
@@ -6300,7 +6168,6 @@ DocxAttributeOutput::DocxAttributeOutput( DocxExport &rExport, FSHelperPtr pSeri
m_pTableWrt( NULL ),
m_bParagraphOpened( false ),
m_nColBreakStatus( COLBRK_NONE ),
- m_bDMLTextFrameSyntax( false ),
m_closeHyperlinkInThisRun( false ),
m_closeHyperlinkInPreviousRun( false ),
m_startedHyperlink( false ),
@@ -6335,7 +6202,6 @@ DocxAttributeOutput::~DocxAttributeOutput()
delete m_pSectionSpacingAttrList, m_pSectionSpacingAttrList = NULL;
delete m_pParagraphSpacingAttrList, m_pParagraphSpacingAttrList = NULL;
delete m_pHyperlinkAttrList, m_pHyperlinkAttrList = NULL;
- delete m_pBodyPrAttrList, m_pBodyPrAttrList = NULL;
delete m_pColorAttrList, m_pColorAttrList = NULL;
delete m_pBackgroundAttrList, m_pBackgroundAttrList = NULL;
diff --git a/sw/source/filter/ww8/docxattributeoutput.hxx b/sw/source/filter/ww8/docxattributeoutput.hxx
index 87bafdc..74f76ac 100644
--- a/sw/source/filter/ww8/docxattributeoutput.hxx
+++ b/sw/source/filter/ww8/docxattributeoutput.hxx
@@ -393,9 +393,6 @@ private:
/// checks whether the current component is a diagram
bool IsDiagram (const SdrObject* sdrObject);
- /// Writes text frame in DML format.
- void WriteDMLTextFrame(sw::Frame* pParentFrame);
-
void InitTableHelper( ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfoInner );
void StartTable( ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfoInner );
void StartTableRow( ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfoInner );
@@ -682,8 +679,6 @@ private:
::sax_fastparser::FastAttributeList *m_pSectionSpacingAttrList;
::sax_fastparser::FastAttributeList *m_pParagraphSpacingAttrList;
::sax_fastparser::FastAttributeList *m_pHyperlinkAttrList;
- /// Attributes of <wps:bodyPr>, used during DML export of text frames.
- ::sax_fastparser::FastAttributeList *m_pBodyPrAttrList;
/// Attributes of the run color
::sax_fastparser::FastAttributeList *m_pColorAttrList;
/// Attributes of the paragraph background
@@ -747,7 +742,6 @@ private:
DocxColBreakStatus m_nColBreakStatus;
std::vector<sw::Frame> m_aParentFrames;
- bool m_bDMLTextFrameSyntax;
// close of hyperlink needed
bool m_closeHyperlinkInThisRun;
bool m_closeHyperlinkInPreviousRun;
diff --git a/sw/source/filter/ww8/docxsdrexport.cxx b/sw/source/filter/ww8/docxsdrexport.cxx
index 2d1d6c7..4c4ab8d 100644
--- a/sw/source/filter/ww8/docxsdrexport.cxx
+++ b/sw/source/filter/ww8/docxsdrexport.cxx
@@ -35,6 +35,7 @@
#include <ndtxt.hxx>
#include <txatbase.hxx>
#include <fmtautofmt.hxx>
+#include <fmtfsize.hxx>
#include <docxsdrexport.hxx>
#include <docxexport.hxx>
@@ -65,12 +66,14 @@ struct DocxSdrExport::Impl
oox::drawingml::DrawingML* m_pDrawingML;
const Size* m_pFlyFrameSize;
bool m_bTextFrameSyntax;
+ bool m_bDMLTextFrameSyntax;
sax_fastparser::FastAttributeList* m_pFlyAttrList;
sax_fastparser::FastAttributeList* m_pTextboxAttrList;
OStringBuffer m_aTextFrameStyle;
bool m_bFrameBtLr;
sax_fastparser::FastAttributeList* m_pFlyFillAttrList;
sax_fastparser::FastAttributeList* m_pFlyWrapAttrList;
+ sax_fastparser::FastAttributeList* m_pBodyPrAttrList;
Impl(DocxSdrExport& rSdrExport, DocxExport& rExport, sax_fastparser::FSHelperPtr pSerializer, oox::drawingml::DrawingML* pDrawingML)
: m_rSdrExport(rSdrExport),
@@ -79,11 +82,13 @@ struct DocxSdrExport::Impl
m_pDrawingML(pDrawingML),
m_pFlyFrameSize(0),
m_bTextFrameSyntax(false),
+ m_bDMLTextFrameSyntax(false),
m_pFlyAttrList(0),
m_pTextboxAttrList(0),
m_bFrameBtLr(false),
m_pFlyFillAttrList(0),
- m_pFlyWrapAttrList(0)
+ m_pFlyWrapAttrList(0),
+ m_pBodyPrAttrList(0)
{
}
@@ -122,6 +127,11 @@ bool DocxSdrExport::getTextFrameSyntax()
return m_pImpl->m_bTextFrameSyntax;
}
+bool DocxSdrExport::getDMLTextFrameSyntax()
+{
+ return m_pImpl->m_bDMLTextFrameSyntax;
+}
+
sax_fastparser::FastAttributeList*& DocxSdrExport::getFlyAttrList()
{
return m_pImpl->m_pFlyAttrList;
@@ -162,6 +172,11 @@ sax_fastparser::FastAttributeList* DocxSdrExport::getFlyWrapAttrList()
return m_pImpl->m_pFlyWrapAttrList;
}
+sax_fastparser::FastAttributeList* DocxSdrExport::getBodyPrAttrList()
+{
+ return m_pImpl->m_pBodyPrAttrList;
+}
+
void DocxSdrExport::setFlyWrapAttrList(sax_fastparser::FastAttributeList* pAttrList)
{
m_pImpl->m_pFlyWrapAttrList = pAttrList;
@@ -757,6 +772,137 @@ void DocxSdrExport::writeDiagram(const SdrObject* sdrObject, const SwFrmFmt& rFr
}
}
+void DocxSdrExport::writeDMLTextFrame(sw::Frame* pParentFrame, int nAnchorId)
+{
+ sax_fastparser::FSHelperPtr pFS = m_pImpl->m_pSerializer;
+ const SwFrmFmt& rFrmFmt = pParentFrame->GetFrmFmt();
+ const SwNodeIndex* pNodeIndex = rFrmFmt.GetCntnt().GetCntntIdx();
+
+ sal_uLong nStt = pNodeIndex ? pNodeIndex->GetIndex()+1 : 0;
+ sal_uLong nEnd = pNodeIndex ? pNodeIndex->GetNode().EndOfSectionIndex() : 0;
+
+ //Save data here and restore when out of scope
+ ExportDataSaveRestore aDataGuard(m_pImpl->m_rExport, nStt, nEnd, pParentFrame);
+
+ // When a frame has some low height, but automatically expanded due
+ // to lots of contents, this size contains the real size.
+ const Size aSize = pParentFrame->GetSize();
+
+ startDMLAnchorInline(&rFrmFmt, aSize);
+
+ sax_fastparser::FastAttributeList* pDocPrAttrList = pFS->createAttrList();
+ pDocPrAttrList->add(XML_id, OString::number(nAnchorId).getStr());
+ pDocPrAttrList->add(XML_name, OUStringToOString(rFrmFmt.GetName(), RTL_TEXTENCODING_UTF8).getStr());
+ sax_fastparser::XFastAttributeListRef xDocPrAttrListRef(pDocPrAttrList);
+ pFS->singleElementNS(XML_wp, XML_docPr, xDocPrAttrListRef);
+
+ pFS->startElementNS(XML_a, XML_graphic,
+ FSNS(XML_xmlns, XML_a), "http://schemas.openxmlformats.org/drawingml/2006/main",
+ FSEND);
+ pFS->startElementNS(XML_a, XML_graphicData,
+ XML_uri, "http://schemas.microsoft.com/office/word/2010/wordprocessingShape",
+ FSEND);
+ pFS->startElementNS(XML_wps, XML_wsp, FSEND);
+ pFS->singleElementNS(XML_wps, XML_cNvSpPr,
+ XML_txBox, "1",
+ FSEND);
+
+ uno::Any aRotation ;
+ const SdrObject* pSdrObj = rFrmFmt.FindRealSdrObject();
+ uno::Reference< drawing::XShape > xShape(((SdrObject*)pSdrObj)->getUnoShape(), uno::UNO_QUERY);
+ uno::Reference< beans::XPropertySet > xPropertySet(xShape, uno::UNO_QUERY);
+ uno::Reference< beans::XPropertySetInfo > xPropSetInfo = xPropertySet->getPropertySetInfo();
+ sal_Int32 nRotation = 0;
+
+ if (xPropSetInfo->hasPropertyByName("FrameInteropGrabBag"))
+ {
+ uno::Sequence< beans::PropertyValue > propList;
+ xPropertySet->getPropertyValue("FrameInteropGrabBag") >>= propList;
+ for (sal_Int32 nProp=0; nProp < propList.getLength(); ++nProp)
+ {
+ OUString propName = propList[nProp].Name;
+ if (propName == "mso-rotation-angle")
+ {
+ aRotation = propList[nProp].Value ;
+ break;
+ }
+ }
+ }
+ aRotation >>= nRotation ;
+ OString sRotation(OString::number(nRotation));
+ // Shape properties
+ pFS->startElementNS(XML_wps, XML_spPr, FSEND);
+ if (nRotation)
+ {
+ pFS->startElementNS(XML_a, XML_xfrm,
+ XML_rot, sRotation.getStr(),
+ FSEND);
+ }
+ else
+ {
+ pFS->startElementNS(XML_a, XML_xfrm, FSEND);
+ }
+ pFS->singleElementNS(XML_a, XML_off,
+ XML_x, "0",
+ XML_y, "0",
+ FSEND);
+ OString aWidth(OString::number(TwipsToEMU(aSize.Width())));
+ OString aHeight(OString::number(TwipsToEMU(aSize.Height())));
+ pFS->singleElementNS(XML_a, XML_ext,
+ XML_cx, aWidth.getStr(),
+ XML_cy, aHeight.getStr(),
+ FSEND);
+ pFS->endElementNS(XML_a, XML_xfrm);
+ OUString shapeType = "rect";
+ if (xPropSetInfo->hasPropertyByName("FrameInteropGrabBag"))
+ {
+ uno::Sequence< beans::PropertyValue > propList;
+ xPropertySet->getPropertyValue("FrameInteropGrabBag") >>= propList;
+ for (sal_Int32 nProp=0; nProp < propList.getLength(); ++nProp)
+ {
+ OUString propName = propList[nProp].Name;
+ if (propName == "mso-orig-shape-type")
+ {
+ propList[nProp].Value >>= shapeType;
+ break;
+ }
+ }
+ }
+
+ pFS->singleElementNS(XML_a, XML_prstGeom,
+ XML_prst, OUStringToOString(shapeType, RTL_TEXTENCODING_UTF8).getStr(),
+ FSEND);
+ m_pImpl->m_bDMLTextFrameSyntax = true;
+ m_pImpl->m_pBodyPrAttrList = pFS->createAttrList();
+ m_pImpl->m_rExport.OutputFormat(pParentFrame->GetFrmFmt(), false, false, true);
+ m_pImpl->m_bDMLTextFrameSyntax = false;
+ writeDMLEffectLst(rFrmFmt);
+ pFS->endElementNS(XML_wps, XML_spPr);
+
+ m_pImpl->m_rExport.mpParentFrame = NULL;
+ pFS->startElementNS(XML_wps, XML_txbx, FSEND);
+ pFS->startElementNS(XML_w, XML_txbxContent, FSEND);
+
+ m_pImpl->m_bFrameBtLr = checkFrameBtlr(m_pImpl->m_rExport.pDoc->GetNodes()[nStt], 0);
+ m_pImpl->m_rExport.WriteText();
+ m_pImpl->m_bFrameBtLr = false;
+
+ pFS->endElementNS(XML_w, XML_txbxContent);
+ pFS->endElementNS(XML_wps, XML_txbx);
+ sax_fastparser::XFastAttributeListRef xBodyPrAttrList(m_pImpl->m_pBodyPrAttrList);
+ m_pImpl->m_pBodyPrAttrList = NULL;
+ pFS->startElementNS(XML_wps, XML_bodyPr, xBodyPrAttrList);
+ // AutoSize of the Text Frame.
+ const SwFmtFrmSize& rSize = rFrmFmt.GetFrmSize();
+ pFS->singleElementNS(XML_a, (rSize.GetHeightSizeType() == ATT_VAR_SIZE ? XML_spAutoFit : XML_noAutofit), FSEND);
+ pFS->endElementNS(XML_wps, XML_bodyPr);
+
+ pFS->endElementNS(XML_wps, XML_wsp);
+ pFS->endElementNS(XML_a, XML_graphicData);
+ pFS->endElementNS(XML_a, XML_graphic);
+ endDMLAnchorInline(&rFrmFmt);
+}
+
void DocxSdrExport::writeVMLTextFrame(sw::Frame* pParentFrame)
{
sax_fastparser::FSHelperPtr pFS = m_pImpl->m_pSerializer;
@@ -816,10 +962,10 @@ void DocxSdrExport::writeVMLTextFrame(sw::Frame* pParentFrame)
m_pImpl->m_bFrameBtLr = false;
}
-bool DocxSdrExport::checkFrameBtlr(SwNode* pStartNode, sax_fastparser::FastAttributeList* pTextboxAttrList, sax_fastparser::FastAttributeList* pBodyPrAttrList)
+bool DocxSdrExport::checkFrameBtlr(SwNode* pStartNode, sax_fastparser::FastAttributeList* pTextboxAttrList)
{
// The intended usage is to pass either a valid VML or DML attribute list.
- assert(pTextboxAttrList || pBodyPrAttrList);
+ assert(pTextboxAttrList || m_pImpl->m_pBodyPrAttrList);
if (!pStartNode->IsTxtNode())
return false;
@@ -856,7 +1002,7 @@ bool DocxSdrExport::checkFrameBtlr(SwNode* pStartNode, sax_fastparser::FastAttri
if (pTextboxAttrList)
pTextboxAttrList->add(XML_style, "mso-layout-flow-alt:bottom-to-top");
else
- pBodyPrAttrList->add(XML_vert, "vert270");
+ m_pImpl->m_pBodyPrAttrList->add(XML_vert, "vert270");
return true;
}
}
diff --git a/sw/source/filter/ww8/docxsdrexport.hxx b/sw/source/filter/ww8/docxsdrexport.hxx
index bae4a35..0f871ac 100644
--- a/sw/source/filter/ww8/docxsdrexport.hxx
+++ b/sw/source/filter/ww8/docxsdrexport.hxx
@@ -11,7 +11,6 @@
#define INCLUDED_SW_SOURCE_FILTER_WW8_DOCXSDREXPORT_HXX
#include <boost/shared_ptr.hpp>
-#include <sax/fshelper.hxx>
namespace oox
{
@@ -56,6 +55,7 @@ public:
/// When exporting fly frames, this holds the real size of the frame.
const Size* getFlyFrameSize();
bool getTextFrameSyntax();
+ bool getDMLTextFrameSyntax();
sax_fastparser::FastAttributeList*& getFlyAttrList();
void setFlyAttrList(sax_fastparser::FastAttributeList* pAttrList);
/// Attributes of the next v:textbox element.
@@ -67,6 +67,8 @@ public:
sax_fastparser::FastAttributeList*& getFlyFillAttrList();
sax_fastparser::FastAttributeList* getFlyWrapAttrList();
void setFlyWrapAttrList(sax_fastparser::FastAttributeList* pAttrList);
+ /// Attributes of <wps:bodyPr>, used during DML export of text frames.
+ sax_fastparser::FastAttributeList* getBodyPrAttrList();
void startDMLAnchorInline(const SwFrmFmt* pFrmFmt, const Size& rSize);
void endDMLAnchorInline(const SwFrmFmt* pFrmFmt);
@@ -78,10 +80,12 @@ public:
void writeDMLEffectLst(const SwFrmFmt& rFrmFmt);
/// Writes a diagram (smartart).
void writeDiagram(const SdrObject* sdrObject, const SwFrmFmt& rFrmFmt, int nAnchorId);
+ /// Writes text frame in DML format.
+ void writeDMLTextFrame(sw::Frame* pParentFrame, int nAnchorId);
/// Writes text frame in VML format.
void writeVMLTextFrame(sw::Frame* pParentFrame);
/// Undo the text direction mangling done by the frame btLr handler in writerfilter::dmapper::DomainMapper::lcl_startCharacterGroup()
- bool checkFrameBtlr(SwNode* pStartNode, sax_fastparser::FastAttributeList* pTextboxAttrList = 0, sax_fastparser::FastAttributeList* pBodyPrAttrList = 0);
+ bool checkFrameBtlr(SwNode* pStartNode, sax_fastparser::FastAttributeList* pTextboxAttrList = 0);
};
#endif // INCLUDED_SW_SOURCE_FILTER_WW8_DOCXSDREXPORT_HXX
commit 8891d8c42df288a4f3c631e9c73b24489c6c83a0
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date: Mon Jan 13 21:08:20 2014 +0100
writerfilter: move payload from rtf to ooxml namespace
Change-Id: I7f39d0245fe9ad0aec4b8c1dcea8c379124d2d7a
diff --git a/writerfilter/source/dmapper/GraphicImport.cxx b/writerfilter/source/dmapper/GraphicImport.cxx
index 7415582..d3594d9 100644
--- a/writerfilter/source/dmapper/GraphicImport.cxx
+++ b/writerfilter/source/dmapper/GraphicImport.cxx
@@ -483,7 +483,7 @@ void GraphicImport::lcl_attribute(Id nName, Value & val)
}
}
break;
- case NS_rtf::LN_payload :
+ case NS_ooxml::LN_payload :
{
writerfilter::Reference<BinaryObj>::Pointer_t pPictureData = val.getBinary();
if( pPictureData.get())
diff --git a/writerfilter/source/doctok/resources.xmi b/writerfilter/source/doctok/resources.xmi
index f793831..0a39a17 100644
--- a/writerfilter/source/doctok/resources.xmi
+++ b/writerfilter/source/doctok/resources.xmi
@@ -22121,63 +22121,6 @@
</UML:Generalization.parent>
</UML:Generalization>
<!--DFF FSP-->
- <!--DFF BlipPng-->
- <UML:Class xmi.id="BlipPng" name="BlipPng">
- <UML:ModelElement.taggedValue>
- <UML:TaggedValue>
- <UML:TaggedValue.dataValue>0xf01e</UML:TaggedValue.dataValue>
- <UML:TaggedValue.type>
- <UML:TagDefinition xmi.idref="dffid"/>
- </UML:TaggedValue.type>
- </UML:TaggedValue>
- </UML:ModelElement.taggedValue>
- <UML:Classifier.feature>
- <UML:Attribute name="payload">
- <UML:ModelElement.taggedValue>
- <UML:TaggedValue>
- <UML:TaggedValue.dataValue>the actual PNG</UML:TaggedValue.dataValue>
- <UML:TaggedValue.type>
- <UML:TagDefinition xmi.idref="comment"/>
- </UML:TaggedValue.type>
- </UML:TaggedValue>
- </UML:ModelElement.taggedValue>
- <UML:ModelElement.taggedValue>
- <UML:TaggedValue>
- <UML:TaggedValue.dataValue>0x19</UML:TaggedValue.dataValue>
- <UML:TaggedValue.type>
- <UML:TagDefinition xmi.idref="offset"/>
- </UML:TaggedValue.type>
- </UML:TaggedValue>
- </UML:ModelElement.taggedValue>
- <UML:ModelElement.taggedValue>
- <UML:TaggedValue>
- <UML:TaggedValue.dataValue>rtf:payload</UML:TaggedValue.dataValue>
- <UML:TaggedValue.type>
- <UML:TagDefinition xmi.idref="attrid"/>
- </UML:TaggedValue.type>
- </UML:TaggedValue>
- </UML:ModelElement.taggedValue>
- <UML:StructuralFeature.type>
- <UML:DataType xmi.idref="Blob"/>
- </UML:StructuralFeature.type>
- <UML:ModelElement.stereotype>
- <UML:Stereotype xmi.idref="attribute"/>
- </UML:ModelElement.stereotype>
- <UML:ModelElement.stereotype>
- <UML:Stereotype xmi.idref="attributeremainder"/>
- </UML:ModelElement.stereotype>
- </UML:Attribute>
- </UML:Classifier.feature>
- </UML:Class>
- <UML:Generalization isSpecification="false" xmi.id="BlipPng-Properties">
- <UML:Generalization.child>
- <UML:Class xmi.idref="BlipPng"/>
- </UML:Generalization.child>
- <UML:Generalization.parent>
- <UML:Class xmi.idref="Properties"/>
- </UML:Generalization.parent>
- </UML:Generalization>
- <!--DFF BlipPng-->
<!--DFF BlipDib-->
<UML:Class xmi.id="BlipDib" name="BlipDib">
<UML:ModelElement.taggedValue>
diff --git a/writerfilter/source/ooxml/OOXMLDocumentImpl.cxx b/writerfilter/source/ooxml/OOXMLDocumentImpl.cxx
index 05292a5..b973db6 100644
--- a/writerfilter/source/ooxml/OOXMLDocumentImpl.cxx
+++ b/writerfilter/source/ooxml/OOXMLDocumentImpl.cxx
@@ -345,7 +345,7 @@ OOXMLPropertySet * OOXMLDocumentImpl::getPicturePropSet
OOXMLValue::Pointer_t pPayloadValue(new OOXMLBinaryValue(pPicture));
OOXMLProperty::Pointer_t pPayloadProperty
- (new OOXMLPropertyImpl(NS_rtf::LN_payload, pPayloadValue,
+ (new OOXMLPropertyImpl(NS_ooxml::LN_payload, pPayloadValue,
OOXMLPropertyImpl::ATTRIBUTE));
OOXMLPropertySet::Pointer_t pBlipSet(new OOXMLPropertySetImpl());
diff --git a/writerfilter/source/ooxml/model.xml b/writerfilter/source/ooxml/model.xml
index a2ad47f..67309fe 100644
--- a/writerfilter/source/ooxml/model.xml
+++ b/writerfilter/source/ooxml/model.xml
@@ -46,6 +46,7 @@
<token tokenid="ooxml:ffdata"/>
<token tokenid="ooxml:starmath"/>
<token tokenid="ooxml:blip"/>
+ <token tokenid="ooxml:payload"/>
<namespace name="dml-stylesheet" url="http://schemas.openxmlformats.org/drawingml/2006/main" file="dml-stylesheet.rng">
<start name="theme"/>
<start name="themeOverride"/>
More information about the Libreoffice-commits
mailing list