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

Generated by: LCOV version 1.10