LCOV - code coverage report
Current view: top level - editeng/source/items - paraitem.cxx (source / functions) Hit Total Coverage
Test: commit 10e77ab3ff6f4314137acd6e2702a6e5c1ce1fae Lines: 367 699 52.5 %
Date: 2014-11-03 Functions: 105 168 62.5 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2             : /*
       3             :  * This file is part of the LibreOffice project.
       4             :  *
       5             :  * This Source Code Form is subject to the terms of the Mozilla Public
       6             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       7             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
       8             :  *
       9             :  * This file incorporates work covered by the following license notice:
      10             :  *
      11             :  *   Licensed to the Apache Software Foundation (ASF) under one or more
      12             :  *   contributor license agreements. See the NOTICE file distributed
      13             :  *   with this work for additional information regarding copyright
      14             :  *   ownership. The ASF licenses this file to you under the Apache
      15             :  *   License, Version 2.0 (the "License"); you may not use this file
      16             :  *   except in compliance with the License. You may obtain a copy of
      17             :  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
      18             :  */
      19             : 
      20             : #include <com/sun/star/style/TabStop.hpp>
      21             : #include <com/sun/star/style/LineSpacing.hpp>
      22             : #include <com/sun/star/style/LineSpacingMode.hpp>
      23             : #include <com/sun/star/uno/Sequence.hxx>
      24             : #include <comphelper/processfactory.hxx>
      25             : #include <unotools/syslocale.hxx>
      26             : #include <comphelper/types.hxx>
      27             : #include <tools/rtti.hxx>
      28             : #include <tools/mapunit.hxx>
      29             : #include <svl/itempool.hxx>
      30             : #include <svl/memberid.hrc>
      31             : #include <editeng/editrids.hrc>
      32             : #include <editeng/lspcitem.hxx>
      33             : #include <editeng/adjustitem.hxx>
      34             : #include <editeng/orphitem.hxx>
      35             : #include <editeng/widwitem.hxx>
      36             : #include <editeng/tstpitem.hxx>
      37             : #include <editeng/pmdlitem.hxx>
      38             : #include <editeng/spltitem.hxx>
      39             : #include <editeng/hyphenzoneitem.hxx>
      40             : #include <editeng/scriptspaceitem.hxx>
      41             : #include <editeng/hngpnctitem.hxx>
      42             : #include <editeng/forbiddenruleitem.hxx>
      43             : #include <editeng/paravertalignitem.hxx>
      44             : #include <editeng/pgrditem.hxx>
      45             : #include <rtl/ustring.hxx>
      46             : #include <editeng/memberids.hrc>
      47             : #include <editeng/editids.hrc>
      48             : #include <editeng/itemtype.hxx>
      49             : #include <editeng/eerdll.hxx>
      50             : #include <editeng/paperinf.hxx>
      51             : #include <vcl/svapp.hxx>
      52             : #include <algorithm>
      53             : 
      54             : using namespace ::com::sun::star;
      55             : 
      56      484311 : TYPEINIT1_FACTORY(SvxLineSpacingItem, SfxPoolItem , new SvxLineSpacingItem(LINE_SPACE_DEFAULT_HEIGHT, 0));
      57      598537 : TYPEINIT1_FACTORY(SvxAdjustItem, SfxPoolItem, new SvxAdjustItem(SVX_ADJUST_LEFT, 0));
      58       22481 : TYPEINIT1_FACTORY(SvxWidowsItem, SfxByteItem, new SvxWidowsItem(0, 0));
      59       21025 : TYPEINIT1_FACTORY(SvxOrphansItem, SfxByteItem, new SvxOrphansItem(0, 0));
      60       16343 : TYPEINIT1_FACTORY(SvxHyphenZoneItem, SfxPoolItem, new SvxHyphenZoneItem(false, 0));
      61      322223 : TYPEINIT1_FACTORY(SvxTabStopItem, SfxPoolItem, new SvxTabStopItem(0));
      62       15707 : TYPEINIT1_FACTORY(SvxFmtSplitItem, SfxBoolItem, new SvxFmtSplitItem(false, 0));
      63          88 : TYPEINIT1_FACTORY(SvxPageModelItem, SfxStringItem, new SvxPageModelItem(0));
      64      621783 : TYPEINIT1_FACTORY(SvxScriptSpaceItem, SfxBoolItem, new SvxScriptSpaceItem(false, 0));
      65       24156 : TYPEINIT1_FACTORY(SvxHangingPunctuationItem, SfxBoolItem, new SvxHangingPunctuationItem(false, 0));
      66       23997 : TYPEINIT1_FACTORY(SvxForbiddenRuleItem, SfxBoolItem, new SvxForbiddenRuleItem(false, 0));
      67       16275 : TYPEINIT1_FACTORY(SvxParaVertAlignItem, SfxUInt16Item, new SvxParaVertAlignItem(0, 0));
      68       15399 : TYPEINIT1_FACTORY(SvxParaGridItem, SfxBoolItem, new SvxParaGridItem(true, 0));
      69             : 
      70             : 
      71             : 
      72        8190 : SvxLineSpacingItem::SvxLineSpacingItem( sal_uInt16 nHeight, const sal_uInt16 nId )
      73        8190 :     : SfxEnumItemInterface( nId )
      74             : {
      75        8190 :     nPropLineSpace = 100;
      76        8190 :     nInterLineSpace = 0;
      77        8190 :     nLineHeight = nHeight;
      78        8190 :     eLineSpace = SVX_LINE_SPACE_AUTO;
      79        8190 :     eInterLineSpace = SVX_INTER_LINE_SPACE_OFF;
      80        8190 : }
      81             : 
      82             : 
      83             : 
      84      153883 : bool SvxLineSpacingItem::operator==( const SfxPoolItem& rAttr ) const
      85             : {
      86             :     DBG_ASSERT( SfxPoolItem::operator==(rAttr), "unequal types" );
      87             : 
      88      153883 :     const SvxLineSpacingItem& rLineSpace = static_cast<const SvxLineSpacingItem&>(rAttr);
      89             :     return (
      90             :         // Same Linespacing Rule?
      91      153883 :         (eLineSpace == rLineSpace.eLineSpace)
      92             :         // For maximum and minimum Linespacing be the size must coincide.
      93      154483 :         && (eLineSpace == SVX_LINE_SPACE_AUTO ||
      94       13658 :             nLineHeight == rLineSpace.nLineHeight)
      95             :         // Same Linespacing Rule?
      96      133753 :         && ( eInterLineSpace == rLineSpace.eInterLineSpace )
      97             :         // Either set proportional or additive.
      98       85069 :         && (( eInterLineSpace == SVX_INTER_LINE_SPACE_OFF)
      99       33078 :             || (eInterLineSpace == SVX_INTER_LINE_SPACE_PROP
     100       32940 :                 && nPropLineSpace == rLineSpace.nPropLineSpace)
     101       16644 :             || (eInterLineSpace == SVX_INTER_LINE_SPACE_FIX
     102         138 :                 && (nInterLineSpace == rLineSpace.nInterLineSpace)))) ?
     103      307515 :                 1 : 0;
     104             : }
     105             : 
     106             : /* Who does still know why the LineSpacingItem is so complicated?
     107             :    We can not use it for UNO since there are only two values:
     108             :       - ein sal_uInt16 for the mode
     109             :       - ein sal_uInt32 for all values (distance, height, rel. detail)
     110             : */
     111       37568 : bool SvxLineSpacingItem::QueryValue( uno::Any& rVal, sal_uInt8 nMemberId ) const
     112             : {
     113       37568 :     bool bConvert = 0!=(nMemberId&CONVERT_TWIPS);
     114       37568 :     nMemberId &= ~CONVERT_TWIPS;
     115             : 
     116       37568 :     style::LineSpacing aLSp;
     117       37568 :     switch( eLineSpace )
     118             :     {
     119             :         case SVX_LINE_SPACE_AUTO:
     120       34968 :             if(eInterLineSpace == SVX_INTER_LINE_SPACE_FIX)
     121             :             {
     122          50 :                 aLSp.Mode = style::LineSpacingMode::LEADING;
     123          50 :                 aLSp.Height = ( bConvert ? (short)convertTwipToMm100(nInterLineSpace) : nInterLineSpace);
     124             :             }
     125       34918 :             else if(eInterLineSpace == SVX_INTER_LINE_SPACE_OFF)
     126             :             {
     127       16712 :                 aLSp.Mode = style::LineSpacingMode::PROP;
     128       16712 :                 aLSp.Height = 100;
     129             :             }
     130             :             else
     131             :             {
     132       18206 :                 aLSp.Mode = style::LineSpacingMode::PROP;
     133       18206 :                 aLSp.Height = nPropLineSpace;
     134             :             }
     135       34968 :         break;
     136             :         case SVX_LINE_SPACE_FIX :
     137             :         case SVX_LINE_SPACE_MIN :
     138        2600 :             aLSp.Mode = eLineSpace == SVX_LINE_SPACE_FIX ? style::LineSpacingMode::FIX : style::LineSpacingMode::MINIMUM;
     139        2600 :             aLSp.Height = ( bConvert ? (short)convertTwipToMm100(nLineHeight) : nLineHeight );
     140        2600 :         break;
     141             :         default:
     142             :             ;//prevent warning about SVX_LINE_SPACE_END
     143             :     }
     144             : 
     145       37568 :     switch ( nMemberId )
     146             :     {
     147       37568 :         case 0 :                rVal <<= aLSp; break;
     148           0 :         case MID_LINESPACE :    rVal <<= aLSp.Mode; break;
     149           0 :         case MID_HEIGHT :       rVal <<= aLSp.Height; break;
     150           0 :         default: OSL_FAIL("Wrong MemberId!"); break;
     151             :     }
     152             : 
     153       37568 :     return true;
     154             : }
     155             : 
     156       35718 : bool SvxLineSpacingItem::PutValue( const uno::Any& rVal, sal_uInt8 nMemberId )
     157             : {
     158       35718 :     bool bConvert = 0!=(nMemberId&CONVERT_TWIPS);
     159       35718 :     nMemberId &= ~CONVERT_TWIPS;
     160             : 
     161             :     // fill with current data
     162       35718 :     style::LineSpacing aLSp;
     163       35718 :     uno::Any aAny;
     164       35718 :     bool bRet = QueryValue( aAny, bConvert ? CONVERT_TWIPS : 0 ) && ( aAny >>= aLSp );
     165             : 
     166             :     // get new data
     167       35718 :     switch ( nMemberId )
     168             :     {
     169       35718 :         case 0 :                bRet = (rVal >>= aLSp); break;
     170           0 :         case MID_LINESPACE :    bRet = (rVal >>= aLSp.Mode); break;
     171           0 :         case MID_HEIGHT :       bRet = (rVal >>= aLSp.Height); break;
     172           0 :         default: OSL_FAIL("Wrong MemberId!"); break;
     173             :     }
     174             : 
     175       35718 :     if( bRet )
     176             :     {
     177       35718 :         nLineHeight = aLSp.Height;
     178       35718 :         switch( aLSp.Mode )
     179             :         {
     180             :             case style::LineSpacingMode::LEADING:
     181             :             {
     182          18 :                 eInterLineSpace = SVX_INTER_LINE_SPACE_FIX;
     183          18 :                 eLineSpace = SVX_LINE_SPACE_AUTO;
     184          18 :                 nInterLineSpace = aLSp.Height;
     185          18 :                 if(bConvert)
     186           6 :                     nInterLineSpace = (short)convertMm100ToTwip(nInterLineSpace);
     187             : 
     188             :             }
     189          18 :             break;
     190             :             case style::LineSpacingMode::PROP:
     191             :             {
     192       31914 :                 eLineSpace = SVX_LINE_SPACE_AUTO;
     193       31914 :                 nPropLineSpace = (sal_Int16)aLSp.Height;
     194       31914 :                 if(100 == aLSp.Height)
     195       24448 :                     eInterLineSpace = SVX_INTER_LINE_SPACE_OFF;
     196             :                 else
     197        7466 :                     eInterLineSpace = SVX_INTER_LINE_SPACE_PROP;
     198             :             }
     199       31914 :             break;
     200             :             case style::LineSpacingMode::FIX:
     201             :             case style::LineSpacingMode::MINIMUM:
     202             :             {
     203        3786 :                 eInterLineSpace =  SVX_INTER_LINE_SPACE_OFF;
     204        3786 :                 eLineSpace = aLSp.Mode == style::LineSpacingMode::FIX ? SVX_LINE_SPACE_FIX : SVX_LINE_SPACE_MIN;
     205        3786 :                 nLineHeight = aLSp.Height;
     206        3786 :                 if(bConvert)
     207        3774 :                     nLineHeight = (sal_uInt16)convertMm100ToTwip(nLineHeight);
     208             :             }
     209        3786 :             break;
     210             :         }
     211             :     }
     212             : 
     213       35718 :     return bRet;
     214             : }
     215             : 
     216             : 
     217             : 
     218       69638 : SfxPoolItem* SvxLineSpacingItem::Clone( SfxItemPool * ) const
     219             : {
     220       69638 :     return new SvxLineSpacingItem( *this );
     221             : }
     222             : 
     223             : 
     224             : 
     225           0 : bool SvxLineSpacingItem::GetPresentation
     226             : (
     227             :     SfxItemPresentation /*ePres*/,
     228             :     SfxMapUnit          /*eCoreUnit*/,
     229             :     SfxMapUnit          /*ePresUnit*/,
     230             :     OUString&           rText, const IntlWrapper *
     231             : )   const
     232             : {
     233             : #ifdef DBG_UTIL
     234             :     rText = "SvxLineSpacingItem";
     235             : #else
     236           0 :     rText = OUString();
     237             : #endif
     238           0 :     return false;
     239             : }
     240             : 
     241             : 
     242             : 
     243           0 : SfxPoolItem* SvxLineSpacingItem::Create(SvStream& rStrm, sal_uInt16) const
     244             : {
     245             :     sal_Int8    nPropSpace;
     246             :     short   nInterSpace;
     247             :     sal_uInt16  nHeight;
     248             :     sal_Int8    nRule, nInterRule;
     249             : 
     250           0 :     rStrm.ReadSChar( nPropSpace )
     251           0 :          .ReadInt16( nInterSpace )
     252           0 :          .ReadUInt16( nHeight )
     253           0 :          .ReadSChar( nRule )
     254           0 :          .ReadSChar( nInterRule );
     255             : 
     256           0 :     SvxLineSpacingItem* pAttr = new SvxLineSpacingItem( nHeight, Which() );
     257           0 :     pAttr->SetInterLineSpace( nInterSpace );
     258           0 :     pAttr->SetPropLineSpace( nPropSpace );
     259           0 :     pAttr->GetLineSpaceRule() = (SvxLineSpace)nRule;
     260           0 :     pAttr->GetInterLineSpaceRule() = (SvxInterLineSpace)nInterRule;
     261           0 :     return pAttr;
     262             : }
     263             : 
     264             : 
     265             : 
     266           8 : SvStream& SvxLineSpacingItem::Store( SvStream& rStrm, sal_uInt16 /*nItemVersion*/ ) const
     267             : {
     268           8 :     rStrm.WriteSChar(   GetPropLineSpace() )
     269          16 :          .WriteInt16(  GetInterLineSpace() )
     270          16 :          .WriteUInt16( GetLineHeight() )
     271          16 :          .WriteSChar(    GetLineSpaceRule() )
     272          16 :          .WriteSChar(    GetInterLineSpaceRule() );
     273           8 :     return rStrm;
     274             : }
     275             : 
     276             : 
     277             : 
     278           0 : sal_uInt16 SvxLineSpacingItem::GetValueCount() const
     279             : {
     280           0 :     return SVX_LINESPACE_END;   // SVX_LINESPACE_TWO_LINES + 1
     281             : }
     282             : 
     283             : 
     284             : 
     285           0 : OUString SvxLineSpacingItem::GetValueTextByPos( sal_uInt16 nPos ) const
     286             : {
     287             :     //! load strings from resource
     288           0 :     OUString aText;
     289           0 :     switch ( nPos )
     290             :     {
     291             :         case SVX_LINESPACE_USER:
     292           0 :             aText = "User";
     293           0 :             break;
     294             :         case SVX_LINESPACE_ONE_LINE:
     295           0 :             aText = "One line";
     296           0 :             break;
     297             :         case SVX_LINESPACE_ONE_POINT_FIVE_LINES:
     298           0 :             aText = "1.5 line";
     299           0 :             break;
     300             :         case SVX_LINESPACE_TWO_LINES:
     301           0 :             aText = "Two lines";
     302           0 :             break;
     303             :     }
     304           0 :     return aText;
     305             : }
     306             : 
     307             : 
     308             : 
     309           0 : sal_uInt16 SvxLineSpacingItem::GetEnumValue() const
     310             : {
     311             :     sal_uInt16 nVal;
     312           0 :     switch ( nPropLineSpace )
     313             :     {
     314           0 :         case 100:   nVal = SVX_LINESPACE_ONE_LINE;              break;
     315           0 :         case 150:   nVal = SVX_LINESPACE_ONE_POINT_FIVE_LINES;  break;
     316           0 :         case 200:   nVal = SVX_LINESPACE_TWO_LINES;             break;
     317           0 :         default:    nVal = SVX_LINESPACE_USER;                  break;
     318             :     }
     319           0 :     return nVal;
     320             : }
     321             : 
     322             : 
     323             : 
     324           0 : void SvxLineSpacingItem::SetEnumValue( sal_uInt16 nVal )
     325             : {
     326           0 :     switch ( nVal )
     327             :     {
     328           0 :         case SVX_LINESPACE_ONE_LINE:             nPropLineSpace = 100; break;
     329           0 :         case SVX_LINESPACE_ONE_POINT_FIVE_LINES: nPropLineSpace = 150; break;
     330           0 :         case SVX_LINESPACE_TWO_LINES:            nPropLineSpace = 200; break;
     331             :     }
     332           0 : }
     333             : 
     334             : // class SvxAdjustItem ---------------------------------------------------
     335             : 
     336       39721 : SvxAdjustItem::SvxAdjustItem(const SvxAdjust eAdjst, const sal_uInt16 nId )
     337             :     : SfxEnumItemInterface( nId ),
     338       39721 :     bOneBlock( false ), bLastCenter( false ), bLastBlock( false )
     339             : {
     340       39721 :     SetAdjust( eAdjst );
     341       39721 : }
     342             : 
     343             : 
     344             : 
     345      258044 : bool SvxAdjustItem::operator==( const SfxPoolItem& rAttr ) const
     346             : {
     347             :     DBG_ASSERT( SfxPoolItem::operator==(rAttr), "unequal types" );
     348             : 
     349      258044 :     const SvxAdjustItem& rItem = static_cast<const SvxAdjustItem&>(rAttr);
     350      400785 :     return GetAdjust() == rItem.GetAdjust() &&
     351      285482 :            bOneBlock == rItem.bOneBlock &&
     352      543526 :            bLastCenter == rItem.bLastCenter &&
     353      400785 :            bLastBlock == rItem.bLastBlock;
     354             : }
     355             : 
     356        2594 : bool SvxAdjustItem::QueryValue( uno::Any& rVal, sal_uInt8 nMemberId ) const
     357             : {
     358        2594 :     nMemberId &= ~CONVERT_TWIPS;
     359        2594 :     switch( nMemberId )
     360             :     {
     361        2040 :         case MID_PARA_ADJUST      : rVal <<= (sal_Int16)GetAdjust(); break;
     362         496 :         case MID_LAST_LINE_ADJUST : rVal <<= (sal_Int16)GetLastBlock(); break;
     363             :         case MID_EXPAND_SINGLE    :
     364             :         {
     365          58 :             sal_Bool bValue = bOneBlock;
     366          58 :             rVal.setValue( &bValue, ::getCppuBooleanType() );
     367          58 :             break;
     368             :         }
     369             :         default: ;//prevent warning
     370             :     }
     371        2594 :     return true;
     372             : }
     373             : 
     374       50092 : bool SvxAdjustItem::PutValue( const uno::Any& rVal, sal_uInt8 nMemberId  )
     375             : {
     376       50092 :     nMemberId &= ~CONVERT_TWIPS;
     377       50092 :     switch( nMemberId )
     378             :     {
     379             :         case MID_PARA_ADJUST              :
     380             :         case MID_LAST_LINE_ADJUST :
     381             :         {
     382       48986 :             sal_Int32 eVal = - 1;
     383             :             try
     384             :             {
     385       48986 :                 eVal = ::comphelper::getEnumAsINT32(rVal);
     386             :             }
     387           0 :             catch(...) {}
     388       48986 :             if(eVal >= 0 && eVal <= 4)
     389             :             {
     390       48986 :                 if(MID_LAST_LINE_ADJUST == nMemberId &&
     391          24 :                     eVal != SVX_ADJUST_LEFT &&
     392          20 :                     eVal != SVX_ADJUST_BLOCK &&
     393             :                     eVal != SVX_ADJUST_CENTER)
     394          20 :                         return false;
     395       48966 :                 if(eVal < (sal_uInt16)SVX_ADJUST_END)
     396             :                     nMemberId == MID_PARA_ADJUST ?
     397       32778 :                         SetAdjust((SvxAdjust)eVal) :
     398       65154 :                             SetLastBlock((SvxAdjust)eVal);
     399             :             }
     400             :         }
     401       48966 :         break;
     402             :         case MID_EXPAND_SINGLE :
     403        1106 :             bOneBlock = Any2Bool(rVal);
     404        1106 :             break;
     405             :     }
     406       50072 :     return true;
     407             : }
     408             : 
     409             : 
     410             : 
     411       71760 : SfxPoolItem* SvxAdjustItem::Clone( SfxItemPool * ) const
     412             : {
     413       71760 :     return new SvxAdjustItem( *this );
     414             : }
     415             : 
     416             : 
     417             : 
     418           0 : bool SvxAdjustItem::GetPresentation
     419             : (
     420             :     SfxItemPresentation ePres,
     421             :     SfxMapUnit          /*eCoreUnit*/,
     422             :     SfxMapUnit          /*ePresUnit*/,
     423             :     OUString&           rText, const IntlWrapper *
     424             : )   const
     425             : {
     426           0 :     switch ( ePres )
     427             :     {
     428             :         case SFX_ITEM_PRESENTATION_NAMELESS:
     429             :         case SFX_ITEM_PRESENTATION_COMPLETE:
     430           0 :             rText = GetValueTextByPos( (sal_uInt16)GetAdjust() );
     431           0 :             return true;
     432             :         default: ;//prevent warning
     433             :     }
     434           0 :     return false;
     435             : }
     436             : 
     437             : 
     438             : 
     439           0 : sal_uInt16 SvxAdjustItem::GetValueCount() const
     440             : {
     441           0 :     return SVX_ADJUST_END;  // SVX_ADJUST_BLOCKLINE + 1
     442             : }
     443             : 
     444             : 
     445             : 
     446           0 : OUString SvxAdjustItem::GetValueTextByPos( sal_uInt16 nPos ) const
     447             : {
     448             :     DBG_ASSERT( nPos <= (sal_uInt16)SVX_ADJUST_BLOCKLINE, "enum overflow!" );
     449           0 :     return EE_RESSTR(RID_SVXITEMS_ADJUST_BEGIN + nPos);
     450             : }
     451             : 
     452             : 
     453             : 
     454           0 : sal_uInt16 SvxAdjustItem::GetEnumValue() const
     455             : {
     456           0 :     return (sal_uInt16)GetAdjust();
     457             : }
     458             : 
     459             : 
     460             : 
     461           0 : void SvxAdjustItem::SetEnumValue( sal_uInt16 nVal )
     462             : {
     463           0 :     SetAdjust( (const SvxAdjust)nVal );
     464           0 : }
     465             : 
     466             : 
     467             : 
     468       22733 : sal_uInt16 SvxAdjustItem::GetVersion( sal_uInt16 nFileVersion ) const
     469             : {
     470             :     return (nFileVersion == SOFFICE_FILEFORMAT_31)
     471       22733 :                ? 0 : ADJUST_LASTBLOCK_VERSION;
     472             : }
     473             : 
     474             : 
     475             : 
     476         512 : SfxPoolItem* SvxAdjustItem::Create(SvStream& rStrm, sal_uInt16 nVersion) const
     477             : {
     478             :     char eAdjustment;
     479         512 :     rStrm.ReadChar( eAdjustment );
     480         512 :     SvxAdjustItem *pRet = new SvxAdjustItem( (SvxAdjust)eAdjustment, Which() );
     481         512 :     if( nVersion >= ADJUST_LASTBLOCK_VERSION )
     482             :     {
     483             :         sal_Int8 nFlags;
     484         512 :         rStrm.ReadSChar( nFlags );
     485         512 :         pRet->bOneBlock = 0 != (nFlags & 0x0001);
     486         512 :         pRet->bLastCenter = 0 != (nFlags & 0x0002);
     487         512 :         pRet->bLastBlock = 0 != (nFlags & 0x0004);
     488             :     }
     489         512 :     return pRet;
     490             : }
     491             : 
     492             : 
     493             : 
     494        1320 : SvStream& SvxAdjustItem::Store( SvStream& rStrm, sal_uInt16 nItemVersion ) const
     495             : {
     496        1320 :     rStrm.WriteChar( (char)GetAdjust() );
     497        1320 :     if ( nItemVersion >= ADJUST_LASTBLOCK_VERSION )
     498             :     {
     499        1320 :         sal_Int8 nFlags = 0;
     500        1320 :         if ( bOneBlock )
     501           0 :             nFlags |= 0x0001;
     502        1320 :         if ( bLastCenter )
     503           0 :             nFlags |= 0x0002;
     504        1320 :         if ( bLastBlock )
     505           0 :             nFlags |= 0x0004;
     506        1320 :         rStrm.WriteSChar(  nFlags );
     507             :     }
     508        1320 :     return rStrm;
     509             : }
     510             : 
     511             : // class SvxWidowsItem ---------------------------------------------------
     512             : 
     513         376 : SvxWidowsItem::SvxWidowsItem(const sal_uInt8 nL, const sal_uInt16 nId ) :
     514         376 :     SfxByteItem( nId, nL )
     515             : {
     516         376 : }
     517             : 
     518             : 
     519             : 
     520       11558 : SfxPoolItem* SvxWidowsItem::Clone( SfxItemPool * ) const
     521             : {
     522       11558 :     return new SvxWidowsItem( *this );
     523             : }
     524             : 
     525             : 
     526             : 
     527           0 : SfxPoolItem* SvxWidowsItem::Create(SvStream& rStrm, sal_uInt16) const
     528             : {
     529             :     sal_Int8 nLines;
     530           0 :     rStrm.ReadSChar( nLines );
     531           0 :     return new SvxWidowsItem( nLines, Which() );
     532             : }
     533             : 
     534             : 
     535             : 
     536           0 : SvStream& SvxWidowsItem::Store( SvStream& rStrm, sal_uInt16 /*nItemVersion*/ ) const
     537             : {
     538           0 :     rStrm.WriteSChar( GetValue() );
     539           0 :     return rStrm;
     540             : }
     541             : 
     542             : 
     543             : 
     544           0 : bool SvxWidowsItem::GetPresentation
     545             : (
     546             :     SfxItemPresentation ePres,
     547             :     SfxMapUnit          /*eCoreUnit*/,
     548             :     SfxMapUnit          /*ePresUnit*/,
     549             :     OUString&           rText, const IntlWrapper *
     550             : )   const
     551             : {
     552           0 :     switch ( ePres )
     553             :     {
     554             :         case SFX_ITEM_PRESENTATION_NAMELESS:
     555             :         {
     556           0 :             rText = EE_RESSTR(RID_SVXITEMS_LINES);
     557           0 :             break;
     558             :         }
     559             : 
     560             :         case SFX_ITEM_PRESENTATION_COMPLETE:
     561             :         {
     562           0 :             rText = EE_RESSTR(RID_SVXITEMS_WIDOWS_COMPLETE) + " " + EE_RESSTR(RID_SVXITEMS_LINES);
     563           0 :             break;
     564             :         }
     565             : 
     566             :         default:
     567             :         {
     568             :             SAL_WARN( "editeng.items", "SvxWidowsItem::GetPresentation(): unknown SfxItemPresentation" );
     569             :         }
     570             :     }
     571             : 
     572           0 :     rText = rText.replaceFirst( "%1", OUString::number( GetValue() ) );
     573           0 :     return true;
     574             : }
     575             : 
     576             : // class SvxOrphansItem --------------------------------------------------
     577             : 
     578         376 : SvxOrphansItem::SvxOrphansItem(const sal_uInt8 nL, const sal_uInt16 nId ) :
     579         376 :     SfxByteItem( nId, nL )
     580             : {
     581         376 : }
     582             : 
     583             : 
     584             : 
     585       11522 : SfxPoolItem* SvxOrphansItem::Clone( SfxItemPool * ) const
     586             : {
     587       11522 :     return new SvxOrphansItem( *this );
     588             : }
     589             : 
     590             : 
     591             : 
     592           0 : SfxPoolItem* SvxOrphansItem::Create(SvStream& rStrm, sal_uInt16) const
     593             : {
     594             :     sal_Int8 nLines;
     595           0 :     rStrm.ReadSChar( nLines );
     596           0 :     return new SvxOrphansItem( nLines, Which() );
     597             : }
     598             : 
     599             : 
     600             : 
     601           0 : SvStream& SvxOrphansItem::Store( SvStream& rStrm, sal_uInt16 /*nItemVersion*/ ) const
     602             : {
     603           0 :     rStrm.WriteSChar(  GetValue() );
     604           0 :     return rStrm;
     605             : }
     606             : 
     607             : 
     608             : 
     609           0 : bool SvxOrphansItem::GetPresentation
     610             : (
     611             :     SfxItemPresentation ePres,
     612             :     SfxMapUnit          /*eCoreUnit*/,
     613             :     SfxMapUnit          /*ePresUnit*/,
     614             :     OUString&           rText, const IntlWrapper *
     615             : )   const
     616             : {
     617           0 :     switch ( ePres )
     618             :     {
     619             :         case SFX_ITEM_PRESENTATION_NAMELESS:
     620             :         {
     621           0 :             rText = EE_RESSTR(RID_SVXITEMS_LINES);
     622           0 :             break;
     623             :         }
     624             : 
     625             :         case SFX_ITEM_PRESENTATION_COMPLETE:
     626             :         {
     627           0 :             rText = EE_RESSTR(RID_SVXITEMS_ORPHANS_COMPLETE) + " " + EE_RESSTR(RID_SVXITEMS_LINES);
     628           0 :             break;
     629             :         }
     630             : 
     631             :         default:
     632             :         {
     633             :             SAL_WARN( "editeng.items", "SvxOrphansItem::GetPresentation(): unknown SfxItemPresentation" );
     634             :         }
     635             :     }
     636             : 
     637           0 :     rText = rText.replaceFirst( "%1", OUString::number( GetValue() ) );
     638           0 :     return true;
     639             : }
     640             : 
     641             : // class SvxHyphenZoneItem -----------------------------------------------
     642             : 
     643          88 : SvxHyphenZoneItem::SvxHyphenZoneItem( const bool bHyph, const sal_uInt16 nId ) :
     644          88 :     SfxPoolItem( nId )
     645             : {
     646          88 :     bHyphen = bHyph;
     647          88 :     bPageEnd = true;
     648          88 :     nMinLead = nMinTrail = 0;
     649          88 :     nMaxHyphens = 255;
     650          88 : }
     651             : 
     652             : 
     653         296 : bool    SvxHyphenZoneItem::QueryValue( uno::Any& rVal, sal_uInt8 nMemberId ) const
     654             : {
     655         296 :     nMemberId &= ~CONVERT_TWIPS;
     656         296 :     switch(nMemberId)
     657             :     {
     658             :         case  MID_IS_HYPHEN:
     659          74 :             rVal = Bool2Any(bHyphen);
     660          74 :         break;
     661             :         case MID_HYPHEN_MIN_LEAD:
     662          74 :             rVal <<= (sal_Int16)nMinLead;
     663          74 :         break;
     664             :         case MID_HYPHEN_MIN_TRAIL:
     665          74 :             rVal <<= (sal_Int16)nMinTrail;
     666          74 :         break;
     667             :         case MID_HYPHEN_MAX_HYPHENS:
     668          74 :             rVal <<= (sal_Int16)nMaxHyphens;
     669          74 :         break;
     670             :     }
     671         296 :     return true;
     672             : }
     673             : 
     674        3468 : bool SvxHyphenZoneItem::PutValue( const uno::Any& rVal, sal_uInt8 nMemberId )
     675             : {
     676        3468 :     nMemberId &= ~CONVERT_TWIPS;
     677        3468 :     sal_Int16 nNewVal = 0;
     678             : 
     679        3468 :     if( nMemberId != MID_IS_HYPHEN )
     680         976 :         if(!(rVal >>= nNewVal))
     681           0 :             return false;
     682             : 
     683        3468 :     switch(nMemberId)
     684             :     {
     685             :         case  MID_IS_HYPHEN:
     686        2492 :             bHyphen = Any2Bool(rVal);
     687        2492 :         break;
     688             :         case MID_HYPHEN_MIN_LEAD:
     689         312 :             nMinLead = (sal_uInt8)nNewVal;
     690         312 :         break;
     691             :         case MID_HYPHEN_MIN_TRAIL:
     692         332 :             nMinTrail = (sal_uInt8)nNewVal;
     693         332 :         break;
     694             :         case MID_HYPHEN_MAX_HYPHENS:
     695         332 :             nMaxHyphens = (sal_uInt8)nNewVal;
     696         332 :         break;
     697             :     }
     698        3468 :     return true;
     699             : }
     700             : 
     701             : 
     702             : 
     703       14240 : bool SvxHyphenZoneItem::operator==( const SfxPoolItem& rAttr ) const
     704             : {
     705             :     DBG_ASSERT( SfxPoolItem::operator==(rAttr), "unequal types" );
     706             : 
     707       14240 :     const SvxHyphenZoneItem& rItem = static_cast<const SvxHyphenZoneItem&>(rAttr);
     708       14240 :     return ( rItem.bHyphen == bHyphen
     709       14194 :             && rItem.bPageEnd == bPageEnd
     710       14194 :             && rItem.nMinLead == nMinLead
     711        9170 :             && rItem.nMinTrail == nMinTrail
     712       23100 :             && rItem.nMaxHyphens == nMaxHyphens );
     713             : }
     714             : 
     715             : 
     716             : 
     717       22184 : SfxPoolItem* SvxHyphenZoneItem::Clone( SfxItemPool * ) const
     718             : {
     719       22184 :     return new SvxHyphenZoneItem( *this );
     720             : }
     721             : 
     722             : 
     723             : 
     724           0 : bool SvxHyphenZoneItem::GetPresentation
     725             : (
     726             :     SfxItemPresentation ePres,
     727             :     SfxMapUnit          /*eCoreUnit*/,
     728             :     SfxMapUnit          /*ePresUnit*/,
     729             :     OUString&           rText, const IntlWrapper *
     730             : )   const
     731             : {
     732           0 :     OUString cpDelimTmp(cpDelim);
     733           0 :     switch ( ePres )
     734             :     {
     735             :         case SFX_ITEM_PRESENTATION_NAMELESS:
     736             :         {
     737           0 :             sal_uInt16 nId = RID_SVXITEMS_HYPHEN_FALSE;
     738             : 
     739           0 :             if ( bHyphen )
     740           0 :                 nId = RID_SVXITEMS_HYPHEN_TRUE;
     741           0 :             rText = EE_RESSTR(nId) + cpDelimTmp;
     742           0 :             nId = RID_SVXITEMS_PAGE_END_FALSE;
     743             : 
     744           0 :             if ( bPageEnd )
     745           0 :                 nId = RID_SVXITEMS_PAGE_END_TRUE;
     746           0 :             rText = rText + EE_RESSTR(nId) + cpDelimTmp +
     747           0 :                     OUString::number( nMinLead ) + cpDelimTmp +
     748           0 :                     OUString::number( nMinTrail ) + cpDelimTmp +
     749           0 :                     OUString::number( nMaxHyphens );
     750           0 :             return true;
     751             :         }
     752             :         case SFX_ITEM_PRESENTATION_COMPLETE:
     753             :         {
     754           0 :             sal_uInt16 nId = RID_SVXITEMS_HYPHEN_FALSE;
     755             : 
     756           0 :             if ( bHyphen )
     757           0 :                 nId = RID_SVXITEMS_HYPHEN_TRUE;
     758           0 :             rText = EE_RESSTR(nId) + cpDelimTmp;
     759           0 :             nId = RID_SVXITEMS_PAGE_END_FALSE;
     760             : 
     761           0 :             if ( bPageEnd )
     762           0 :                 nId = RID_SVXITEMS_PAGE_END_TRUE;
     763           0 :             rText = rText +
     764           0 :                     EE_RESSTR(nId) +
     765           0 :                     cpDelimTmp +
     766           0 :                     EE_RESSTR(RID_SVXITEMS_HYPHEN_MINLEAD).replaceAll("%1", OUString::number(nMinLead)) +
     767           0 :                     cpDelimTmp +
     768           0 :                     EE_RESSTR(RID_SVXITEMS_HYPHEN_MINTRAIL).replaceAll("%1", OUString::number(nMinTrail)) +
     769           0 :                     cpDelimTmp +
     770           0 :                     EE_RESSTR(RID_SVXITEMS_HYPHEN_MAX).replaceAll("%1", OUString::number(nMaxHyphens));
     771           0 :             return true;
     772             :         }
     773             :         default: ;//prevent warning
     774             :     }
     775           0 :     return false;
     776             : }
     777             : 
     778             : 
     779             : 
     780           0 : SfxPoolItem* SvxHyphenZoneItem::Create(SvStream& rStrm, sal_uInt16) const
     781             : {
     782             :     sal_Int8 _bHyphen, _bHyphenPageEnd;
     783             :     sal_Int8 _nMinLead, _nMinTrail, _nMaxHyphens;
     784           0 :     rStrm.ReadSChar( _bHyphen ).ReadSChar( _bHyphenPageEnd ).ReadSChar( _nMinLead ).ReadSChar( _nMinTrail ).ReadSChar( _nMaxHyphens );
     785           0 :     SvxHyphenZoneItem* pAttr = new SvxHyphenZoneItem( false, Which() );
     786           0 :     pAttr->SetHyphen( _bHyphen != 0 );
     787           0 :     pAttr->SetPageEnd( _bHyphenPageEnd != 0 );
     788           0 :     pAttr->GetMinLead() = _nMinLead;
     789           0 :     pAttr->GetMinTrail() = _nMinTrail;
     790           0 :     pAttr->GetMaxHyphens() = _nMaxHyphens;
     791           0 :     return pAttr;
     792             : }
     793             : 
     794             : 
     795             : 
     796           0 : SvStream& SvxHyphenZoneItem::Store( SvStream& rStrm, sal_uInt16 /*nItemVersion*/ ) const
     797             : {
     798           0 :     rStrm.WriteSChar(  (sal_Int8) IsHyphen() )
     799           0 :          .WriteSChar(  (sal_Int8) IsPageEnd() )
     800           0 :          .WriteSChar(  GetMinLead() )
     801           0 :          .WriteSChar(  GetMinTrail() )
     802           0 :          .WriteSChar(  GetMaxHyphens() );
     803           0 :     return rStrm;
     804             : }
     805             : 
     806             : // class SvxTabStop ------------------------------------------------------
     807             : 
     808      121061 : SvxTabStop::SvxTabStop()
     809             : {
     810      121061 :     nTabPos = 0;
     811      121061 :     eAdjustment = SVX_TAB_ADJUST_LEFT;
     812      121061 :     m_cDecimal = cDfltDecimalChar;
     813      121061 :     cFill = cDfltFillChar;
     814      121061 : }
     815             : 
     816             : 
     817             : 
     818       45960 : SvxTabStop::SvxTabStop( const sal_Int32 nPos, const SvxTabAdjust eAdjst,
     819             :                         const sal_Unicode cDec, const sal_Unicode cFil )
     820             : {
     821       45960 :     nTabPos = nPos;
     822       45960 :     eAdjustment = eAdjst;
     823       45960 :     m_cDecimal = cDec;
     824       45960 :     cFill = cFil;
     825       45960 : }
     826             : 
     827       45832 : void SvxTabStop::fillDecimal() const
     828             : {
     829       45832 :     if ( cDfltDecimalChar == m_cDecimal )
     830        7268 :         m_cDecimal = SvtSysLocale().GetLocaleData().getNumDecimalSep()[0];
     831       45832 : }
     832             : 
     833             : 
     834           0 : OUString SvxTabStop::GetValueString() const
     835             : {
     836             :     OUString aStr = "("
     837           0 :         + OUString::number(nTabPos)
     838           0 :         + ", "
     839           0 :         + EE_RESSTR(RID_SVXITEMS_TAB_ADJUST_BEGIN + (sal_uInt16)eAdjustment)
     840           0 :         + ", ["
     841           0 :         + EE_RESSTR(RID_SVXITEMS_TAB_DECIMAL_CHAR)
     842           0 :         + OUString(GetDecimal())
     843           0 :         + "], , ["
     844           0 :         + EE_RESSTR(RID_SVXITEMS_TAB_FILL_CHAR)
     845           0 :         + OUString(cFill)
     846           0 :         + "])";
     847             : 
     848           0 :     return aStr;
     849             : }
     850             : 
     851             : // class SvxTabStopItem --------------------------------------------------
     852             : 
     853          10 : SvxTabStopItem::SvxTabStopItem( sal_uInt16 _nWhich ) :
     854             :     SfxPoolItem( _nWhich ),
     855          10 :     maTabStops()
     856             : {
     857          10 :     const sal_uInt16 nTabs = SVX_TAB_DEFCOUNT, nDist = SVX_TAB_DEFDIST;
     858          10 :     const SvxTabAdjust eAdjst= SVX_TAB_ADJUST_DEFAULT;
     859             : 
     860         110 :     for (sal_uInt16 i = 0; i < nTabs; ++i)
     861             :     {
     862         100 :         SvxTabStop aTab( (i + 1) * nDist, eAdjst );
     863         100 :         maTabStops.insert( aTab );
     864             :     }
     865          10 : }
     866             : 
     867             : 
     868             : 
     869        6670 : SvxTabStopItem::SvxTabStopItem( const sal_uInt16 nTabs,
     870             :                                 const sal_uInt16 nDist,
     871             :                                 const SvxTabAdjust eAdjst,
     872             :                                 sal_uInt16 _nWhich ) :
     873             :     SfxPoolItem( _nWhich ),
     874        6670 :     maTabStops()
     875             : {
     876       11674 :     for ( sal_uInt16 i = 0; i < nTabs; ++i )
     877             :     {
     878        5004 :         SvxTabStop aTab( (i + 1) * nDist, eAdjst );
     879        5004 :         maTabStops.insert( aTab );
     880             :     }
     881        6670 : }
     882             : 
     883             : 
     884             : 
     885      388888 : SvxTabStopItem::SvxTabStopItem( const SvxTabStopItem& rTSI ) :
     886      388888 :     SfxPoolItem( rTSI.Which() ),
     887      388888 :     maTabStops( rTSI.maTabStops )
     888             : {
     889      388888 : }
     890             : 
     891             : 
     892             : 
     893       40552 : sal_uInt16 SvxTabStopItem::GetPos( const SvxTabStop& rTab ) const
     894             : {
     895       40552 :     SvxTabStopArr::const_iterator it = maTabStops.find( rTab );
     896       40552 :     return it != maTabStops.end() ? it - maTabStops.begin() : SVX_TAB_NOTFOUND;
     897             : }
     898             : 
     899             : 
     900             : 
     901        1602 : sal_uInt16 SvxTabStopItem::GetPos( const sal_Int32 nPos ) const
     902             : {
     903        1602 :     SvxTabStopArr::const_iterator it = maTabStops.find( SvxTabStop( nPos ) );
     904        1602 :     return it != maTabStops.end() ? it - maTabStops.begin() : SVX_TAB_NOTFOUND;
     905             : }
     906             : 
     907             : 
     908             : 
     909          74 : SvxTabStopItem& SvxTabStopItem::operator=( const SvxTabStopItem& rTSI )
     910             : {
     911          74 :     maTabStops = rTSI.maTabStops;
     912          74 :     return *this;
     913             : }
     914             : 
     915         938 : bool SvxTabStopItem::QueryValue( uno::Any& rVal, sal_uInt8 nMemberId ) const
     916             : {
     917         938 :     bool bConvert = 0!=(nMemberId&CONVERT_TWIPS);
     918         938 :     nMemberId &= ~CONVERT_TWIPS;
     919         938 :     switch ( nMemberId )
     920             :     {
     921             :         case MID_TABSTOPS:
     922             :         {
     923         878 :             sal_uInt16 nCount = Count();
     924         878 :             uno::Sequence< style::TabStop> aSeq(nCount);
     925         878 :             style::TabStop* pArr = aSeq.getArray();
     926        2156 :             for(sal_uInt16 i = 0; i < nCount; i++)
     927             :             {
     928        1278 :                 const SvxTabStop& rTab = (*this)[i];
     929        1278 :                 pArr[i].Position        = bConvert ? convertTwipToMm100(rTab.GetTabPos()) : rTab.GetTabPos();
     930        1278 :                 switch(rTab.GetAdjustment())
     931             :                 {
     932        1160 :                 case  SVX_TAB_ADJUST_LEFT   : pArr[i].Alignment = style::TabAlign_LEFT; break;
     933          22 :                 case  SVX_TAB_ADJUST_RIGHT  : pArr[i].Alignment = style::TabAlign_RIGHT; break;
     934           0 :                 case  SVX_TAB_ADJUST_DECIMAL: pArr[i].Alignment = style::TabAlign_DECIMAL; break;
     935          20 :                 case  SVX_TAB_ADJUST_CENTER : pArr[i].Alignment = style::TabAlign_CENTER; break;
     936             :                     default: //SVX_TAB_ADJUST_DEFAULT
     937          76 :                         pArr[i].Alignment = style::TabAlign_DEFAULT;
     938             : 
     939             :                 }
     940        1278 :                 pArr[i].DecimalChar     = rTab.GetDecimal();
     941        1278 :                 pArr[i].FillChar        = rTab.GetFill();
     942             :             }
     943         878 :             rVal <<= aSeq;
     944         878 :             break;
     945             :         }
     946             :         case MID_STD_TAB:
     947             :         {
     948          60 :             const SvxTabStop &rTab = maTabStops.front();
     949          60 :             rVal <<= (static_cast<sal_Int32>(bConvert ? convertTwipToMm100(rTab.GetTabPos()) : rTab.GetTabPos()));
     950          60 :             break;
     951             :         }
     952             :     }
     953         938 :     return true;
     954             : }
     955             : 
     956       13340 : bool SvxTabStopItem::PutValue( const uno::Any& rVal, sal_uInt8 nMemberId )
     957             : {
     958       13340 :     bool bConvert = 0!=(nMemberId&CONVERT_TWIPS);
     959       13340 :     nMemberId &= ~CONVERT_TWIPS;
     960       13340 :     switch ( nMemberId )
     961             :     {
     962             :         case MID_TABSTOPS:
     963             :         {
     964        9442 :             uno::Sequence< style::TabStop> aSeq;
     965        9442 :             if(!(rVal >>= aSeq))
     966             :             {
     967           0 :                 uno::Sequence < uno::Sequence < uno::Any >  > aAnySeq;
     968           0 :                 if (!(rVal >>= aAnySeq))
     969           0 :                     return false;
     970           0 :                 sal_Int32 nLength = aAnySeq.getLength();
     971           0 :                 aSeq.realloc( nLength );
     972           0 :                 for ( sal_Int32 n=0; n<nLength; n++ )
     973             :                 {
     974           0 :                     uno::Sequence < uno::Any >& rAnySeq = aAnySeq[n];
     975           0 :                     if ( rAnySeq.getLength() == 4 )
     976             :                     {
     977           0 :                         if (!(rAnySeq[0] >>= aSeq[n].Position)) return false;
     978           0 :                         if (!(rAnySeq[1] >>= aSeq[n].Alignment))
     979             :                         {
     980           0 :                             sal_Int32 nVal = 0;
     981           0 :                             if (rAnySeq[1] >>= nVal)
     982           0 :                                 aSeq[n].Alignment = (com::sun::star::style::TabAlign) nVal;
     983             :                             else
     984           0 :                                 return false;
     985             :                         }
     986           0 :                         if (!(rAnySeq[2] >>= aSeq[n].DecimalChar))
     987             :                         {
     988           0 :                             OUString aVal;
     989           0 :                             if ( (rAnySeq[2] >>= aVal) && aVal.getLength() == 1 )
     990           0 :                                 aSeq[n].DecimalChar = aVal.toChar();
     991             :                             else
     992           0 :                                 return false;
     993             :                         }
     994           0 :                         if (!(rAnySeq[3] >>= aSeq[n].FillChar))
     995             :                         {
     996           0 :                             OUString aVal;
     997           0 :                             if ( (rAnySeq[3] >>= aVal) && aVal.getLength() == 1 )
     998           0 :                                 aSeq[n].FillChar = aVal.toChar();
     999             :                             else
    1000           0 :                                 return false;
    1001             :                         }
    1002             :                     }
    1003             :                     else
    1004           0 :                         return false;
    1005           0 :                 }
    1006             :             }
    1007             : 
    1008        9442 :             maTabStops.clear();
    1009        9442 :             const style::TabStop* pArr = aSeq.getConstArray();
    1010        9442 :             const sal_uInt16 nCount = (sal_uInt16)aSeq.getLength();
    1011       26584 :             for(sal_uInt16 i = 0; i < nCount ; i++)
    1012             :             {
    1013       17142 :                 SvxTabAdjust eAdjust = SVX_TAB_ADJUST_DEFAULT;
    1014       17142 :                 switch(pArr[i].Alignment)
    1015             :                 {
    1016        9974 :                 case style::TabAlign_LEFT   : eAdjust = SVX_TAB_ADJUST_LEFT; break;
    1017        2242 :                 case style::TabAlign_CENTER : eAdjust = SVX_TAB_ADJUST_CENTER; break;
    1018        4830 :                 case style::TabAlign_RIGHT  : eAdjust = SVX_TAB_ADJUST_RIGHT; break;
    1019          96 :                 case style::TabAlign_DECIMAL: eAdjust = SVX_TAB_ADJUST_DECIMAL; break;
    1020             :                 default: ;//prevent warning
    1021             :                 }
    1022       17142 :                 sal_Unicode cFill = pArr[i].FillChar;
    1023       17142 :                 sal_Unicode cDecimal = pArr[i].DecimalChar;
    1024       17142 :                 SvxTabStop aTab( bConvert ? convertMm100ToTwip(pArr[i].Position) : pArr[i].Position,
    1025             :                                     eAdjust,
    1026             :                                     cDecimal,
    1027       34284 :                                     cFill );
    1028       17142 :                 Insert(aTab);
    1029             :             }
    1030        9442 :             break;
    1031             :         }
    1032             :         case MID_STD_TAB:
    1033             :         {
    1034        3898 :             sal_Int32 nNewPos = 0;
    1035        3898 :             if (!(rVal >>= nNewPos) )
    1036           0 :                 return false;
    1037        3898 :             if (bConvert)
    1038        3898 :                 nNewPos = convertMm100ToTwip ( nNewPos );
    1039        3898 :             if (nNewPos <= 0)
    1040           0 :                 return false;
    1041        3898 :             const SvxTabStop& rTab = maTabStops.front();
    1042        3898 :             SvxTabStop aNewTab ( nNewPos, rTab.GetAdjustment(), rTab.GetDecimal(), rTab.GetFill() );
    1043        3898 :             Remove( 0 );
    1044        3898 :             Insert( aNewTab );
    1045        3898 :             break;
    1046             :         }
    1047             :     }
    1048       13340 :     return true;
    1049             : }
    1050             : 
    1051             : 
    1052       95053 : bool SvxTabStopItem::operator==( const SfxPoolItem& rAttr ) const
    1053             : {
    1054             :     DBG_ASSERT( SfxPoolItem::operator==(rAttr), "unequal types" );
    1055             : 
    1056       95053 :     const SvxTabStopItem& rTSI = static_cast<const SvxTabStopItem&>(rAttr);
    1057             : 
    1058       95053 :     if ( Count() != rTSI.Count() )
    1059       27454 :         return false;
    1060             : 
    1061      100979 :     for ( sal_uInt16 i = 0; i < Count(); ++i )
    1062       75420 :         if( !(*this)[i].IsEqual( rTSI[i] ) )
    1063       42040 :             return false;
    1064       25559 :     return true;
    1065             : }
    1066             : 
    1067             : 
    1068             : 
    1069       70175 : SfxPoolItem* SvxTabStopItem::Clone( SfxItemPool * ) const
    1070             : {
    1071       70175 :     return new SvxTabStopItem( *this );
    1072             : }
    1073             : 
    1074             : 
    1075             : 
    1076           0 : bool SvxTabStopItem::GetPresentation
    1077             : (
    1078             :     SfxItemPresentation ePres,
    1079             :     SfxMapUnit          eCoreUnit,
    1080             :     SfxMapUnit          ePresUnit,
    1081             :     OUString&           rText, const IntlWrapper *pIntl
    1082             : )   const
    1083             : {
    1084           0 :     rText = OUString();
    1085             : 
    1086           0 :     bool bComma = false;
    1087             : 
    1088           0 :     for ( sal_uInt16 i = 0; i < Count(); ++i )
    1089             :     {
    1090           0 :         if ( SVX_TAB_ADJUST_DEFAULT != ((*this)[i]).GetAdjustment() )
    1091             :         {
    1092           0 :             if ( bComma )
    1093           0 :                 rText += ",";
    1094           0 :             rText += GetMetricText(
    1095           0 :                 ((*this)[i]).GetTabPos(), eCoreUnit, ePresUnit, pIntl );
    1096           0 :             if ( SFX_ITEM_PRESENTATION_COMPLETE == ePres )
    1097             :             {
    1098           0 :                 rText += " " + EE_RESSTR(GetMetricId(ePresUnit));
    1099             :             }
    1100           0 :             bComma = true;
    1101             :         }
    1102             :     }
    1103           0 :     return true;
    1104             : }
    1105             : 
    1106             : 
    1107             : 
    1108           0 : SfxPoolItem* SvxTabStopItem::Create( SvStream& rStrm, sal_uInt16 ) const
    1109             : {
    1110             :     sal_Int8 nTabs;
    1111           0 :     rStrm.ReadSChar( nTabs );
    1112             :     SvxTabStopItem* pAttr =
    1113           0 :         new SvxTabStopItem( 0, 0, SVX_TAB_ADJUST_DEFAULT, Which() );
    1114             : 
    1115           0 :     for ( sal_Int8 i = 0; i < nTabs; i++ )
    1116             :     {
    1117           0 :         sal_Int32 nPos(0);
    1118             :         sal_Int8 eAdjust;
    1119             :         unsigned char cDecimal, cFill;
    1120           0 :         rStrm.ReadInt32( nPos ).ReadSChar( eAdjust ).ReadUChar( cDecimal ).ReadUChar( cFill );
    1121           0 :         if( !i || SVX_TAB_ADJUST_DEFAULT != eAdjust )
    1122             :             pAttr->Insert( SvxTabStop
    1123           0 :                 ( nPos, (SvxTabAdjust)eAdjust, sal_Unicode(cDecimal), sal_Unicode(cFill) ) );
    1124             :     }
    1125           0 :     return pAttr;
    1126             : }
    1127             : 
    1128             : 
    1129             : 
    1130           0 : SvStream& SvxTabStopItem::Store( SvStream& rStrm, sal_uInt16 /*nItemVersion*/ ) const
    1131             : {
    1132             :     // Default-Tabs are only expanded for the default Attribute. For complete
    1133             :     // backward compabillity (<=304) all tabs have to be expanded, this makes
    1134             :     // the files grow large in size. All only SWG!
    1135             : 
    1136           0 :     const SfxItemPool *pPool = SfxItemPool::GetStoringPool();
    1137             :     const bool bStoreDefTabs = pPool
    1138           0 :         && pPool->GetName() == "SWG"
    1139           0 :         && ::IsDefaultItem( this );
    1140             : 
    1141           0 :     const short nTabs = Count();
    1142           0 :     sal_uInt16  nCount = 0, nDefDist = 0;
    1143           0 :     sal_Int32 nNew = 0;
    1144             : 
    1145           0 :     if( bStoreDefTabs )
    1146             :     {
    1147             :         const SvxTabStopItem& rDefTab = static_cast<const SvxTabStopItem &>(
    1148           0 :             pPool->GetDefaultItem( pPool->GetWhich( SID_ATTR_TABSTOP, false ) ) );
    1149           0 :         nDefDist = sal_uInt16( rDefTab.maTabStops.front().GetTabPos() );
    1150           0 :         const sal_Int32 nPos = nTabs > 0 ? (*this)[nTabs-1].GetTabPos() : 0;
    1151           0 :         nCount  = (sal_uInt16)(nPos / nDefDist);
    1152           0 :         nNew    = (nCount + 1) * nDefDist;
    1153             : 
    1154           0 :         if( nNew <= nPos + 50 )
    1155           0 :             nNew += nDefDist;
    1156             : 
    1157           0 :         sal_Int32 lA3Width = SvxPaperInfo::GetPaperSize(PAPER_A3).Width();
    1158           0 :         nCount = (sal_uInt16)(nNew < lA3Width ? ( lA3Width - nNew ) / nDefDist + 1 : 0);
    1159             :     }
    1160             : 
    1161           0 :     rStrm.WriteSChar(  ( nTabs + nCount ) );
    1162           0 :     for ( short i = 0; i < nTabs; i++ )
    1163             :     {
    1164           0 :         const SvxTabStop& rTab = (*this)[ i ];
    1165           0 :         rStrm.WriteInt32( rTab.GetTabPos() )
    1166           0 :              .WriteSChar(  rTab.GetAdjustment() )
    1167           0 :              .WriteUChar(  rTab.GetDecimal() )
    1168           0 :              .WriteUChar(  rTab.GetFill() );
    1169             :     }
    1170             : 
    1171           0 :     if ( bStoreDefTabs )
    1172           0 :         for( ; nCount; --nCount )
    1173             :         {
    1174           0 :             SvxTabStop aSwTabStop(nNew, SVX_TAB_ADJUST_DEFAULT);
    1175           0 :             rStrm.WriteInt32( aSwTabStop.GetTabPos() )
    1176           0 :                  .WriteSChar(  aSwTabStop.GetAdjustment() )
    1177           0 :                  .WriteUChar(  aSwTabStop.GetDecimal() )
    1178           0 :                  .WriteUChar(  aSwTabStop.GetFill() );
    1179           0 :             nNew += nDefDist;
    1180             :         }
    1181             : 
    1182           0 :     return rStrm;
    1183             : }
    1184             : 
    1185             : 
    1186       40520 : bool SvxTabStopItem::Insert( const SvxTabStop& rTab )
    1187             : {
    1188       40520 :     sal_uInt16 nTabPos = GetPos(rTab);
    1189       40520 :     if(SVX_TAB_NOTFOUND != nTabPos )
    1190         328 :         Remove(nTabPos);
    1191       40520 :     return maTabStops.insert( rTab ).second;
    1192             : }
    1193             : 
    1194          32 : void SvxTabStopItem::Insert( const SvxTabStopItem* pTabs, sal_uInt16 nStart,
    1195             :                             sal_uInt16 nEnd )
    1196             : {
    1197          64 :     for( sal_uInt16 i = nStart; i < nEnd && i < pTabs->Count(); i++ )
    1198             :     {
    1199          32 :         const SvxTabStop& rTab = (*pTabs)[i];
    1200          32 :         sal_uInt16 nTabPos = GetPos(rTab);
    1201          32 :         if(SVX_TAB_NOTFOUND != nTabPos)
    1202           0 :             Remove(nTabPos);
    1203             :     }
    1204          64 :     for( sal_uInt16 i = nStart; i < nEnd && i < pTabs->Count(); i++ )
    1205             :     {
    1206          32 :         maTabStops.insert( (*pTabs)[i] );
    1207             :     }
    1208          32 : }
    1209             : 
    1210             : 
    1211             : 
    1212             : // class SvxFmtSplitItem -------------------------------------------------
    1213        4312 : SvxFmtSplitItem::~SvxFmtSplitItem()
    1214             : {
    1215        4312 : }
    1216             : 
    1217        2044 : SfxPoolItem* SvxFmtSplitItem::Clone( SfxItemPool * ) const
    1218             : {
    1219        2044 :     return new SvxFmtSplitItem( *this );
    1220             : }
    1221             : 
    1222             : 
    1223             : 
    1224           0 : SvStream& SvxFmtSplitItem::Store( SvStream& rStrm, sal_uInt16 /*nItemVersion*/ ) const
    1225             : {
    1226           0 :     rStrm.WriteSChar( (sal_Int8)GetValue() );
    1227           0 :     return rStrm;
    1228             : }
    1229             : 
    1230             : 
    1231             : 
    1232           0 : SfxPoolItem* SvxFmtSplitItem::Create( SvStream& rStrm, sal_uInt16 ) const
    1233             : {
    1234             :     sal_Int8 bIsSplit;
    1235           0 :     rStrm.ReadSChar( bIsSplit );
    1236           0 :     return new SvxFmtSplitItem( bIsSplit != 0, Which() );
    1237             : }
    1238             : 
    1239             : 
    1240             : 
    1241           0 : bool SvxFmtSplitItem::GetPresentation
    1242             : (
    1243             :     SfxItemPresentation /*ePres*/,
    1244             :     SfxMapUnit          /*eCoreUnit*/,
    1245             :     SfxMapUnit          /*ePresUnit*/,
    1246             :     OUString&           rText, const IntlWrapper *
    1247             : )   const
    1248             : {
    1249           0 :     sal_uInt16 nId = RID_SVXITEMS_FMTSPLIT_FALSE;
    1250             : 
    1251           0 :     if ( GetValue() )
    1252           0 :         nId = RID_SVXITEMS_FMTSPLIT_TRUE;
    1253           0 :     rText = EE_RESSTR(nId);
    1254           0 :     return true;
    1255             : }
    1256             : 
    1257             : 
    1258             : 
    1259           0 : SfxPoolItem* SvxPageModelItem::Clone( SfxItemPool* ) const
    1260             : {
    1261           0 :     return new SvxPageModelItem( *this );
    1262             : }
    1263             : 
    1264             : 
    1265             : 
    1266           0 : bool SvxPageModelItem::QueryValue( com::sun::star::uno::Any& rVal, sal_uInt8 nMemberId ) const
    1267             : {
    1268           0 :     nMemberId &= ~CONVERT_TWIPS;
    1269             : 
    1270           0 :     switch ( nMemberId )
    1271             :     {
    1272           0 :         case MID_AUTO: rVal <<= bAuto; break;
    1273           0 :         case MID_NAME: rVal <<= OUString( GetValue() ); break;
    1274           0 :         default: OSL_FAIL("Wrong MemberId!"); return false;
    1275             :     }
    1276             : 
    1277           0 :     return true;
    1278             : }
    1279             : 
    1280           0 : bool SvxPageModelItem::PutValue( const com::sun::star::uno::Any& rVal, sal_uInt8 nMemberId )
    1281             : {
    1282           0 :     nMemberId &= ~CONVERT_TWIPS;
    1283             :     bool bRet;
    1284           0 :     OUString aStr;
    1285           0 :     switch ( nMemberId )
    1286             :     {
    1287           0 :         case MID_AUTO: bRet = ( rVal >>= bAuto ); break;
    1288           0 :         case MID_NAME: bRet = ( rVal >>= aStr ); if ( bRet ) SetValue(aStr); break;
    1289           0 :         default: OSL_FAIL("Wrong MemberId!"); return false;
    1290             :     }
    1291             : 
    1292           0 :     return bRet;
    1293             : }
    1294             : 
    1295           0 : bool SvxPageModelItem::GetPresentation
    1296             : (
    1297             :     SfxItemPresentation ePres,
    1298             :     SfxMapUnit          /*eCoreUnit*/,
    1299             :     SfxMapUnit          /*ePresUnit*/,
    1300             :     OUString&           rText, const IntlWrapper *
    1301             : )   const
    1302             : {
    1303           0 :     rText = OUString();
    1304           0 :     bool bSet = !GetValue().isEmpty();
    1305             : 
    1306           0 :     switch ( ePres )
    1307             :     {
    1308             :         case SFX_ITEM_PRESENTATION_NAMELESS:
    1309           0 :             if ( bSet )
    1310           0 :                 rText = GetValue();
    1311           0 :             return true;
    1312             : 
    1313             :         case SFX_ITEM_PRESENTATION_COMPLETE:
    1314           0 :             if ( bSet )
    1315             :             {
    1316           0 :                 rText = EE_RESSTR(RID_SVXITEMS_PAGEMODEL_COMPLETE) + GetValue();
    1317             :             }
    1318           0 :             return true;
    1319             :         default: ;//prevent warning
    1320             :     }
    1321           0 :     return false;
    1322             : }
    1323             : 
    1324             : 
    1325             : 
    1326       54390 : SvxScriptSpaceItem::SvxScriptSpaceItem( bool bOn, const sal_uInt16 nId )
    1327       54390 :     : SfxBoolItem( nId, bOn )
    1328             : {
    1329       54390 : }
    1330             : 
    1331       43849 : SfxPoolItem* SvxScriptSpaceItem::Clone( SfxItemPool * ) const
    1332             : {
    1333       43849 :     return new SvxScriptSpaceItem( GetValue(), Which() );
    1334             : }
    1335             : 
    1336           0 : SfxPoolItem* SvxScriptSpaceItem::Create(SvStream & rStrm, sal_uInt16) const
    1337             : {
    1338             :     bool bFlag;
    1339           0 :     rStrm.ReadCharAsBool( bFlag );
    1340           0 :     return new SvxScriptSpaceItem( bFlag, Which() );
    1341             : }
    1342             : 
    1343       22064 : sal_uInt16  SvxScriptSpaceItem::GetVersion( sal_uInt16 nFFVer ) const
    1344             : {
    1345             :     DBG_ASSERT( SOFFICE_FILEFORMAT_31==nFFVer ||
    1346             :             SOFFICE_FILEFORMAT_40==nFFVer ||
    1347             :             SOFFICE_FILEFORMAT_50==nFFVer,
    1348             :             "SvxTwoLinesItem: Is there a new file format? ");
    1349             : 
    1350       22064 :     return SOFFICE_FILEFORMAT_50 > nFFVer ? USHRT_MAX : 0;
    1351             : }
    1352             : 
    1353           0 : bool SvxScriptSpaceItem::GetPresentation(
    1354             :         SfxItemPresentation /*ePres*/,
    1355             :         SfxMapUnit /*eCoreMetric*/, SfxMapUnit /*ePresMetric*/,
    1356             :         OUString &rText, const IntlWrapper* /*pIntl*/ ) const
    1357             : {
    1358           0 :     rText = EE_RESSTR( !GetValue()
    1359             :                             ? RID_SVXITEMS_SCRPTSPC_OFF
    1360           0 :                             : RID_SVXITEMS_SCRPTSPC_ON );
    1361           0 :     return true;
    1362             : }
    1363             : 
    1364             : 
    1365             : 
    1366        5924 : SvxHangingPunctuationItem::SvxHangingPunctuationItem(
    1367             :                                     bool bOn, const sal_uInt16 nId )
    1368        5924 :     : SfxBoolItem( nId, bOn )
    1369             : {
    1370        5924 : }
    1371             : 
    1372        3500 : SfxPoolItem* SvxHangingPunctuationItem::Clone( SfxItemPool * ) const
    1373             : {
    1374        3500 :     return new SvxHangingPunctuationItem( GetValue(), Which() );
    1375             : }
    1376             : 
    1377           0 : SfxPoolItem* SvxHangingPunctuationItem::Create(SvStream & rStrm, sal_uInt16) const
    1378             : {
    1379             :     bool nValue;
    1380           0 :     rStrm.ReadCharAsBool( nValue );
    1381           0 :     return new SvxHangingPunctuationItem( nValue, Which() );
    1382             : }
    1383             : 
    1384           0 : sal_uInt16 SvxHangingPunctuationItem::GetVersion( sal_uInt16 nFFVer ) const
    1385             : {
    1386             :     DBG_ASSERT( SOFFICE_FILEFORMAT_31==nFFVer ||
    1387             :             SOFFICE_FILEFORMAT_40==nFFVer ||
    1388             :             SOFFICE_FILEFORMAT_50==nFFVer,
    1389             :             "SvxHangingPunctuationItem: Is there a new file format? ");
    1390             : 
    1391           0 :     return SOFFICE_FILEFORMAT_50 > nFFVer ? USHRT_MAX : 0;
    1392             : }
    1393             : 
    1394           0 : bool SvxHangingPunctuationItem::GetPresentation(
    1395             :         SfxItemPresentation /*ePres*/,
    1396             :         SfxMapUnit /*eCoreMetric*/, SfxMapUnit /*ePresMetric*/,
    1397             :         OUString &rText, const IntlWrapper* /*pIntl*/ ) const
    1398             : {
    1399           0 :     rText = EE_RESSTR( !GetValue()
    1400             :                             ? RID_SVXITEMS_HNGPNCT_OFF
    1401           0 :                             : RID_SVXITEMS_HNGPNCT_ON );
    1402           0 :     return true;
    1403             : }
    1404             : 
    1405             : 
    1406        4970 : SvxForbiddenRuleItem::SvxForbiddenRuleItem(
    1407             :                                     bool bOn, const sal_uInt16 nId )
    1408        4970 :     : SfxBoolItem( nId, bOn )
    1409             : {
    1410        4970 : }
    1411             : 
    1412        2546 : SfxPoolItem* SvxForbiddenRuleItem::Clone( SfxItemPool * ) const
    1413             : {
    1414        2546 :     return new SvxForbiddenRuleItem( GetValue(), Which() );
    1415             : }
    1416             : 
    1417           0 : SfxPoolItem* SvxForbiddenRuleItem::Create(SvStream & rStrm, sal_uInt16) const
    1418             : {
    1419             :     bool nValue;
    1420           0 :     rStrm.ReadCharAsBool( nValue );
    1421           0 :     return new SvxForbiddenRuleItem( nValue, Which() );
    1422             : }
    1423             : 
    1424           0 : sal_uInt16 SvxForbiddenRuleItem::GetVersion( sal_uInt16 nFFVer ) const
    1425             : {
    1426             :     DBG_ASSERT( SOFFICE_FILEFORMAT_31==nFFVer ||
    1427             :             SOFFICE_FILEFORMAT_40==nFFVer ||
    1428             :             SOFFICE_FILEFORMAT_50==nFFVer,
    1429             :             "SvxForbiddenRuleItem: Is there a new file format? ");
    1430             : 
    1431           0 :     return SOFFICE_FILEFORMAT_50 > nFFVer ? USHRT_MAX : 0;
    1432             : }
    1433             : 
    1434           0 : bool SvxForbiddenRuleItem::GetPresentation(
    1435             :         SfxItemPresentation /*ePres*/,
    1436             :         SfxMapUnit /*eCoreMetric*/, SfxMapUnit /*ePresMetric*/,
    1437             :         OUString &rText, const IntlWrapper* /*pIntl*/ ) const
    1438             : {
    1439           0 :     rText = EE_RESSTR( !GetValue()
    1440             :                             ? RID_SVXITEMS_FORBIDDEN_RULE_OFF
    1441           0 :                             : RID_SVXITEMS_FORBIDDEN_RULE_ON );
    1442           0 :     return true;
    1443             : }
    1444             : 
    1445             : /*************************************************************************
    1446             : |*    class SvxParaVertAlignItem
    1447             : *************************************************************************/
    1448             : 
    1449        1506 : SvxParaVertAlignItem::SvxParaVertAlignItem( sal_uInt16 nValue,
    1450             :     const sal_uInt16 nW )
    1451        1506 :     : SfxUInt16Item( nW, nValue )
    1452             : {
    1453        1506 : }
    1454             : 
    1455        1350 : SfxPoolItem* SvxParaVertAlignItem::Clone( SfxItemPool* ) const
    1456             : {
    1457        1350 :     return new SvxParaVertAlignItem( GetValue(), Which() );
    1458             : }
    1459             : 
    1460           0 : SfxPoolItem* SvxParaVertAlignItem::Create( SvStream& rStrm, sal_uInt16 ) const
    1461             : {
    1462             :     sal_uInt16 nVal;
    1463           0 :     rStrm.ReadUInt16( nVal );
    1464           0 :     return new SvxParaVertAlignItem( nVal, Which() );
    1465             : }
    1466             : 
    1467           0 : SvStream& SvxParaVertAlignItem::Store( SvStream & rStrm, sal_uInt16 ) const
    1468             : {
    1469           0 :     rStrm.WriteUInt16( GetValue() );
    1470           0 :     return rStrm;
    1471             : }
    1472             : 
    1473           0 : sal_uInt16 SvxParaVertAlignItem::GetVersion( sal_uInt16 nFFVer ) const
    1474             : {
    1475           0 :     return SOFFICE_FILEFORMAT_50 > nFFVer ? USHRT_MAX : 0;
    1476             : }
    1477             : 
    1478           0 : bool SvxParaVertAlignItem::GetPresentation(
    1479             :         SfxItemPresentation /*ePres*/,
    1480             :         SfxMapUnit /*eCoreMetric*/, SfxMapUnit /*ePresMetric*/,
    1481             :         OUString &rText, const IntlWrapper*  ) const
    1482             : {
    1483             :     sal_uInt16 nTmp;
    1484           0 :     switch( GetValue() )
    1485             :     {
    1486           0 :         case AUTOMATIC: nTmp = RID_SVXITEMS_PARAVERTALIGN_AUTO; break;
    1487           0 :         case TOP:       nTmp = RID_SVXITEMS_PARAVERTALIGN_TOP; break;
    1488           0 :         case CENTER:    nTmp = RID_SVXITEMS_PARAVERTALIGN_CENTER; break;
    1489           0 :         case BOTTOM:    nTmp = RID_SVXITEMS_PARAVERTALIGN_BOTTOM; break;
    1490           0 :         default:    nTmp = RID_SVXITEMS_PARAVERTALIGN_BASELINE; break;
    1491             :     }
    1492           0 :     rText = EE_RESSTR( nTmp );
    1493           0 :     return true;
    1494             : }
    1495             : 
    1496          14 : bool SvxParaVertAlignItem::QueryValue( com::sun::star::uno::Any& rVal,
    1497             :                                            sal_uInt8 /*nMemberId*/ ) const
    1498             : {
    1499          14 :     rVal <<= (sal_Int16)GetValue();
    1500          14 :     return true;
    1501             : }
    1502             : 
    1503         828 : bool SvxParaVertAlignItem::PutValue( const com::sun::star::uno::Any& rVal,
    1504             :                                          sal_uInt8 /*nMemberId*/ )
    1505             : {
    1506         828 :     sal_Int16 nVal = sal_Int16();
    1507         828 :     if((rVal >>= nVal) && nVal >=0 && nVal <= BOTTOM )
    1508             :     {
    1509         828 :         SetValue( (sal_uInt16)nVal );
    1510         828 :         return true;
    1511             :     }
    1512             :     else
    1513           0 :         return false;
    1514             : }
    1515             : 
    1516        1320 : bool SvxParaVertAlignItem::operator==( const SfxPoolItem& rItem ) const
    1517             : {
    1518             :     DBG_ASSERT( SfxPoolItem::operator==( rItem ), "unequal type" );
    1519        1320 :     return SfxUInt16Item::operator==( rItem );
    1520             : }
    1521             : 
    1522             : 
    1523        3716 : SvxParaGridItem::SvxParaGridItem( bool bOn, const sal_uInt16 nId )
    1524        3716 :     : SfxBoolItem( nId, bOn )
    1525             : {
    1526        3716 : }
    1527             : 
    1528        3224 : SfxPoolItem* SvxParaGridItem::Clone( SfxItemPool * ) const
    1529             : {
    1530        3224 :     return new SvxParaGridItem( GetValue(), Which() );
    1531             : }
    1532             : 
    1533           0 : SfxPoolItem* SvxParaGridItem::Create(SvStream & rStrm, sal_uInt16) const
    1534             : {
    1535             :     bool bFlag;
    1536           0 :     rStrm.ReadCharAsBool( bFlag );
    1537           0 :     return new SvxParaGridItem( bFlag, Which() );
    1538             : }
    1539             : 
    1540           0 : sal_uInt16  SvxParaGridItem::GetVersion( sal_uInt16 nFFVer ) const
    1541             : {
    1542             :     DBG_ASSERT( SOFFICE_FILEFORMAT_31==nFFVer ||
    1543             :             SOFFICE_FILEFORMAT_40==nFFVer ||
    1544             :             SOFFICE_FILEFORMAT_50==nFFVer,
    1545             :             "SvxParaGridItem: Is there a new file format? ");
    1546             : 
    1547           0 :     return SOFFICE_FILEFORMAT_50 > nFFVer ? USHRT_MAX : 0;
    1548             : }
    1549             : 
    1550           0 : bool SvxParaGridItem::GetPresentation(
    1551             :         SfxItemPresentation /*ePres*/,
    1552             :         SfxMapUnit /*eCoreMetric*/, SfxMapUnit /*ePresMetric*/,
    1553             :         OUString &rText, const IntlWrapper* /*pIntl*/ ) const
    1554             : {
    1555           0 :     rText = GetValue() ?
    1556             :             EE_RESSTR( RID_SVXITEMS_PARASNAPTOGRID_ON ) :
    1557           0 :             EE_RESSTR( RID_SVXITEMS_PARASNAPTOGRID_OFF );
    1558             : 
    1559           0 :     return true;
    1560         669 : }
    1561             : 
    1562             : 
    1563             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10