LCOV - code coverage report
Current view: top level - editeng/source/uno - unoforou.cxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 143 245 58.4 %
Date: 2012-08-25 Functions: 30 55 54.5 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 56 166 33.7 %

           Branch data     Line data    Source code
       1                 :            : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2                 :            : /*************************************************************************
       3                 :            :  *
       4                 :            :  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
       5                 :            :  *
       6                 :            :  * Copyright 2000, 2010 Oracle and/or its affiliates.
       7                 :            :  *
       8                 :            :  * OpenOffice.org - a multi-platform office productivity suite
       9                 :            :  *
      10                 :            :  * This file is part of OpenOffice.org.
      11                 :            :  *
      12                 :            :  * OpenOffice.org is free software: you can redistribute it and/or modify
      13                 :            :  * it under the terms of the GNU Lesser General Public License version 3
      14                 :            :  * only, as published by the Free Software Foundation.
      15                 :            :  *
      16                 :            :  * OpenOffice.org is distributed in the hope that it will be useful,
      17                 :            :  * but WITHOUT ANY WARRANTY; without even the implied warranty of
      18                 :            :  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      19                 :            :  * GNU Lesser General Public License version 3 for more details
      20                 :            :  * (a copy is included in the LICENSE file that accompanied this code).
      21                 :            :  *
      22                 :            :  * You should have received a copy of the GNU Lesser General Public License
      23                 :            :  * version 3 along with OpenOffice.org.  If not, see
      24                 :            :  * <http://www.openoffice.org/license.html>
      25                 :            :  * for a copy of the LGPLv3 License.
      26                 :            :  *
      27                 :            :  ************************************************************************/
      28                 :            : 
      29                 :            : 
      30                 :            : #include <algorithm>
      31                 :            : #include <svl/style.hxx>
      32                 :            : #include <com/sun/star/i18n/WordType.hpp>
      33                 :            : 
      34                 :            : #include <svl/itemset.hxx>
      35                 :            : #include <editeng/editeng.hxx>
      36                 :            : #include <editeng/editdata.hxx>
      37                 :            : #include <editeng/outliner.hxx>
      38                 :            : #include <editeng/unoedhlp.hxx>
      39                 :            : #include <svl/poolitem.hxx>
      40                 :            : #include <vcl/wrkwin.hxx>
      41                 :            : #include <editeng/eeitem.hxx>
      42                 :            : 
      43                 :            : #include <editeng/unoforou.hxx>
      44                 :            : #include <editeng/unofored.hxx>
      45                 :            : #include <editeng/outlobj.hxx>
      46                 :            : 
      47                 :            : using namespace ::com::sun::star;
      48                 :            : 
      49                 :            : //------------------------------------------------------------------------
      50                 :            : 
      51                 :      23125 : SvxOutlinerForwarder::SvxOutlinerForwarder( Outliner& rOutl, sal_Bool bOutlText /* = sal_False */ ) :
      52                 :            :     rOutliner( rOutl ),
      53                 :            :     bOutlinerText( bOutlText ),
      54                 :            :     mpAttribsCache( NULL ),
      55                 :            :     mpParaAttribsCache( NULL ),
      56                 :      23125 :     mnParaAttribsCache( 0 )
      57                 :            : {
      58                 :      23125 : }
      59                 :            : 
      60                 :      23125 : SvxOutlinerForwarder::~SvxOutlinerForwarder()
      61                 :            : {
      62         [ +  - ]:      23125 :     flushCache();
      63         [ -  + ]:      46250 : }
      64                 :            : 
      65                 :     144864 : sal_uInt16 SvxOutlinerForwarder::GetParagraphCount() const
      66                 :            : {
      67                 :     144864 :     return (sal_uInt16)rOutliner.GetParagraphCount();
      68                 :            : }
      69                 :            : 
      70                 :     332432 : sal_uInt16 SvxOutlinerForwarder::GetTextLen( sal_uInt16 nParagraph ) const
      71                 :            : {
      72                 :     332432 :     return rOutliner.GetEditEngine().GetTextLen( nParagraph );
      73                 :            : }
      74                 :            : 
      75                 :        334 : String SvxOutlinerForwarder::GetText( const ESelection& rSel ) const
      76                 :            : {
      77                 :            :     //! GetText (ESelection) should probably also be in the Outliner
      78                 :            :     // in the time beeing use as the hack for the EditEngine:
      79                 :        334 :     EditEngine* pEditEngine = (EditEngine*)&rOutliner.GetEditEngine();
      80                 :        334 :     return pEditEngine->GetText( rSel, LINEEND_LF );
      81                 :            : }
      82                 :            : 
      83                 :       1350 : static SfxItemSet ImplOutlinerForwarderGetAttribs( const ESelection& rSel, sal_Bool bOnlyHardAttrib, EditEngine& rEditEngine )
      84                 :            : {
      85         [ +  + ]:       1350 :     if( rSel.nStartPara == rSel.nEndPara )
      86                 :            :     {
      87                 :       1050 :         sal_uInt8 nFlags = 0;
      88                 :            : 
      89   [ +  -  +  - ]:       1050 :         switch( bOnlyHardAttrib )
      90                 :            :         {
      91                 :            :         case EditEngineAttribs_All:
      92                 :        949 :             nFlags = GETATTRIBS_ALL;
      93                 :        949 :             break;
      94                 :            :         case EditEngineAttribs_HardAndPara:
      95                 :          0 :             nFlags = GETATTRIBS_PARAATTRIBS|GETATTRIBS_CHARATTRIBS;
      96                 :          0 :             break;
      97                 :            :         case EditEngineAttribs_OnlyHard:
      98                 :        101 :             nFlags = GETATTRIBS_CHARATTRIBS;
      99                 :        101 :             break;
     100                 :            :         default:
     101                 :            :             OSL_FAIL("unknown flags for SvxOutlinerForwarder::GetAttribs");
     102                 :            :         }
     103                 :       1050 :         return rEditEngine.GetAttribs( rSel.nStartPara, rSel.nStartPos, rSel.nEndPos, nFlags );
     104                 :            :     }
     105                 :            :     else
     106                 :            :     {
     107                 :       1350 :         return rEditEngine.GetAttribs( rSel, bOnlyHardAttrib );
     108                 :            :     }
     109                 :            : }
     110                 :            : 
     111                 :       2385 : SfxItemSet SvxOutlinerForwarder::GetAttribs( const ESelection& rSel, sal_Bool bOnlyHardAttrib ) const
     112                 :            : {
     113 [ +  + ][ +  + ]:       2385 :     if( mpAttribsCache && ( 0 == bOnlyHardAttrib ) )
     114                 :            :     {
     115                 :            :         // have we the correct set in cache?
     116         [ +  - ]:       1035 :         if( ((SvxOutlinerForwarder*)this)->maAttribCacheSelection.IsEqual(rSel) )
     117                 :            :         {
     118                 :            :             // yes! just return the cache
     119         [ +  - ]:       1035 :             return *mpAttribsCache;
     120                 :            :         }
     121                 :            :         else
     122                 :            :         {
     123                 :            :             // no, we need delete the old cache
     124 [ #  # ][ #  # ]:          0 :             delete mpAttribsCache;
     125                 :          0 :             mpAttribsCache = NULL;
     126                 :            :         }
     127                 :            :     }
     128                 :            : 
     129                 :            :     //! Does it not exist on the Outliner?
     130                 :            :     //! and why is the GetAttribs on the EditEngine not a const?
     131                 :       1350 :     EditEngine& rEditEngine = (EditEngine&)rOutliner.GetEditEngine();
     132                 :            : 
     133         [ +  - ]:       1350 :     SfxItemSet aSet( ImplOutlinerForwarderGetAttribs( rSel, bOnlyHardAttrib, rEditEngine ) );
     134                 :            : 
     135         [ +  + ]:       1350 :     if( 0 == bOnlyHardAttrib )
     136                 :            :     {
     137 [ +  - ][ +  - ]:       1249 :         mpAttribsCache = new SfxItemSet( aSet );
     138                 :       1249 :         maAttribCacheSelection = rSel;
     139                 :            :     }
     140                 :            : 
     141         [ +  - ]:       1350 :     SfxStyleSheet* pStyle = rEditEngine.GetStyleSheet( rSel.nStartPara );
     142         [ +  + ]:       1350 :     if( pStyle )
     143         [ +  - ]:       1265 :         aSet.SetParent( &(pStyle->GetItemSet() ) );
     144                 :            : 
     145 [ +  - ][ +  - ]:       2385 :     return aSet;
     146                 :            : }
     147                 :            : 
     148                 :       2288 : SfxItemSet SvxOutlinerForwarder::GetParaAttribs( sal_uInt16 nPara ) const
     149                 :            : {
     150         [ +  + ]:       2288 :     if( mpParaAttribsCache )
     151                 :            :     {
     152                 :            :         // have we the correct set in cache?
     153         [ +  - ]:        997 :         if( nPara == mnParaAttribsCache )
     154                 :            :         {
     155                 :            :             // yes! just return the cache
     156                 :        997 :             return *mpParaAttribsCache;
     157                 :            :         }
     158                 :            :         else
     159                 :            :         {
     160                 :            :             // no, we need delete the old cache
     161         [ #  # ]:          0 :             delete mpParaAttribsCache;
     162                 :          0 :             mpParaAttribsCache = NULL;
     163                 :            :         }
     164                 :            :     }
     165                 :            : 
     166         [ +  - ]:       1291 :     mpParaAttribsCache = new SfxItemSet( rOutliner.GetParaAttribs( nPara ) );
     167                 :       1291 :     mnParaAttribsCache = nPara;
     168                 :            : 
     169                 :       1291 :     EditEngine& rEditEngine = (EditEngine&)rOutliner.GetEditEngine();
     170                 :            : 
     171                 :       1291 :     SfxStyleSheet* pStyle = rEditEngine.GetStyleSheet( nPara );
     172         [ +  + ]:       1291 :     if( pStyle )
     173                 :       1200 :         mpParaAttribsCache->SetParent( &(pStyle->GetItemSet() ) );
     174                 :            : 
     175                 :       2288 :     return *mpParaAttribsCache;
     176                 :            : }
     177                 :            : 
     178                 :       1179 : void SvxOutlinerForwarder::SetParaAttribs( sal_uInt16 nPara, const SfxItemSet& rSet )
     179                 :            : {
     180                 :       1179 :     flushCache();
     181                 :            : 
     182                 :       1179 :     const SfxItemSet* pOldParent = rSet.GetParent();
     183         [ +  + ]:       1179 :     if( pOldParent )
     184                 :       1104 :         ((SfxItemSet*)&rSet)->SetParent( NULL );
     185                 :            : 
     186                 :       1179 :     rOutliner.SetParaAttribs( nPara, rSet );
     187                 :            : 
     188         [ +  + ]:       1179 :     if( pOldParent )
     189                 :       1104 :         ((SfxItemSet*)&rSet)->SetParent( pOldParent );
     190                 :       1179 : }
     191                 :            : 
     192                 :         12 : void SvxOutlinerForwarder::RemoveAttribs( const ESelection& rSelection, sal_Bool bRemoveParaAttribs, sal_uInt16 nWhich )
     193                 :            : {
     194                 :         12 :     rOutliner.RemoveAttribs( rSelection, bRemoveParaAttribs, nWhich );
     195                 :         12 : }
     196                 :            : 
     197                 :         12 : SfxItemPool* SvxOutlinerForwarder::GetPool() const
     198                 :            : {
     199                 :         12 :     return rOutliner.GetEmptyItemSet().GetPool();
     200                 :            : }
     201                 :            : 
     202                 :        109 : void SvxOutlinerForwarder::GetPortions( sal_uInt16 nPara, std::vector<sal_uInt16>& rList ) const
     203                 :            : {
     204                 :        109 :     ((EditEngine&)rOutliner.GetEditEngine()).GetPortions( nPara, rList );
     205                 :        109 : }
     206                 :            : 
     207                 :      23345 : void SvxOutlinerForwarder::QuickInsertText( const String& rText, const ESelection& rSel )
     208                 :            : {
     209                 :      23345 :     flushCache();
     210         [ +  + ]:      23345 :     if( rText.Len() == 0 )
     211                 :            :     {
     212                 :        451 :         rOutliner.QuickDelete( rSel );
     213                 :            :     }
     214                 :            :     else
     215                 :            :     {
     216                 :      22894 :         rOutliner.QuickInsertText( rText, rSel );
     217                 :            :     }
     218                 :      23345 : }
     219                 :            : 
     220                 :          8 : void SvxOutlinerForwarder::QuickInsertLineBreak( const ESelection& rSel )
     221                 :            : {
     222                 :          8 :     flushCache();
     223                 :          8 :     rOutliner.QuickInsertLineBreak( rSel );
     224                 :          8 : }
     225                 :            : 
     226                 :         75 : void SvxOutlinerForwarder::QuickInsertField( const SvxFieldItem& rFld, const ESelection& rSel )
     227                 :            : {
     228                 :         75 :     flushCache();
     229                 :         75 :     rOutliner.QuickInsertField( rFld, rSel );
     230                 :         75 : }
     231                 :            : 
     232                 :        618 : void SvxOutlinerForwarder::QuickSetAttribs( const SfxItemSet& rSet, const ESelection& rSel )
     233                 :            : {
     234                 :        618 :     flushCache();
     235                 :        618 :     rOutliner.QuickSetAttribs( rSet, rSel );
     236                 :        618 : }
     237                 :            : 
     238                 :         88 : XubString SvxOutlinerForwarder::CalcFieldValue( const SvxFieldItem& rField, sal_uInt16 nPara, sal_uInt16 nPos, Color*& rpTxtColor, Color*& rpFldColor )
     239                 :            : {
     240                 :         88 :     return rOutliner.CalcFieldValue( rField, nPara, nPos, rpTxtColor, rpFldColor );
     241                 :            : }
     242                 :            : 
     243                 :          0 : void SvxOutlinerForwarder::FieldClicked( const SvxFieldItem& rField, sal_uInt16 nPara, xub_StrLen nPos )
     244                 :            : {
     245                 :          0 :     rOutliner.FieldClicked( rField, nPara, nPos );
     246                 :          0 : }
     247                 :            : 
     248                 :          0 : sal_Bool SvxOutlinerForwarder::IsValid() const
     249                 :            : {
     250                 :            :     // cannot reliably query outliner state
     251                 :            :     // while in the middle of an update
     252                 :          0 :     return rOutliner.GetUpdateMode();
     253                 :            : }
     254                 :            : 
     255                 :            : extern sal_uInt16 GetSvxEditEngineItemState( EditEngine& rEditEngine, const ESelection& rSel, sal_uInt16 nWhich );
     256                 :            : 
     257                 :          4 : sal_uInt16 SvxOutlinerForwarder::GetItemState( const ESelection& rSel, sal_uInt16 nWhich ) const
     258                 :            : {
     259                 :          4 :     return GetSvxEditEngineItemState( (EditEngine&)rOutliner.GetEditEngine(), rSel, nWhich );
     260                 :            : }
     261                 :            : 
     262                 :          2 : sal_uInt16 SvxOutlinerForwarder::GetItemState( sal_uInt16 nPara, sal_uInt16 nWhich ) const
     263                 :            : {
     264                 :          2 :     const SfxItemSet& rSet = rOutliner.GetParaAttribs( nPara );
     265         [ +  - ]:          2 :     return rSet.GetItemState( nWhich );
     266                 :            : }
     267                 :            : 
     268                 :            : 
     269                 :      71451 : void SvxOutlinerForwarder::flushCache()
     270                 :            : {
     271         [ +  + ]:      71451 :     if( mpAttribsCache )
     272                 :            :     {
     273         [ +  - ]:       1249 :         delete mpAttribsCache;
     274                 :       1249 :         mpAttribsCache = NULL;
     275                 :            :     }
     276                 :            : 
     277         [ +  + ]:      71451 :     if( mpParaAttribsCache )
     278                 :            :     {
     279         [ +  - ]:       1291 :         delete mpParaAttribsCache;
     280                 :       1291 :         mpParaAttribsCache = NULL;
     281                 :            :     }
     282                 :      71451 : }
     283                 :            : 
     284                 :          0 : LanguageType SvxOutlinerForwarder::GetLanguage( sal_uInt16 nPara, sal_uInt16 nIndex ) const
     285                 :            : {
     286                 :          0 :     return rOutliner.GetLanguage(nPara, nIndex);
     287                 :            : }
     288                 :            : 
     289                 :          0 : sal_uInt16 SvxOutlinerForwarder::GetFieldCount( sal_uInt16 nPara ) const
     290                 :            : {
     291                 :          0 :     return rOutliner.GetEditEngine().GetFieldCount(nPara);
     292                 :            : }
     293                 :            : 
     294                 :          0 : EFieldInfo SvxOutlinerForwarder::GetFieldInfo( sal_uInt16 nPara, sal_uInt16 nField ) const
     295                 :            : {
     296                 :          0 :     return rOutliner.GetEditEngine().GetFieldInfo( nPara, nField );
     297                 :            : }
     298                 :            : 
     299                 :          0 : EBulletInfo SvxOutlinerForwarder::GetBulletInfo( sal_uInt16 nPara ) const
     300                 :            : {
     301                 :          0 :     return rOutliner.GetBulletInfo( nPara );
     302                 :            : }
     303                 :            : 
     304                 :          0 : Rectangle SvxOutlinerForwarder::GetCharBounds( sal_uInt16 nPara, sal_uInt16 nIndex ) const
     305                 :            : {
     306                 :            :     // EditEngine's 'internal' methods like GetCharacterBounds()
     307                 :            :     // don't rotate for vertical text.
     308         [ #  # ]:          0 :     Size aSize( rOutliner.CalcTextSize() );
     309                 :          0 :     ::std::swap( aSize.Width(), aSize.Height() );
     310         [ #  # ]:          0 :     bool bIsVertical( rOutliner.IsVertical() == sal_True );
     311                 :            : 
     312                 :            :     // #108900# Handle virtual position one-past-the end of the string
     313 [ #  # ][ #  # ]:          0 :     if( nIndex >= GetTextLen(nPara) )
     314                 :            :     {
     315         [ #  # ]:          0 :         Rectangle aLast;
     316                 :            : 
     317         [ #  # ]:          0 :         if( nIndex )
     318                 :            :         {
     319                 :            :             // use last character, if possible
     320         [ #  # ]:          0 :             aLast = rOutliner.GetEditEngine().GetCharacterBounds( EPosition(nPara, nIndex-1) );
     321                 :            : 
     322                 :            :             // move at end of this last character, make one pixel wide
     323         [ #  # ]:          0 :             aLast.Move( aLast.Right() - aLast.Left(), 0 );
     324 [ #  # ][ #  # ]:          0 :             aLast.SetSize( Size(1, aLast.GetHeight()) );
     325                 :            : 
     326                 :            :             // take care for CTL
     327         [ #  # ]:          0 :             aLast = SvxEditSourceHelper::EEToUserSpace( aLast, aSize, bIsVertical );
     328                 :            :         }
     329                 :            :         else
     330                 :            :         {
     331                 :            :             // #109864# Bounds must lie within the paragraph
     332         [ #  # ]:          0 :             aLast = GetParaBounds( nPara );
     333                 :            : 
     334                 :            :             // #109151# Don't use paragraph height, but line height
     335                 :            :             // instead. aLast is already CTL-correct
     336         [ #  # ]:          0 :             if( bIsVertical)
     337 [ #  # ][ #  # ]:          0 :                 aLast.SetSize( Size( rOutliner.GetLineHeight(nPara,0), 1 ) );
     338                 :            :             else
     339 [ #  # ][ #  # ]:          0 :                 aLast.SetSize( Size( 1, rOutliner.GetLineHeight(nPara,0) ) );
     340                 :            :         }
     341                 :            : 
     342                 :          0 :         return aLast;
     343                 :            :     }
     344                 :            :     else
     345                 :            :     {
     346                 :          0 :         return SvxEditSourceHelper::EEToUserSpace( rOutliner.GetEditEngine().GetCharacterBounds( EPosition(nPara, nIndex) ),
     347 [ #  # ][ #  # ]:          0 :                                                    aSize, bIsVertical );
     348                 :            :     }
     349                 :            : }
     350                 :            : 
     351                 :          0 : Rectangle SvxOutlinerForwarder::GetParaBounds( sal_uInt16 nPara ) const
     352                 :            : {
     353         [ #  # ]:          0 :     Point aPnt = rOutliner.GetDocPosTopLeft( nPara );
     354         [ #  # ]:          0 :     Size aSize = rOutliner.CalcTextSize();
     355                 :            : 
     356 [ #  # ][ #  # ]:          0 :     if( rOutliner.IsVertical() )
     357                 :            :     {
     358                 :            :         // Hargl. Outliner's 'external' methods return the rotated
     359                 :            :         // dimensions, 'internal' methods like GetTextHeight( n )
     360                 :            :         // don't rotate.
     361         [ #  # ]:          0 :         sal_uLong nWidth = rOutliner.GetTextHeight( nPara );
     362                 :            : 
     363         [ #  # ]:          0 :         return Rectangle( aSize.Width() - aPnt.Y() - nWidth, 0, aSize.Width() - aPnt.Y(), aSize.Height() );
     364                 :            :     }
     365                 :            :     else
     366                 :            :     {
     367         [ #  # ]:          0 :         sal_uLong nHeight = rOutliner.GetTextHeight( nPara );
     368                 :            : 
     369         [ #  # ]:          0 :         return Rectangle( 0, aPnt.Y(), aSize.Width(), aPnt.Y() + nHeight );
     370                 :            :     }
     371                 :            : }
     372                 :            : 
     373                 :          0 : MapMode SvxOutlinerForwarder::GetMapMode() const
     374                 :            : {
     375                 :          0 :     return rOutliner.GetRefMapMode();
     376                 :            : }
     377                 :            : 
     378                 :          0 : OutputDevice* SvxOutlinerForwarder::GetRefDevice() const
     379                 :            : {
     380                 :          0 :     return rOutliner.GetRefDevice();
     381                 :            : }
     382                 :            : 
     383                 :          0 : sal_Bool SvxOutlinerForwarder::GetIndexAtPoint( const Point& rPos, sal_uInt16& nPara, sal_uInt16& nIndex ) const
     384                 :            : {
     385         [ #  # ]:          0 :     Size aSize( rOutliner.CalcTextSize() );
     386                 :          0 :     ::std::swap( aSize.Width(), aSize.Height() );
     387                 :            :     Point aEEPos( SvxEditSourceHelper::UserSpaceToEE( rPos,
     388                 :            :                                                       aSize,
     389 [ #  # ][ #  # ]:          0 :                                                       rOutliner.IsVertical() == sal_True ));
     390                 :            : 
     391         [ #  # ]:          0 :     EPosition aDocPos = rOutliner.GetEditEngine().FindDocPosition( aEEPos );
     392                 :            : 
     393                 :          0 :     nPara = aDocPos.nPara;
     394                 :          0 :     nIndex = aDocPos.nIndex;
     395                 :            : 
     396                 :          0 :     return sal_True;
     397                 :            : }
     398                 :            : 
     399                 :          0 : sal_Bool SvxOutlinerForwarder::GetWordIndices( sal_uInt16 nPara, sal_uInt16 nIndex, sal_uInt16& nStart, sal_uInt16& nEnd ) const
     400                 :            : {
     401         [ #  # ]:          0 :     ESelection aRes = rOutliner.GetEditEngine().GetWord( ESelection(nPara, nIndex, nPara, nIndex), com::sun::star::i18n::WordType::DICTIONARY_WORD );
     402                 :            : 
     403 [ #  # ][ #  # ]:          0 :     if( aRes.nStartPara == nPara &&
     404                 :            :         aRes.nStartPara == aRes.nEndPara )
     405                 :            :     {
     406                 :          0 :         nStart = aRes.nStartPos;
     407                 :          0 :         nEnd = aRes.nEndPos;
     408                 :            : 
     409                 :          0 :         return sal_True;
     410                 :            :     }
     411                 :            : 
     412                 :          0 :     return sal_False;
     413                 :            : }
     414                 :            : 
     415                 :          0 : sal_Bool SvxOutlinerForwarder::GetAttributeRun( sal_uInt16& nStartIndex, sal_uInt16& nEndIndex, sal_uInt16 nPara, sal_uInt16 nIndex ) const
     416                 :            : {
     417                 :          0 :     return SvxEditSourceHelper::GetAttributeRun( nStartIndex, nEndIndex, rOutliner.GetEditEngine(), nPara, nIndex );
     418                 :            : }
     419                 :            : 
     420                 :          0 : sal_uInt16 SvxOutlinerForwarder::GetLineCount( sal_uInt16 nPara ) const
     421                 :            : {
     422                 :          0 :     return static_cast < sal_uInt16 >( rOutliner.GetLineCount(nPara) );
     423                 :            : }
     424                 :            : 
     425                 :          0 : sal_uInt16 SvxOutlinerForwarder::GetLineLen( sal_uInt16 nPara, sal_uInt16 nLine ) const
     426                 :            : {
     427                 :          0 :     return rOutliner.GetLineLen(nPara, nLine);
     428                 :            : }
     429                 :            : 
     430                 :          0 : void SvxOutlinerForwarder::GetLineBoundaries( /*out*/sal_uInt16 &rStart, /*out*/sal_uInt16 &rEnd, sal_uInt16 nPara, sal_uInt16 nLine ) const
     431                 :            : {
     432                 :          0 :     return rOutliner.GetEditEngine().GetLineBoundaries( rStart, rEnd, nPara, nLine );
     433                 :            : }
     434                 :            : 
     435                 :          0 : sal_uInt16 SvxOutlinerForwarder::GetLineNumberAtIndex( sal_uInt16 nPara, sal_uInt16 nIndex ) const
     436                 :            : {
     437                 :          0 :     return rOutliner.GetEditEngine().GetLineNumberAtIndex( nPara, nIndex );
     438                 :            : }
     439                 :            : 
     440                 :          0 : sal_Bool SvxOutlinerForwarder::QuickFormatDoc( sal_Bool )
     441                 :            : {
     442                 :          0 :     rOutliner.QuickFormatDoc();
     443                 :            : 
     444                 :          0 :     return sal_True;
     445                 :            : }
     446                 :            : 
     447                 :          0 : sal_Bool SvxOutlinerForwarder::Delete( const ESelection& rSelection )
     448                 :            : {
     449                 :          0 :     flushCache();
     450                 :          0 :     rOutliner.QuickDelete( rSelection );
     451                 :          0 :     rOutliner.QuickFormatDoc();
     452                 :            : 
     453                 :          0 :     return sal_True;
     454                 :            : }
     455                 :            : 
     456                 :          0 : sal_Bool SvxOutlinerForwarder::InsertText( const String& rStr, const ESelection& rSelection )
     457                 :            : {
     458                 :          0 :     flushCache();
     459                 :          0 :     rOutliner.QuickInsertText( rStr, rSelection );
     460                 :          0 :     rOutliner.QuickFormatDoc();
     461                 :            : 
     462                 :          0 :     return sal_True;
     463                 :            : }
     464                 :            : 
     465                 :         51 : sal_Int16 SvxOutlinerForwarder::GetDepth( sal_uInt16 nPara ) const
     466                 :            : {
     467                 :            :     DBG_ASSERT( nPara < GetParagraphCount(), "SvxOutlinerForwarder::GetDepth: Invalid paragraph index");
     468                 :            : 
     469                 :         51 :     Paragraph* pPara = rOutliner.GetParagraph( nPara );
     470                 :            : 
     471                 :         51 :     sal_Int16 nLevel = -1;
     472                 :            : 
     473         [ +  - ]:         51 :     if( pPara )
     474                 :         51 :         nLevel = rOutliner.GetDepth( nPara );
     475                 :            : 
     476                 :         51 :     return nLevel;
     477                 :            : }
     478                 :            : 
     479                 :        150 : sal_Bool SvxOutlinerForwarder::SetDepth( sal_uInt16 nPara, sal_Int16 nNewDepth )
     480                 :            : {
     481                 :            :     DBG_ASSERT( nPara < GetParagraphCount(), "SvxOutlinerForwarder::SetDepth: Invalid paragraph index");
     482                 :            : 
     483 [ +  - ][ +  - ]:        150 :     if( (nNewDepth >= -1) && (nNewDepth <= 9) && (nPara < GetParagraphCount()) )
         [ +  - ][ +  - ]
     484                 :            :     {
     485                 :        150 :         Paragraph* pPara = rOutliner.GetParagraph( nPara );
     486         [ +  - ]:        150 :         if( pPara )
     487                 :            :         {
     488                 :        150 :             rOutliner.SetDepth( pPara, nNewDepth );
     489                 :            : 
     490                 :            : //          const bool bOutlinerText = pSdrObject && (pSdrObject->GetObjInventor() == SdrInventor) && (pSdrObject->GetObjIdentifier() == OBJ_OUTLINETEXT);
     491         [ +  + ]:        150 :             if( bOutlinerText )
     492                 :          9 :                 rOutliner.SetLevelDependendStyleSheet( nPara );
     493                 :            : 
     494                 :        150 :             return sal_True;
     495                 :            :         }
     496                 :            :     }
     497                 :            : 
     498                 :        150 :     return sal_False;
     499                 :            : }
     500                 :            : 
     501                 :         20 : sal_Int16 SvxOutlinerForwarder::GetNumberingStartValue( sal_uInt16 nPara )
     502                 :            : {
     503         [ +  - ]:         20 :     if( nPara < GetParagraphCount() )
     504                 :            :     {
     505                 :         20 :         return rOutliner.GetNumberingStartValue( nPara );
     506                 :            :     }
     507                 :            :     else
     508                 :            :     {
     509                 :            :         OSL_FAIL( "SvxOutlinerForwarder::GetNumberingStartValue)(), Invalid paragraph index");
     510                 :         20 :         return -1;
     511                 :            :     }
     512                 :            : }
     513                 :            : 
     514                 :          8 : void SvxOutlinerForwarder::SetNumberingStartValue(  sal_uInt16 nPara, sal_Int16 nNumberingStartValue )
     515                 :            : {
     516         [ +  - ]:          8 :     if( nPara < GetParagraphCount() )
     517                 :            :     {
     518                 :          8 :         rOutliner.SetNumberingStartValue( nPara, nNumberingStartValue );
     519                 :            :     }
     520                 :            :     else
     521                 :            :     {
     522                 :            :         OSL_FAIL( "SvxOutlinerForwarder::SetNumberingStartValue)(), Invalid paragraph index");
     523                 :            :     }
     524                 :          8 : }
     525                 :            : 
     526                 :         20 : sal_Bool SvxOutlinerForwarder::IsParaIsNumberingRestart( sal_uInt16 nPara )
     527                 :            : {
     528         [ +  - ]:         20 :     if( nPara < GetParagraphCount() )
     529                 :            :     {
     530                 :         20 :         return rOutliner.IsParaIsNumberingRestart( nPara );
     531                 :            :     }
     532                 :            :     else
     533                 :            :     {
     534                 :            :         OSL_FAIL( "SvxOutlinerForwarder::IsParaIsNumberingRestart)(), Invalid paragraph index");
     535                 :         20 :         return sal_False;
     536                 :            :     }
     537                 :            : }
     538                 :            : 
     539                 :          8 : void SvxOutlinerForwarder::SetParaIsNumberingRestart(  sal_uInt16 nPara, sal_Bool bParaIsNumberingRestart )
     540                 :            : {
     541         [ +  - ]:          8 :     if( nPara < GetParagraphCount() )
     542                 :            :     {
     543                 :          8 :         rOutliner.SetParaIsNumberingRestart( nPara, bParaIsNumberingRestart );
     544                 :            :     }
     545                 :            :     else
     546                 :            :     {
     547                 :            :         OSL_FAIL( "SvxOutlinerForwarder::SetParaIsNumberingRestart)(), Invalid paragraph index");
     548                 :            :     }
     549                 :          8 : }
     550                 :            : 
     551                 :         24 : const SfxItemSet * SvxOutlinerForwarder::GetEmptyItemSetPtr()
     552                 :            : {
     553                 :         24 :     EditEngine& rEditEngine = const_cast< EditEngine& >( rOutliner.GetEditEngine() );
     554                 :         24 :     return &rEditEngine.GetEmptyItemSet();
     555                 :            : }
     556                 :            : 
     557                 :         12 : void SvxOutlinerForwarder::AppendParagraph()
     558                 :            : {
     559                 :         12 :     EditEngine& rEditEngine = const_cast< EditEngine& >( rOutliner.GetEditEngine() );
     560                 :         12 :     rEditEngine.InsertParagraph( rEditEngine.GetParagraphCount(), String::EmptyString() );
     561                 :         12 : }
     562                 :            : 
     563                 :         12 : xub_StrLen SvxOutlinerForwarder::AppendTextPortion( sal_uInt16 nPara, const String &rText, const SfxItemSet & /*rSet*/ )
     564                 :            : {
     565                 :         12 :     xub_StrLen nLen = 0;
     566                 :            : 
     567                 :         12 :     EditEngine& rEditEngine = const_cast< EditEngine& >( rOutliner.GetEditEngine() );
     568                 :         12 :     sal_uInt16 nParaCount = rEditEngine.GetParagraphCount();
     569                 :            :     DBG_ASSERT( nPara < nParaCount, "paragraph index out of bounds" );
     570         [ +  - ]:         12 :     if (/*0 <= nPara && */nPara < nParaCount)
     571                 :            :     {
     572                 :         12 :         nLen = rEditEngine.GetTextLen( nPara );
     573         [ +  - ]:         12 :         rEditEngine.QuickInsertText( rText, ESelection( nPara, nLen, nPara, nLen ) );
     574                 :            :     }
     575                 :            : 
     576                 :         12 :     return nLen;
     577                 :            : }
     578                 :            : 
     579                 :          0 : void  SvxOutlinerForwarder::CopyText(const SvxTextForwarder& rSource)
     580                 :            : {
     581         [ #  # ]:          0 :     const SvxOutlinerForwarder* pSourceForwarder = dynamic_cast< const SvxOutlinerForwarder* >( &rSource );
     582         [ #  # ]:          0 :     if( !pSourceForwarder )
     583                 :          0 :         return;
     584                 :          0 :     OutlinerParaObject* pNewOutlinerParaObject = pSourceForwarder->rOutliner.CreateParaObject();
     585                 :          0 :     rOutliner.SetText( *pNewOutlinerParaObject );
     586         [ #  # ]:          0 :     delete pNewOutlinerParaObject;
     587                 :            : }
     588                 :            : 
     589                 :            : //------------------------------------------------------------------------
     590                 :            : 
     591                 :            : 
     592                 :          0 : sal_Int16 SvxTextForwarder::GetNumberingStartValue( sal_uInt16 )
     593                 :            : {
     594                 :          0 :     return -1;
     595                 :            : }
     596                 :            : 
     597                 :          0 : void SvxTextForwarder::SetNumberingStartValue( sal_uInt16, sal_Int16 )
     598                 :            : {
     599                 :          0 : }
     600                 :            : 
     601                 :          0 : sal_Bool SvxTextForwarder::IsParaIsNumberingRestart( sal_uInt16  )
     602                 :            : {
     603                 :          0 :     return sal_False;
     604                 :            : }
     605                 :            : 
     606                 :          0 : void SvxTextForwarder::SetParaIsNumberingRestart( sal_uInt16, sal_Bool )
     607                 :            : {
     608                 :          0 : }
     609                 :            : 
     610                 :            : //------------------------------------------------------------------------
     611                 :            : 
     612                 :            : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10