sw/source/filter/ww8/docxattributeoutput.cxx | 41 +++++++++++++++++++++------ sw/source/filter/ww8/docxattributeoutput.hxx | 4 +- sw/source/filter/ww8/rtfattributeoutput.cxx | 13 +++++--- sw/source/filter/ww8/rtfattributeoutput.hxx | 2 - 4 files changed, 45 insertions(+), 15 deletions(-)
New commits: commit 96b264edf2765e9d1893757d1f1f7c718b1df36d Author: Matteo Casalin <matteo.casa...@yahoo.com> Date: Thu Jul 9 09:19:44 2015 +0200 These functions and data can be local Change-Id: Ife2351bc8f0a3ee261b525aeb4e8e254174a42a0 diff --git a/sw/source/filter/ww8/docxattributeoutput.cxx b/sw/source/filter/ww8/docxattributeoutput.cxx index 9a17f98..ddad776 100644 --- a/sw/source/filter/ww8/docxattributeoutput.cxx +++ b/sw/source/filter/ww8/docxattributeoutput.cxx @@ -890,6 +890,9 @@ void DocxAttributeOutput::WriteCollectedParagraphProperties() } } +namespace +{ + /// Outputs an item set, that contains the formatting of the paragraph marker. void lcl_writeParagraphMarkerProperties(DocxAttributeOutput& rAttributeOutput, const SfxItemSet& rParagraphMarkerProperties) { @@ -921,6 +924,8 @@ void lcl_writeParagraphMarkerProperties(DocxAttributeOutput& rAttributeOutput, c } } +} + void DocxAttributeOutput::EndParagraphProperties(const SfxItemSet& rParagraphMarkerProperties, const SwRedlineData* pRedlineData, const SwRedlineData* pRedlineParagraphMarkerDeleted, const SwRedlineData* pRedlineParagraphMarkerInserted) { // Call the 'Redline' function. This will add redline (change-tracking) information that regards to paragraph properties. @@ -3086,6 +3091,9 @@ void DocxAttributeOutput::TableInfoRow( ww8::WW8TableNodeInfoInner::Pointer_t /* { } +namespace +{ + /// Does the same as comphelper::string::padToLength(), but extends the start, not the end. OString lcl_padStartToLength(OString const & aString, sal_Int32 nLen, sal_Char cFill) { @@ -3101,6 +3109,8 @@ OString lcl_padStartToLength(OString const & aString, sal_Int32 nLen, sal_Char c return aString; } +} + void DocxAttributeOutput::TableDefinition( ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfoInner ) { bool bEcma = GetExport().GetFilter().getVersion( ) == oox::core::ECMA_DIALECT; @@ -3715,6 +3725,9 @@ sal_Int32 DocxStringGetToken(DocxStringTokenMap const * pMap, const OUString& rN return 0; } +namespace +{ + DocxStringTokenMap const aDefaultTokens[] = { {"defQFormat", XML_defQFormat}, {"defUnhideWhenUsed", XML_defUnhideWhenUsed}, @@ -3735,6 +3748,8 @@ DocxStringTokenMap const aExceptionTokens[] = { {0, 0} }; +} + void DocxAttributeOutput::LatentStyles() { // Do we have latent styles available? @@ -3787,6 +3802,9 @@ void DocxAttributeOutput::LatentStyles() m_pSerializer->endElementNS(XML_w, XML_latentStyles); } +namespace +{ + /// Should the font size we have written out as a default one? bool lcl_isDefaultFontSize(const SvxFontHeightItem& rFontHeight, SwDoc* pDoc) { @@ -3802,6 +3820,8 @@ bool lcl_isDefaultFontSize(const SvxFontHeightItem& rFontHeight, SwDoc* pDoc) return bRet; } +} + void DocxAttributeOutput::OutputDefaultItem(const SfxPoolItem& rHt) { bool bMustWrite = true; @@ -5319,6 +5339,9 @@ void DocxAttributeOutput::EndStyleProperties( bool bParProp ) } } +namespace +{ + void lcl_OutlineLevel(sax_fastparser::FSHelperPtr pSerializer, sal_uInt16 nLevel) { if (nLevel >= WW8ListManager::nMaxLevel) @@ -5329,6 +5352,8 @@ void lcl_OutlineLevel(sax_fastparser::FSHelperPtr pSerializer, sal_uInt16 nLevel FSEND); } +} + void DocxAttributeOutput::OutlineNumbering(sal_uInt8 const nLvl) { lcl_OutlineLevel(m_pSerializer, nLvl); diff --git a/sw/source/filter/ww8/rtfattributeoutput.cxx b/sw/source/filter/ww8/rtfattributeoutput.cxx index 9d164f8..7ba1699 100644 --- a/sw/source/filter/ww8/rtfattributeoutput.cxx +++ b/sw/source/filter/ww8/rtfattributeoutput.cxx @@ -1547,6 +1547,9 @@ void RtfAttributeOutput::WriteHeaderFooter_Impl(const SwFrameFormat& rFormat, bo m_aRun = aRun; } +namespace +{ + void lcl_TextFrameShadow(std::vector< std::pair<OString, OString> >& rFlyProperties, const SwFrameFormat& rFrameFormat) { SvxShadowItem aShadowItem = rFrameFormat.GetShadow(); @@ -1630,6 +1633,8 @@ void lcl_TextFrameRelativeSize(std::vector< std::pair<OString, OString> >& rFlyP } } +} + void RtfAttributeOutput::writeTextFrame(const sw::Frame& rFrame, bool bTextBox) { RtfStringBuffer aRunText; commit 75d0b1ecd914ee06f51621983671da70d0e183fa Author: Matteo Casalin <matteo.casa...@yahoo.com> Date: Thu Jul 9 08:46:42 2015 +0200 Do not downcast opened bookmarks, neither (and just in case) Change-Id: I603940c64a1580a73c4f5c59b403caecd0ac75a5 diff --git a/sw/source/filter/ww8/docxattributeoutput.cxx b/sw/source/filter/ww8/docxattributeoutput.cxx index 5b022d8..9a17f98 100644 --- a/sw/source/filter/ww8/docxattributeoutput.cxx +++ b/sw/source/filter/ww8/docxattributeoutput.cxx @@ -1295,7 +1295,7 @@ void DocxAttributeOutput::DoWriteBookmarks() const OString& rName = *it; // Output the bookmark - sal_uInt16 nId = m_nNextBookmarkId++; + const sal_Int32 nId = m_nNextBookmarkId++; m_rOpenedBookmarksIds[rName] = nId; m_pSerializer->singleElementNS( XML_w, XML_bookmarkStart, FSNS( XML_w, XML_id ), OString::number( nId ).getStr( ), @@ -1312,7 +1312,7 @@ void DocxAttributeOutput::DoWriteBookmarks() const OString& rName = *it; // Get the id of the bookmark - std::map< OString, sal_uInt16 >::iterator pPos = m_rOpenedBookmarksIds.find( rName ); + std::map< OString, sal_Int32 >::iterator pPos = m_rOpenedBookmarksIds.find( rName ); if ( pPos != m_rOpenedBookmarksIds.end( ) ) { const sal_Int32 nId = ( *pPos ).second; diff --git a/sw/source/filter/ww8/docxattributeoutput.hxx b/sw/source/filter/ww8/docxattributeoutput.hxx index c0cf834..6c2a63c 100644 --- a/sw/source/filter/ww8/docxattributeoutput.hxx +++ b/sw/source/filter/ww8/docxattributeoutput.hxx @@ -776,7 +776,7 @@ private: std::vector<OString> m_rAnnotationMarksEnd; /// Maps of the bookmarks ids - std::map<OString, sal_uInt16> m_rOpenedBookmarksIds; + std::map<OString, sal_Int32> m_rOpenedBookmarksIds; /// Name of the last opened bookmark. OString m_sLastOpenedBookmark; commit db9e64c2a499c1c3da9d3c1b4e123af04f937933 Author: Matteo Casalin <matteo.casa...@yahoo.com> Date: Thu Jul 9 08:21:06 2015 +0200 Better support more than 65k annotations There isn't really a limit for the annotation count in the RTF/DOCX spec. Thanks Miklos for hints on this. Change-Id: Ib4493b518acb3cabe04312c37b5c6a9c6072cb7e diff --git a/sw/source/filter/ww8/docxattributeoutput.cxx b/sw/source/filter/ww8/docxattributeoutput.cxx index 7d4fc73..5b022d8 100644 --- a/sw/source/filter/ww8/docxattributeoutput.cxx +++ b/sw/source/filter/ww8/docxattributeoutput.cxx @@ -1315,7 +1315,7 @@ void DocxAttributeOutput::DoWriteBookmarks() std::map< OString, sal_uInt16 >::iterator pPos = m_rOpenedBookmarksIds.find( rName ); if ( pPos != m_rOpenedBookmarksIds.end( ) ) { - sal_uInt16 nId = ( *pPos ).second; + const sal_Int32 nId = ( *pPos ).second; m_pSerializer->singleElementNS( XML_w, XML_bookmarkEnd, FSNS( XML_w, XML_id ), OString::number( nId ).getStr( ), FSEND ); @@ -1341,7 +1341,7 @@ void DocxAttributeOutput::DoWriteAnnotationMarks() */ if ( m_rOpenedAnnotationMarksIds.end() == m_rOpenedAnnotationMarksIds.find( rName ) ) { - sal_uInt16 nId = m_nNextAnnotationMarkId++; + const sal_Int32 nId = m_nNextAnnotationMarkId++; m_rOpenedAnnotationMarksIds[rName] = nId; m_pSerializer->singleElementNS( XML_w, XML_commentRangeStart, FSNS( XML_w, XML_id ), OString::number( nId ).getStr( ), @@ -1358,10 +1358,10 @@ void DocxAttributeOutput::DoWriteAnnotationMarks() const OString& rName = *it; // Get the id of the annotation mark - std::map< OString, sal_uInt16 >::iterator pPos = m_rOpenedAnnotationMarksIds.find( rName ); + std::map< OString, sal_Int32 >::iterator pPos = m_rOpenedAnnotationMarksIds.find( rName ); if ( pPos != m_rOpenedAnnotationMarksIds.end( ) ) { - sal_uInt16 nId = ( *pPos ).second; + const sal_Int32 nId = ( *pPos ).second; m_pSerializer->singleElementNS( XML_w, XML_commentRangeEnd, FSNS( XML_w, XML_id ), OString::number( nId ).getStr( ), FSEND ); @@ -6528,7 +6528,7 @@ void DocxAttributeOutput::PostitField( const SwField* pField ) const SwPostItField* pPostItField = static_cast<const SwPostItField*>(pField); OString aName = OUStringToOString(pPostItField->GetName(), RTL_TEXTENCODING_UTF8); sal_Int32 nId = 0; - std::map< OString, sal_uInt16 >::iterator it = m_rOpenedAnnotationMarksIds.find(aName); + std::map< OString, sal_Int32 >::iterator it = m_rOpenedAnnotationMarksIds.find(aName); if (it != m_rOpenedAnnotationMarksIds.end()) // If the postit field has an annotation mark associated, we already have an id. nId = it->second; @@ -6547,7 +6547,7 @@ void DocxAttributeOutput::WritePostitFieldReference() // In case this file is inside annotation marks, we want to write the // comment reference after the annotation mark is closed, not here. OString idname = OUStringToOString(m_postitFields[m_postitFieldsMaxId].first->GetName(), RTL_TEXTENCODING_UTF8); - std::map< OString, sal_uInt16 >::iterator it = m_rOpenedAnnotationMarksIds.find( idname ); + std::map< OString, sal_Int32 >::iterator it = m_rOpenedAnnotationMarksIds.find( idname ); if ( it == m_rOpenedAnnotationMarksIds.end( ) ) m_pSerializer->singleElementNS( XML_w, XML_commentReference, FSNS( XML_w, XML_id ), idstr.getStr(), FSEND ); ++m_postitFieldsMaxId; diff --git a/sw/source/filter/ww8/docxattributeoutput.hxx b/sw/source/filter/ww8/docxattributeoutput.hxx index 04d745e..c0cf834 100644 --- a/sw/source/filter/ww8/docxattributeoutput.hxx +++ b/sw/source/filter/ww8/docxattributeoutput.hxx @@ -782,7 +782,7 @@ private: OString m_sLastOpenedBookmark; /// Maps of the annotation marks ids - std::map<OString, sal_uInt16> m_rOpenedAnnotationMarksIds; + std::map<OString, sal_Int32> m_rOpenedAnnotationMarksIds; /// Name of the last opened annotation mark. OString m_sLastOpenedAnnotationMark; diff --git a/sw/source/filter/ww8/rtfattributeoutput.cxx b/sw/source/filter/ww8/rtfattributeoutput.cxx index e374a9a..9d164f8 100644 --- a/sw/source/filter/ww8/rtfattributeoutput.cxx +++ b/sw/source/filter/ww8/rtfattributeoutput.cxx @@ -1490,7 +1490,7 @@ void RtfAttributeOutput::WriteAnnotationMarks_Impl(std::vector< OUString >& rSta OString rName = OUStringToOString(*i, RTL_TEXTENCODING_UTF8); // Output the annotation mark - sal_uInt16 nId = m_nNextAnnotationMarkId++; + const sal_Int32 nId = m_nNextAnnotationMarkId++; m_rOpenedAnnotationMarksIds[rName] = nId; m_aRun->append("{" OOO_STRING_SVTOOLS_RTF_IGNORE OOO_STRING_SVTOOLS_RTF_ATRFSTART " "); m_aRun->append(OString::number(nId).getStr()); @@ -1503,10 +1503,10 @@ void RtfAttributeOutput::WriteAnnotationMarks_Impl(std::vector< OUString >& rSta OString rName = OUStringToOString(*i, RTL_TEXTENCODING_UTF8); // Get the id of the annotation mark - std::map<OString, sal_uInt16>::iterator it = m_rOpenedAnnotationMarksIds.find(rName); + std::map<OString, sal_Int32>::iterator it = m_rOpenedAnnotationMarksIds.find(rName); if (it != m_rOpenedAnnotationMarksIds.end()) { - sal_uInt16 nId = it->second; + const sal_Int32 nId = it->second; m_aRun->append("{" OOO_STRING_SVTOOLS_RTF_IGNORE OOO_STRING_SVTOOLS_RTF_ATRFEND " "); m_aRun->append(OString::number(nId).getStr()); m_aRun->append('}'); @@ -3292,7 +3292,7 @@ void RtfAttributeOutput::PostitField(const SwField* pField) const SwPostItField& rPField = *static_cast<const SwPostItField*>(pField); OString aName = OUStringToOString(rPField.GetName(), RTL_TEXTENCODING_UTF8); - std::map<OString, sal_uInt16>::iterator it = m_rOpenedAnnotationMarksIds.find(aName); + std::map<OString, sal_Int32>::iterator it = m_rOpenedAnnotationMarksIds.find(aName); if (it != m_rOpenedAnnotationMarksIds.end()) { // In case this field is inside annotation marks, we want to write the diff --git a/sw/source/filter/ww8/rtfattributeoutput.hxx b/sw/source/filter/ww8/rtfattributeoutput.hxx index 0696486..076fdaf 100644 --- a/sw/source/filter/ww8/rtfattributeoutput.hxx +++ b/sw/source/filter/ww8/rtfattributeoutput.hxx @@ -515,7 +515,7 @@ private: sal_Int32 m_nNextAnnotationMarkId; sal_Int32 m_nCurrentAnnotationMarkId; /// Maps annotation mark names to ID's. - std::map<OString, sal_uInt16> m_rOpenedAnnotationMarksIds; + std::map<OString, sal_Int32> m_rOpenedAnnotationMarksIds; /* * The current table helper. _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits