[Libreoffice-commits] core.git: 3 commits - sw/source

Matteo Casalin matteo.casalin at yahoo.com
Tue Oct 1 23:46:37 PDT 2013


 sw/source/ui/uiview/srcview.cxx |   46 +++++++++++++++++++++-------------------
 1 file changed, 25 insertions(+), 21 deletions(-)

New commits:
commit a59504bfb06d57ddb0e1f4cfc02222022fa68da1
Author: Matteo Casalin <matteo.casalin at yahoo.com>
Date:   Wed Oct 2 08:42:21 2013 +0200

    Fix typo in comment
    
    Change-Id: I78b3e37d261d5c82795c40c9eb3de2731b8edd83

diff --git a/sw/source/ui/uiview/srcview.cxx b/sw/source/ui/uiview/srcview.cxx
index f44fc64..cefbd34 100644
--- a/sw/source/ui/uiview/srcview.cxx
+++ b/sw/source/ui/uiview/srcview.cxx
@@ -694,7 +694,7 @@ sal_Int32 SwSrcView::PrintSource(
     if (!pOutDev || nPage <= 0)
         return 0;
 
-    //! This logarithm for printing the n-th page is very poor since it
+    //! This algorithm for printing the n-th page is very poor since it
     //! needs to go over the text of all previous pages to get to the correct one.
     //! But since HTML source code is expected to be just a small number of pages
     //! even this poor algorithm should be enough...
commit 31eb55e55103e83025bffacafa7832e4c2575e9a
Author: Matteo Casalin <matteo.casalin at yahoo.com>
Date:   Wed Oct 2 08:41:33 2013 +0200

    Do print empty lines or beyond end of text
    
    Change-Id: I706faba95ca6b3034b2293f3dcc15b9f124014be

diff --git a/sw/source/ui/uiview/srcview.cxx b/sw/source/ui/uiview/srcview.cxx
index f93cb1b..f44fc64 100644
--- a/sw/source/ui/uiview/srcview.cxx
+++ b/sw/source/ui/uiview/srcview.cxx
@@ -721,7 +721,8 @@ sal_Int32 SwSrcView::PrintSource(
 
     // nLinepPage is not true, if lines have to be wrapped...
     sal_uInt16 nLinespPage = (sal_uInt16) (aPaperSz.Height() / nLineHeight);
-    sal_uInt16 nCharspLine = (sal_uInt16) (aPaperSz.Width()  / pOutDev->GetTextWidth(OUString('X')));
+    const sal_Int32 nCharspLine =
+        static_cast<sal_Int32>(aPaperSz.Width() / pOutDev->GetTextWidth("X"));
     sal_uInt16 nParas = static_cast< sal_uInt16 >( pTextEngine->GetParagraphCount() );
 
     sal_uInt16 nPages = (sal_uInt16) (nParas / nLinespPage + 1 );
@@ -735,7 +736,8 @@ sal_Int32 SwSrcView::PrintSource(
     for ( sal_uInt16 nPara = 0; nPara < nParas; ++nPara )
     {
         const OUString aLine( lcl_ConvertTabsToSpaces(pTextEngine->GetText( nPara )) );
-        sal_Int32 nLines = aLine.getLength() / nCharspLine + 1;
+        const sal_Int32 nLineLen = aLine.getLength();
+        const sal_Int32 nLines = (nLineLen+nCharspLine-1) / nCharspLine;
         for ( sal_Int32 nLine = 0; nLine < nLines; ++nLine )
         {
             aPos.Y() += nLineHeight;
@@ -747,7 +749,11 @@ sal_Int32 SwSrcView::PrintSource(
                 aPos = aStartPos;
             }
             if (!bCalcNumPagesOnly && nPage == nCurPage)
-                pOutDev->DrawText( aPos, aLine.copy(nLine * nCharspLine, nCharspLine) );
+            {
+                const sal_Int32 nStart = nLine * nCharspLine;
+                const sal_Int32 nLen = std::min(nLineLen-nStart, nCharspLine);
+                pOutDev->DrawText( aPos, aLine.copy(nStart, nLen) );
+            }
         }
         aPos.Y() += nParaSpace;
     }
commit 06941b060bab0b5941b619441ecf767c6a0ab23d
Author: Matteo Casalin <matteo.casalin at yahoo.com>
Date:   Wed Oct 2 02:09:36 2013 +0200

    String to OUString
    
    Change-Id: I03949be73025d8b58ee35648d95e76b3ac1df2b8

diff --git a/sw/source/ui/uiview/srcview.cxx b/sw/source/ui/uiview/srcview.cxx
index 02762d5..f93cb1b 100644
--- a/sw/source/ui/uiview/srcview.cxx
+++ b/sw/source/ui/uiview/srcview.cxx
@@ -192,26 +192,26 @@ static rtl_TextEncoding lcl_GetStreamCharSet(rtl_TextEncoding eLoadEncoding)
     return eRet;
 }
 
-static void lcl_ConvertTabsToSpaces( String& rLine )
+static OUString lcl_ConvertTabsToSpaces( OUString sLine )
 {
-    if ( rLine.Len() )
+    if (!sLine.isEmpty())
     {
-        sal_uInt16 nPos = 0;
-        sal_uInt16 nMax = rLine.Len();
-        while ( nPos < nMax )
+        const sal_Unicode aPadSpaces[4] = {' ', ' ', ' ', ' '};
+        sal_Int32 nPos = 0;
+        for (;;)
         {
-            if ( rLine.GetChar(nPos) == '\t' )
+            nPos = sLine.indexOf('\t', nPos);
+            if (nPos<0)
             {
-                // Not 4 blanks, but on 4th TabPos:
-                OUStringBuffer aBlanker;
-                comphelper::string::padToLength(aBlanker, ( 4 - ( nPos % 4 ) ), ' ');
-                rLine.Erase( nPos, 1 );
-                rLine.Insert(aBlanker.makeStringAndClear(), nPos);
-                nMax = rLine.Len();
+                break;
             }
-            nPos++; // Not optimally, if tab, but not wrong...
+            // Not 4 blanks, but on 4th TabPos:
+            const sal_Int32 nPadLen = 4 - (nPos % 4);
+            sLine.replaceAt(nPos, 1, OUString(aPadSpaces, nPadLen));
+            nPos += nPadLen;
         }
     }
+    return sLine;
 }
 
 SwSrcView::SwSrcView(SfxViewFrame* pViewFrame, SfxViewShell*) :
@@ -734,12 +734,10 @@ sal_Int32 SwSrcView::PrintSource(
     Point aPos( aStartPos );
     for ( sal_uInt16 nPara = 0; nPara < nParas; ++nPara )
     {
-        String aLine( pTextEngine->GetText( nPara ) );
-        lcl_ConvertTabsToSpaces( aLine );
-        sal_uInt16 nLines = aLine.Len() / nCharspLine + 1;
-        for ( sal_uInt16 nLine = 0; nLine < nLines; ++nLine )
+        const OUString aLine( lcl_ConvertTabsToSpaces(pTextEngine->GetText( nPara )) );
+        sal_Int32 nLines = aLine.getLength() / nCharspLine + 1;
+        for ( sal_Int32 nLine = 0; nLine < nLines; ++nLine )
         {
-            String aTmpLine( aLine, nLine * nCharspLine, nCharspLine );
             aPos.Y() += nLineHeight;
             if ( aPos.Y() > ( aPaperSz.Height() + TMARGPRN - nLineHeight/2 ) )
             {
@@ -749,7 +747,7 @@ sal_Int32 SwSrcView::PrintSource(
                 aPos = aStartPos;
             }
             if (!bCalcNumPagesOnly && nPage == nCurPage)
-                pOutDev->DrawText( aPos, aTmpLine );
+                pOutDev->DrawText( aPos, aLine.copy(nLine * nCharspLine, nCharspLine) );
         }
         aPos.Y() += nParaSpace;
     }


More information about the Libreoffice-commits mailing list