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

Philipp Weissenbacher p.weissenbacher at gmail.com
Mon Jan 19 04:51:50 PST 2015


 sw/source/core/text/txtftn.cxx |  298 +++++++++++++++++++++--------------------
 1 file changed, 158 insertions(+), 140 deletions(-)

New commits:
commit 453b9c98550b76bab3c3d5119300175243b403b6
Author: Philipp Weissenbacher <p.weissenbacher at gmail.com>
Date:   Sun Jan 18 21:45:06 2015 +0100

    fdo#39468 Translate German comments - sw/source/core/text
    
    Change-Id: I187cb3f6beb14c43def5d76396bf49bd9540a222
    Reviewed-on: https://gerrit.libreoffice.org/13981
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/sw/source/core/text/txtftn.cxx b/sw/source/core/text/txtftn.cxx
index 62810bb..bb0ba76 100644
--- a/sw/source/core/text/txtftn.cxx
+++ b/sw/source/core/text/txtftn.cxx
@@ -63,7 +63,9 @@ bool SwTxtFrm::_IsFtnNumFrm() const
     return !pFtn;
 }
 
-// Sucht innerhalb einer Master-Follow-Kette den richtigen TxtFrm zum SwTxtFtn
+/**
+ * Looks for the TxtFrm matching the SwTxtFtn within a master-follow chain
+ */
 SwTxtFrm *SwTxtFrm::FindFtnRef( const SwTxtFtn *pFtn )
 {
     SwTxtFrm *pFrm = this;
@@ -118,7 +120,7 @@ void SwTxtFrm::CalcFtnFlag()
 
 bool SwTxtFrm::CalcPrepFtnAdjust()
 {
-    OSL_ENSURE( HasFtn(), "Wer ruft mich da?" );
+    OSL_ENSURE( HasFtn(), "Who´s calling me?" );
     SwFtnBossFrm *pBoss = FindFtnBossFrm( true );
     const SwFtnFrm *pFtn = pBoss->FindFirstFtn( this );
     if( pFtn && FTNPOS_CHAPTER != GetNode()->GetDoc()->GetFtnInfo().ePos &&
@@ -145,7 +147,7 @@ bool SwTxtFrm::CalcPrepFtnAdjust()
             SwTxtFormatInfo aInf( this );
             SwTxtFormatter aLine( this, &aInf );
             aLine.TruncLines();
-            SetPara( 0 );       //Wird ggf. geloescht!
+            SetPara( 0 ); // May be deleted!
             ResetPreps();
             return false;
         }
@@ -153,8 +155,10 @@ bool SwTxtFrm::CalcPrepFtnAdjust()
     return true;
 }
 
-// Local helper function. Checks if nLower should be taken as the boundary
-// for the footnote.
+/**
+ * Local helper function. Checks if nLower should be taken as the boundary
+ * for the footnote.
+ */
 static SwTwips lcl_GetFtnLower( const SwTxtFrm* pFrm, SwTwips nLower )
 {
     // nLower is an absolute value. It denotes the bottom of the line
@@ -283,9 +287,10 @@ SwTwips SwTxtFrm::GetFtnLine( const SwTxtFtn *pFtn ) const
     return nRet;
 }
 
-// Ermittelt die max. erreichbare Hoehe des TxtFrm im Ftn-Bereich.
-// Sie wird eingeschraenkt durch den unteren Rand der Zeile mit
-// der Ftn-Referenz.
+/**
+ * Calculates the maximum reachable height for the TxtFrm in the Ftn Area.
+ * The cell's bottom margin with the Ftn Reference limit's this height.
+ */
 SwTwips SwTxtFrm::_GetFtnFrmHeight() const
 {
     OSL_ENSURE( !IsFollow() && IsInFtn(), "SwTxtFrm::SetFtnLine: moon walk" );
@@ -303,11 +308,11 @@ SwTwips SwTxtFrm::_GetFtnFrmHeight() const
                             1 : pRef->GetFtnLine( pFtnFrm->GetAttr() );
     if( nHeight )
     {
-        // So komisch es aussehen mag: Die erste Ftn auf der Seite darf sich
-        // nicht mit der Ftn-Referenz beruehren, wenn wir im Ftn-Bereich Text
-        // eingeben.
+        // As odd as it may seem: the first Ftn on the page may not touch the
+        // Ftn Reference, when entering text in the Ftn Area.
         const SwFrm *pCont = pFtnFrm->GetUpper();
-        //Hoehe innerhalb des Cont, die ich mir 'eh noch genehmigen darf.
+
+        // Height within the Container which we're allowed to consume anyways
         SWRECTFN( pCont )
         SwTwips nTmp = (*fnRect->fnYDiff)( (pCont->*fnRect->fnGetPrtBottom)(),
                                            (Frm().*fnRect->fnGetTop)() );
@@ -331,7 +336,7 @@ SwTwips SwTxtFrm::_GetFtnFrmHeight() const
 
         if ( (*fnRect->fnYDiff)( (pCont->Frm().*fnRect->fnGetTop)(), nHeight) > 0 )
         {
-            //Wachstumspotential den Containers.
+            // Growth potential of the container
             if ( !pRef->IsInFtnConnect() )
             {
                 SwSaveFtnHeight aSave( (SwFtnBossFrm*)pBoss, nHeight  );
@@ -361,16 +366,16 @@ SwTwips SwTxtFrm::_GetFtnFrmHeight() const
 
 SwTxtFrm *SwTxtFrm::FindQuoVadisFrm()
 {
-    // Erstmal feststellen, ob wir in einem FtnFrm stehen:
+    // Check whether we're in a FtnFrm
     if( GetIndPrev() || !IsInFtn() )
         return 0;
 
-    // Zum Vorgaenger-FtnFrm
+    // To the preceding FtnFrm
     SwFtnFrm *pFtnFrm = FindFtnFrm()->GetMaster();
     if( !pFtnFrm )
         return 0;
 
-    // Nun den letzten Cntnt:
+    // Now the last Cntnt
     SwCntntFrm *pCnt = pFtnFrm->ContainsCntnt();
     if( !pCnt )
         return NULL;
@@ -451,16 +456,18 @@ void SwTxtFrm::RemoveFtn( const sal_Int32 nStart, const sal_Int32 nLen )
                     }
                 }
 
-                // Wir loeschen nicht, sondern wollen die Ftn verschieben.
-                // Drei Faelle koennen auftreten:
-                // 1) Es gibt weder Follow noch PrevFollow
-                //    -> RemoveFtn()  (vielleicht sogar ein OSL_ENSURE(wert)
-                // 2) nStart > GetOfst, ich habe einen Follow
-                //    -> Ftn wandert in den Follow
-                // 3) nStart < GetOfst, ich bin ein Follow
-                //    -> Ftn wandert in den PrevFollow
-                // beide muessen auf einer Seite/in einer Spalte stehen.
-
+                // We don't delete, but move instead.
+                // Three cases are to be considered:
+                // 1) There's neither Follow nor PrevFollow:
+                //    -> RemoveFtn() (maybe even a OSL_ENSURE(value))
+                //
+                // 2) nStart > GetOfst, I have a Follow
+                //    -> Ftn moves into Follow
+                //
+                // 3) nStart < GetOfst, I am a Follow
+                //    -> Ftn moves into the PrevFollow
+                //
+                // Both need to be on one Page/in one Column
                 SwFtnFrm *pFtnFrm = SwFtnBossFrm::FindFtn(pSource, pFtn);
 
                 if( pFtnFrm )
@@ -484,8 +491,7 @@ void SwTxtFrm::RemoveFtn( const sal_Int32 nStart, const sal_Int32 nLen )
                         OSL_ENSURE( !SwFtnBossFrm::FindFtn(
                             pDest,pFtn),"SwTxtFrm::RemoveFtn: footnote exists");
 
-                        //Nicht ummelden sondern immer Moven.
-                        // OD 08.11.2002 #104840# - use <SwlayoutFrm::IsBefore(::)>
+                        // Never deregister; always move
                         if ( bEndDoc ||
                              !pFtnFrm->FindFtnBossFrm()->IsBefore( pDest->FindFtnBossFrm( !bEndn ) )
                            )
@@ -531,18 +537,19 @@ void SwTxtFrm::RemoveFtn( const sal_Int32 nStart, const sal_Int32 nLen )
         }
         if( pUpdate )
             pUpdate->UpdateFtnNum();
-        // Wir bringen die Oszillation zum stehen:
+
+        // We brake the oscillation
         if( bRemove && !bFtnEndDoc && HasPara() )
         {
             ValidateBodyFrm();
             ValidateFrm();
         }
     }
-    // Folgendes Problem: Aus dem FindBreak heraus wird das RemoveFtn aufgerufen,
-    // weil die letzte Zeile an den Follow abgegeben werden soll. Der Offset
-    // des Follows ist aber veraltet, er wird demnaechst gesetzt. CalcFntFlag ist
-    // auf einen richtigen Follow-Offset angewiesen. Deshalb wird hier kurzfristig
-    // der Follow-Offset manipuliert.
+
+    // We call the RemoveFtn from within the FindBreak, because the last line is
+    // to be passed to the Follow. The Offset of the Follow is, however, outdated;
+    // it'll be set soon. CalcFntFlag depends on a correctly set Follow Offset.
+    // Therefore we temporarily calculate the Follow Offset here
     sal_Int32 nOldOfst = COMPLETE_STRING;
     if( HasFollow() && nStart > GetOfst() )
     {
@@ -554,31 +561,40 @@ void SwTxtFrm::RemoveFtn( const sal_Int32 nStart, const sal_Int32 nLen )
         GetFollow()->ManipOfst( nOldOfst );
 }
 
-// false, wenn irgendetwas schief gegangen ist.
-// Es gibt eigentlich nur zwei Moeglichkeiten:
-// a) Die Ftn ist bereits vorhanden
-// => dann wird sie gemoved, wenn ein anderer pSrcFrm gefunden wurde
-// b) Die Ftn ist nicht vorhanden
-// => dann wird sie fuer uns angelegt.
-// Ob die Ftn schliesslich auf unserer Spalte/Seite landet oder nicht,
-// spielt in diesem Zusammenhang keine Rolle.
-// Optimierungen bei Endnoten.
-// Noch ein Problem: wenn die Deadline im Ftn-Bereich liegt, muss die
-// Ftn verschoben werden.
+
+/**
+ * We basically only have two possibilities:
+ *
+ * a) The Ftn is already present
+ *    => we move it, if another pSrcFrm has been found
+ *
+ * b) The Ftn is not present
+ *    => we have it created for us
+ *
+ * Whether the Ftn ends up on our Page/Column, doesn't matter in this
+ * context.
+ *
+ * Optimization for Endnotes.
+ *
+ * Another problem: if the Deadline falls within the Ftn Area, we need
+ * to move the Ftn.
+ *
+ * @returns false on any type of error
+ */
 void SwTxtFrm::ConnectFtn( SwTxtFtn *pFtn, const SwTwips nDeadLine )
 {
     OSL_ENSURE( !IsVertical() || !IsSwapped(),
             "SwTxtFrm::ConnectFtn with swapped frame" );
 
     bFtn = true;
-    bInFtnConnect = true;   //Bloss zuruecksetzen!
+    bInFtnConnect = true; // Just reset!
     const bool bEnd = pFtn->GetFtn().IsEndNote();
 
     // We want to store this value, because it is needed as a fallback
     // in GetFtnLine(), if there is no paragraph information available
     mnFtnLine = nDeadLine;
 
-    // Wir brauchen immer einen Boss (Spalte/Seite)
+    // We always need a parent (Page/Column)
     SwSectionFrm *pSect;
     SwCntntFrm *pCntnt = this;
     if( bEnd && IsInSct() )
@@ -600,7 +616,8 @@ void SwTxtFrm::ConnectFtn( SwTxtFtn *pFtn, const SwTwips nDeadLine )
     bool bDocEnd = bEnd ? !( pSect && pSect->IsEndnAtEnd() ) :
                    ( !( pSect && pSect->IsFtnAtEnd() ) &&
                        FTNPOS_CHAPTER == GetNode()->GetDoc()->GetFtnInfo().ePos );
-    //Ftn kann beim Follow angemeldet sein.
+
+    // Ftn can be registered with the Follow
     SwCntntFrm *pSrcFrm = FindFtnRef( pFtn );
 
     if( bDocEnd )
@@ -659,7 +676,7 @@ void SwTxtFrm::ConnectFtn( SwTxtFtn *pFtn, const SwTwips nDeadLine )
 
     SwSaveFtnHeight aHeight( pBoss, nDeadLine );
 
-    if( !pSrcFrm )      // Es wurde ueberhaupt keine Ftn gefunden.
+    if( !pSrcFrm ) // No Ftn was found at all
         pBoss->AppendFtn( this, pFtn );
     else
     {
@@ -668,7 +685,7 @@ void SwTxtFrm::ConnectFtn( SwTxtFtn *pFtn, const SwTwips nDeadLine )
 
         bool bBrutal = false;
 
-        if( pFtnBoss == pBoss ) // Ref und Ftn sind auf der selben Seite/Spalte.
+        if( pFtnBoss == pBoss ) // Ref and Ftn are on the same Page/Column
         {
             SwFrm *pCont = pFtnFrm->GetUpper();
 
@@ -678,12 +695,12 @@ void SwTxtFrm::ConnectFtn( SwTxtFtn *pFtn, const SwTwips nDeadLine )
 
             if( nDiff >= 0 )
             {
-                //Wenn die Fussnote bei einem Follow angemeldet ist, so ist
-                //es jetzt an der Zeit sie umzumelden.
+                // If the Footnote has been registered to a Follow, we need to
+                // rewire it now too
                 if ( pSrcFrm != this )
                     pBoss->ChangeFtnRef( pSrcFrm, pFtn, this );
-                //Es steht Platz zur Verfuegung, also kann die Fussnote evtl.
-                //wachsen.
+
+                // We have some room left, so the Footnote can grow
                 if ( pFtnFrm->GetFollow() && nDiff > 0 )
                 {
                     SwTwips nHeight = (pCont->Frm().*fnRect->fnGetHeight)();
@@ -692,7 +709,7 @@ void SwTxtFrm::ConnectFtn( SwTxtFtn *pFtn, const SwTwips nDeadLine )
                     ValidateFrm();
                     SwViewShell *pSh = getRootFrm()->GetCurrShell();
                     if ( pSh && nHeight == (pCont->Frm().*fnRect->fnGetHeight)() )
-                        //Damit uns nix durch die Lappen geht.
+                        // So that we don't miss anything
                         pSh->InvalidateWindows( pCont->Frm() );
                 }
                 bInFtnConnect = false;
@@ -703,19 +720,18 @@ void SwTxtFrm::ConnectFtn( SwTxtFtn *pFtn, const SwTwips nDeadLine )
         }
         else
         {
-            // Ref und Ftn sind nicht auf einer Seite, Move-Versuch ist noetig.
+            // Ref and Ftn are not on one Page; attempt to move is necessary
             SwFrm* pTmp = this;
             while( pTmp->GetNext() && pSrcFrm != pTmp )
                 pTmp = pTmp->GetNext();
             if( pSrcFrm == pTmp )
                 bBrutal = true;
             else
-            {   // Wenn unser Boss in einem spaltigen Bereich sitzt, es aber auf
-                // der Seite schon einen FtnContainer gibt, hilft nur die brutale
-                // Methode
+            {   // If our Parent is in a column Area, but the Page already has a
+                // FtnContainer, we can only brute force it
                 if( pSect && pSect->FindFtnBossFrm( !bEnd )->FindFtnCont() )
                     bBrutal = true;
-                // OD 08.11.2002 #104840# - use <SwLayoutFrm::IsBefore(..)>
+
                 else if ( !pFtnFrm->GetPrev() ||
                           pFtnBoss->IsBefore( pBoss )
                         )
@@ -728,26 +744,23 @@ void SwTxtFrm::ConnectFtn( SwTxtFtn *pFtn, const SwTwips nDeadLine )
             }
         }
 
-        // Die brutale Loesung: Fussnote entfernen und appenden.
-        // Es muss SetFtnDeadLine() gerufen werden, weil nach
-        // RemoveFtn die nMaxFtnHeight evtl. besser auf unsere Wuensche
-        // eingestellt werden kann.
+        // The brute force method: Remove Footnote and append.
+        // We need to call SetFtnDeadLine(), as we can more easily adapt the
+        // nMaxFtnHeight after RemoveFtn
         if( bBrutal )
         {
             pBoss->RemoveFtn( pSrcFrm, pFtn, false );
-            SwSaveFtnHeight *pHeight = bEnd ? NULL :
-                new SwSaveFtnHeight( pBoss, nDeadLine );
+            SwSaveFtnHeight *pHeight = bEnd ? NULL : new SwSaveFtnHeight( pBoss, nDeadLine );
             pBoss->AppendFtn( this, pFtn );
             delete pHeight;
         }
     }
 
-    // In spaltigen Bereichen, die noch nicht bis zum Seitenrand gehen,
-    // ist kein RearrangeFtns sinnvoll, da der Fussnotencontainer noch
-    // nicht kalkuliert worden ist.
+    // In column Areas, that not yet reach the Page's border a RearrangeFtns is not
+    // useful yet, as the Footnote container has not yet been calculated
     if( !pSect || !pSect->Growable() )
     {
-        // Umgebung validieren, um Oszillationen zu verhindern.
+        // Validate environment, to avoid oscillation
         SwSaveFtnHeight aNochmal( pBoss, nDeadLine );
         ValidateBodyFrm();
         pBoss->RearrangeFtns( nDeadLine, true );
@@ -760,7 +773,7 @@ void SwTxtFrm::ConnectFtn( SwTxtFtn *pFtn, const SwTwips nDeadLine )
     }
 
 #if OSL_DEBUG_LEVEL > 1
-    // pFtnFrm kann sich durch Calc veraendert haben ...
+    // pFtnFrm may have changed due to Calc ...
     SwFtnFrm *pFtnFrm = pBoss->FindFtn( this, pFtn );
     if( pFtnFrm && pBoss != pFtnFrm->FindFtnBossFrm( !bEnd ) )
     {
@@ -774,7 +787,9 @@ void SwTxtFrm::ConnectFtn( SwTxtFtn *pFtn, const SwTwips nDeadLine )
     return;
 }
 
-// Die Portion fuer die Ftn-Referenz im Text
+/**
+ * The portion for the Ftn Reference in the Text
+ */
 SwFtnPortion *SwTxtFormatter::NewFtnPortion( SwTxtFormatInfo &rInf,
                                              SwTxtAttr *pHint )
 {
@@ -815,10 +830,9 @@ SwFtnPortion *SwTxtFormatter::NewFtnPortion( SwTxtFormatInfo &rInf,
 
     nLower = lcl_GetFtnLower( pFrm, nLower );
 
-    //6995: Wir frischen nur auf. Das Connect tut fuer diesen Fall nix
-    //Brauchbares, sondern wuerde stattdessen fuer diesen Fall meist die
-    //Ftn wegwerfen und neu erzeugen.
-
+    // We just refresh.
+    // The Connect does not do anything useful in this case, but will
+    // mostly throw away the Ftn and create it anew.
     if( !rInf.IsQuick() )
         pFrm->ConnectFtn( pFtn, nLower );
 
@@ -828,14 +842,15 @@ SwFtnPortion *SwTxtFormatter::NewFtnPortion( SwTxtFormatInfo &rInf,
     if( pScrFrm )
         pFtnFrm = SwFtnBossFrm::FindFtn( pScrFrm, pFtn );
 
-    // Wir erkundigen uns, ob durch unser Append irgendeine
-    // Fussnote noch auf der Seite/Spalte steht. Wenn nicht verschwindet
-    // auch unsere Zeile. Dies fuehrt zu folgendem erwuenschten
-    // Verhalten: Ftn1 pass noch auf die Seite/Spalte, Ftn2 nicht mehr.
-    // Also bleibt die Ftn2-Referenz auf der Seite/Spalte stehen. Die
-    // Fussnote selbst folgt aber erst auf der naechsten Seite/Spalte.
-    // Ausnahme: Wenn keine weitere Zeile auf diese Seite/Spalte passt,
-    // so sollte die Ftn2-Referenz auch auf die naechste wandern.
+    // We see whether our Append has caused some Footnote to
+    // still be on the Page/Column. If not, our line disappears too,
+    // which will lead to the following undesired behaviour:
+    // Ftn1 still fits onto the Page/Column, but Ftn2 doesn't.
+    // The Ftn2 Reference remains on the Page/Column. The Footnote itself
+    // is on the next Page/Column.
+    //
+    // Exception: If the Page/Column cannot accomodate another line,
+    // the Ftn Reference should be moved to the next one.
     if( !rFtn.IsEndNote() )
     {
         SwSectionFrm *pSct = pBoss->FindSctFrm();
@@ -843,9 +858,8 @@ SwFtnPortion *SwTxtFormatter::NewFtnPortion( SwTxtFormatInfo &rInf,
         if( FTNPOS_CHAPTER != pDoc->GetFtnInfo().ePos || bAtSctEnd )
         {
             SwFrm* pFtnCont = pBoss->FindFtnCont();
-            // Wenn der Boss in einem Bereich liegt, kann es sich nur um eine
-            // Spalte dieses Bereichs handeln. Wenn dies nicht die erste Spalte
-            // ist, duerfen wir ausweichen
+            // If the Parent is within an Area, it can only be a Column of this
+            // Area. If this one is not the first Column, we can avoid it.
             if( !pFrm->IsInTab() && ( GetLineNr() > 1 || pFrm->GetPrev() ||
                 ( !bAtSctEnd && pFrm->GetIndPrev() ) ||
                 ( pSct && pBoss->GetPrev() ) ) )
@@ -858,9 +872,9 @@ SwFtnPortion *SwTxtFormatter::NewFtnPortion( SwTxtFormatInfo &rInf,
                 }
                 else
                 {
-                    // Es darf keine Fussnotencontainer in spaltigen Bereichen und
-                    // gleichzeitig auf der Seite/Seitenspalte geben
-                    if( pSct && !bAtSctEnd ) // liegt unser Container in einem (spaltigen) Bereich?
+                    // There must not be any Footnote Containers in column Areas and at the same time on the
+                    // Page/Page column
+                    if( pSct && !bAtSctEnd ) // Is the Container in a (column) Area?
                     {
                         SwFtnBossFrm* pTmp = pBoss->FindSctFrm()->FindFtnBossFrm( true );
                         SwFtnContFrm* pFtnC = pTmp->FindFtnCont();
@@ -875,7 +889,7 @@ SwFtnPortion *SwTxtFormatter::NewFtnPortion( SwTxtFormatInfo &rInf,
                             }
                         }
                     }
-                    // Ist dies die letzte passende Zeile?
+                    // Is this the last Line that fits?
                     SwTwips nTmpBot = Y() + nReal * 2;
 
                     if( bVertical )
@@ -894,9 +908,8 @@ SwFtnPortion *SwTxtFormatter::NewFtnPortion( SwTxtFormatInfo &rInf,
                             SwFtnBossFrm *pFtnBoss = pFtnFrm->FindFtnBossFrm();
                             if( pFtnBoss != pBoss )
                             {
-                                // Wir sind in der letzte Zeile und die Fussnote
-                                // ist auf eine andere Seite gewandert, dann wollen
-                                // wir mit ...
+                                // We're in the last Line and the Footnote has moved
+                                // to another Page. We also want to be on that Page!
                                 rInf.SetStop( true );
                                 UNDO_SWAP( pFrm )
                                 return 0;
@@ -907,7 +920,7 @@ SwFtnPortion *SwTxtFormatter::NewFtnPortion( SwTxtFormatInfo &rInf,
             }
         }
     }
-    // Endlich: FtnPortion anlegen und raus hier...
+    // Finally: Create FtnPortion and exit ...
     SwFtnPortion *pRet = new SwFtnPortion( rFtn.GetViewNumStr( *pDoc ),
                                            pFtn, nReal );
     rInf.SetFtnInside( true );
@@ -917,7 +930,9 @@ SwFtnPortion *SwTxtFormatter::NewFtnPortion( SwTxtFormatInfo &rInf,
     return pRet;
  }
 
-// Die Portion fuer die Ftn-Nummerierung im Ftn-Bereich
+/**
+ * The portion for the Ftn Numbering in the Ftn Area
+ */
 SwNumberPortion *SwTxtFormatter::NewFtnNumPortion( SwTxtFormatInfo &rInf ) const
 {
     OSL_ENSURE( pFrm->IsInFtn() && !pFrm->GetIndPrev() && !rInf.IsFtnDone(),
@@ -929,7 +944,7 @@ SwNumberPortion *SwTxtFormatter::NewFtnNumPortion( SwTxtFormatInfo &rInf ) const
     const SwFtnFrm* pFtnFrm = pFrm->FindFtnFrm();
     const SwTxtFtn* pFtn = pFtnFrm->GetAttr();
 
-    // Aha, wir sind also im Fussnotenbereich
+    // Aha! So we're in the Footnote Area!
     SwFmtFtn& rFtn = (SwFmtFtn&)pFtn->GetFtn();
 
     SwDoc *pDoc = pFrm->GetNode()->GetDoc();
@@ -979,8 +994,7 @@ OUString lcl_GetPageNumber( const SwPageFrm* pPage )
 
 SwErgoSumPortion *SwTxtFormatter::NewErgoSumPortion( SwTxtFormatInfo &rInf ) const
 {
-    // Wir koennen nicht davon ausgehen, dass wir ein Follow sind
-    // 7983: GetIdx() nicht nStart
+    // We cannot assume we're a Follow
     if( !pFrm->IsInFtn()  || pFrm->GetPrev() ||
         rInf.IsErgoDone() || rInf.GetIdx() != pFrm->GetOfst() ||
         pFrm->ImplFindFtnFrm()->GetAttr()->GetFtn().IsEndNote() )
@@ -994,7 +1008,7 @@ SwErgoSumPortion *SwTxtFormatter::NewErgoSumPortion( SwTxtFormatInfo &rInf ) con
     const SwPageFrm* pPage = pFrm->FindPageFrm();
     const SwPageFrm* pQuoPage = pQuoFrm->FindPageFrm();
     if( pPage == pQuoFrm->FindPageFrm() )
-        return 0; // Wenn der QuoVadis auf der selben (spaltigen) Seite steht
+        return 0; // If the QuoVadis is on the same Column/Page
     const OUString aPage = lcl_GetPageNumber( pPage );
     SwParaPortion *pPara = pQuoFrm->GetPara();
     if( pPara )
@@ -1033,7 +1047,7 @@ sal_Int32 SwTxtFormatter::FormatQuoVadis( const sal_Int32 nOffset )
         const SwPageFrm* pPage = pFrm->FindPageFrm();
         const SwPageFrm* pErgoPage = pErgoFrm->FindPageFrm();
         if( pPage == pErgoPage )
-            return nOffset; // Wenn der ErgoSum auf der selben Seite steht
+            return nOffset; // If the ErgoSum is on the same Page
     }
 
     SwTxtFormatInfo &rInf = GetInfo();
@@ -1041,18 +1055,18 @@ sal_Int32 SwTxtFormatter::FormatQuoVadis( const sal_Int32 nOffset )
     if( rFtnInfo.aQuoVadis.isEmpty() )
         return nOffset;
 
-    // Ein Wort zu QuoVadis/ErgoSum:
-    // Fuer diese Texte wird der am Absatz eingestellte Font verwendet.
-    // Wir initialisieren uns also:
-//  ResetFont();
+    // A remark on QuoVadis/ErgoSum:
+    // We use the Font set for the Paragraph for these texts.
+    // Thus, we initialze:
+    // TODO: ResetFont();
     FeedInf( rInf );
     SeekStartAndChg( rInf, true );
     if( GetRedln() && pCurr->HasRedline() )
         GetRedln()->Seek( *pFnt, nOffset, 0 );
 
-    // Ein fieser Sonderfall: Flyfrms reichen in die Zeile und stehen
-    // natuerlich da, wo wir unseren Quovadis Text reinsetzen wollen.
-    // Erst mal sehen, ob es so schlimm ist:
+    // A tricky special case: Flyfrms extend into the Line and are at the
+    // position we want to insert the Quovadis text
+    // Let's see if it is that bad indeed:
     SwLinePortion *pPor = pCurr->GetFirstPortion();
     sal_uInt16 nLastLeft = 0;
     while( pPor )
@@ -1062,9 +1076,10 @@ sal_Int32 SwTxtFormatter::FormatQuoVadis( const sal_Int32 nOffset )
                         static_cast<SwFlyPortion*>(pPor)->Width();
         pPor = pPor->GetPortion();
     }
-    // Das alte Spiel: wir wollen, dass die Zeile an einer bestimmten
-    // Stelle umbricht, also beeinflussen wir die Width.
-    // nLastLeft ist jetzt quasi der rechte Rand.
+
+    // The old game all over again: we want the Line to wrap around
+    // at a certain point, so we adjust the width.
+    // nLastLeft is now basically the right margin
     const sal_uInt16 nOldRealWidth = rInf.RealWidth();
     rInf.RealWidth( nOldRealWidth - nLastLeft );
 
@@ -1106,11 +1121,10 @@ sal_Int32 SwTxtFormatter::FormatQuoVadis( const sal_Int32 nOffset )
     nLastLeft = nOldRealWidth - pCurr->Width();
     FeedInf( rInf );
 
-    // Es kann durchaus sein, dass am Ende eine Marginportion steht,
-    // die beim erneuten Aufspannen nur Aerger bereiten wuerde.
+    // It's possible that there's a Margin Portion at the end, which would
+    // just cause a lot of trouble, when respanning
     pPor = pCurr->FindLastPortion();
-    SwGluePortion *pGlue = pPor->IsMarginPortion() ?
-        static_cast<SwMarginPortion*>(pPor) : 0;
+    SwGluePortion *pGlue = pPor->IsMarginPortion() ? static_cast<SwMarginPortion*>(pPor) : 0;
     if( pGlue )
     {
         pGlue->Height( 0 );
@@ -1121,12 +1135,12 @@ sal_Int32 SwTxtFormatter::FormatQuoVadis( const sal_Int32 nOffset )
         pGlue->SetFixWidth(0);
     }
 
-    // Luxus: Wir sorgen durch das Aufspannen von Glues dafuer,
-    // dass der QuoVadis-Text rechts erscheint:
+    // Luxury: We make sure the QuoVadis text appears on the right, by
+    // using Glues.
     nLastLeft = nLastLeft - nQuoWidth;
     if( nLastLeft )
     {
-        if( nLastLeft > pQuo->GetAscent() ) // Mindestabstand
+        if( nLastLeft > pQuo->GetAscent() ) // Minimum distance
         {
             switch( GetAdjust() )
             {
@@ -1175,12 +1189,12 @@ sal_Int32 SwTxtFormatter::FormatQuoVadis( const sal_Int32 nOffset )
         }
     }
 
-    // Jetzt aber: die QuoVadis-Portion wird angedockt:
+    // Finally: we insert the QuoVadis Portion
     pCurrPor = pQuo;
     while ( pCurrPor )
     {
-        // pPor->Append deletes the pPortoin pointer of pPor. Therefore
-        // we have to keep a pointer to the next portion
+        // pPor->Append deletes the pPortion pointer of pPor.
+        // Therefore we have to keep a pointer to the next portion
         pQuo = static_cast<SwQuoVadisPortion*>(pCurrPor->GetPortion());
         pPor->Append( pCurrPor );
         pPor = pPor->GetPortion();
@@ -1189,20 +1203,22 @@ sal_Int32 SwTxtFormatter::FormatQuoVadis( const sal_Int32 nOffset )
 
     pCurr->Width( pCurr->Width() + nQuoWidth );
 
-    // Und noch einmal adjustieren wegen des Adjustment und nicht zu Letzt
-    // wegen folgendem Sonderfall: In der Zeile hat der DummUser durchgaengig
-    // einen kleineren Font eingestellt als der vom QuoVadis-Text ...
+    // And adjust again, due to the adjustment and due to the following special
+    // case:
+    // The DummyUser has set a smaller Font in the Line than the one used
+    // by the QuoVadis text ...
     CalcAdjustLine( pCurr );
 
-    // Uff...
     return nRet;
 }
 
-// MakeDummyLine() erzeugt eine Line, die bis zum unteren Seitenrand
-// reicht. DummyLines bzw. DummyPortions sorgen dafuer, dass Oszillationen
-// zum stehen kommen, weil Rueckflussmoeglichkeiten genommen werden.
-// Sie werden bei absatzgebundenen Frames in Fussnoten und bei Ftn-
-// Oszillationen verwendet.
+/**
+ * This function creates a Line that reaches to the other Page Margin.
+ * DummyLines or DummyPortions make sure, that osicllations stop, because
+ * there's no way to flow back.
+ * They are used for Footnotes in paragraph-bound Frames and for Ftn
+ * oscillations
+ */
 void SwTxtFormatter::MakeDummyLine()
 {
     sal_uInt16 nRstHeight = GetFrmRstHeight();
@@ -1297,7 +1313,7 @@ SwFtnSave::~SwFtnSave()
 {
     if( pFnt )
     {
-        // SwFont zurueckstellen
+        // Put back SwFont
         *pFnt = *pOld;
         pFnt->GetTox() = pOld->GetTox();
         pFnt->ChgPhysFnt( pInf->GetVsh(), *pInf->GetOut() );
@@ -1381,22 +1397,22 @@ SwQuoVadisPortion::SwQuoVadisPortion( const OUString &rExp, const OUString& rStr
 
 bool SwQuoVadisPortion::Format( SwTxtFormatInfo &rInf )
 {
-    // erster Versuch, vielleicht passt der Text
+    // First try; maybe the Text fits
     CheckScript( rInf );
     bool bFull = SwFldPortion::Format( rInf );
     SetLen( 0 );
 
     if( bFull )
     {
-        // zweiter Versuch, wir kuerzen den String:
+        // Second try; we make the String shorter
         aExpand = "...";
         bFull = SwFldPortion::Format( rInf );
         SetLen( 0 );
         if( bFull  )
-            // dritter Versuch, es langt: jetzt wird gestaucht:
+            // Third try; we're done: we crush
             Width( sal_uInt16(rInf.Width() - rInf.X()) );
 
-        // 8317: keine mehrzeiligen Felder bei QuoVadis und ErgoSum
+        // No multiline Fields for QuoVadis and ErgoSum
         if( rInf.GetRest() )
         {
             delete rInf.GetRest();
@@ -1423,8 +1439,8 @@ void SwQuoVadisPortion::HandlePortion( SwPortionHandler& rPH ) const
 
 void SwQuoVadisPortion::Paint( const SwTxtPaintInfo &rInf ) const
 {
-    // Wir wollen _immer_ per DrawStretchText ausgeben,
-    // weil nErgo schnell mal wechseln kann.
+    // We _always_ want to ouput per DrawStretchText, because nErgo
+    // can quickly switch
     if( PrtWidth() )
     {
         rInf.DrawViewOpt( *this, POR_QUOVADIS );
@@ -1445,7 +1461,7 @@ SwErgoSumPortion::SwErgoSumPortion(const OUString &rExp, const OUString& rStr)
     SetLen(0);
     aExpand += rStr;
 
-    // 7773: sinnvolle Massnahme: ein Blank Abstand zum Text
+    // One blank distance to the text
     aExpand += " ";
     SetWhichPor( POR_ERGOSUM );
 }
@@ -1461,7 +1477,7 @@ bool SwErgoSumPortion::Format( SwTxtFormatInfo &rInf )
     SetLen( 0 );
     rInf.SetErgoDone( true );
 
-    // 8317: keine mehrzeiligen Felder bei QuoVadis und ErgoSum
+    // No multiline Fields for QuoVadis and ErgoSum
     if( bFull && rInf.GetRest() )
     {
         delete rInf.GetRest();
@@ -1492,7 +1508,9 @@ void SwParaPortion::SetErgoSumNum( const OUString& rErgo )
         pQuo->SetNumber( rErgo );
 }
 
-// Wird im SwTxtFrm::Prepare() gerufen
+/**
+ * Is called in SwTxtFrm::Prepare()
+ */
 bool SwParaPortion::UpdateQuoVadis( const OUString &rQuo )
 {
     SwLineLayout *pLay = this;


More information about the Libreoffice-commits mailing list