[Libreoffice-commits] .: 2 commits - sw/inc sw/source

Ivan Timofeev ivantimofeev at kemper.freedesktop.org
Fri Jun 22 05:48:56 PDT 2012


 sw/inc/EnhancedPDFExportHelper.hxx              |    2 
 sw/source/core/text/EnhancedPDFExportHelper.cxx |   92 +++++-------------------
 2 files changed, 21 insertions(+), 73 deletions(-)

New commits:
commit 4cffdb68196d6c23e5134a57018648af5d1f4111
Author: Ivan Timofeev <timofeev.i.s at gmail.com>
Date:   Fri Jun 22 16:41:31 2012 +0400

    reuse existing code
    
    Change-Id: I10f3d9958679b485cf75d514a38093cbe51d540e

diff --git a/sw/source/core/text/EnhancedPDFExportHelper.cxx b/sw/source/core/text/EnhancedPDFExportHelper.cxx
index b04a1bd..c04b03d 100644
--- a/sw/source/core/text/EnhancedPDFExportHelper.cxx
+++ b/sw/source/core/text/EnhancedPDFExportHelper.cxx
@@ -2149,58 +2149,10 @@ void SwEnhancedPDFExportHelper::EnhancedPDFExport()
  */
 sal_Int32 SwEnhancedPDFExportHelper::CalcOutputPageNum( const SwRect& rRect ) const
 {
-    // Document page number.
-    sal_Int32 nPageNumOfRect = mrSh.GetPageNumAndSetOffsetForPDF( mrOut, rRect );
-    if ( nPageNumOfRect < 0 )
-        return -1;
-
-    // What will be the page number of page nPageNumOfRect in the output pdf?
-    sal_Int32 nRet = -1;
-    if ( mpRangeEnum )
-    {
-        if ( mbSkipEmptyPages )
-            // Map the page number to the range without empty pages.
-            nPageNumOfRect = maPageNumberMap[ nPageNumOfRect ];
-
-        if ( mpRangeEnum->hasValue( nPageNumOfRect ) )
-        {
-            sal_Int32 nOutputPageNum = 0;
-            StringRangeEnumerator::Iterator aIter = mpRangeEnum->begin();
-            StringRangeEnumerator::Iterator aEnd  = mpRangeEnum->end();
-            for ( ; aIter != aEnd; ++aIter )
-            {
-                if ( *aIter == nPageNumOfRect )
-                {
-                    nRet = nOutputPageNum;
-                    break;
-                }
-                ++nOutputPageNum;
-            }
-        }
-    }
-    else
-    {
-        if ( mbSkipEmptyPages )
-        {
-            sal_Int32 nOutputPageNum = 0;
-            for ( size_t i = 0; i < maPageNumberMap.size(); ++i )
-            {
-                if ( maPageNumberMap[i] >= 0 ) // is not empty?
-                {
-                    if ( i == static_cast<size_t>( nPageNumOfRect ) )
-                    {
-                        nRet = nOutputPageNum;
-                        break;
-                    }
-                    ++nOutputPageNum;
-                }
-            }
-        }
-        else
-            nRet = nPageNumOfRect;
-    }
-
-    return nRet;
+    std::vector< sal_Int32 > aPageNums = CalcOutputPageNums( rRect );
+    if ( !aPageNums.empty() )
+        return aPageNums[0];
+    return -1;
 }
 
 /*
commit 99a05de8245c7365fbb19a7e1ea595ccd3d1224a
Author: Ivan Timofeev <timofeev.i.s at gmail.com>
Date:   Thu Jun 21 14:41:16 2012 +0400

    rely on the return value optimization
    
    Change-Id: Ide566aa8bbf6f4128bed598c76269b16acf99a7b

diff --git a/sw/inc/EnhancedPDFExportHelper.hxx b/sw/inc/EnhancedPDFExportHelper.hxx
index a5a5210..4ea69cd 100644
--- a/sw/inc/EnhancedPDFExportHelper.hxx
+++ b/sw/inc/EnhancedPDFExportHelper.hxx
@@ -238,7 +238,7 @@ class SwEnhancedPDFExportHelper
 
     void EnhancedPDFExport();
     sal_Int32 CalcOutputPageNum( const SwRect& rRect ) const;
-    void CalcOutputPageNums( const SwRect& rRect, std::vector<sal_Int32>& rPageNums ) const;
+    std::vector< sal_Int32 > CalcOutputPageNums( const SwRect& rRect ) const;
 
     void MakeHeaderFooterLinks( vcl::PDFExtOutDevData& rPDFExtOutDevData,
                                 const SwTxtNode& rTNd, const SwRect& rLinkRect,
diff --git a/sw/source/core/text/EnhancedPDFExportHelper.cxx b/sw/source/core/text/EnhancedPDFExportHelper.cxx
index cfa3120..b04a1bd 100644
--- a/sw/source/core/text/EnhancedPDFExportHelper.cxx
+++ b/sw/source/core/text/EnhancedPDFExportHelper.cxx
@@ -1627,8 +1627,7 @@ void SwEnhancedPDFExportHelper::EnhancedPDFExport()
                         const SwRect& rNoteRect = mrSh.GetCharRect();
 
                         // Link PageNums
-                        std::vector<sal_Int32> aNotePageNums;
-                        CalcOutputPageNums( rNoteRect, aNotePageNums );
+                        std::vector<sal_Int32> aNotePageNums = CalcOutputPageNums( rNoteRect );
                         for ( size_t nNumIdx = 0; nNumIdx < aNotePageNums.size(); ++nNumIdx )
                         {
                             // Link Note
@@ -1740,8 +1739,7 @@ void SwEnhancedPDFExportHelper::EnhancedPDFExport()
                             const SwRect& rLinkRect( aTmp[ i ] );
 
                             // Link PageNums
-                            std::vector<sal_Int32> aLinkPageNums;
-                            CalcOutputPageNums( rLinkRect, aLinkPageNums );
+                            std::vector<sal_Int32> aLinkPageNums = CalcOutputPageNums( rLinkRect );
 
                             for ( size_t nNumIdx = 0; nNumIdx < aLinkPageNums.size(); ++nNumIdx )
                             {
@@ -1810,8 +1808,7 @@ void SwEnhancedPDFExportHelper::EnhancedPDFExport()
                     const SwRect aLinkRect = pFrmFmt->FindLayoutRect( sal_False, &aNullPt );
 
                     // Link PageNums
-                    std::vector<sal_Int32> aLinkPageNums;
-                    CalcOutputPageNums( aLinkRect, aLinkPageNums );
+                    std::vector<sal_Int32> aLinkPageNums = CalcOutputPageNums( aLinkRect );
 
                     // Link Export
                     for ( size_t nNumIdx = 0; nNumIdx < aLinkPageNums.size(); ++nNumIdx )
@@ -1900,8 +1897,7 @@ void SwEnhancedPDFExportHelper::EnhancedPDFExport()
                             const SwRect& rLinkRect( aTmp[ i ] );
 
                             // Link PageNums
-                            std::vector<sal_Int32> aLinkPageNums;
-                            CalcOutputPageNums( rLinkRect, aLinkPageNums );
+                            std::vector<sal_Int32> aLinkPageNums = CalcOutputPageNums( rLinkRect );
 
                             for ( size_t nNumIdx = 0; nNumIdx < aLinkPageNums.size(); ++nNumIdx )
                             {
@@ -1969,8 +1965,7 @@ void SwEnhancedPDFExportHelper::EnhancedPDFExport()
             if ( mrSh.GotoFtnTxt() )
             {
                 // Link PageNums
-                std::vector<sal_Int32> aLinkPageNums;
-                CalcOutputPageNums( aLinkRect, aLinkPageNums );
+                std::vector<sal_Int32> aLinkPageNums = CalcOutputPageNums( aLinkRect );
 
                 // Destination Rectangle
                 const SwRect& rDestRect = mrSh.GetCharRect();
@@ -2211,19 +2206,19 @@ sal_Int32 SwEnhancedPDFExportHelper::CalcOutputPageNum( const SwRect& rRect ) co
 /*
  * SwEnhancedPDFExportHelper::CalcOutputPageNums()
  *
- * Fills rPageNums with the page numbers in the output pdf on which the given
+ * Returns a vector of the page numbers in the output pdf on which the given
  * rect is located. There can be many such pages since StringRangeEnumerator
  * allows duplication of its entries.
  */
