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

Generated by: LCOV version 1.11