-void SwEnhancedPDFExportHelper::CalcOutputPageNums( const SwRect& rRect,
-    std::vector<sal_Int32>& rPageNums ) const
+std::vector< sal_Int32 > SwEnhancedPDFExportHelper::CalcOutputPageNums(
+    const SwRect& rRect ) const
 {
-    rPageNums.clear();
+    std::vector< sal_Int32 > aPageNums;
 
     // Document page number.
     sal_Int32 nPageNumOfRect = mrSh.GetPageNumAndSetOffsetForPDF( mrOut, rRect );
     if ( nPageNumOfRect < 0 )
-        return;
+        return aPageNums;
 
     // What will be the page numbers of page nPageNumOfRect in the output pdf?
     if ( mpRangeEnum )
@@ -2240,7 +2235,7 @@ void SwEnhancedPDFExportHelper::CalcOutputPageNums( const SwRect& rRect,
             for ( ; aIter != aEnd; ++aIter )
             {
                 if ( *aIter == nPageNumOfRect )
-                    rPageNums.push_back( nOutputPageNum );
+                    aPageNums.push_back( nOutputPageNum );
                 ++nOutputPageNum;
             }
         }
@@ -2256,7 +2251,7 @@ void SwEnhancedPDFExportHelper::CalcOutputPageNums( const SwRect& rRect,
                 {
                     if ( i == static_cast<size_t>( nPageNumOfRect ) )
                     {
-                        rPageNums.push_back( nOutputPageNum );
+                        aPageNums.push_back( nOutputPageNum );
                         break;
                     }
                     ++nOutputPageNum;
@@ -2264,8 +2259,10 @@ void SwEnhancedPDFExportHelper::CalcOutputPageNums( const SwRect& rRect,
             }
         }
         else
-            rPageNums.push_back( nPageNumOfRect );
+            aPageNums.push_back( nPageNumOfRect );
     }
+
+    return aPageNums;
 }
 
 void SwEnhancedPDFExportHelper::MakeHeaderFooterLinks( vcl::PDFExtOutDevData& rPDFExtOutDevData,
@@ -2293,8 +2290,7 @@ void SwEnhancedPDFExportHelper::MakeHeaderFooterLinks( vcl::PDFExtOutDevData& rP
             if ( aHFLinkRect.Pos() != rLinkRect.Pos() )
             {
                 // Link PageNums
-                std::vector<sal_Int32> aHFLinkPageNums;
-                CalcOutputPageNums( aHFLinkRect, aHFLinkPageNums );
+                std::vector<sal_Int32> aHFLinkPageNums = CalcOutputPageNums( aHFLinkRect );
 
                 for ( size_t nNumIdx = 0; nNumIdx < aHFLinkPageNums.size(); ++nNumIdx )
                 {


More information about the Libreoffice-commits mailing list