LCOV - code coverage report
Current view: top level - editeng/source/items - textitem.cxx (source / functions) Hit Total Coverage
Test: commit e02a6cb2c3e2b23b203b422e4e0680877f232636 Lines: 0 1565 0.0 %
Date: 2014-04-14 Functions: 0 436 0.0 %
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/CaseMap.hpp>
      21             : #include <com/sun/star/awt/FontDescriptor.hpp>
      22             : #include <com/sun/star/frame/status/FontHeight.hpp>
      23             : #include <vcl/bitmapex.hxx>
      24             : #include <tools/stream.hxx>
      25             : #include <toolkit/helper/vclunohelper.hxx>
      26             : #include <math.h>
      27             : #include <rtl/math.hxx>
      28             : #include <unotools/fontdefs.hxx>
      29             : #include <vcl/outdev.hxx>
      30             : #include <editeng/eeitem.hxx>
      31             : #include <svtools/unitconv.hxx>
      32             : 
      33             : #include <svl/memberid.hrc>
      34             : #include <editeng/editids.hrc>
      35             : #include <editeng/editrids.hrc>
      36             : #include <vcl/vclenum.hxx>
      37             : #include <tools/tenccvt.hxx>
      38             : #include <tools/mapunit.hxx>
      39             : 
      40             : #include <rtl/ustring.hxx>
      41             : #include <i18nlangtag/languagetag.hxx>
      42             : #include <svl/itemset.hxx>
      43             : 
      44             : #include <svtools/langtab.hxx>
      45             : #include <svl/itempool.hxx>
      46             : #include <svtools/ctrltool.hxx>
      47             : #include <vcl/settings.hxx>
      48             : #include <vcl/svapp.hxx>
      49             : #include <com/sun/star/awt/SimpleFontMetric.hpp>
      50             : #include <com/sun/star/awt/FontWeight.hpp>
      51             : #include <com/sun/star/awt/FontSlant.hpp>
      52             : #include <com/sun/star/awt/CharSet.hpp>
      53             : #include <com/sun/star/awt/FontWidth.hpp>
      54             : #include <com/sun/star/awt/XFont.hpp>
      55             : #include <com/sun/star/awt/FontType.hpp>
      56             : #include <com/sun/star/awt/FontUnderline.hpp>
      57             : #include <com/sun/star/awt/FontStrikeout.hpp>
      58             : #include <com/sun/star/awt/FontFamily.hpp>
      59             : #include <com/sun/star/awt/FontPitch.hpp>
      60             : #include <com/sun/star/lang/Locale.hpp>
      61             : #include <com/sun/star/text/FontEmphasis.hpp>
      62             : #include <com/sun/star/i18n/ScriptType.hpp>
      63             : #include <editeng/rsiditem.hxx>
      64             : #include <editeng/memberids.hrc>
      65             : #include <editeng/flstitem.hxx>
      66             : #include <editeng/fontitem.hxx>
      67             : #include <editeng/postitem.hxx>
      68             : #include <editeng/wghtitem.hxx>
      69             : #include <editeng/fhgtitem.hxx>
      70             : #include <editeng/fwdtitem.hxx>
      71             : #include <editeng/udlnitem.hxx>
      72             : #include <editeng/crossedoutitem.hxx>
      73             : #include <editeng/shdditem.hxx>
      74             : #include <editeng/autokernitem.hxx>
      75             : #include <editeng/wrlmitem.hxx>
      76             : #include <editeng/contouritem.hxx>
      77             : #include <editeng/prszitem.hxx>
      78             : #include <editeng/colritem.hxx>
      79             : #include <editeng/charsetcoloritem.hxx>
      80             : #include <editeng/kernitem.hxx>
      81             : #include <editeng/cmapitem.hxx>
      82             : #include <editeng/escapementitem.hxx>
      83             : #include <editeng/langitem.hxx>
      84             : #include <editeng/nlbkitem.hxx>
      85             : #include <editeng/nhypitem.hxx>
      86             : #include <editeng/lcolitem.hxx>
      87             : #include <editeng/blinkitem.hxx>
      88             : #include <editeng/emphasismarkitem.hxx>
      89             : #include <editeng/twolinesitem.hxx>
      90             : #include <editeng/scripttypeitem.hxx>
      91             : #include <editeng/charrotateitem.hxx>
      92             : #include <editeng/charscaleitem.hxx>
      93             : #include <editeng/charreliefitem.hxx>
      94             : #include <editeng/itemtype.hxx>
      95             : #include <editeng/eerdll.hxx>
      96             : 
      97             : #define STORE_UNICODE_MAGIC_MARKER  0xFE331188
      98             : 
      99             : using namespace ::rtl;
     100             : using namespace ::com::sun::star;
     101             : using namespace ::com::sun::star::text;
     102             : 
     103             : bool SvxFontItem::bEnableStoreUnicodeNames = false;
     104             : 
     105             : // STATIC DATA -----------------------------------------------------------
     106             : 
     107             : 
     108             : 
     109           0 : TYPEINIT1(SvxFontListItem, SfxPoolItem);
     110           0 : TYPEINIT1_FACTORY(SvxFontItem, SfxPoolItem, new SvxFontItem(0));
     111           0 : TYPEINIT1_FACTORY(SvxPostureItem, SfxEnumItem, new SvxPostureItem(ITALIC_NONE, 0));
     112           0 : TYPEINIT1_FACTORY(SvxWeightItem, SfxEnumItem, new SvxWeightItem(WEIGHT_NORMAL, 0));
     113           0 : TYPEINIT1_FACTORY(SvxFontHeightItem, SfxPoolItem, new SvxFontHeightItem(240, 100, 0));
     114           0 : TYPEINIT1_FACTORY(SvxFontWidthItem, SfxPoolItem, new SvxFontWidthItem(0, 100, 0));
     115           0 : TYPEINIT1_FACTORY(SvxTextLineItem, SfxEnumItem, new SvxTextLineItem(UNDERLINE_NONE, 0));
     116           0 : TYPEINIT1_FACTORY(SvxUnderlineItem, SfxEnumItem, new SvxUnderlineItem(UNDERLINE_NONE, 0));
     117           0 : TYPEINIT1_FACTORY(SvxOverlineItem, SfxEnumItem, new SvxOverlineItem(UNDERLINE_NONE, 0));
     118           0 : TYPEINIT1_FACTORY(SvxCrossedOutItem, SfxEnumItem, new SvxCrossedOutItem(STRIKEOUT_NONE, 0));
     119           0 : TYPEINIT1_FACTORY(SvxShadowedItem, SfxBoolItem, new SvxShadowedItem(false, 0));
     120           0 : TYPEINIT1_FACTORY(SvxAutoKernItem, SfxBoolItem, new SvxAutoKernItem(false, 0));
     121           0 : TYPEINIT1_FACTORY(SvxWordLineModeItem, SfxBoolItem, new SvxWordLineModeItem(false, 0));
     122           0 : TYPEINIT1_FACTORY(SvxContourItem, SfxBoolItem, new SvxContourItem(false, 0));
     123           0 : TYPEINIT1_FACTORY(SvxPropSizeItem, SfxUInt16Item, new SvxPropSizeItem(100, 0));
     124           0 : TYPEINIT1_FACTORY(SvxColorItem, SfxPoolItem, new SvxColorItem(0));
     125           0 : TYPEINIT1_FACTORY(SvxCharSetColorItem, SvxColorItem, new SvxCharSetColorItem(0));
     126           0 : TYPEINIT1_FACTORY(SvxKerningItem, SfxInt16Item, new SvxKerningItem(0, 0));
     127           0 : TYPEINIT1_FACTORY(SvxCaseMapItem, SfxEnumItem, new SvxCaseMapItem(SVX_CASEMAP_NOT_MAPPED, 0));
     128           0 : TYPEINIT1_FACTORY(SvxEscapementItem, SfxPoolItem, new SvxEscapementItem(0));
     129           0 : TYPEINIT1_FACTORY(SvxLanguageItem, SfxEnumItem, new SvxLanguageItem(LANGUAGE_GERMAN, 0));
     130           0 : TYPEINIT1_FACTORY(SvxNoLinebreakItem, SfxBoolItem, new SvxNoLinebreakItem(true, 0));
     131           0 : TYPEINIT1_FACTORY(SvxNoHyphenItem, SfxBoolItem, new SvxNoHyphenItem(true, 0));
     132           0 : TYPEINIT1_FACTORY(SvxLineColorItem, SvxColorItem, new SvxLineColorItem(0));
     133           0 : TYPEINIT1_FACTORY(SvxBlinkItem, SfxBoolItem, new SvxBlinkItem(false, 0));
     134           0 : TYPEINIT1_FACTORY(SvxEmphasisMarkItem, SfxUInt16Item, new SvxEmphasisMarkItem(EMPHASISMARK_NONE, 0));
     135           0 : TYPEINIT1_FACTORY(SvxTwoLinesItem, SfxPoolItem, new SvxTwoLinesItem(true, 0, 0, 0));
     136           0 : TYPEINIT1_FACTORY(SvxScriptTypeItem, SfxUInt16Item, new SvxScriptTypeItem);
     137           0 : TYPEINIT1_FACTORY(SvxCharRotateItem, SfxUInt16Item, new SvxCharRotateItem(0, false, 0));
     138           0 : TYPEINIT1_FACTORY(SvxCharScaleWidthItem, SfxUInt16Item, new SvxCharScaleWidthItem(100, 0));
     139           0 : TYPEINIT1_FACTORY(SvxCharReliefItem, SfxEnumItem, new SvxCharReliefItem(RELIEF_NONE, 0));
     140           0 : TYPEINIT1_FACTORY(SvxRsidItem, SfxUInt32Item, new SvxRsidItem(0, 0));
     141             : 
     142           0 : TYPEINIT1(SvxScriptSetItem, SfxSetItem );
     143             : 
     144             : 
     145             : // class SvxFontListItem -------------------------------------------------
     146             : 
     147           0 : SvxFontListItem::SvxFontListItem( const FontList* pFontLst,
     148             :                                   const sal_uInt16 nId ) :
     149             :     SfxPoolItem( nId ),
     150           0 :     pFontList( pFontLst )
     151             : {
     152           0 :     if ( pFontList )
     153             :     {
     154           0 :         sal_Int32 nCount = pFontList->GetFontNameCount();
     155           0 :         aFontNameSeq.realloc( nCount );
     156             : 
     157           0 :         for ( sal_uInt16 i = 0; i < nCount; i++ )
     158           0 :             aFontNameSeq[i] = pFontList->GetFontName(i).GetName();
     159             :     }
     160           0 : }
     161             : 
     162             : 
     163             : 
     164           0 : SvxFontListItem::SvxFontListItem( const SvxFontListItem& rItem ) :
     165             : 
     166             :     SfxPoolItem( rItem ),
     167           0 :     pFontList( rItem.GetFontList() ),
     168           0 :     aFontNameSeq( rItem.aFontNameSeq )
     169             : {
     170           0 : }
     171             : 
     172             : 
     173             : 
     174           0 : SfxPoolItem* SvxFontListItem::Clone( SfxItemPool* ) const
     175             : {
     176           0 :     return new SvxFontListItem( *this );
     177             : }
     178             : 
     179             : 
     180             : 
     181           0 : bool SvxFontListItem::operator==( const SfxPoolItem& rAttr ) const
     182             : {
     183             :     DBG_ASSERT( SfxPoolItem::operator==(rAttr), "unequal types" );
     184             : 
     185           0 :     return( pFontList == ((SvxFontListItem&)rAttr).pFontList );
     186             : }
     187             : 
     188           0 : bool SvxFontListItem::QueryValue( com::sun::star::uno::Any& rVal, sal_uInt8 /*nMemberId*/ ) const
     189             : {
     190           0 :     rVal <<= aFontNameSeq;
     191           0 :     return true;
     192             : }
     193             : 
     194             : 
     195             : 
     196           0 : SfxItemPresentation SvxFontListItem::GetPresentation
     197             : (
     198             :     SfxItemPresentation /*ePres*/,
     199             :     SfxMapUnit          /*eCoreUnit*/,
     200             :     SfxMapUnit          /*ePresUnit*/,
     201             :     OUString&           rText, const IntlWrapper * /*pIntl*/
     202             : )   const
     203             : {
     204           0 :     rText = OUString();
     205           0 :     return SFX_ITEM_PRESENTATION_NONE;
     206             : }
     207             : 
     208             : // class SvxFontItem -----------------------------------------------------
     209             : 
     210           0 : SvxFontItem::SvxFontItem( const sal_uInt16 nId ) :
     211           0 :     SfxPoolItem( nId )
     212             : {
     213           0 :     eFamily = FAMILY_SWISS;
     214           0 :     ePitch = PITCH_VARIABLE;
     215           0 :     eTextEncoding = RTL_TEXTENCODING_DONTKNOW;
     216           0 : }
     217             : 
     218             : 
     219             : 
     220           0 : SvxFontItem::SvxFontItem( const FontFamily eFam, const OUString& aName,
     221             :                   const OUString& aStName, const FontPitch eFontPitch,
     222             :                   const rtl_TextEncoding eFontTextEncoding, const sal_uInt16 nId ) :
     223             : 
     224             :     SfxPoolItem( nId ),
     225             : 
     226             :     aFamilyName(aName),
     227           0 :     aStyleName(aStName)
     228             : {
     229           0 :     eFamily = eFam;
     230           0 :     ePitch = eFontPitch;
     231           0 :     eTextEncoding = eFontTextEncoding;
     232           0 : }
     233             : 
     234             : 
     235           0 : SvxFontItem& SvxFontItem::operator=(const SvxFontItem& rFont)
     236             : {
     237           0 :     aFamilyName =  rFont.GetFamilyName();
     238           0 :     aStyleName =   rFont.GetStyleName();
     239           0 :     eFamily =      rFont.GetFamily();
     240           0 :     ePitch =   rFont.GetPitch();
     241           0 :     eTextEncoding = rFont.GetCharSet();
     242           0 :     return *this;
     243             : }
     244             : 
     245             : 
     246           0 : bool SvxFontItem::QueryValue( uno::Any& rVal, sal_uInt8 nMemberId ) const
     247             : {
     248           0 :     nMemberId &= ~CONVERT_TWIPS;
     249           0 :     switch(nMemberId)
     250             :     {
     251             :         case 0:
     252             :         {
     253           0 :             com::sun::star::awt::FontDescriptor aFontDescriptor;
     254           0 :             aFontDescriptor.Name = aFamilyName;
     255           0 :             aFontDescriptor.StyleName = aStyleName;
     256           0 :             aFontDescriptor.Family = (sal_Int16)(eFamily);
     257           0 :             aFontDescriptor.CharSet = (sal_Int16)(eTextEncoding);
     258           0 :             aFontDescriptor.Pitch = (sal_Int16)(ePitch);
     259           0 :             rVal <<= aFontDescriptor;
     260             :         }
     261           0 :         break;
     262             :         case MID_FONT_FAMILY_NAME:
     263           0 :             rVal <<= aFamilyName;
     264           0 :         break;
     265             :         case MID_FONT_STYLE_NAME:
     266           0 :             rVal <<= aStyleName;
     267           0 :         break;
     268           0 :         case MID_FONT_FAMILY    : rVal <<= (sal_Int16)(eFamily);    break;
     269           0 :         case MID_FONT_CHAR_SET  : rVal <<= (sal_Int16)(eTextEncoding);  break;
     270           0 :         case MID_FONT_PITCH     : rVal <<= (sal_Int16)(ePitch); break;
     271             :     }
     272           0 :     return true;
     273             : }
     274             : 
     275           0 : bool SvxFontItem::PutValue( const uno::Any& rVal, sal_uInt8 nMemberId)
     276             : {
     277           0 :     nMemberId &= ~CONVERT_TWIPS;
     278           0 :     switch(nMemberId)
     279             :     {
     280             :         case 0:
     281             :         {
     282           0 :             com::sun::star::awt::FontDescriptor aFontDescriptor;
     283           0 :             if ( !( rVal >>= aFontDescriptor ))
     284           0 :                 return false;
     285             : 
     286           0 :             aFamilyName = aFontDescriptor.Name;
     287           0 :             aStyleName = aFontDescriptor.StyleName;
     288           0 :             eFamily = (FontFamily)aFontDescriptor.Family;
     289           0 :             eTextEncoding = (rtl_TextEncoding)aFontDescriptor.CharSet;
     290           0 :             ePitch = (FontPitch)aFontDescriptor.Pitch;
     291             :         }
     292           0 :         break;
     293             :         case MID_FONT_FAMILY_NAME   :
     294             :         {
     295           0 :             OUString aStr;
     296           0 :             if(!(rVal >>= aStr))
     297           0 :                 return false;
     298           0 :             aFamilyName = aStr;
     299             :         }
     300           0 :         break;
     301             :         case MID_FONT_STYLE_NAME:
     302             :         {
     303           0 :             OUString aStr;
     304           0 :             if(!(rVal >>= aStr))
     305           0 :                 return false;
     306           0 :             aStyleName = aStr;
     307             :         }
     308           0 :         break;
     309             :         case MID_FONT_FAMILY :
     310             :         {
     311           0 :             sal_Int16 nFamily = sal_Int16();
     312           0 :             if(!(rVal >>= nFamily))
     313           0 :                 return false;
     314           0 :             eFamily = (FontFamily)nFamily;
     315             :         }
     316           0 :         break;
     317             :         case MID_FONT_CHAR_SET  :
     318             :         {
     319           0 :             sal_Int16 nSet = sal_Int16();
     320           0 :             if(!(rVal >>= nSet))
     321           0 :                 return false;
     322           0 :             eTextEncoding = (rtl_TextEncoding)nSet;
     323             :         }
     324           0 :         break;
     325             :         case MID_FONT_PITCH     :
     326             :         {
     327           0 :             sal_Int16 nPitch = sal_Int16();
     328           0 :             if(!(rVal >>= nPitch))
     329           0 :                 return false;
     330           0 :             ePitch =  (FontPitch)nPitch;
     331             :         }
     332           0 :         break;
     333             :     }
     334           0 :     return true;
     335             : }
     336             : 
     337             : 
     338             : 
     339           0 : bool SvxFontItem::operator==( const SfxPoolItem& rAttr ) const
     340             : {
     341             :     DBG_ASSERT( SfxPoolItem::operator==(rAttr), "unequal types" );
     342             : 
     343           0 :     const SvxFontItem& rItem = (const SvxFontItem&)rAttr;
     344             : 
     345           0 :     bool bRet = ( eFamily == rItem.eFamily &&
     346           0 :                  aFamilyName == rItem.aFamilyName &&
     347           0 :                  aStyleName == rItem.aStyleName );
     348             : 
     349           0 :     if ( bRet )
     350             :     {
     351           0 :         if ( ePitch != rItem.ePitch || eTextEncoding != rItem.eTextEncoding )
     352             :         {
     353           0 :             bRet = false;
     354             :             DBG_WARNING( "FontItem::operator==(): only pitch or rtl_TextEncoding different ");
     355             :         }
     356             :     }
     357           0 :     return bRet;
     358             : }
     359             : 
     360             : 
     361             : 
     362           0 : SfxPoolItem* SvxFontItem::Clone( SfxItemPool * ) const
     363             : {
     364           0 :     return new SvxFontItem( *this );
     365             : }
     366             : 
     367             : 
     368             : 
     369           0 : SvStream& SvxFontItem::Store( SvStream& rStrm , sal_uInt16 /*nItemVersion*/ ) const
     370             : {
     371           0 :     sal_Bool bToBats = IsStarSymbol( GetFamilyName() );
     372             : 
     373           0 :     rStrm.WriteUChar( (sal_uInt8) GetFamily() ).WriteUChar( (sal_uInt8) GetPitch() )
     374           0 :          .WriteUChar( (sal_uInt8)(bToBats ? RTL_TEXTENCODING_SYMBOL : GetSOStoreTextEncoding(GetCharSet())) );
     375             : 
     376           0 :     OUString aStoreFamilyName( GetFamilyName() );
     377           0 :     if( bToBats )
     378           0 :         aStoreFamilyName = "StarBats";
     379           0 :     rStrm.WriteUniOrByteString(aStoreFamilyName, rStrm.GetStreamCharSet());
     380           0 :     rStrm.WriteUniOrByteString(GetStyleName(), rStrm.GetStreamCharSet());
     381             : 
     382             :     // cach for EditEngine, only set while creating clipboard stream.
     383           0 :     if ( bEnableStoreUnicodeNames )
     384             :     {
     385           0 :         sal_uInt32 nMagic = STORE_UNICODE_MAGIC_MARKER;
     386           0 :         rStrm.WriteUInt32( nMagic );
     387           0 :         rStrm.WriteUniOrByteString( aStoreFamilyName, RTL_TEXTENCODING_UNICODE );
     388           0 :         rStrm.WriteUniOrByteString( GetStyleName(), RTL_TEXTENCODING_UNICODE );
     389             :     }
     390             : 
     391           0 :     return rStrm;
     392             : }
     393             : 
     394             : 
     395             : 
     396           0 : SfxPoolItem* SvxFontItem::Create(SvStream& rStrm, sal_uInt16) const
     397             : {
     398             :     sal_uInt8 _eFamily, eFontPitch, eFontTextEncoding;
     399           0 :     OUString aName, aStyle;
     400           0 :     rStrm.ReadUChar( _eFamily );
     401           0 :     rStrm.ReadUChar( eFontPitch );
     402           0 :     rStrm.ReadUChar( eFontTextEncoding );
     403             : 
     404             :     // UNICODE: rStrm >> aName;
     405           0 :     aName = rStrm.ReadUniOrByteString(rStrm.GetStreamCharSet());
     406             : 
     407             :     // UNICODE: rStrm >> aStyle;
     408           0 :     aStyle = rStrm.ReadUniOrByteString(rStrm.GetStreamCharSet());
     409             : 
     410             :     // Set the "correct" textencoding
     411           0 :     eFontTextEncoding = (sal_uInt8)GetSOLoadTextEncoding( eFontTextEncoding );
     412             : 
     413             :     // at some point, the StarBats changes from  ANSI font to SYMBOL font
     414           0 :     if ( RTL_TEXTENCODING_SYMBOL != eFontTextEncoding && aName == "StarBats" )
     415           0 :         eFontTextEncoding = RTL_TEXTENCODING_SYMBOL;
     416             : 
     417             :     // Check if we have stored unicode
     418           0 :     sal_Size nStreamPos = rStrm.Tell();
     419           0 :     sal_uInt32 nMagic = STORE_UNICODE_MAGIC_MARKER;
     420           0 :     rStrm.ReadUInt32( nMagic );
     421           0 :     if ( nMagic == STORE_UNICODE_MAGIC_MARKER )
     422             :     {
     423           0 :         aName = rStrm.ReadUniOrByteString( RTL_TEXTENCODING_UNICODE );
     424           0 :         aStyle = rStrm.ReadUniOrByteString( RTL_TEXTENCODING_UNICODE );
     425             :     }
     426             :     else
     427             :     {
     428           0 :         rStrm.Seek( nStreamPos );
     429             :     }
     430             : 
     431             : 
     432             : 
     433             :     return new SvxFontItem( (FontFamily)_eFamily, aName, aStyle,
     434           0 :                             (FontPitch)eFontPitch, (rtl_TextEncoding)eFontTextEncoding, Which() );
     435             : }
     436             : 
     437             : 
     438             : 
     439           0 : SfxItemPresentation SvxFontItem::GetPresentation
     440             : (
     441             :     SfxItemPresentation ePres,
     442             :     SfxMapUnit          /*eCoreUnit*/,
     443             :     SfxMapUnit          /*ePresUnit*/,
     444             :     OUString&           rText, const IntlWrapper * /*pIntl*/
     445             : )   const
     446             : {
     447           0 :     switch ( ePres )
     448             :     {
     449             :         case SFX_ITEM_PRESENTATION_NONE:
     450           0 :             rText = OUString();
     451           0 :             return ePres;
     452             :         case SFX_ITEM_PRESENTATION_NAMELESS:
     453             :         case SFX_ITEM_PRESENTATION_COMPLETE:
     454           0 :             rText = aFamilyName;
     455           0 :             return ePres;
     456             :         default: ; //prevent warning
     457             :     }
     458           0 :     return SFX_ITEM_PRESENTATION_NONE;
     459             : }
     460             : 
     461             : 
     462             : 
     463           0 : void SvxFontItem::EnableStoreUnicodeNames( bool bEnable )
     464             : {
     465           0 :     bEnableStoreUnicodeNames = bEnable;
     466           0 : }
     467             : 
     468             : // class SvxPostureItem --------------------------------------------------
     469             : 
     470           0 : SvxPostureItem::SvxPostureItem( const FontItalic ePosture, const sal_uInt16 nId ) :
     471           0 :     SfxEnumItem( nId, (sal_uInt16)ePosture )
     472             : {
     473           0 : }
     474             : 
     475             : 
     476             : 
     477           0 : SfxPoolItem* SvxPostureItem::Clone( SfxItemPool * ) const
     478             : {
     479           0 :     return new SvxPostureItem( *this );
     480             : }
     481             : 
     482             : 
     483             : 
     484           0 : sal_uInt16 SvxPostureItem::GetValueCount() const
     485             : {
     486           0 :     return ITALIC_NORMAL + 1;   // ITALIC_NONE also belongs here
     487             : }
     488             : 
     489             : 
     490             : 
     491           0 : SvStream& SvxPostureItem::Store( SvStream& rStrm , sal_uInt16 /*nItemVersion*/ ) const
     492             : {
     493           0 :     rStrm.WriteUChar( (sal_uInt8)GetValue() );
     494           0 :     return rStrm;
     495             : }
     496             : 
     497             : 
     498             : 
     499           0 : SfxPoolItem* SvxPostureItem::Create(SvStream& rStrm, sal_uInt16) const
     500             : {
     501             :     sal_uInt8 nPosture;
     502           0 :     rStrm.ReadUChar( nPosture );
     503           0 :     return new SvxPostureItem( (const FontItalic)nPosture, Which() );
     504             : }
     505             : 
     506             : 
     507             : 
     508           0 : SfxItemPresentation SvxPostureItem::GetPresentation
     509             : (
     510             :     SfxItemPresentation ePres,
     511             :     SfxMapUnit          /*eCoreUnit*/,
     512             :     SfxMapUnit          /*ePresUnit*/,
     513             :     OUString&           rText, const IntlWrapper * /*pIntl*/
     514             : )   const
     515             : {
     516           0 :     switch ( ePres )
     517             :     {
     518             :         case SFX_ITEM_PRESENTATION_NONE:
     519           0 :             rText = OUString();
     520           0 :             return ePres;
     521             :         case SFX_ITEM_PRESENTATION_NAMELESS:
     522             :         case SFX_ITEM_PRESENTATION_COMPLETE:
     523           0 :             rText = GetValueTextByPos( GetValue() );
     524           0 :             return ePres;
     525             :         default: ;//prevent warning
     526             :     }
     527           0 :     return SFX_ITEM_PRESENTATION_NONE;
     528             : }
     529             : 
     530             : 
     531             : 
     532           0 : OUString SvxPostureItem::GetValueTextByPos( sal_uInt16 nPos ) const
     533             : {
     534             :     DBG_ASSERT( nPos <= (sal_uInt16)ITALIC_NORMAL, "enum overflow!" );
     535             : 
     536           0 :     FontItalic eItalic = (FontItalic)nPos;
     537           0 :     sal_uInt16 nId = 0;
     538             : 
     539           0 :     switch ( eItalic )
     540             :     {
     541           0 :         case ITALIC_NONE:       nId = RID_SVXITEMS_ITALIC_NONE;     break;
     542           0 :         case ITALIC_OBLIQUE:    nId = RID_SVXITEMS_ITALIC_OBLIQUE;  break;
     543           0 :         case ITALIC_NORMAL:     nId = RID_SVXITEMS_ITALIC_NORMAL;   break;
     544             :         default: ;//prevent warning
     545             :     }
     546             : 
     547           0 :     return nId ? EE_RESSTR(nId) : OUString();
     548             : }
     549             : 
     550           0 : bool SvxPostureItem::QueryValue( uno::Any& rVal, sal_uInt8 nMemberId ) const
     551             : {
     552           0 :     nMemberId &= ~CONVERT_TWIPS;
     553           0 :     switch( nMemberId )
     554             :     {
     555             :         case MID_ITALIC:
     556           0 :             rVal = Bool2Any(GetBoolValue());
     557           0 :             break;
     558             :         case MID_POSTURE:
     559           0 :             rVal <<= (awt::FontSlant)GetValue();    // values from awt::FontSlant and FontItalic are equal
     560           0 :             break;
     561             :     }
     562           0 :     return true;
     563             : }
     564             : 
     565           0 : bool SvxPostureItem::PutValue( const uno::Any& rVal, sal_uInt8 nMemberId )
     566             : {
     567           0 :     nMemberId &= ~CONVERT_TWIPS;
     568           0 :     switch( nMemberId )
     569             :     {
     570             :         case MID_ITALIC:
     571           0 :             SetBoolValue(Any2Bool(rVal));
     572           0 :         break;
     573             :         case MID_POSTURE:
     574             :         {
     575             :             awt::FontSlant eSlant;
     576           0 :             if(!(rVal >>= eSlant))
     577             :             {
     578           0 :                 sal_Int32 nValue = 0;
     579           0 :                 if(!(rVal >>= nValue))
     580           0 :                     return false;
     581             : 
     582           0 :                 eSlant = (awt::FontSlant)nValue;
     583             :             }
     584           0 :             SetValue((sal_uInt16)eSlant);
     585             :         }
     586             :     }
     587           0 :     return true;
     588             : }
     589             : 
     590             : 
     591           0 : bool SvxPostureItem::HasBoolValue() const
     592             : {
     593           0 :     return true;
     594             : }
     595             : 
     596             : 
     597             : 
     598           0 : bool SvxPostureItem::GetBoolValue() const
     599             : {
     600           0 :     return ( (FontItalic)GetValue() >= ITALIC_OBLIQUE );
     601             : }
     602             : 
     603             : 
     604             : 
     605           0 : void SvxPostureItem::SetBoolValue( bool bVal )
     606             : {
     607           0 :     SetValue( (sal_uInt16)(bVal ? ITALIC_NORMAL : ITALIC_NONE) );
     608           0 : }
     609             : 
     610             : // class SvxWeightItem ---------------------------------------------------
     611             : 
     612           0 : SvxWeightItem::SvxWeightItem( const FontWeight eWght, const sal_uInt16 nId ) :
     613           0 :     SfxEnumItem( nId, (sal_uInt16)eWght )
     614             : {
     615           0 : }
     616             : 
     617             : 
     618             : 
     619             : 
     620             : 
     621           0 : bool SvxWeightItem::HasBoolValue() const
     622             : {
     623           0 :     return true;
     624             : }
     625             : 
     626             : 
     627             : 
     628           0 : bool SvxWeightItem::GetBoolValue() const
     629             : {
     630           0 :     return  (FontWeight)GetValue() >= WEIGHT_BOLD;
     631             : }
     632             : 
     633             : 
     634             : 
     635           0 : void SvxWeightItem::SetBoolValue( bool bVal )
     636             : {
     637           0 :     SetValue( (sal_uInt16)(bVal ? WEIGHT_BOLD : WEIGHT_NORMAL) );
     638           0 : }
     639             : 
     640             : 
     641             : 
     642           0 : sal_uInt16 SvxWeightItem::GetValueCount() const
     643             : {
     644           0 :     return WEIGHT_BLACK;    // WEIGHT_DONTKNOW does not belong
     645             : }
     646             : 
     647             : 
     648             : 
     649           0 : SfxPoolItem* SvxWeightItem::Clone( SfxItemPool * ) const
     650             : {
     651           0 :     return new SvxWeightItem( *this );
     652             : }
     653             : 
     654             : 
     655             : 
     656           0 : SvStream& SvxWeightItem::Store( SvStream& rStrm , sal_uInt16 /*nItemVersion*/ ) const
     657             : {
     658           0 :     rStrm.WriteUChar( (sal_uInt8)GetValue() );
     659           0 :     return rStrm;
     660             : }
     661             : 
     662             : 
     663             : 
     664           0 : SfxPoolItem* SvxWeightItem::Create(SvStream& rStrm, sal_uInt16) const
     665             : {
     666             :     sal_uInt8 nWeight;
     667           0 :     rStrm.ReadUChar( nWeight );
     668           0 :     return new SvxWeightItem( (FontWeight)nWeight, Which() );
     669             : }
     670             : 
     671             : 
     672             : 
     673           0 : SfxItemPresentation SvxWeightItem::GetPresentation
     674             : (
     675             :     SfxItemPresentation ePres,
     676             :     SfxMapUnit          /*eCoreUnit*/,
     677             :     SfxMapUnit          /*ePresUnit*/,
     678             :     OUString&           rText, const IntlWrapper * /*pIntl*/
     679             : )   const
     680             : {
     681           0 :     switch ( ePres )
     682             :     {
     683             :         case SFX_ITEM_PRESENTATION_NONE:
     684           0 :             rText = OUString();
     685           0 :             return ePres;
     686             :         case SFX_ITEM_PRESENTATION_NAMELESS:
     687             :         case SFX_ITEM_PRESENTATION_COMPLETE:
     688           0 :             rText = GetValueTextByPos( GetValue() );
     689           0 :             return ePres;
     690             :         default: ;//prevent warning
     691             :     }
     692           0 :     return SFX_ITEM_PRESENTATION_NONE;
     693             : }
     694             : 
     695             : 
     696             : 
     697           0 : OUString SvxWeightItem::GetValueTextByPos( sal_uInt16 nPos ) const
     698             : {
     699             :     DBG_ASSERT( nPos <= (sal_uInt16)WEIGHT_BLACK, "enum overflow!" );
     700           0 :     return EE_RESSTR(RID_SVXITEMS_WEIGHT_BEGIN + nPos);
     701             : }
     702             : 
     703           0 : bool SvxWeightItem::QueryValue( uno::Any& rVal, sal_uInt8 nMemberId ) const
     704             : {
     705           0 :     nMemberId &= ~CONVERT_TWIPS;
     706           0 :     switch( nMemberId )
     707             :     {
     708             :         case MID_BOLD   :
     709           0 :             rVal = Bool2Any(GetBoolValue());
     710           0 :         break;
     711             :         case MID_WEIGHT:
     712             :         {
     713           0 :             rVal <<= (float)( VCLUnoHelper::ConvertFontWeight( (FontWeight)GetValue() ) );
     714             :         }
     715           0 :         break;
     716             :     }
     717           0 :     return true;
     718             : }
     719             : 
     720           0 : bool SvxWeightItem::PutValue( const uno::Any& rVal, sal_uInt8 nMemberId )
     721             : {
     722           0 :     nMemberId &= ~CONVERT_TWIPS;
     723           0 :     switch( nMemberId )
     724             :     {
     725             :         case MID_BOLD   :
     726           0 :             SetBoolValue(Any2Bool(rVal));
     727           0 :         break;
     728             :         case MID_WEIGHT:
     729             :         {
     730           0 :             double fValue = 0;
     731           0 :             if(!(rVal >>= fValue))
     732             :             {
     733           0 :                 sal_Int32 nValue = 0;
     734           0 :                 if(!(rVal >>= nValue))
     735           0 :                     return false;
     736           0 :                 fValue = (float)nValue;
     737             :             }
     738           0 :             SetValue( (sal_uInt16)VCLUnoHelper::ConvertFontWeight((float)fValue) );
     739             :         }
     740           0 :         break;
     741             :     }
     742           0 :     return true;
     743             : }
     744             : 
     745             : // class SvxFontHeightItem -----------------------------------------------
     746             : 
     747           0 : SvxFontHeightItem::SvxFontHeightItem( const sal_uLong nSz,
     748             :                                       const sal_uInt16 nPrp,
     749             :                                       const sal_uInt16 nId ) :
     750           0 :     SfxPoolItem( nId )
     751             : {
     752           0 :     SetHeight( nSz,nPrp );  // calculate in percentage
     753           0 : }
     754             : 
     755             : 
     756             : 
     757           0 : SfxPoolItem* SvxFontHeightItem::Clone( SfxItemPool * ) const
     758             : {
     759           0 :     return new SvxFontHeightItem( *this );
     760             : }
     761             : 
     762             : 
     763             : 
     764           0 : SvStream& SvxFontHeightItem::Store( SvStream& rStrm , sal_uInt16 nItemVersion ) const
     765             : {
     766           0 :     rStrm.WriteUInt16( (sal_uInt16)GetHeight() );
     767             : 
     768           0 :     if( FONTHEIGHT_UNIT_VERSION <= nItemVersion )
     769           0 :         rStrm.WriteUInt16( GetProp() ).WriteUInt16( (sal_uInt16)GetPropUnit() );
     770             :     else
     771             :     {
     772             :         // When exporting to the old versions the relative information is lost
     773             :         // when there is no percentage
     774           0 :         sal_uInt16 _nProp = GetProp();
     775           0 :         if( SFX_MAPUNIT_RELATIVE != GetPropUnit() )
     776           0 :             _nProp = 100;
     777           0 :         rStrm.WriteUInt16( _nProp );
     778             :     }
     779           0 :     return rStrm;
     780             : }
     781             : 
     782             : 
     783             : 
     784           0 : SfxPoolItem* SvxFontHeightItem::Create( SvStream& rStrm,
     785             :                                                  sal_uInt16 nVersion ) const
     786             : {
     787           0 :     sal_uInt16 nsize, nprop = 0, nPropUnit = SFX_MAPUNIT_RELATIVE;
     788             : 
     789           0 :     rStrm.ReadUInt16( nsize );
     790             : 
     791           0 :     if( FONTHEIGHT_16_VERSION <= nVersion )
     792           0 :         rStrm.ReadUInt16( nprop );
     793             :     else
     794             :     {
     795             :         sal_uInt8 nP;
     796           0 :         rStrm .ReadUChar( nP );
     797           0 :         nprop = (sal_uInt16)nP;
     798             :     }
     799             : 
     800           0 :     if( FONTHEIGHT_UNIT_VERSION <= nVersion )
     801           0 :         rStrm.ReadUInt16( nPropUnit );
     802             : 
     803           0 :     SvxFontHeightItem* pItem = new SvxFontHeightItem( nsize, 100, Which() );
     804           0 :     pItem->SetProp( nprop, (SfxMapUnit)nPropUnit );
     805           0 :     return pItem;
     806             : }
     807             : 
     808             : 
     809             : 
     810           0 : bool SvxFontHeightItem::operator==( const SfxPoolItem& rItem ) const
     811             : {
     812             :     DBG_ASSERT( SfxPoolItem::operator==( rItem ), "unequal type" );
     813           0 :     return GetHeight() == ((SvxFontHeightItem&)rItem).GetHeight() &&
     814           0 :             GetProp() == ((SvxFontHeightItem&)rItem).GetProp() &&
     815           0 :             GetPropUnit() == ((SvxFontHeightItem&)rItem).GetPropUnit();
     816             : }
     817             : 
     818           0 : bool SvxFontHeightItem::QueryValue( uno::Any& rVal, sal_uInt8 nMemberId ) const
     819             : {
     820             :     //  In StarOne is the uno::Any always 1/100mm. Through the MemberId it is
     821             :     //  controlled if the value in the Item should be 1/100mm or Twips.
     822             : 
     823           0 :     sal_Bool bConvert = 0!=(nMemberId&CONVERT_TWIPS);
     824           0 :     nMemberId &= ~CONVERT_TWIPS;
     825           0 :     switch( nMemberId )
     826             :     {
     827             :         case 0:
     828             :         {
     829           0 :             ::com::sun::star::frame::status::FontHeight aFontHeight;
     830             : 
     831             :             // Point (i.e. Twips) is asked for, thus re-calculate if
     832             :             // CONVERT_TWIPS is not set.
     833           0 :             if( bConvert )
     834             :             {
     835           0 :                 long nTwips = bConvert ? nHeight : convertMm100ToTwip(nHeight);
     836           0 :                 aFontHeight.Height = (float)( nTwips / 20.0 );
     837             :             }
     838             :             else
     839             :             {
     840           0 :                 double fPoints = convertMm100ToTwip(nHeight) / 20.0;
     841             :                 float fRoundPoints =
     842           0 :                     static_cast<float>(::rtl::math::round(fPoints, 1));
     843           0 :                 aFontHeight.Height = fRoundPoints;
     844             :             }
     845             : 
     846           0 :             aFontHeight.Prop = (sal_Int16)(SFX_MAPUNIT_RELATIVE == ePropUnit ? nProp : 100);
     847             : 
     848           0 :             float fRet = (float)(short)nProp;
     849           0 :             switch( ePropUnit )
     850             :             {
     851             :                 case SFX_MAPUNIT_RELATIVE:
     852           0 :                     fRet = 0.;
     853           0 :                 break;
     854             :                 case SFX_MAPUNIT_100TH_MM:
     855           0 :                     fRet = convertMm100ToTwip(fRet);
     856           0 :                     fRet /= 20.;
     857           0 :                 break;
     858             :                 case SFX_MAPUNIT_POINT:
     859             : 
     860           0 :                 break;
     861             :                 case SFX_MAPUNIT_TWIP:
     862           0 :                     fRet /= 20.;
     863           0 :                 break;
     864             :                 default: ;//prevent warning
     865             :             }
     866           0 :             aFontHeight.Diff = fRet;
     867           0 :             rVal <<= aFontHeight;
     868             :         }
     869           0 :         break;
     870             :         case MID_FONTHEIGHT:
     871             :         {
     872             :             // Point (i.e. Twips) is asked for, thus re-calculate if
     873             :             // CONVERT_TWIPS is not set.
     874           0 :             if( bConvert )
     875             :             {
     876           0 :                 long nTwips = bConvert ? nHeight : convertMm100ToTwip(nHeight);
     877           0 :                 rVal <<= (float)( nTwips / 20.0 );
     878             :             }
     879             :             else
     880             :             {
     881           0 :                 double fPoints = convertMm100ToTwip(nHeight) / 20.0;
     882             :                 float fRoundPoints =
     883           0 :                     static_cast<float>(::rtl::math::round(fPoints, 1));
     884           0 :                 rVal <<= fRoundPoints;
     885             :             }
     886             :         }
     887           0 :         break;
     888             :         case MID_FONTHEIGHT_PROP:
     889           0 :             rVal <<= (sal_Int16)(SFX_MAPUNIT_RELATIVE == ePropUnit ? nProp : 100);
     890           0 :         break;
     891             :         case MID_FONTHEIGHT_DIFF:
     892             :         {
     893           0 :             float fRet = (float)(short)nProp;
     894           0 :             switch( ePropUnit )
     895             :             {
     896             :                 case SFX_MAPUNIT_RELATIVE:
     897           0 :                     fRet = 0.;
     898           0 :                 break;
     899             :                 case SFX_MAPUNIT_100TH_MM:
     900           0 :                     fRet = convertMm100ToTwip(fRet);
     901           0 :                     fRet /= 20.;
     902           0 :                 break;
     903             :                 case SFX_MAPUNIT_POINT:
     904             : 
     905           0 :                 break;
     906             :                 case SFX_MAPUNIT_TWIP:
     907           0 :                     fRet /= 20.;
     908           0 :                 break;
     909             :                 default: ;//prevent warning
     910             :             }
     911           0 :             rVal <<= fRet;
     912             :         }
     913           0 :         break;
     914             :     }
     915           0 :     return true;
     916             : }
     917             : 
     918             : // Calculate the relative deviation from the expected height.
     919           0 : static sal_uInt32 lcl_GetRealHeight_Impl(sal_uInt32 nHeight, sal_uInt16 nProp, SfxMapUnit eProp, sal_Bool bCoreInTwip)
     920             : {
     921           0 :     sal_uInt32 nRet = nHeight;
     922           0 :     short nDiff = 0;
     923           0 :     switch( eProp )
     924             :     {
     925             :         case SFX_MAPUNIT_RELATIVE:
     926           0 :             nRet *= 100;
     927           0 :             nRet /= nProp;
     928           0 :         break;
     929             :         case SFX_MAPUNIT_POINT:
     930             :         {
     931           0 :             short nTemp = (short)nProp;
     932           0 :             nDiff = nTemp * 20;
     933           0 :             if(!bCoreInTwip)
     934           0 :                 nDiff = (short)convertTwipToMm100((long)(nDiff));
     935             :         }
     936           0 :         break;
     937             :         case SFX_MAPUNIT_100TH_MM:
     938             :             //then the core is surely also in 1/100 mm
     939           0 :             nDiff = (short)nProp;
     940           0 :         break;
     941             :         case SFX_MAPUNIT_TWIP:
     942             :             // Here surely TWIP
     943           0 :             nDiff = ((short)nProp);
     944           0 :         break;
     945             :         default: ;//prevent warning
     946             :     }
     947           0 :     nRet -= nDiff;
     948             : 
     949           0 :     return nRet;
     950             : }
     951             : 
     952           0 : bool SvxFontHeightItem::PutValue( const uno::Any& rVal, sal_uInt8 nMemberId )
     953             : {
     954           0 :     sal_Bool bConvert = 0!=(nMemberId&CONVERT_TWIPS);
     955           0 :     nMemberId &= ~CONVERT_TWIPS;
     956           0 :     switch( nMemberId )
     957             :     {
     958             :         case 0:
     959             :         {
     960           0 :             ::com::sun::star::frame::status::FontHeight aFontHeight;
     961           0 :             if ( rVal >>= aFontHeight )
     962             :             {
     963             :                 // Height
     964           0 :                 ePropUnit = SFX_MAPUNIT_RELATIVE;
     965           0 :                 nProp = 100;
     966           0 :                 double fPoint = aFontHeight.Height;
     967           0 :                 if( fPoint < 0. || fPoint > 10000. )
     968           0 :                     return false;
     969             : 
     970           0 :                 nHeight = (long)( fPoint * 20.0 + 0.5 );        // Twips
     971           0 :                 if (!bConvert)
     972           0 :                     nHeight = convertTwipToMm100(nHeight);  // Convert, if the item contains 1/100mm
     973             : 
     974           0 :                 nProp = aFontHeight.Prop;
     975             :             }
     976             :             else
     977           0 :                 return false;
     978             :         }
     979           0 :         break;
     980             :         case MID_FONTHEIGHT:
     981             :         {
     982           0 :             ePropUnit = SFX_MAPUNIT_RELATIVE;
     983           0 :             nProp = 100;
     984           0 :             double fPoint = 0;
     985           0 :             if(!(rVal >>= fPoint))
     986             :             {
     987           0 :                 sal_Int32 nValue = 0;
     988           0 :                 if(!(rVal >>= nValue))
     989           0 :                     return false;
     990           0 :                 fPoint = (float)nValue;
     991             :             }
     992           0 :             if(fPoint < 0. || fPoint > 10000.)
     993           0 :                     return false;
     994             : 
     995           0 :             nHeight = (long)( fPoint * 20.0 + 0.5 );        // Twips
     996           0 :             if (!bConvert)
     997           0 :                 nHeight = convertTwipToMm100(nHeight);  // Convert, if the item contains 1/100mm
     998             :         }
     999           0 :         break;
    1000             :         case MID_FONTHEIGHT_PROP:
    1001             :         {
    1002           0 :             sal_Int16 nNew = sal_Int16();
    1003           0 :             if(!(rVal >>= nNew))
    1004           0 :                 return true;
    1005             : 
    1006           0 :             nHeight = lcl_GetRealHeight_Impl(nHeight, nProp, ePropUnit, bConvert);
    1007             : 
    1008           0 :             nHeight *= nNew;
    1009           0 :             nHeight /= 100;
    1010           0 :             nProp = nNew;
    1011           0 :             ePropUnit = SFX_MAPUNIT_RELATIVE;
    1012             :         }
    1013           0 :         break;
    1014             :         case MID_FONTHEIGHT_DIFF:
    1015             :         {
    1016           0 :             nHeight = lcl_GetRealHeight_Impl(nHeight, nProp, ePropUnit, bConvert);
    1017           0 :             float fValue = 0;
    1018           0 :             if(!(rVal >>= fValue))
    1019             :             {
    1020           0 :                 sal_Int32 nValue = 0;
    1021           0 :                 if(!(rVal >>= nValue))
    1022           0 :                     return false;
    1023           0 :                 fValue = (float)nValue;
    1024             :             }
    1025           0 :             sal_Int16 nCoreDiffValue = (sal_Int16)(fValue * 20.);
    1026           0 :             nHeight += bConvert ? nCoreDiffValue : convertTwipToMm100(nCoreDiffValue);
    1027           0 :             nProp = (sal_uInt16)((sal_Int16)fValue);
    1028           0 :             ePropUnit = SFX_MAPUNIT_POINT;
    1029             :         }
    1030           0 :         break;
    1031             :     }
    1032           0 :     return true;
    1033             : }
    1034             : 
    1035             : 
    1036             : 
    1037           0 : SfxItemPresentation SvxFontHeightItem::GetPresentation
    1038             : (
    1039             :     SfxItemPresentation ePres,
    1040             :     SfxMapUnit          eCoreUnit,
    1041             :     SfxMapUnit          /*ePresUnit*/,
    1042             :     OUString&           rText, const IntlWrapper *pIntl
    1043             : )   const
    1044             : {
    1045           0 :     switch ( ePres )
    1046             :     {
    1047             :         case SFX_ITEM_PRESENTATION_NONE:
    1048           0 :             rText = OUString();
    1049           0 :             return ePres;
    1050             :         case SFX_ITEM_PRESENTATION_NAMELESS:
    1051             :         case SFX_ITEM_PRESENTATION_COMPLETE:
    1052             :         {
    1053           0 :             if( SFX_MAPUNIT_RELATIVE != ePropUnit )
    1054             :             {
    1055           0 :                 rText = OUString::number( (short)nProp ) +
    1056           0 :                         " " + EE_RESSTR( GetMetricId( ePropUnit ) );
    1057           0 :                 if( 0 <= (short)nProp )
    1058           0 :                     rText = "+" + rText;
    1059             :             }
    1060           0 :             else if( 100 == nProp )
    1061             :             {
    1062           0 :                 rText = GetMetricText( (long)nHeight,
    1063           0 :                                         eCoreUnit, SFX_MAPUNIT_POINT, pIntl ) +
    1064           0 :                         " " + EE_RESSTR(GetMetricId(SFX_MAPUNIT_POINT));
    1065             :             }
    1066             :             else
    1067           0 :                 rText = OUString::number( nProp ) + "%";
    1068           0 :             return ePres;
    1069             :         }
    1070             :         default: ; //prevent warning
    1071             :     }
    1072           0 :     return SFX_ITEM_PRESENTATION_NONE;
    1073             : }
    1074             : 
    1075             : 
    1076             : 
    1077           0 : sal_uInt16 SvxFontHeightItem::GetVersion(sal_uInt16 nFileVersion) const
    1078             : {
    1079             :     return (nFileVersion <= SOFFICE_FILEFORMAT_40)
    1080             :                ? FONTHEIGHT_16_VERSION
    1081           0 :                : FONTHEIGHT_UNIT_VERSION;
    1082             : }
    1083             : 
    1084             : 
    1085             : 
    1086           0 : bool SvxFontHeightItem::ScaleMetrics( long nMult, long nDiv )
    1087             : {
    1088           0 :     nHeight = (sal_uInt32)Scale( nHeight, nMult, nDiv );
    1089           0 :     return true;
    1090             : }
    1091             : 
    1092             : 
    1093             : 
    1094           0 : bool SvxFontHeightItem::HasMetrics() const
    1095             : {
    1096           0 :     return true;
    1097             : }
    1098             : 
    1099           0 : void SvxFontHeightItem::SetHeight( sal_uInt32 nNewHeight, const sal_uInt16 nNewProp,
    1100             :                                     SfxMapUnit eUnit )
    1101             : {
    1102             :     DBG_ASSERT( GetRefCount() == 0, "SetValue() with pooled item" );
    1103             : 
    1104           0 :     if( SFX_MAPUNIT_RELATIVE != eUnit )
    1105           0 :         nHeight = nNewHeight + ::ItemToControl( (short)nNewProp, eUnit,
    1106           0 :                                                 SFX_FUNIT_TWIP );
    1107           0 :     else if( 100 != nNewProp )
    1108           0 :         nHeight = sal_uInt32(( nNewHeight * nNewProp ) / 100 );
    1109             :     else
    1110           0 :         nHeight = nNewHeight;
    1111             : 
    1112           0 :     nProp = nNewProp;
    1113           0 :     ePropUnit = eUnit;
    1114           0 : }
    1115             : 
    1116           0 : void SvxFontHeightItem::SetHeight( sal_uInt32 nNewHeight, sal_uInt16 nNewProp,
    1117             :                                  SfxMapUnit eMetric, SfxMapUnit eCoreMetric )
    1118             : {
    1119             :     DBG_ASSERT( GetRefCount() == 0, "SetValue() with pooled item" );
    1120             : 
    1121           0 :     if( SFX_MAPUNIT_RELATIVE != eMetric )
    1122           0 :         nHeight = nNewHeight +
    1123             :                 ::ControlToItem( ::ItemToControl((short)nNewProp, eMetric,
    1124             :                                         SFX_FUNIT_TWIP ), SFX_FUNIT_TWIP,
    1125           0 :                                         eCoreMetric );
    1126           0 :     else if( 100 != nNewProp )
    1127           0 :         nHeight = sal_uInt32(( nNewHeight * nNewProp ) / 100 );
    1128             :     else
    1129           0 :         nHeight = nNewHeight;
    1130             : 
    1131           0 :     nProp = nNewProp;
    1132           0 :     ePropUnit = eMetric;
    1133           0 : }
    1134             : 
    1135             : // class SvxFontWidthItem -----------------------------------------------
    1136             : 
    1137           0 : SvxFontWidthItem::SvxFontWidthItem( const sal_uInt16 nSz, const sal_uInt16 nPrp, const sal_uInt16 nId ) :
    1138           0 :     SfxPoolItem( nId )
    1139             : {
    1140           0 :     nWidth = nSz;
    1141           0 :     nProp = nPrp;
    1142           0 : }
    1143             : 
    1144             : 
    1145             : 
    1146           0 : SfxPoolItem* SvxFontWidthItem::Clone( SfxItemPool * ) const
    1147             : {
    1148           0 :     return new SvxFontWidthItem( *this );
    1149             : }
    1150             : 
    1151             : 
    1152             : 
    1153           0 : SvStream& SvxFontWidthItem::Store( SvStream& rStrm , sal_uInt16 /*nItemVersion*/ ) const
    1154             : {
    1155           0 :     rStrm.WriteUInt16( GetWidth() ).WriteUInt16( GetProp() );
    1156           0 :     return rStrm;
    1157             : }
    1158             : 
    1159             : 
    1160             : 
    1161           0 : bool SvxFontWidthItem::ScaleMetrics( long nMult, long nDiv )
    1162             : {
    1163           0 :     nWidth = (sal_uInt16)Scale( nWidth, nMult, nDiv );
    1164           0 :     return true;
    1165             : }
    1166             : 
    1167             : 
    1168             : 
    1169           0 : bool SvxFontWidthItem::HasMetrics() const
    1170             : {
    1171           0 :     return true;
    1172             : }
    1173             : 
    1174             : 
    1175             : 
    1176           0 : SfxPoolItem* SvxFontWidthItem::Create( SvStream& rStrm,
    1177             :                                                  sal_uInt16 /*nVersion*/ ) const
    1178             : {
    1179             :     sal_uInt16 nS;
    1180             :     sal_uInt16 nP;
    1181             : 
    1182           0 :     rStrm.ReadUInt16( nS );
    1183           0 :     rStrm.ReadUInt16( nP );
    1184           0 :     SvxFontWidthItem* pItem = new SvxFontWidthItem( 0, nP, Which() );
    1185           0 :     pItem->SetWidthValue( nS );
    1186           0 :     return pItem;
    1187             : }
    1188             : 
    1189             : 
    1190             : 
    1191           0 : bool SvxFontWidthItem::operator==( const SfxPoolItem& rItem ) const
    1192             : {
    1193             :     DBG_ASSERT( SfxPoolItem::operator==( rItem ), "unequal type" );
    1194           0 :     return GetWidth() == ((SvxFontWidthItem&)rItem).GetWidth() &&
    1195           0 :             GetProp() == ((SvxFontWidthItem&)rItem).GetProp();
    1196             : }
    1197             : 
    1198           0 : bool SvxFontWidthItem::QueryValue( uno::Any& rVal, sal_uInt8 nMemberId ) const
    1199             : {
    1200             : //    sal_Bool bConvert = 0!=(nMemberId&CONVERT_TWIPS);
    1201           0 :     nMemberId &= ~CONVERT_TWIPS;
    1202           0 :     switch(nMemberId)
    1203             :     {
    1204             :         case MID_FONTWIDTH:
    1205           0 :             rVal <<= (sal_Int16)(nWidth);
    1206           0 :         break;
    1207             :         case MID_FONTWIDTH_PROP:
    1208           0 :             rVal <<= (sal_Int16)(nProp);
    1209           0 :         break;
    1210             :     }
    1211           0 :     return true;
    1212             : }
    1213             : 
    1214           0 : bool SvxFontWidthItem::PutValue( const uno::Any& rVal, sal_uInt8 nMemberId )
    1215             : {
    1216             : //    sal_Bool bConvert = 0!=(nMemberId&CONVERT_TWIPS);
    1217           0 :     nMemberId &= ~CONVERT_TWIPS;
    1218           0 :     sal_Int16 nVal = sal_Int16();
    1219           0 :     if(!(rVal >>= nVal))
    1220           0 :         return false;
    1221             : 
    1222           0 :     switch(nMemberId)
    1223             :     {
    1224             :         case MID_FONTWIDTH:
    1225           0 :             nProp = nVal;
    1226           0 :         break;
    1227             :         case MID_FONTWIDTH_PROP:
    1228           0 :             nWidth = nVal;
    1229           0 :         break;
    1230             :     }
    1231           0 :     return true;
    1232             : }
    1233             : 
    1234             : 
    1235             : 
    1236           0 : SfxItemPresentation SvxFontWidthItem::GetPresentation
    1237             : (
    1238             :     SfxItemPresentation ePres,
    1239             :     SfxMapUnit          eCoreUnit,
    1240             :     SfxMapUnit          /*ePresUnit*/,
    1241             :     OUString&           rText, const IntlWrapper *pIntl
    1242             : )   const
    1243             : {
    1244           0 :     switch ( ePres )
    1245             :     {
    1246             :         case SFX_ITEM_PRESENTATION_NONE:
    1247           0 :             rText = OUString();
    1248           0 :             return ePres;
    1249             :         case SFX_ITEM_PRESENTATION_NAMELESS:
    1250             :         case SFX_ITEM_PRESENTATION_COMPLETE:
    1251             :         {
    1252           0 :             if ( 100 == nProp )
    1253             :             {
    1254           0 :                 rText = GetMetricText( (long)nWidth,
    1255           0 :                                         eCoreUnit, SFX_MAPUNIT_POINT, pIntl ) +
    1256           0 :                         " " + EE_RESSTR(GetMetricId(SFX_MAPUNIT_POINT));
    1257             :             }
    1258             :             else
    1259           0 :                 rText = OUString::number( nProp ) + "%";
    1260           0 :             return ePres;
    1261             :         }
    1262             :         default: ; //prevent warning
    1263             :     }
    1264           0 :     return SFX_ITEM_PRESENTATION_NONE;
    1265             : }
    1266             : 
    1267             : // class SvxTextLineItem ------------------------------------------------
    1268             : 
    1269           0 : SvxTextLineItem::SvxTextLineItem( const FontUnderline eSt, const sal_uInt16 nId )
    1270           0 :     : SfxEnumItem( nId, (sal_uInt16)eSt ), mColor( COL_TRANSPARENT )
    1271             : {
    1272           0 : }
    1273             : 
    1274             : 
    1275             : 
    1276           0 : bool SvxTextLineItem::HasBoolValue() const
    1277             : {
    1278           0 :     return true;
    1279             : }
    1280             : 
    1281             : 
    1282             : 
    1283           0 : bool SvxTextLineItem::GetBoolValue() const
    1284             : {
    1285           0 :     return  (FontUnderline)GetValue() != UNDERLINE_NONE;
    1286             : }
    1287             : 
    1288             : 
    1289             : 
    1290           0 : void SvxTextLineItem::SetBoolValue( bool bVal )
    1291             : {
    1292           0 :     SetValue( (sal_uInt16)(bVal ? UNDERLINE_SINGLE : UNDERLINE_NONE) );
    1293           0 : }
    1294             : 
    1295             : 
    1296             : 
    1297           0 : SfxPoolItem* SvxTextLineItem::Clone( SfxItemPool * ) const
    1298             : {
    1299           0 :     SvxTextLineItem* pNew = new SvxTextLineItem( *this );
    1300           0 :     pNew->SetColor( GetColor() );
    1301           0 :     return pNew;
    1302             : }
    1303             : 
    1304             : 
    1305             : 
    1306           0 : sal_uInt16 SvxTextLineItem::GetValueCount() const
    1307             : {
    1308           0 :     return UNDERLINE_DOTTED + 1;    // UNDERLINE_NONE also belongs here
    1309             : }
    1310             : 
    1311             : 
    1312             : 
    1313           0 : SvStream& SvxTextLineItem::Store( SvStream& rStrm , sal_uInt16 /*nItemVersion*/ ) const
    1314             : {
    1315           0 :     rStrm.WriteUChar( (sal_uInt8)GetValue() );
    1316           0 :     return rStrm;
    1317             : }
    1318             : 
    1319             : 
    1320             : 
    1321           0 : SfxPoolItem* SvxTextLineItem::Create(SvStream& rStrm, sal_uInt16) const
    1322             : {
    1323             :     sal_uInt8 nState;
    1324           0 :     rStrm.ReadUChar( nState );
    1325           0 :     return new SvxTextLineItem(  (FontUnderline)nState, Which() );
    1326             : }
    1327             : 
    1328             : 
    1329             : 
    1330           0 : SfxItemPresentation SvxTextLineItem::GetPresentation
    1331             : (
    1332             :     SfxItemPresentation ePres,
    1333             :     SfxMapUnit          /*eCoreUnit*/,
    1334             :     SfxMapUnit          /*ePresUnit*/,
    1335             :     OUString&           rText, const IntlWrapper * /*pIntl*/
    1336             : )   const
    1337             : {
    1338           0 :     switch ( ePres )
    1339             :     {
    1340             :         case SFX_ITEM_PRESENTATION_NONE:
    1341           0 :             rText = OUString();
    1342           0 :             return ePres;
    1343             :         case SFX_ITEM_PRESENTATION_NAMELESS:
    1344             :         case SFX_ITEM_PRESENTATION_COMPLETE:
    1345           0 :             rText = GetValueTextByPos( GetValue() );
    1346           0 :             if( !mColor.GetTransparency() )
    1347           0 :                 rText = rText + OUString(cpDelim) + ::GetColorString( mColor );
    1348           0 :             return ePres;
    1349             :         default: ; //prevent warning
    1350             :     }
    1351           0 :     return SFX_ITEM_PRESENTATION_NONE;
    1352             : }
    1353             : 
    1354             : 
    1355             : 
    1356           0 : OUString SvxTextLineItem::GetValueTextByPos( sal_uInt16 /*nPos*/ ) const
    1357             : {
    1358             :     OSL_FAIL("SvxTextLineItem::GetValueTextByPos: Pure virtual method");
    1359           0 :     return OUString();
    1360             : }
    1361             : 
    1362           0 : bool SvxTextLineItem::QueryValue( uno::Any& rVal, sal_uInt8 nMemberId ) const
    1363             : {
    1364           0 :     nMemberId &= ~CONVERT_TWIPS;
    1365           0 :     switch(nMemberId)
    1366             :     {
    1367             :     case MID_TEXTLINED:
    1368           0 :         rVal = Bool2Any(GetBoolValue());
    1369           0 :         break;
    1370             :     case MID_TL_STYLE:
    1371           0 :         rVal <<= (sal_Int16)(GetValue());
    1372           0 :         break;
    1373             :     case MID_TL_COLOR:
    1374           0 :         rVal <<= (sal_Int32)( mColor.GetColor() );
    1375           0 :         break;
    1376             :     case MID_TL_HASCOLOR:
    1377           0 :         rVal = Bool2Any( !mColor.GetTransparency() );
    1378           0 :         break;
    1379             :     }
    1380           0 :     return true;
    1381             : 
    1382             : }
    1383             : 
    1384           0 : bool SvxTextLineItem::PutValue( const uno::Any& rVal, sal_uInt8 nMemberId )
    1385             : {
    1386           0 :     nMemberId &= ~CONVERT_TWIPS;
    1387           0 :     sal_Bool bRet = sal_True;
    1388           0 :     switch(nMemberId)
    1389             :     {
    1390             :     case MID_TEXTLINED:
    1391           0 :         SetBoolValue(Any2Bool(rVal));
    1392           0 :     break;
    1393             :     case MID_TL_STYLE:
    1394             :     {
    1395           0 :         sal_Int32 nValue = 0;
    1396           0 :         if(!(rVal >>= nValue))
    1397           0 :             bRet = sal_False;
    1398             :         else
    1399           0 :             SetValue((sal_Int16)nValue);
    1400             :     }
    1401           0 :     break;
    1402             :     case MID_TL_COLOR:
    1403             :     {
    1404           0 :         sal_Int32 nCol = 0;
    1405           0 :         if( !( rVal >>= nCol ) )
    1406           0 :             bRet = sal_False;
    1407             :         else
    1408             :         {
    1409             :             // Keep transparence, because it contains the information
    1410             :             // whether the font color or the stored color should be used
    1411           0 :             sal_uInt8 nTrans = mColor.GetTransparency();
    1412           0 :             mColor = Color( nCol );
    1413           0 :             mColor.SetTransparency( nTrans );
    1414             :         }
    1415             :     }
    1416           0 :     break;
    1417             :     case MID_TL_HASCOLOR:
    1418           0 :         mColor.SetTransparency( Any2Bool( rVal ) ? 0 : 0xff );
    1419           0 :     break;
    1420             :     }
    1421           0 :     return bRet;
    1422             : }
    1423             : 
    1424           0 : bool SvxTextLineItem::operator==( const SfxPoolItem& rItem ) const
    1425             : {
    1426             :     DBG_ASSERT( SfxPoolItem::operator==( rItem ), "unequal type" );
    1427           0 :     return SfxEnumItem::operator==( rItem ) &&
    1428           0 :            GetColor() == ((SvxTextLineItem&)rItem).GetColor();
    1429             : }
    1430             : 
    1431             : // class SvxUnderlineItem ------------------------------------------------
    1432             : 
    1433           0 : SvxUnderlineItem::SvxUnderlineItem( const FontUnderline eSt, const sal_uInt16 nId )
    1434           0 :     : SvxTextLineItem( eSt, nId )
    1435             : {
    1436           0 : }
    1437             : 
    1438             : 
    1439             : 
    1440           0 : SfxPoolItem* SvxUnderlineItem::Clone( SfxItemPool * ) const
    1441             : {
    1442           0 :     SvxUnderlineItem* pNew = new SvxUnderlineItem( *this );
    1443           0 :     pNew->SetColor( GetColor() );
    1444           0 :     return pNew;
    1445             : }
    1446             : 
    1447             : 
    1448             : 
    1449           0 : SfxPoolItem* SvxUnderlineItem::Create(SvStream& rStrm, sal_uInt16) const
    1450             : {
    1451             :     sal_uInt8 nState;
    1452           0 :     rStrm.ReadUChar( nState );
    1453           0 :     return new SvxUnderlineItem(  (FontUnderline)nState, Which() );
    1454             : }
    1455             : 
    1456             : 
    1457             : 
    1458           0 : OUString SvxUnderlineItem::GetValueTextByPos( sal_uInt16 nPos ) const
    1459             : {
    1460             :     DBG_ASSERT( nPos <= (sal_uInt16)UNDERLINE_BOLDWAVE, "enum overflow!" );
    1461           0 :     return EE_RESSTR(RID_SVXITEMS_UL_BEGIN + nPos);
    1462             : }
    1463             : 
    1464             : // class SvxOverlineItem ------------------------------------------------
    1465             : 
    1466           0 : SvxOverlineItem::SvxOverlineItem( const FontUnderline eSt, const sal_uInt16 nId )
    1467           0 :     : SvxTextLineItem( eSt, nId )
    1468             : {
    1469           0 : }
    1470             : 
    1471             : 
    1472             : 
    1473           0 : SfxPoolItem* SvxOverlineItem::Clone( SfxItemPool * ) const
    1474             : {
    1475           0 :     SvxOverlineItem* pNew = new SvxOverlineItem( *this );
    1476           0 :     pNew->SetColor( GetColor() );
    1477           0 :     return pNew;
    1478             : }
    1479             : 
    1480             : 
    1481             : 
    1482           0 : SfxPoolItem* SvxOverlineItem::Create(SvStream& rStrm, sal_uInt16) const
    1483             : {
    1484             :     sal_uInt8 nState;
    1485           0 :     rStrm.ReadUChar( nState );
    1486           0 :     return new SvxOverlineItem(  (FontUnderline)nState, Which() );
    1487             : }
    1488             : 
    1489             : 
    1490             : 
    1491           0 : OUString SvxOverlineItem::GetValueTextByPos( sal_uInt16 nPos ) const
    1492             : {
    1493             :     DBG_ASSERT( nPos <= (sal_uInt16)UNDERLINE_BOLDWAVE, "enum overflow!" );
    1494           0 :     return EE_RESSTR(RID_SVXITEMS_OL_BEGIN + nPos);
    1495             : }
    1496             : 
    1497             : // class SvxCrossedOutItem -----------------------------------------------
    1498             : 
    1499           0 : SvxCrossedOutItem::SvxCrossedOutItem( const FontStrikeout eSt, const sal_uInt16 nId )
    1500           0 :     : SfxEnumItem( nId, (sal_uInt16)eSt )
    1501             : {
    1502           0 : }
    1503             : 
    1504             : 
    1505             : 
    1506           0 : bool SvxCrossedOutItem::HasBoolValue() const
    1507             : {
    1508           0 :     return true;
    1509             : }
    1510             : 
    1511             : 
    1512             : 
    1513           0 : bool SvxCrossedOutItem::GetBoolValue() const
    1514             : {
    1515           0 :     return (FontStrikeout)GetValue() != STRIKEOUT_NONE;
    1516             : }
    1517             : 
    1518             : 
    1519             : 
    1520           0 : void SvxCrossedOutItem::SetBoolValue( bool bVal )
    1521             : {
    1522           0 :     SetValue( (sal_uInt16)(bVal ? STRIKEOUT_SINGLE : STRIKEOUT_NONE) );
    1523           0 : }
    1524             : 
    1525             : 
    1526             : 
    1527           0 : sal_uInt16 SvxCrossedOutItem::GetValueCount() const
    1528             : {
    1529           0 :     return STRIKEOUT_DOUBLE + 1;    // STRIKEOUT_NONE belongs also here
    1530             : }
    1531             : 
    1532             : 
    1533             : 
    1534           0 : SfxPoolItem* SvxCrossedOutItem::Clone( SfxItemPool * ) const
    1535             : {
    1536           0 :     return new SvxCrossedOutItem( *this );
    1537             : }
    1538             : 
    1539             : 
    1540             : 
    1541           0 : SvStream& SvxCrossedOutItem::Store( SvStream& rStrm , sal_uInt16 /*nItemVersion*/ ) const
    1542             : {
    1543           0 :     rStrm.WriteUChar( (sal_uInt8)GetValue() );
    1544           0 :     return rStrm;
    1545             : }
    1546             : 
    1547             : 
    1548             : 
    1549           0 : SfxPoolItem* SvxCrossedOutItem::Create(SvStream& rStrm, sal_uInt16) const
    1550             : {
    1551             :     sal_uInt8 eCross;
    1552           0 :     rStrm.ReadUChar( eCross );
    1553           0 :     return new SvxCrossedOutItem(  (FontStrikeout)eCross, Which() );
    1554             : }
    1555             : 
    1556             : 
    1557             : 
    1558           0 : SfxItemPresentation SvxCrossedOutItem::GetPresentation
    1559             : (
    1560             :     SfxItemPresentation ePres,
    1561             :     SfxMapUnit          /*eCoreUnit*/,
    1562             :     SfxMapUnit          /*ePresUnit*/,
    1563             :     OUString&           rText, const IntlWrapper * /*pIntl*/
    1564             : )   const
    1565             : {
    1566           0 :     switch ( ePres )
    1567             :     {
    1568             :         case SFX_ITEM_PRESENTATION_NONE:
    1569           0 :             rText = OUString();
    1570           0 :             return ePres;
    1571             :         case SFX_ITEM_PRESENTATION_NAMELESS:
    1572             :         case SFX_ITEM_PRESENTATION_COMPLETE:
    1573           0 :             rText = GetValueTextByPos( GetValue() );
    1574           0 :             return ePres;
    1575             :         default: ;//prevent warning
    1576             :     }
    1577           0 :     return SFX_ITEM_PRESENTATION_NONE;
    1578             : }
    1579             : 
    1580             : 
    1581             : 
    1582           0 : OUString SvxCrossedOutItem::GetValueTextByPos( sal_uInt16 nPos ) const
    1583             : {
    1584             :     DBG_ASSERT( nPos <= (sal_uInt16)STRIKEOUT_X, "enum overflow!" );
    1585           0 :     return EE_RESSTR(RID_SVXITEMS_STRIKEOUT_BEGIN + nPos);
    1586             : }
    1587             : 
    1588           0 : bool SvxCrossedOutItem::QueryValue( uno::Any& rVal, sal_uInt8 nMemberId ) const
    1589             : {
    1590           0 :     nMemberId &= ~CONVERT_TWIPS;
    1591           0 :     switch(nMemberId)
    1592             :     {
    1593             :         case MID_CROSSED_OUT:
    1594           0 :             rVal = Bool2Any(GetBoolValue());
    1595           0 :         break;
    1596             :         case MID_CROSS_OUT:
    1597           0 :             rVal <<= (sal_Int16)(GetValue());
    1598           0 :         break;
    1599             :     }
    1600           0 :     return true;
    1601             : }
    1602             : 
    1603           0 : bool SvxCrossedOutItem::PutValue( const uno::Any& rVal, sal_uInt8 nMemberId )
    1604             : {
    1605           0 :     nMemberId &= ~CONVERT_TWIPS;
    1606           0 :     switch(nMemberId)
    1607             :     {
    1608             :         case MID_CROSSED_OUT:
    1609           0 :             SetBoolValue(Any2Bool(rVal));
    1610           0 :         break;
    1611             :         case MID_CROSS_OUT:
    1612             :         {
    1613           0 :             sal_Int32 nValue = 0;
    1614           0 :             if(!(rVal >>= nValue))
    1615           0 :                 return false;
    1616           0 :             SetValue((sal_Int16)nValue);
    1617             :         }
    1618           0 :         break;
    1619             :     }
    1620           0 :     return true;
    1621             : }
    1622             : // class SvxShadowedItem -------------------------------------------------
    1623             : 
    1624           0 : SvxShadowedItem::SvxShadowedItem( const bool bShadowed, const sal_uInt16 nId ) :
    1625           0 :     SfxBoolItem( nId, bShadowed )
    1626             : {
    1627           0 : }
    1628             : 
    1629             : 
    1630             : 
    1631           0 : SfxPoolItem* SvxShadowedItem::Clone( SfxItemPool * ) const
    1632             : {
    1633           0 :     return new SvxShadowedItem( *this );
    1634             : }
    1635             : 
    1636             : 
    1637             : 
    1638           0 : SvStream& SvxShadowedItem::Store( SvStream& rStrm , sal_uInt16 /*nItemVersion*/ ) const
    1639             : {
    1640           0 :     rStrm.WriteUChar( (sal_uInt8) GetValue() );
    1641           0 :     return rStrm;
    1642             : }
    1643             : 
    1644             : 
    1645             : 
    1646           0 : SfxPoolItem* SvxShadowedItem::Create(SvStream& rStrm, sal_uInt16) const
    1647             : {
    1648             :     sal_uInt8 nState;
    1649           0 :     rStrm.ReadUChar( nState );
    1650           0 :     return new SvxShadowedItem( nState, Which() );
    1651             : }
    1652             : 
    1653             : 
    1654             : 
    1655           0 : SfxItemPresentation SvxShadowedItem::GetPresentation
    1656             : (
    1657             :     SfxItemPresentation ePres,
    1658             :     SfxMapUnit          /*eCoreUnit*/,
    1659             :     SfxMapUnit          /*ePresUnit*/,
    1660             :     OUString&           rText, const IntlWrapper * /*pIntl*/
    1661             : )   const
    1662             : {
    1663           0 :     switch ( ePres )
    1664             :     {
    1665             :         case SFX_ITEM_PRESENTATION_NONE:
    1666           0 :             rText = OUString();
    1667           0 :             return ePres;
    1668             :         case SFX_ITEM_PRESENTATION_NAMELESS:
    1669             :         case SFX_ITEM_PRESENTATION_COMPLETE:
    1670             :         {
    1671           0 :             sal_uInt16 nId = RID_SVXITEMS_SHADOWED_FALSE;
    1672             : 
    1673           0 :             if ( GetValue() )
    1674           0 :                 nId = RID_SVXITEMS_SHADOWED_TRUE;
    1675           0 :             rText = EE_RESSTR(nId);
    1676           0 :             return ePres;
    1677             :         }
    1678             :         default: ; //prevent warning
    1679             :     }
    1680           0 :     return SFX_ITEM_PRESENTATION_NONE;
    1681             : }
    1682             : 
    1683             : // class SvxAutoKernItem -------------------------------------------------
    1684             : 
    1685           0 : SvxAutoKernItem::SvxAutoKernItem( const bool bAutoKern, const sal_uInt16 nId ) :
    1686           0 :     SfxBoolItem( nId, bAutoKern )
    1687             : {
    1688           0 : }
    1689             : 
    1690             : 
    1691             : 
    1692           0 : SfxPoolItem* SvxAutoKernItem::Clone( SfxItemPool * ) const
    1693             : {
    1694           0 :     return new SvxAutoKernItem( *this );
    1695             : }
    1696             : 
    1697             : 
    1698             : 
    1699           0 : SvStream& SvxAutoKernItem::Store( SvStream& rStrm , sal_uInt16 /*nItemVersion*/ ) const
    1700             : {
    1701           0 :     rStrm.WriteUChar( (sal_uInt8) GetValue() );
    1702           0 :     return rStrm;
    1703             : }
    1704             : 
    1705             : 
    1706             : 
    1707           0 : SfxPoolItem* SvxAutoKernItem::Create(SvStream& rStrm, sal_uInt16) const
    1708             : {
    1709             :     sal_uInt8 nState;
    1710           0 :     rStrm.ReadUChar( nState );
    1711           0 :     return new SvxAutoKernItem( nState, Which() );
    1712             : }
    1713             : 
    1714             : 
    1715             : 
    1716           0 : SfxItemPresentation SvxAutoKernItem::GetPresentation
    1717             : (
    1718             :     SfxItemPresentation ePres,
    1719             :     SfxMapUnit          /*eCoreUnit*/,
    1720             :     SfxMapUnit          /*ePresUnit*/,
    1721             :     OUString&           rText, const IntlWrapper * /*pIntl*/
    1722             : )   const
    1723             : {
    1724           0 :     switch ( ePres )
    1725             :     {
    1726             :         case SFX_ITEM_PRESENTATION_NONE:
    1727           0 :             rText = OUString();
    1728           0 :             return ePres;
    1729             :         case SFX_ITEM_PRESENTATION_NAMELESS:
    1730             :         case SFX_ITEM_PRESENTATION_COMPLETE:
    1731             :         {
    1732           0 :             sal_uInt16 nId = RID_SVXITEMS_AUTOKERN_FALSE;
    1733             : 
    1734           0 :             if ( GetValue() )
    1735           0 :                 nId = RID_SVXITEMS_AUTOKERN_TRUE;
    1736           0 :             rText = EE_RESSTR(nId);
    1737           0 :             return ePres;
    1738             :         }
    1739             :         default: ; //prevent warning
    1740             :     }
    1741           0 :     return SFX_ITEM_PRESENTATION_NONE;
    1742             : }
    1743             : 
    1744             : // class SvxWordLineModeItem ---------------------------------------------
    1745             : 
    1746           0 : SvxWordLineModeItem::SvxWordLineModeItem( const bool bWordLineMode,
    1747             :                                           const sal_uInt16 nId ) :
    1748           0 :     SfxBoolItem( nId, bWordLineMode )
    1749             : {
    1750           0 : }
    1751             : 
    1752             : 
    1753             : 
    1754           0 : SfxPoolItem* SvxWordLineModeItem::Clone( SfxItemPool * ) const
    1755             : {
    1756           0 :     return new SvxWordLineModeItem( *this );
    1757             : }
    1758             : 
    1759             : 
    1760             : 
    1761           0 : SvStream& SvxWordLineModeItem::Store( SvStream& rStrm , sal_uInt16 /*nItemVersion*/ ) const
    1762             : {
    1763           0 :     rStrm.WriteUChar( (sal_Bool) GetValue() );
    1764           0 :     return rStrm;
    1765             : }
    1766             : 
    1767             : 
    1768             : 
    1769           0 : SfxPoolItem* SvxWordLineModeItem::Create(SvStream& rStrm, sal_uInt16) const
    1770             : {
    1771             :     sal_Bool bValue;
    1772           0 :     rStrm.ReadUChar( bValue );
    1773           0 :     return new SvxWordLineModeItem( bValue, Which() );
    1774             : }
    1775             : 
    1776             : 
    1777             : 
    1778           0 : SfxItemPresentation SvxWordLineModeItem::GetPresentation
    1779             : (
    1780             :     SfxItemPresentation ePres,
    1781             :     SfxMapUnit          /*eCoreUnit*/,
    1782             :     SfxMapUnit          /*ePresUnit*/,
    1783             :     OUString&           rText, const IntlWrapper * /*pIntl*/
    1784             : )   const
    1785             : {
    1786           0 :     switch ( ePres )
    1787             :     {
    1788             :         case SFX_ITEM_PRESENTATION_NONE:
    1789           0 :             rText = OUString();
    1790           0 :             return ePres;
    1791             :         case SFX_ITEM_PRESENTATION_NAMELESS:
    1792             :         case SFX_ITEM_PRESENTATION_COMPLETE:
    1793             :         {
    1794           0 :             sal_uInt16 nId = RID_SVXITEMS_WORDLINE_FALSE;
    1795             : 
    1796           0 :             if ( GetValue() )
    1797           0 :                 nId = RID_SVXITEMS_WORDLINE_TRUE;
    1798           0 :             rText = EE_RESSTR(nId);
    1799           0 :             return ePres;
    1800             :         }
    1801             :         default: ; //prevent warning
    1802             :     }
    1803           0 :     return SFX_ITEM_PRESENTATION_NONE;
    1804             : }
    1805             : 
    1806             : // class SvxContourItem --------------------------------------------------
    1807             : 
    1808           0 : SvxContourItem::SvxContourItem( const bool bContoured, const sal_uInt16 nId ) :
    1809           0 :     SfxBoolItem( nId, bContoured )
    1810             : {
    1811           0 : }
    1812             : 
    1813             : 
    1814             : 
    1815           0 : SfxPoolItem* SvxContourItem::Clone( SfxItemPool * ) const
    1816             : {
    1817           0 :     return new SvxContourItem( *this );
    1818             : }
    1819             : 
    1820             : 
    1821             : 
    1822           0 : SvStream& SvxContourItem::Store( SvStream& rStrm , sal_uInt16 /*nItemVersion*/ ) const
    1823             : {
    1824           0 :     rStrm.WriteUChar( (sal_Bool) GetValue() );
    1825           0 :     return rStrm;
    1826             : }
    1827             : 
    1828             : 
    1829             : 
    1830           0 : SfxPoolItem* SvxContourItem::Create(SvStream& rStrm, sal_uInt16) const
    1831             : {
    1832             :     sal_Bool bValue;
    1833           0 :     rStrm.ReadUChar( bValue );
    1834           0 :     return new SvxContourItem( bValue, Which() );
    1835             : }
    1836             : 
    1837             : 
    1838             : 
    1839           0 : SfxItemPresentation SvxContourItem::GetPresentation
    1840             : (
    1841             :     SfxItemPresentation ePres,
    1842             :     SfxMapUnit          /*eCoreUnit*/,
    1843             :     SfxMapUnit          /*ePresUnit*/,
    1844             :     OUString&           rText, const IntlWrapper * /*pIntl*/
    1845             : )   const
    1846             : {
    1847           0 :     switch ( ePres )
    1848             :     {
    1849             :         case SFX_ITEM_PRESENTATION_NONE:
    1850           0 :             rText = OUString();
    1851           0 :             return ePres;
    1852             :         case SFX_ITEM_PRESENTATION_NAMELESS:
    1853             :         case SFX_ITEM_PRESENTATION_COMPLETE:
    1854             :         {
    1855           0 :             sal_uInt16 nId = RID_SVXITEMS_CONTOUR_FALSE;
    1856             : 
    1857           0 :             if ( GetValue() )
    1858           0 :                 nId = RID_SVXITEMS_CONTOUR_TRUE;
    1859           0 :             rText = EE_RESSTR(nId);
    1860           0 :             return ePres;
    1861             :         }
    1862             :         default: ; //prevent warning
    1863             :     }
    1864           0 :     return SFX_ITEM_PRESENTATION_NONE;
    1865             : }
    1866             : 
    1867             : // class SvxPropSizeItem -------------------------------------------------
    1868             : 
    1869           0 : SvxPropSizeItem::SvxPropSizeItem( const sal_uInt16 nPercent, const sal_uInt16 nId ) :
    1870           0 :     SfxUInt16Item( nId, nPercent )
    1871             : {
    1872           0 : }
    1873             : 
    1874             : 
    1875             : 
    1876           0 : SfxPoolItem* SvxPropSizeItem::Clone( SfxItemPool * ) const
    1877             : {
    1878           0 :     return new SvxPropSizeItem( *this );
    1879             : }
    1880             : 
    1881             : 
    1882             : 
    1883           0 : SvStream& SvxPropSizeItem::Store( SvStream& rStrm , sal_uInt16 /*nItemVersion*/ ) const
    1884             : {
    1885           0 :     rStrm.WriteUInt16( (sal_uInt16) GetValue() );
    1886           0 :     return rStrm;
    1887             : }
    1888             : 
    1889             : 
    1890             : 
    1891           0 : SfxPoolItem* SvxPropSizeItem::Create(SvStream& rStrm, sal_uInt16) const
    1892             : {
    1893             :     sal_uInt16 nSize;
    1894           0 :     rStrm.ReadUInt16( nSize );
    1895           0 :     return new SvxPropSizeItem( nSize, Which() );
    1896             : }
    1897             : 
    1898             : 
    1899             : 
    1900           0 : SfxItemPresentation SvxPropSizeItem::GetPresentation
    1901             : (
    1902             :     SfxItemPresentation /*ePres*/,
    1903             :     SfxMapUnit          /*eCoreUnit*/,
    1904             :     SfxMapUnit          /*ePresUnit*/,
    1905             :     OUString&           rText, const IntlWrapper * /*pIntl*/
    1906             : )   const
    1907             : {
    1908           0 :     rText = OUString();
    1909           0 :     return SFX_ITEM_PRESENTATION_NONE;
    1910             : }
    1911             : 
    1912             : // class SvxColorItem ----------------------------------------------------
    1913             : 
    1914           0 : SvxColorItem::SvxColorItem( const sal_uInt16 nId ) :
    1915             :     SfxPoolItem( nId ),
    1916           0 :     mColor( COL_BLACK )
    1917             : {
    1918           0 : }
    1919             : 
    1920             : 
    1921             : 
    1922           0 : SvxColorItem::SvxColorItem( const Color& rCol, const sal_uInt16 nId ) :
    1923             :     SfxPoolItem( nId ),
    1924           0 :     mColor( rCol )
    1925             : {
    1926           0 : }
    1927             : 
    1928             : 
    1929             : 
    1930           0 : SvxColorItem::SvxColorItem( SvStream &rStrm, const sal_uInt16 nId ) :
    1931           0 :     SfxPoolItem( nId )
    1932             : {
    1933           0 :     Color aColor;
    1934           0 :     ReadColor( rStrm, aColor );
    1935           0 :     mColor = aColor;
    1936           0 : }
    1937             : 
    1938             : 
    1939             : 
    1940           0 : SvxColorItem::SvxColorItem( const SvxColorItem &rCopy ) :
    1941             :     SfxPoolItem( rCopy ),
    1942           0 :     mColor( rCopy.mColor )
    1943             : {
    1944           0 : }
    1945             : 
    1946             : 
    1947             : 
    1948           0 : SvxColorItem::~SvxColorItem()
    1949             : {
    1950           0 : }
    1951             : 
    1952             : 
    1953           0 : sal_uInt16 SvxColorItem::GetVersion( sal_uInt16 nFFVer ) const
    1954             : {
    1955             :     DBG_ASSERT( SOFFICE_FILEFORMAT_31==nFFVer ||
    1956             :             SOFFICE_FILEFORMAT_40==nFFVer ||
    1957             :             SOFFICE_FILEFORMAT_50==nFFVer,
    1958             :             "SvxColorItem: Is there a new file format? ");
    1959           0 :     return  SOFFICE_FILEFORMAT_50 >= nFFVer ? VERSION_USEAUTOCOLOR : 0;
    1960             : }
    1961             : 
    1962             : 
    1963             : 
    1964           0 : bool SvxColorItem::operator==( const SfxPoolItem& rAttr ) const
    1965             : {
    1966             :     DBG_ASSERT( SfxPoolItem::operator==(rAttr), "unequal types" );
    1967             : 
    1968           0 :     return  mColor == ( (const SvxColorItem&)rAttr ).mColor;
    1969             : }
    1970             : 
    1971             : 
    1972             : 
    1973           0 : bool SvxColorItem::QueryValue( uno::Any& rVal, sal_uInt8 /*nMemberId*/ ) const
    1974             : {
    1975           0 :     rVal <<= (sal_Int32)(mColor.GetColor());
    1976           0 :     return true;
    1977             : }
    1978             : 
    1979             : 
    1980             : 
    1981           0 : bool SvxColorItem::PutValue( const uno::Any& rVal, sal_uInt8 /*nMemberId*/ )
    1982             : {
    1983           0 :     sal_Int32 nColor = 0;
    1984           0 :     if(!(rVal >>= nColor))
    1985           0 :         return false;
    1986             : 
    1987           0 :     mColor.SetColor( nColor );
    1988           0 :     return true;
    1989             : }
    1990             : 
    1991             : 
    1992             : 
    1993           0 : SfxPoolItem* SvxColorItem::Clone( SfxItemPool * ) const
    1994             : {
    1995           0 :     return new SvxColorItem( *this );
    1996             : }
    1997             : 
    1998             : 
    1999             : 
    2000           0 : SvStream& SvxColorItem::Store( SvStream& rStrm , sal_uInt16 nItemVersion ) const
    2001             : {
    2002           0 :     if( VERSION_USEAUTOCOLOR == nItemVersion &&
    2003           0 :         COL_AUTO == mColor.GetColor() )
    2004           0 :         WriteColor( rStrm, Color( COL_BLACK ) );
    2005             :     else
    2006           0 :         WriteColor( rStrm, mColor );
    2007           0 :     return rStrm;
    2008             : }
    2009             : 
    2010             : 
    2011             : 
    2012           0 : SfxPoolItem* SvxColorItem::Create(SvStream& rStrm, sal_uInt16 /*nVer*/ ) const
    2013             : {
    2014           0 :     return new SvxColorItem( rStrm, Which() );
    2015             : }
    2016             : 
    2017             : 
    2018             : 
    2019           0 : SfxItemPresentation SvxColorItem::GetPresentation
    2020             : (
    2021             :     SfxItemPresentation ePres,
    2022             :     SfxMapUnit          /*eCoreUnit*/,
    2023             :     SfxMapUnit          /*ePresUnit*/,
    2024             :     OUString&           rText, const IntlWrapper * /*pIntl*/
    2025             : )   const
    2026             : {
    2027           0 :     switch ( ePres )
    2028             :     {
    2029             :         case SFX_ITEM_PRESENTATION_NONE:
    2030           0 :             rText = OUString();
    2031           0 :             return ePres;
    2032             :         case SFX_ITEM_PRESENTATION_NAMELESS:
    2033             :         case SFX_ITEM_PRESENTATION_COMPLETE:
    2034           0 :             rText = ::GetColorString( mColor );
    2035           0 :             return ePres;
    2036             :         default: ; //prevent warning
    2037             :     }
    2038           0 :     return SFX_ITEM_PRESENTATION_NONE;
    2039             : }
    2040             : 
    2041             : 
    2042             : 
    2043           0 : void SvxColorItem::SetValue( const Color& rNewCol )
    2044             : {
    2045           0 :     mColor = rNewCol;
    2046           0 : }
    2047             : 
    2048             : // class SvxCharSetColorItem ---------------------------------------------
    2049             : 
    2050           0 : SvxCharSetColorItem::SvxCharSetColorItem( const sal_uInt16 nId ) :
    2051             :     SvxColorItem( nId ),
    2052             : 
    2053           0 :     eFrom( RTL_TEXTENCODING_DONTKNOW )
    2054             : {
    2055           0 : }
    2056             : 
    2057             : 
    2058             : 
    2059           0 : SvxCharSetColorItem::SvxCharSetColorItem( const Color& rCol,
    2060             :                                           const rtl_TextEncoding _eFrom,
    2061             :                                           const sal_uInt16 nId ) :
    2062             :     SvxColorItem( rCol, nId ),
    2063             : 
    2064           0 :     eFrom( _eFrom )
    2065             : {
    2066           0 : }
    2067             : 
    2068             : 
    2069             : 
    2070             : 
    2071           0 : SfxPoolItem* SvxCharSetColorItem::Clone( SfxItemPool * ) const
    2072             : {
    2073           0 :     return new SvxCharSetColorItem( *this );
    2074             : }
    2075             : 
    2076             : 
    2077             : 
    2078           0 : SvStream& SvxCharSetColorItem::Store( SvStream& rStrm , sal_uInt16 /*nItemVersion*/ ) const
    2079             : {
    2080           0 :     rStrm.WriteUChar( (sal_uInt8)GetSOStoreTextEncoding(GetCharSet()) );
    2081           0 :     WriteColor( rStrm, GetValue() );
    2082           0 :     return rStrm;
    2083             : }
    2084             : 
    2085             : 
    2086             : 
    2087           0 : SfxPoolItem* SvxCharSetColorItem::Create(SvStream& rStrm, sal_uInt16) const
    2088             : {
    2089             :     sal_uInt8 cSet;
    2090           0 :     Color aColor;
    2091           0 :     rStrm.ReadUChar( cSet );
    2092           0 :     ReadColor( rStrm, aColor );
    2093           0 :     return new SvxCharSetColorItem( aColor,  (rtl_TextEncoding)cSet, Which() );
    2094             : }
    2095             : 
    2096             : 
    2097             : 
    2098           0 : SfxItemPresentation SvxCharSetColorItem::GetPresentation
    2099             : (
    2100             :     SfxItemPresentation /*ePres*/,
    2101             :     SfxMapUnit          /*eCoreUnit*/,
    2102             :     SfxMapUnit          /*ePresUnit*/,
    2103             :     OUString&           rText, const IntlWrapper * /*pIntl*/
    2104             : )   const
    2105             : {
    2106           0 :     rText = OUString();
    2107           0 :     return SFX_ITEM_PRESENTATION_NONE;
    2108             : }
    2109             : 
    2110             : // class SvxKerningItem --------------------------------------------------
    2111             : 
    2112           0 : SvxKerningItem::SvxKerningItem( const short nKern, const sal_uInt16 nId ) :
    2113           0 :     SfxInt16Item( nId, nKern )
    2114             : {
    2115           0 : }
    2116             : 
    2117             : 
    2118             : 
    2119           0 : SfxPoolItem* SvxKerningItem::Clone( SfxItemPool * ) const
    2120             : {
    2121           0 :     return new SvxKerningItem( *this );
    2122             : }
    2123             : 
    2124             : 
    2125             : 
    2126           0 : SvStream& SvxKerningItem::Store( SvStream& rStrm , sal_uInt16 /*nItemVersion*/ ) const
    2127             : {
    2128           0 :     rStrm.WriteInt16( (short) GetValue() );
    2129           0 :     return rStrm;
    2130             : }
    2131             : 
    2132             : 
    2133             : 
    2134           0 : bool SvxKerningItem::ScaleMetrics( long nMult, long nDiv )
    2135             : {
    2136           0 :     SetValue( (sal_Int16)Scale( GetValue(), nMult, nDiv ) );
    2137           0 :     return true;
    2138             : }
    2139             : 
    2140             : 
    2141             : 
    2142           0 : bool SvxKerningItem::HasMetrics() const
    2143             : {
    2144           0 :     return true;
    2145             : }
    2146             : 
    2147             : 
    2148             : 
    2149           0 : SfxPoolItem* SvxKerningItem::Create(SvStream& rStrm, sal_uInt16) const
    2150             : {
    2151             :     short nValue;
    2152           0 :     rStrm.ReadInt16( nValue );
    2153           0 :     return new SvxKerningItem( nValue, Which() );
    2154             : }
    2155             : 
    2156             : 
    2157             : 
    2158           0 : SfxItemPresentation SvxKerningItem::GetPresentation
    2159             : (
    2160             :     SfxItemPresentation ePres,
    2161             :     SfxMapUnit          eCoreUnit,
    2162             :     SfxMapUnit          /*ePresUnit*/,
    2163             :     OUString&           rText, const IntlWrapper *pIntl
    2164             : )   const
    2165             : {
    2166           0 :     switch ( ePres )
    2167             :     {
    2168             :         case SFX_ITEM_PRESENTATION_NONE:
    2169           0 :             rText = OUString();
    2170           0 :             return ePres;
    2171             :         case SFX_ITEM_PRESENTATION_NAMELESS:
    2172           0 :             rText = GetMetricText( (long)GetValue(), eCoreUnit, SFX_MAPUNIT_POINT, pIntl ) +
    2173           0 :                     " " + EE_RESSTR(GetMetricId(SFX_MAPUNIT_POINT));
    2174           0 :             return ePres;
    2175             :         case SFX_ITEM_PRESENTATION_COMPLETE:
    2176             :         {
    2177           0 :             rText = EE_RESSTR(RID_SVXITEMS_KERNING_COMPLETE);
    2178           0 :             sal_uInt16 nId = 0;
    2179             : 
    2180           0 :             if ( GetValue() > 0 )
    2181           0 :                 nId = RID_SVXITEMS_KERNING_EXPANDED;
    2182           0 :             else if ( GetValue() < 0 )
    2183           0 :                 nId = RID_SVXITEMS_KERNING_CONDENSED;
    2184             : 
    2185           0 :             if ( nId )
    2186           0 :                 rText += EE_RESSTR(nId);
    2187           0 :             rText = rText +
    2188           0 :                     GetMetricText( (long)GetValue(), eCoreUnit, SFX_MAPUNIT_POINT, pIntl ) +
    2189           0 :                     " " + EE_RESSTR(GetMetricId(SFX_MAPUNIT_POINT));
    2190           0 :             return ePres;
    2191             :         }
    2192             :         default: ; //prevent warning
    2193             :     }
    2194           0 :     return SFX_ITEM_PRESENTATION_NONE;
    2195             : }
    2196             : 
    2197           0 : bool SvxKerningItem::QueryValue( uno::Any& rVal, sal_uInt8 nMemberId ) const
    2198             : {
    2199           0 :     sal_Int16 nVal = GetValue();
    2200           0 :     if(nMemberId & CONVERT_TWIPS)
    2201           0 :         nVal = (sal_Int16)convertTwipToMm100(nVal);
    2202           0 :     rVal <<= nVal;
    2203           0 :     return true;
    2204             : }
    2205             : 
    2206           0 : bool SvxKerningItem::PutValue( const uno::Any& rVal, sal_uInt8 nMemberId)
    2207             : {
    2208           0 :     sal_Int16 nVal = sal_Int16();
    2209           0 :     if(!(rVal >>= nVal))
    2210           0 :         return false;
    2211           0 :     if(nMemberId & CONVERT_TWIPS)
    2212           0 :         nVal = (sal_Int16)convertMm100ToTwip(nVal);
    2213           0 :     SetValue(nVal);
    2214           0 :     return true;
    2215             : }
    2216             : 
    2217             : // class SvxCaseMapItem --------------------------------------------------
    2218             : 
    2219           0 : SvxCaseMapItem::SvxCaseMapItem( const SvxCaseMap eMap, const sal_uInt16 nId ) :
    2220           0 :     SfxEnumItem( nId, (sal_uInt16)eMap )
    2221             : {
    2222           0 : }
    2223             : 
    2224             : 
    2225             : 
    2226           0 : sal_uInt16 SvxCaseMapItem::GetValueCount() const
    2227             : {
    2228           0 :     return SVX_CASEMAP_END; // SVX_CASEMAP_KAPITAELCHEN + 1
    2229             : }
    2230             : 
    2231             : 
    2232             : 
    2233           0 : SfxPoolItem* SvxCaseMapItem::Clone( SfxItemPool * ) const
    2234             : {
    2235           0 :     return new SvxCaseMapItem( *this );
    2236             : }
    2237             : 
    2238             : 
    2239             : 
    2240           0 : SvStream& SvxCaseMapItem::Store( SvStream& rStrm , sal_uInt16 /*nItemVersion*/ ) const
    2241             : {
    2242           0 :     rStrm.WriteUChar( (sal_uInt8) GetValue() );
    2243           0 :     return rStrm;
    2244             : }
    2245             : 
    2246             : 
    2247             : 
    2248           0 : SfxPoolItem* SvxCaseMapItem::Create(SvStream& rStrm, sal_uInt16) const
    2249             : {
    2250             :     sal_uInt8 cMap;
    2251           0 :     rStrm.ReadUChar( cMap );
    2252           0 :     return new SvxCaseMapItem( (const SvxCaseMap)cMap, Which() );
    2253             : }
    2254             : 
    2255             : 
    2256             : 
    2257           0 : SfxItemPresentation SvxCaseMapItem::GetPresentation
    2258             : (
    2259             :     SfxItemPresentation ePres,
    2260             :     SfxMapUnit          /*eCoreUnit*/,
    2261             :     SfxMapUnit          /*ePresUnit*/,
    2262             :     OUString&           rText, const IntlWrapper * /*pIntl*/
    2263             : )   const
    2264             : {
    2265           0 :     switch ( ePres )
    2266             :     {
    2267             :         case SFX_ITEM_PRESENTATION_NONE:
    2268           0 :             rText = OUString();
    2269           0 :             return ePres;
    2270             :         case SFX_ITEM_PRESENTATION_NAMELESS:
    2271             :         case SFX_ITEM_PRESENTATION_COMPLETE:
    2272           0 :             rText = GetValueTextByPos( GetValue() );
    2273           0 :             return ePres;
    2274             :         default: ; //prevent warning
    2275             :     }
    2276           0 :     return SFX_ITEM_PRESENTATION_NONE;
    2277             : }
    2278             : 
    2279             : 
    2280             : 
    2281           0 : OUString SvxCaseMapItem::GetValueTextByPos( sal_uInt16 nPos ) const
    2282             : {
    2283             :     DBG_ASSERT( nPos < (sal_uInt16)SVX_CASEMAP_END, "enum overflow!" );
    2284           0 :     return EE_RESSTR(RID_SVXITEMS_CASEMAP_BEGIN + nPos);
    2285             : }
    2286             : 
    2287           0 : bool SvxCaseMapItem::QueryValue( uno::Any& rVal, sal_uInt8 /*nMemberId*/ ) const
    2288             : {
    2289           0 :     sal_Int16 nRet = style::CaseMap::NONE;
    2290           0 :     switch( GetValue() )
    2291             :     {
    2292           0 :         case SVX_CASEMAP_VERSALIEN   :      nRet = style::CaseMap::UPPERCASE; break;
    2293           0 :         case SVX_CASEMAP_GEMEINE     :      nRet = style::CaseMap::LOWERCASE; break;
    2294           0 :         case SVX_CASEMAP_TITEL       :      nRet = style::CaseMap::TITLE    ; break;
    2295           0 :         case SVX_CASEMAP_KAPITAELCHEN:      nRet = style::CaseMap::SMALLCAPS; break;
    2296             :     }
    2297           0 :     rVal <<= (sal_Int16)(nRet);
    2298           0 :     return true;
    2299             : }
    2300             : 
    2301           0 : bool SvxCaseMapItem::PutValue( const uno::Any& rVal, sal_uInt8 /*nMemberId*/ )
    2302             : {
    2303           0 :     sal_uInt16 nVal = sal_uInt16();
    2304           0 :     if(!(rVal >>= nVal))
    2305           0 :         return false;
    2306             : 
    2307           0 :     switch( nVal )
    2308             :     {
    2309           0 :     case style::CaseMap::NONE    :  nVal = SVX_CASEMAP_NOT_MAPPED  ; break;
    2310           0 :     case style::CaseMap::UPPERCASE:  nVal = SVX_CASEMAP_VERSALIEN   ; break;
    2311           0 :     case style::CaseMap::LOWERCASE:  nVal = SVX_CASEMAP_GEMEINE     ; break;
    2312           0 :     case style::CaseMap::TITLE    :  nVal = SVX_CASEMAP_TITEL       ; break;
    2313           0 :     case style::CaseMap::SMALLCAPS:  nVal = SVX_CASEMAP_KAPITAELCHEN; break;
    2314             :     }
    2315           0 :     SetValue(nVal);
    2316           0 :     return true;
    2317             : }
    2318             : 
    2319             : // class SvxEscapementItem -----------------------------------------------
    2320             : 
    2321           0 : SvxEscapementItem::SvxEscapementItem( const sal_uInt16 nId ) :
    2322             :     SfxEnumItemInterface( nId ),
    2323             : 
    2324             :     nEsc    ( 0 ),
    2325           0 :     nProp   ( 100 )
    2326             : {
    2327           0 : }
    2328             : 
    2329             : 
    2330             : 
    2331           0 : SvxEscapementItem::SvxEscapementItem( const SvxEscapement eEscape,
    2332             :                                       const sal_uInt16 nId ) :
    2333             :     SfxEnumItemInterface( nId ),
    2334           0 :     nProp( 100 )
    2335             : {
    2336           0 :     SetEscapement( eEscape );
    2337           0 :     if( nEsc )
    2338           0 :         nProp = 58;
    2339           0 : }
    2340             : 
    2341             : 
    2342             : 
    2343           0 : SvxEscapementItem::SvxEscapementItem( const short _nEsc,
    2344             :                                       const sal_uInt8 _nProp,
    2345             :                                       const sal_uInt16 nId ) :
    2346             :     SfxEnumItemInterface( nId ),
    2347             :     nEsc    ( _nEsc ),
    2348           0 :     nProp   ( _nProp )
    2349             : {
    2350           0 : }
    2351             : 
    2352             : 
    2353             : 
    2354           0 : bool SvxEscapementItem::operator==( const SfxPoolItem& rAttr ) const
    2355             : {
    2356             :     DBG_ASSERT( SfxPoolItem::operator==(rAttr), "unequal types" );
    2357             : 
    2358           0 :     return( nEsc  == ((SvxEscapementItem&)rAttr).nEsc &&
    2359           0 :             nProp == ((SvxEscapementItem&)rAttr).nProp );
    2360             : }
    2361             : 
    2362             : 
    2363             : 
    2364           0 : SfxPoolItem* SvxEscapementItem::Clone( SfxItemPool * ) const
    2365             : {
    2366           0 :     return new SvxEscapementItem( *this );
    2367             : }
    2368             : 
    2369             : 
    2370             : 
    2371           0 : SvStream& SvxEscapementItem::Store( SvStream& rStrm , sal_uInt16 /*nItemVersion*/ ) const
    2372             : {
    2373           0 :     short _nEsc = GetEsc();
    2374           0 :     if( SOFFICE_FILEFORMAT_31 == rStrm.GetVersion() )
    2375             :     {
    2376           0 :         if( DFLT_ESC_AUTO_SUPER == _nEsc )
    2377           0 :             _nEsc = DFLT_ESC_SUPER;
    2378           0 :         else if( DFLT_ESC_AUTO_SUB == _nEsc )
    2379           0 :             _nEsc = DFLT_ESC_SUB;
    2380             :     }
    2381           0 :     rStrm.WriteUChar( (sal_uInt8) GetProp() )
    2382           0 :          .WriteInt16( (short) _nEsc );
    2383           0 :     return rStrm;
    2384             : }
    2385             : 
    2386             : 
    2387             : 
    2388           0 : SfxPoolItem* SvxEscapementItem::Create(SvStream& rStrm, sal_uInt16) const
    2389             : {
    2390             :     sal_uInt8 _nProp;
    2391             :     short _nEsc;
    2392           0 :     rStrm.ReadUChar( _nProp ).ReadInt16( _nEsc );
    2393           0 :     return new SvxEscapementItem( _nEsc, _nProp, Which() );
    2394             : }
    2395             : 
    2396             : 
    2397             : 
    2398           0 : sal_uInt16 SvxEscapementItem::GetValueCount() const
    2399             : {
    2400           0 :     return SVX_ESCAPEMENT_END;  // SVX_ESCAPEMENT_SUBSCRIPT + 1
    2401             : }
    2402             : 
    2403             : 
    2404             : 
    2405           0 : SfxItemPresentation SvxEscapementItem::GetPresentation
    2406             : (
    2407             :     SfxItemPresentation ePres,
    2408             :     SfxMapUnit          /*eCoreUnit*/,
    2409             :     SfxMapUnit          /*ePresUnit*/,
    2410             :     OUString&           rText, const IntlWrapper * /*pIntl*/
    2411             : )   const
    2412             : {
    2413           0 :     switch ( ePres )
    2414             :     {
    2415             :         case SFX_ITEM_PRESENTATION_NONE:
    2416           0 :             rText = OUString();
    2417           0 :             return ePres;
    2418             :         case SFX_ITEM_PRESENTATION_NAMELESS:
    2419             :         case SFX_ITEM_PRESENTATION_COMPLETE:
    2420             :         {
    2421           0 :             rText = GetValueTextByPos( GetEnumValue() );
    2422             : 
    2423           0 :             if ( nEsc != 0 )
    2424             :             {
    2425           0 :                 if( DFLT_ESC_AUTO_SUPER == nEsc || DFLT_ESC_AUTO_SUB == nEsc )
    2426           0 :                     rText += EE_RESSTR(RID_SVXITEMS_ESCAPEMENT_AUTO);
    2427             :                 else
    2428           0 :                     rText = rText + OUString::number( nEsc ) + "%";
    2429             :             }
    2430           0 :             return ePres;
    2431             :         }
    2432             :         default: ; //prevent warning
    2433             :     }
    2434           0 :     return SFX_ITEM_PRESENTATION_NONE;
    2435             : }
    2436             : 
    2437             : 
    2438             : 
    2439           0 : OUString SvxEscapementItem::GetValueTextByPos( sal_uInt16 nPos ) const
    2440             : {
    2441             :     DBG_ASSERT( nPos < (sal_uInt16)SVX_ESCAPEMENT_END, "enum overflow!" );
    2442           0 :     return EE_RESSTR(RID_SVXITEMS_ESCAPEMENT_BEGIN + nPos);
    2443             : }
    2444             : 
    2445             : 
    2446             : 
    2447           0 : sal_uInt16 SvxEscapementItem::GetEnumValue() const
    2448             : {
    2449           0 :     if ( nEsc < 0 )
    2450           0 :         return SVX_ESCAPEMENT_SUBSCRIPT;
    2451           0 :     else if ( nEsc > 0 )
    2452           0 :         return SVX_ESCAPEMENT_SUPERSCRIPT;
    2453           0 :     return SVX_ESCAPEMENT_OFF;
    2454             : }
    2455             : 
    2456             : 
    2457             : 
    2458           0 : void SvxEscapementItem::SetEnumValue( sal_uInt16 nVal )
    2459             : {
    2460           0 :     SetEscapement( (const SvxEscapement)nVal );
    2461           0 : }
    2462             : 
    2463           0 : bool SvxEscapementItem::QueryValue( uno::Any& rVal, sal_uInt8 nMemberId ) const
    2464             : {
    2465           0 :     nMemberId &= ~CONVERT_TWIPS;
    2466           0 :     switch(nMemberId)
    2467             :     {
    2468             :         case MID_ESC:
    2469           0 :             rVal <<= (sal_Int16)(nEsc);
    2470           0 :         break;
    2471             :         case MID_ESC_HEIGHT:
    2472           0 :             rVal <<= (sal_Int8)(nProp);
    2473           0 :         break;
    2474             :         case MID_AUTO_ESC:
    2475           0 :             rVal = Bool2Any(DFLT_ESC_AUTO_SUB == nEsc || DFLT_ESC_AUTO_SUPER == nEsc);
    2476           0 :         break;
    2477             :     }
    2478           0 :     return true;
    2479             : }
    2480             : 
    2481           0 : bool SvxEscapementItem::PutValue( const uno::Any& rVal, sal_uInt8 nMemberId )
    2482             : {
    2483           0 :     nMemberId &= ~CONVERT_TWIPS;
    2484           0 :     switch(nMemberId)
    2485             :     {
    2486             :         case MID_ESC:
    2487             :         {
    2488           0 :             sal_Int16 nVal = sal_Int16();
    2489           0 :             if( (rVal >>= nVal) && (std::abs(nVal) <= 101))
    2490           0 :                 nEsc = nVal;
    2491             :             else
    2492           0 :                 return false;
    2493             :         }
    2494           0 :         break;
    2495             :         case MID_ESC_HEIGHT:
    2496             :         {
    2497           0 :             sal_Int8 nVal = sal_Int8();
    2498           0 :             if( (rVal >>= nVal) && (nVal <= 100))
    2499           0 :                 nProp = nVal;
    2500             :             else
    2501           0 :                 return false;
    2502             :         }
    2503           0 :         break;
    2504             :         case MID_AUTO_ESC:
    2505             :         {
    2506           0 :             sal_Bool bVal = Any2Bool(rVal);
    2507           0 :             if(bVal)
    2508             :             {
    2509           0 :                 if(nEsc < 0)
    2510           0 :                     nEsc = DFLT_ESC_AUTO_SUB;
    2511             :                 else
    2512           0 :                     nEsc = DFLT_ESC_AUTO_SUPER;
    2513             :             }
    2514             :             else
    2515           0 :                 if(DFLT_ESC_AUTO_SUPER == nEsc )
    2516           0 :                     --nEsc;
    2517           0 :                 else if(DFLT_ESC_AUTO_SUB == nEsc)
    2518           0 :                     ++nEsc;
    2519             :         }
    2520           0 :         break;
    2521             :     }
    2522           0 :     return true;
    2523             : }
    2524             : 
    2525             : // class SvxLanguageItem -------------------------------------------------
    2526             : 
    2527           0 : SvxLanguageItem::SvxLanguageItem( const LanguageType eLang, const sal_uInt16 nId )
    2528           0 :     : SfxEnumItem( nId , eLang )
    2529             : {
    2530           0 : }
    2531             : 
    2532             : 
    2533             : 
    2534           0 : sal_uInt16 SvxLanguageItem::GetValueCount() const
    2535             : {
    2536             :     // #i50205# got rid of class International
    2537             :     SAL_WARN( "editeng.items", "SvxLanguageItem::GetValueCount: supposed to return a count of what?");
    2538             :     // FIXME: previously returned LANGUAGE_COUNT from tools/intn.hxx which was wrong anyway.
    2539             :     // Could be SvtLanguageTable::GetEntryCount() (all locales with resource string)?
    2540             :     // Could be LocaleDataWrapper::getInstalledLanguageTypes() (all locales with locale data)?
    2541           0 :     return 0;
    2542             : }
    2543             : 
    2544             : 
    2545             : 
    2546           0 : SfxPoolItem* SvxLanguageItem::Clone( SfxItemPool * ) const
    2547             : {
    2548           0 :     return new SvxLanguageItem( *this );
    2549             : }
    2550             : 
    2551             : 
    2552             : 
    2553           0 : SvStream& SvxLanguageItem::Store( SvStream& rStrm , sal_uInt16 /*nItemVersion*/ ) const
    2554             : {
    2555           0 :     rStrm.WriteUInt16( (sal_uInt16) GetValue() );
    2556           0 :     return rStrm;
    2557             : }
    2558             : 
    2559             : 
    2560             : 
    2561           0 : SfxPoolItem* SvxLanguageItem::Create(SvStream& rStrm, sal_uInt16) const
    2562             : {
    2563             :     sal_uInt16 nValue;
    2564           0 :     rStrm.ReadUInt16( nValue );
    2565           0 :     return new SvxLanguageItem( (LanguageType)nValue, Which() );
    2566             : }
    2567             : 
    2568             : 
    2569             : 
    2570           0 : SfxItemPresentation SvxLanguageItem::GetPresentation
    2571             : (
    2572             :     SfxItemPresentation ePres,
    2573             :     SfxMapUnit          /*eCoreUnit*/,
    2574             :     SfxMapUnit          /*ePresUnit*/,
    2575             :     OUString&           rText, const IntlWrapper * /*pIntl*/
    2576             : )   const
    2577             : {
    2578           0 :     switch ( ePres )
    2579             :     {
    2580             :         case SFX_ITEM_PRESENTATION_NONE:
    2581           0 :             rText = OUString();
    2582           0 :             return ePres;
    2583             :         case SFX_ITEM_PRESENTATION_NAMELESS:
    2584             :         case SFX_ITEM_PRESENTATION_COMPLETE:
    2585             :         {
    2586           0 :             SvtLanguageTable aLangTable;
    2587           0 :             rText = aLangTable.GetString( (LanguageType)GetValue() );
    2588           0 :             return ePres;
    2589             :         }
    2590             :         default: ; //prevent warning
    2591             :     }
    2592           0 :     return SFX_ITEM_PRESENTATION_NONE;
    2593             : }
    2594             : 
    2595           0 : bool SvxLanguageItem::QueryValue( uno::Any& rVal, sal_uInt8 nMemberId ) const
    2596             : {
    2597           0 :     nMemberId &= ~CONVERT_TWIPS;
    2598           0 :     switch(nMemberId)
    2599             :     {
    2600             :         case MID_LANG_INT:  // for basic conversions!
    2601           0 :             rVal <<= (sal_Int16)(GetValue());
    2602           0 :         break;
    2603             :         case MID_LANG_LOCALE:
    2604           0 :             lang::Locale aRet( LanguageTag( GetValue()).getLocale( false));
    2605           0 :             rVal <<= aRet;
    2606           0 :         break;
    2607             :     }
    2608           0 :     return true;
    2609             : }
    2610             : 
    2611           0 : bool SvxLanguageItem::PutValue( const uno::Any& rVal, sal_uInt8 nMemberId )
    2612             : {
    2613           0 :     nMemberId &= ~CONVERT_TWIPS;
    2614           0 :     switch(nMemberId)
    2615             :     {
    2616             :         case MID_LANG_INT:  // for basic conversions!
    2617             :         {
    2618           0 :             sal_Int32 nValue = 0;
    2619           0 :             if(!(rVal >>= nValue))
    2620           0 :                 return false;
    2621             : 
    2622           0 :             SetValue((sal_Int16)nValue);
    2623             :         }
    2624           0 :         break;
    2625             :         case MID_LANG_LOCALE:
    2626             :         {
    2627           0 :             lang::Locale aLocale;
    2628           0 :             if(!(rVal >>= aLocale))
    2629           0 :                 return false;
    2630             : 
    2631           0 :             SetValue( LanguageTag::convertToLanguageType( aLocale, false));
    2632             :         }
    2633           0 :         break;
    2634             :     }
    2635           0 :     return true;
    2636             : }
    2637             : 
    2638             : // class SvxNoLinebreakItem ----------------------------------------------
    2639           0 : SvxNoLinebreakItem::SvxNoLinebreakItem( const bool bBreak, const sal_uInt16 nId ) :
    2640           0 :       SfxBoolItem( nId, bBreak )
    2641             : {
    2642           0 : }
    2643             : 
    2644             : 
    2645             : 
    2646           0 : SfxPoolItem* SvxNoLinebreakItem::Clone( SfxItemPool* ) const
    2647             : {
    2648           0 :     return new SvxNoLinebreakItem( *this );
    2649             : }
    2650             : 
    2651             : 
    2652             : 
    2653           0 : SvStream& SvxNoLinebreakItem::Store( SvStream& rStrm , sal_uInt16 /*nItemVersion*/ ) const
    2654             : {
    2655           0 :     rStrm.WriteUChar( (sal_Bool)GetValue() );
    2656           0 :     return rStrm;
    2657             : }
    2658             : 
    2659             : 
    2660             : 
    2661           0 : SfxPoolItem* SvxNoLinebreakItem::Create(SvStream& rStrm, sal_uInt16) const
    2662             : {
    2663             :     sal_Bool bValue;
    2664           0 :     rStrm.ReadUChar( bValue );
    2665           0 :     return new SvxNoLinebreakItem( bValue, Which() );
    2666             : }
    2667             : 
    2668             : 
    2669             : 
    2670           0 : SfxItemPresentation SvxNoLinebreakItem::GetPresentation
    2671             : (
    2672             :     SfxItemPresentation /*ePres*/,
    2673             :     SfxMapUnit          /*eCoreUnit*/,
    2674             :     SfxMapUnit          /*ePresUnit*/,
    2675             :     OUString&           rText, const IntlWrapper * /*pIntl*/
    2676             : )   const
    2677             : {
    2678           0 :     rText = OUString();
    2679           0 :     return SFX_ITEM_PRESENTATION_NONE;
    2680             : }
    2681             : 
    2682             : // class SvxNoHyphenItem -------------------------------------------------
    2683             : 
    2684           0 : SvxNoHyphenItem::SvxNoHyphenItem( const bool bHyphen, const sal_uInt16 nId ) :
    2685           0 :     SfxBoolItem( nId , bHyphen )
    2686             : {
    2687           0 : }
    2688             : 
    2689             : 
    2690             : 
    2691           0 : SfxPoolItem* SvxNoHyphenItem::Clone( SfxItemPool* ) const
    2692             : {
    2693           0 :     return new SvxNoHyphenItem( *this );
    2694             : }
    2695             : 
    2696             : 
    2697             : 
    2698           0 : SvStream& SvxNoHyphenItem::Store( SvStream& rStrm , sal_uInt16 /*nItemVersion*/ ) const
    2699             : {
    2700           0 :     rStrm.WriteUChar( (sal_Bool) GetValue() );
    2701           0 :     return rStrm;
    2702             : }
    2703             : 
    2704             : 
    2705             : 
    2706           0 : SfxPoolItem* SvxNoHyphenItem::Create( SvStream& rStrm, sal_uInt16 ) const
    2707             : {
    2708             :     sal_Bool bValue;
    2709           0 :     rStrm.ReadUChar( bValue );
    2710           0 :     return new SvxNoHyphenItem( bValue, Which() );
    2711             : }
    2712             : 
    2713             : 
    2714             : 
    2715           0 : SfxItemPresentation SvxNoHyphenItem::GetPresentation
    2716             : (
    2717             :     SfxItemPresentation /*ePres*/,
    2718             :     SfxMapUnit          /*eCoreUnit*/,
    2719             :     SfxMapUnit          /*ePresUnit*/,
    2720             :     OUString&           rText, const IntlWrapper * /*pIntl*/
    2721             : )   const
    2722             : {
    2723           0 :     rText = OUString();
    2724           0 :     return SFX_ITEM_PRESENTATION_NONE;
    2725             : }
    2726             : 
    2727             : /*
    2728             :  * Dummy item for ToolBox controls:
    2729             :  *
    2730             :  */
    2731             : 
    2732             : 
    2733             : // class SvxLineColorItem (== SvxColorItem)
    2734             : 
    2735             : 
    2736           0 : SvxLineColorItem::SvxLineColorItem( const sal_uInt16 nId ) :
    2737           0 :     SvxColorItem( nId )
    2738             : {
    2739           0 : }
    2740             : 
    2741             : 
    2742             : 
    2743           0 : SvxLineColorItem::SvxLineColorItem( const SvxLineColorItem &rCopy ) :
    2744           0 :     SvxColorItem( rCopy )
    2745             : {
    2746           0 : }
    2747             : 
    2748             : 
    2749             : 
    2750           0 : SvxLineColorItem::~SvxLineColorItem()
    2751             : {
    2752           0 : }
    2753             : 
    2754             : 
    2755             : 
    2756           0 : SfxItemPresentation SvxLineColorItem::GetPresentation
    2757             : (
    2758             :     SfxItemPresentation ePres,
    2759             :     SfxMapUnit          eCoreUnit,
    2760             :     SfxMapUnit          ePresUnit,
    2761             :     OUString&           rText,
    2762             :     const IntlWrapper * pIntlWrapper
    2763             : )   const
    2764             : {
    2765             :     return SvxColorItem::GetPresentation( ePres, eCoreUnit, ePresUnit,
    2766           0 :                                           rText, pIntlWrapper );
    2767             : }
    2768             : 
    2769             : // class SvxBlinkItem -------------------------------------------------
    2770             : 
    2771             : 
    2772           0 : SvxBlinkItem::SvxBlinkItem( const bool bBlink, const sal_uInt16 nId ) :
    2773           0 :     SfxBoolItem( nId, bBlink )
    2774             : {
    2775           0 : }
    2776             : 
    2777             : 
    2778             : 
    2779           0 : SfxPoolItem* SvxBlinkItem::Clone( SfxItemPool * ) const
    2780             : {
    2781           0 :     return new SvxBlinkItem( *this );
    2782             : }
    2783             : 
    2784             : 
    2785             : 
    2786           0 : SvStream& SvxBlinkItem::Store( SvStream& rStrm , sal_uInt16 /*nItemVersion*/ ) const
    2787             : {
    2788           0 :     rStrm.WriteUChar( (sal_uInt8) GetValue() );
    2789           0 :     return rStrm;
    2790             : }
    2791             : 
    2792             : 
    2793             : 
    2794           0 : SfxPoolItem* SvxBlinkItem::Create(SvStream& rStrm, sal_uInt16) const
    2795             : {
    2796             :     sal_uInt8 nState;
    2797           0 :     rStrm.ReadUChar( nState );
    2798           0 :     return new SvxBlinkItem( nState, Which() );
    2799             : }
    2800             : 
    2801             : 
    2802             : 
    2803           0 : SfxItemPresentation SvxBlinkItem::GetPresentation
    2804             : (
    2805             :     SfxItemPresentation ePres,
    2806             :     SfxMapUnit          /*eCoreUnit*/,
    2807             :     SfxMapUnit          /*ePresUnit*/,
    2808             :     OUString&           rText, const IntlWrapper * /*pIntl*/
    2809             : )   const
    2810             : {
    2811           0 :     switch ( ePres )
    2812             :     {
    2813             :         case SFX_ITEM_PRESENTATION_NONE:
    2814           0 :             rText = OUString();
    2815           0 :             return ePres;
    2816             :         case SFX_ITEM_PRESENTATION_NAMELESS:
    2817             :         case SFX_ITEM_PRESENTATION_COMPLETE:
    2818             :         {
    2819           0 :             sal_uInt16 nId = RID_SVXITEMS_BLINK_FALSE;
    2820             : 
    2821           0 :             if ( GetValue() )
    2822           0 :                 nId = RID_SVXITEMS_BLINK_TRUE;
    2823           0 :             rText = EE_RESSTR(nId);
    2824           0 :             return ePres;
    2825             :         }
    2826             :         default: ; //prevent warning
    2827             :     }
    2828           0 :     return SFX_ITEM_PRESENTATION_NONE;
    2829             : }
    2830             : 
    2831             : // class SvxEmphaisMarkItem ---------------------------------------------------
    2832             : 
    2833           0 : SvxEmphasisMarkItem::SvxEmphasisMarkItem( const FontEmphasisMark nValue,
    2834             :                                         const sal_uInt16 nId )
    2835           0 :     : SfxUInt16Item( nId, nValue )
    2836             : {
    2837           0 : }
    2838             : 
    2839             : 
    2840             : 
    2841           0 : SfxPoolItem* SvxEmphasisMarkItem::Clone( SfxItemPool * ) const
    2842             : {
    2843           0 :     return new SvxEmphasisMarkItem( *this );
    2844             : }
    2845             : 
    2846             : 
    2847             : 
    2848           0 : SvStream& SvxEmphasisMarkItem::Store( SvStream& rStrm,
    2849             :                                      sal_uInt16 /*nItemVersion*/ ) const
    2850             : {
    2851           0 :     rStrm.WriteUInt16( (sal_uInt16)GetValue() );
    2852           0 :     return rStrm;
    2853             : }
    2854             : 
    2855             : 
    2856             : 
    2857           0 : SfxPoolItem* SvxEmphasisMarkItem::Create( SvStream& rStrm, sal_uInt16 ) const
    2858             : {
    2859             :     sal_uInt16 nValue;
    2860           0 :     rStrm.ReadUInt16( nValue );
    2861           0 :     return new SvxEmphasisMarkItem( (FontEmphasisMark)nValue, Which() );
    2862             : }
    2863             : 
    2864             : 
    2865             : 
    2866           0 : SfxItemPresentation SvxEmphasisMarkItem::GetPresentation
    2867             : (
    2868             :     SfxItemPresentation ePres,
    2869             :     SfxMapUnit          /*eCoreUnit*/,
    2870             :     SfxMapUnit          /*ePresUnit*/,
    2871             :     OUString&           rText,
    2872             :     const IntlWrapper * /*pIntl*/
    2873             : )   const
    2874             : {
    2875           0 :     switch ( ePres )
    2876             :     {
    2877             :         case SFX_ITEM_PRESENTATION_NONE:
    2878           0 :             rText = OUString();
    2879           0 :             return ePres;
    2880             :         case SFX_ITEM_PRESENTATION_NAMELESS:
    2881             :         case SFX_ITEM_PRESENTATION_COMPLETE:
    2882             :             {
    2883           0 :                 sal_uInt16 nVal = GetValue();
    2884           0 :                 rText = EE_RESSTR( RID_SVXITEMS_EMPHASIS_BEGIN_STYLE +
    2885           0 :                                         ( EMPHASISMARK_STYLE & nVal ));
    2886           0 :                 sal_uInt16 nId = ( EMPHASISMARK_POS_ABOVE & nVal )
    2887             :                                 ? RID_SVXITEMS_EMPHASIS_ABOVE_POS
    2888           0 :                                 : ( EMPHASISMARK_POS_BELOW & nVal )
    2889             :                                     ? RID_SVXITEMS_EMPHASIS_BELOW_POS
    2890           0 :                                     : 0;
    2891           0 :                 if( nId )
    2892           0 :                     rText += EE_RESSTR( nId );
    2893           0 :                 return ePres;
    2894             :             }
    2895             :         default: ; //prevent warning
    2896             :     }
    2897           0 :     return SFX_ITEM_PRESENTATION_NONE;
    2898             : }
    2899             : 
    2900             : 
    2901             : 
    2902           0 : bool SvxEmphasisMarkItem::QueryValue( uno::Any& rVal, sal_uInt8 nMemberId ) const
    2903             : {
    2904           0 :     nMemberId &= ~CONVERT_TWIPS;
    2905           0 :     switch( nMemberId )
    2906             :     {
    2907             :     case MID_EMPHASIS:
    2908             :     {
    2909           0 :         sal_Int16 nValue = GetValue();
    2910           0 :         sal_Int16 nRet = 0;
    2911           0 :         switch(nValue & EMPHASISMARK_STYLE)
    2912             :         {
    2913           0 :             case EMPHASISMARK_NONE   : nRet = FontEmphasis::NONE;           break;
    2914           0 :             case EMPHASISMARK_DOT    : nRet = FontEmphasis::DOT_ABOVE;      break;
    2915           0 :             case EMPHASISMARK_CIRCLE : nRet = FontEmphasis::CIRCLE_ABOVE;   break;
    2916           0 :             case EMPHASISMARK_DISC   : nRet = FontEmphasis::DISK_ABOVE;     break;
    2917           0 :             case EMPHASISMARK_ACCENT : nRet = FontEmphasis::ACCENT_ABOVE;   break;
    2918             :         }
    2919           0 :         if(nRet && nValue & EMPHASISMARK_POS_BELOW)
    2920           0 :             nRet += 10;
    2921           0 :         rVal <<= nRet;
    2922             :     }
    2923           0 :     break;
    2924             :     }
    2925           0 :     return true;
    2926             : }
    2927             : 
    2928           0 : bool SvxEmphasisMarkItem::PutValue( const uno::Any& rVal, sal_uInt8 nMemberId )
    2929             : {
    2930           0 :     nMemberId &= ~CONVERT_TWIPS;
    2931           0 :     sal_Bool bRet = true;
    2932           0 :     switch( nMemberId )
    2933             :     {
    2934             :     case MID_EMPHASIS:
    2935             :     {
    2936           0 :         sal_Int32 nValue = -1;
    2937           0 :         rVal >>= nValue;
    2938           0 :         switch(nValue)
    2939             :         {
    2940           0 :             case FontEmphasis::NONE        : nValue = EMPHASISMARK_NONE;   break;
    2941           0 :             case FontEmphasis::DOT_ABOVE   : nValue = EMPHASISMARK_DOT|EMPHASISMARK_POS_ABOVE;    break;
    2942           0 :             case FontEmphasis::CIRCLE_ABOVE: nValue = EMPHASISMARK_CIRCLE|EMPHASISMARK_POS_ABOVE; break;
    2943           0 :             case FontEmphasis::DISK_ABOVE  : nValue = EMPHASISMARK_DISC|EMPHASISMARK_POS_ABOVE;   break;
    2944           0 :             case FontEmphasis::ACCENT_ABOVE: nValue = EMPHASISMARK_ACCENT|EMPHASISMARK_POS_ABOVE; break;
    2945           0 :             case FontEmphasis::DOT_BELOW   : nValue = EMPHASISMARK_DOT|EMPHASISMARK_POS_BELOW;    break;
    2946           0 :             case FontEmphasis::CIRCLE_BELOW: nValue = EMPHASISMARK_CIRCLE|EMPHASISMARK_POS_BELOW; break;
    2947           0 :             case FontEmphasis::DISK_BELOW  : nValue = EMPHASISMARK_DISC|EMPHASISMARK_POS_BELOW;   break;
    2948           0 :             case FontEmphasis::ACCENT_BELOW: nValue = EMPHASISMARK_ACCENT|EMPHASISMARK_POS_BELOW; break;
    2949           0 :             default: return false;
    2950             :         }
    2951           0 :         SetValue( (sal_Int16)nValue );
    2952             :     }
    2953           0 :     break;
    2954             :     }
    2955           0 :     return bRet;
    2956             : }
    2957             : 
    2958           0 : sal_uInt16 SvxEmphasisMarkItem::GetVersion( sal_uInt16 nFFVer ) const
    2959             : {
    2960             :     DBG_ASSERT( SOFFICE_FILEFORMAT_31==nFFVer ||
    2961             :             SOFFICE_FILEFORMAT_40==nFFVer ||
    2962             :             SOFFICE_FILEFORMAT_50==nFFVer,
    2963             :             "SvxEmphasisMarkItem: Is there a new file format? ");
    2964             : 
    2965           0 :     return SOFFICE_FILEFORMAT_50 > nFFVer ? USHRT_MAX : 0;
    2966             : }
    2967             : 
    2968             : 
    2969             : /*************************************************************************
    2970             : |*    class SvxTwoLinesItem
    2971             : *************************************************************************/
    2972             : 
    2973           0 : SvxTwoLinesItem::SvxTwoLinesItem( bool bFlag, sal_Unicode nStartBracket,
    2974             :                                     sal_Unicode nEndBracket, sal_uInt16 nW )
    2975             :     : SfxPoolItem( nW ),
    2976           0 :     cStartBracket( nStartBracket ), cEndBracket( nEndBracket ), bOn( bFlag )
    2977             : {
    2978           0 : }
    2979             : 
    2980           0 : SvxTwoLinesItem::SvxTwoLinesItem( const SvxTwoLinesItem& rAttr )
    2981           0 :     : SfxPoolItem( rAttr.Which() ),
    2982             :     cStartBracket( rAttr.cStartBracket ),
    2983             :     cEndBracket( rAttr.cEndBracket ),
    2984           0 :     bOn( rAttr.bOn )
    2985             : {
    2986           0 : }
    2987             : 
    2988           0 : SvxTwoLinesItem::~SvxTwoLinesItem()
    2989             : {
    2990           0 : }
    2991             : 
    2992           0 : bool SvxTwoLinesItem::operator==( const SfxPoolItem& rAttr ) const
    2993             : {
    2994             :     DBG_ASSERT( SfxPoolItem::operator==( rAttr ), "not equal attribute types" );
    2995           0 :     return bOn == ((SvxTwoLinesItem&)rAttr).bOn &&
    2996           0 :            cStartBracket == ((SvxTwoLinesItem&)rAttr).cStartBracket &&
    2997           0 :            cEndBracket == ((SvxTwoLinesItem&)rAttr).cEndBracket;
    2998             : }
    2999             : 
    3000           0 : SfxPoolItem* SvxTwoLinesItem::Clone( SfxItemPool* ) const
    3001             : {
    3002           0 :     return new SvxTwoLinesItem( *this );
    3003             : }
    3004             : 
    3005           0 : bool SvxTwoLinesItem::QueryValue( com::sun::star::uno::Any& rVal,
    3006             :                                 sal_uInt8 nMemberId ) const
    3007             : {
    3008           0 :     nMemberId &= ~CONVERT_TWIPS;
    3009           0 :     sal_Bool bRet = true;
    3010           0 :     switch( nMemberId )
    3011             :     {
    3012             :     case MID_TWOLINES:
    3013           0 :         rVal = Bool2Any( bOn );
    3014           0 :         break;
    3015             :     case MID_START_BRACKET:
    3016             :         {
    3017           0 :             OUString s;
    3018           0 :             if( cStartBracket )
    3019           0 :                 s = OUString( cStartBracket );
    3020           0 :             rVal <<= s;
    3021             :         }
    3022           0 :         break;
    3023             :     case MID_END_BRACKET:
    3024             :         {
    3025           0 :             OUString s;
    3026           0 :             if( cEndBracket )
    3027           0 :                 s = OUString( cEndBracket );
    3028           0 :             rVal <<= s;
    3029             :         }
    3030           0 :         break;
    3031             :     default:
    3032           0 :         bRet = false;
    3033           0 :         break;
    3034             :     }
    3035           0 :     return bRet;
    3036             : }
    3037             : 
    3038           0 : bool SvxTwoLinesItem::PutValue( const com::sun::star::uno::Any& rVal,
    3039             :                                     sal_uInt8 nMemberId )
    3040             : {
    3041           0 :     nMemberId &= ~CONVERT_TWIPS;
    3042           0 :     sal_Bool bRet = sal_False;
    3043           0 :     OUString s;
    3044           0 :     switch( nMemberId )
    3045             :     {
    3046             :     case MID_TWOLINES:
    3047           0 :         bOn = Any2Bool( rVal );
    3048           0 :         bRet = sal_True;
    3049           0 :         break;
    3050             :     case MID_START_BRACKET:
    3051           0 :         if( rVal >>= s )
    3052             :         {
    3053           0 :             cStartBracket = s.isEmpty() ? 0 : s[ 0 ];
    3054           0 :             bRet = sal_True;
    3055             :         }
    3056           0 :         break;
    3057             :     case MID_END_BRACKET:
    3058           0 :         if( rVal >>= s )
    3059             :         {
    3060           0 :             cEndBracket = s.isEmpty() ? 0 : s[ 0 ];
    3061           0 :             bRet = sal_True;
    3062             :         }
    3063           0 :         break;
    3064             :     }
    3065           0 :     return bRet;
    3066             : }
    3067             : 
    3068           0 : SfxItemPresentation SvxTwoLinesItem::GetPresentation( SfxItemPresentation ePres,
    3069             :                             SfxMapUnit /*eCoreMetric*/, SfxMapUnit /*ePresMetric*/,
    3070             :                             OUString &rText, const IntlWrapper* /*pIntl*/ ) const
    3071             : {
    3072           0 :     switch( ePres )
    3073             :     {
    3074             :     case SFX_ITEM_PRESENTATION_NONE:
    3075           0 :         rText = OUString();
    3076           0 :         break;
    3077             :     case SFX_ITEM_PRESENTATION_NAMELESS:
    3078             :     case SFX_ITEM_PRESENTATION_COMPLETE:
    3079             :         {
    3080           0 :             if( !GetValue() )
    3081           0 :                 rText = EE_RESSTR( RID_SVXITEMS_TWOLINES_OFF );
    3082             :             else
    3083             :             {
    3084           0 :                 rText = EE_RESSTR( RID_SVXITEMS_TWOLINES );
    3085           0 :                 if( GetStartBracket() )
    3086           0 :                     rText = OUString(GetStartBracket()) + rText;
    3087           0 :                 if( GetEndBracket() )
    3088           0 :                     rText += OUString(GetEndBracket());
    3089             :             }
    3090           0 :             return ePres;
    3091             :         }
    3092             :         default: ; //prevent warning
    3093             :     }
    3094           0 :     return SFX_ITEM_PRESENTATION_NONE;
    3095             : }
    3096             : 
    3097             : 
    3098           0 : SfxPoolItem* SvxTwoLinesItem::Create( SvStream & rStrm, sal_uInt16 /*nVer*/) const
    3099             : {
    3100             :     sal_Bool _bOn;
    3101             :     sal_Unicode cStart, cEnd;
    3102           0 :     rStrm.ReadUChar( _bOn ).ReadUInt16( cStart ).ReadUInt16( cEnd );
    3103           0 :     return new SvxTwoLinesItem( _bOn, cStart, cEnd, Which() );
    3104             : }
    3105             : 
    3106           0 : SvStream& SvxTwoLinesItem::Store(SvStream & rStrm, sal_uInt16 /*nIVer*/) const
    3107             : {
    3108           0 :     rStrm.WriteUChar( GetValue() ).WriteUInt16( GetStartBracket() ).WriteUInt16( GetEndBracket() );
    3109           0 :     return rStrm;
    3110             : }
    3111             : 
    3112           0 : sal_uInt16 SvxTwoLinesItem::GetVersion( sal_uInt16 nFFVer ) const
    3113             : {
    3114             :     DBG_ASSERT( SOFFICE_FILEFORMAT_31==nFFVer ||
    3115             :             SOFFICE_FILEFORMAT_40==nFFVer ||
    3116             :             SOFFICE_FILEFORMAT_50==nFFVer,
    3117             :             "SvxTwoLinesItem: Gibt es ein neues Fileformat?" );
    3118             : 
    3119           0 :     return SOFFICE_FILEFORMAT_50 > nFFVer ? USHRT_MAX : 0;
    3120             : }
    3121             : 
    3122             : 
    3123             : /*************************************************************************
    3124             : |*    class SvxCharRotateItem
    3125             : *************************************************************************/
    3126             : 
    3127           0 : SvxCharRotateItem::SvxCharRotateItem( sal_uInt16 nValue,
    3128             :                                        bool bFitIntoLine,
    3129             :                                        const sal_uInt16 nW )
    3130           0 :     : SfxUInt16Item( nW, nValue ), bFitToLine( bFitIntoLine )
    3131             : {
    3132           0 : }
    3133             : 
    3134           0 : SfxPoolItem* SvxCharRotateItem::Clone( SfxItemPool* ) const
    3135             : {
    3136           0 :     return new SvxCharRotateItem( GetValue(), IsFitToLine(), Which() );
    3137             : }
    3138             : 
    3139           0 : SfxPoolItem* SvxCharRotateItem::Create( SvStream& rStrm, sal_uInt16 ) const
    3140             : {
    3141             :     sal_uInt16 nVal;
    3142             :     sal_Bool b;
    3143           0 :     rStrm.ReadUInt16( nVal ).ReadUChar( b );
    3144           0 :     return new SvxCharRotateItem( nVal, b, Which() );
    3145             : }
    3146             : 
    3147           0 : SvStream& SvxCharRotateItem::Store( SvStream & rStrm, sal_uInt16 ) const
    3148             : {
    3149           0 :     sal_Bool bFlag = IsFitToLine();
    3150           0 :     rStrm.WriteUInt16( GetValue() ).WriteUChar( bFlag );
    3151           0 :     return rStrm;
    3152             : }
    3153             : 
    3154           0 : sal_uInt16 SvxCharRotateItem::GetVersion( sal_uInt16 nFFVer ) const
    3155             : {
    3156           0 :     return SOFFICE_FILEFORMAT_50 > nFFVer ? USHRT_MAX : 0;
    3157             : }
    3158             : 
    3159           0 : SfxItemPresentation SvxCharRotateItem::GetPresentation(
    3160             :         SfxItemPresentation ePres,
    3161             :         SfxMapUnit /*eCoreMetric*/, SfxMapUnit /*ePresMetric*/,
    3162             :         OUString &rText, const IntlWrapper*  ) const
    3163             : {
    3164           0 :     switch( ePres )
    3165             :     {
    3166             :     case SFX_ITEM_PRESENTATION_NONE:
    3167           0 :         rText = OUString();
    3168           0 :         break;
    3169             :     case SFX_ITEM_PRESENTATION_NAMELESS:
    3170             :     case SFX_ITEM_PRESENTATION_COMPLETE:
    3171             :         {
    3172           0 :             if( !GetValue() )
    3173           0 :                 rText = EE_RESSTR( RID_SVXITEMS_CHARROTATE_OFF );
    3174             :             else
    3175             :             {
    3176           0 :                 rText = EE_RESSTR( RID_SVXITEMS_CHARROTATE );
    3177           0 :                 rText = rText.replaceFirst( "$(ARG1)",
    3178           0 :                             OUString::number( GetValue() / 10 ));
    3179           0 :                 if( IsFitToLine() )
    3180           0 :                     rText += EE_RESSTR( RID_SVXITEMS_CHARROTATE_FITLINE );
    3181             :             }
    3182           0 :             return ePres;
    3183             :         }
    3184             :         default: ; //prevent warning
    3185             :     }
    3186           0 :     return SFX_ITEM_PRESENTATION_NONE;
    3187             : }
    3188             : 
    3189           0 : bool SvxCharRotateItem::QueryValue( com::sun::star::uno::Any& rVal,
    3190             :                                 sal_uInt8 nMemberId ) const
    3191             : {
    3192           0 :     nMemberId &= ~CONVERT_TWIPS;
    3193           0 :     bool bRet = true;
    3194           0 :     switch( nMemberId )
    3195             :     {
    3196             :     case MID_ROTATE:
    3197           0 :         rVal <<= (sal_Int16)GetValue();
    3198           0 :         break;
    3199             :     case MID_FITTOLINE:
    3200           0 :         rVal = Bool2Any( IsFitToLine() );
    3201           0 :         break;
    3202             :     default:
    3203           0 :         bRet = false;
    3204           0 :         break;
    3205             :     }
    3206           0 :     return bRet;
    3207             : }
    3208             : 
    3209           0 : bool SvxCharRotateItem::PutValue( const com::sun::star::uno::Any& rVal,
    3210             :                                     sal_uInt8 nMemberId )
    3211             : {
    3212           0 :     nMemberId &= ~CONVERT_TWIPS;
    3213           0 :     bool bRet = true;
    3214           0 :     switch( nMemberId )
    3215             :     {
    3216             :     case MID_ROTATE:
    3217             :         {
    3218           0 :             sal_Int16 nVal = 0;
    3219           0 :             if((rVal >>= nVal) && (0 == nVal || 900 == nVal || 2700 == nVal))
    3220           0 :                 SetValue( (sal_uInt16)nVal );
    3221             :             else
    3222           0 :                 bRet = false;
    3223           0 :             break;
    3224             :         }
    3225             : 
    3226             :     case MID_FITTOLINE:
    3227           0 :         SetFitToLine( Any2Bool( rVal ) );
    3228           0 :         break;
    3229             :     default:
    3230           0 :         bRet = false;
    3231             :     }
    3232           0 :     return bRet;
    3233             : }
    3234             : 
    3235           0 : bool SvxCharRotateItem::operator==( const SfxPoolItem& rItem ) const
    3236             : {
    3237             :     DBG_ASSERT( SfxPoolItem::operator==( rItem ), "unequal type" );
    3238           0 :     return SfxUInt16Item::operator==( rItem ) &&
    3239           0 :            IsFitToLine() == ((const SvxCharRotateItem&)rItem).IsFitToLine();
    3240             : }
    3241             : 
    3242             : 
    3243             : /*************************************************************************
    3244             : |*    class SvxCharScaleItem
    3245             : *************************************************************************/
    3246             : 
    3247           0 : SvxCharScaleWidthItem::SvxCharScaleWidthItem( sal_uInt16 nValue,
    3248             :                                                const sal_uInt16 nW )
    3249           0 :     : SfxUInt16Item( nW, nValue )
    3250             : {
    3251           0 : }
    3252             : 
    3253           0 : SfxPoolItem* SvxCharScaleWidthItem::Clone( SfxItemPool* ) const
    3254             : {
    3255           0 :     return new SvxCharScaleWidthItem( GetValue(), Which() );
    3256             : }
    3257             : 
    3258           0 : SfxPoolItem* SvxCharScaleWidthItem::Create( SvStream& rStrm, sal_uInt16 ) const
    3259             : {
    3260             :     sal_uInt16 nVal;
    3261           0 :     rStrm.ReadUInt16( nVal );
    3262           0 :     SvxCharScaleWidthItem* pItem = new SvxCharScaleWidthItem( nVal, Which() );
    3263             : 
    3264           0 :     if ( Which() == EE_CHAR_FONTWIDTH )
    3265             :     {
    3266             :         // Was a SvxFontWidthItem in 5.2
    3267             :         // sal_uInt16 nFixWidth, sal_uInt16 nPropWidth.
    3268             :         // nFixWidth has never been used...
    3269           0 :         rStrm.ReadUInt16( nVal );
    3270             :         sal_uInt16 nTest;
    3271           0 :         rStrm.ReadUInt16( nTest );
    3272           0 :         if ( nTest == 0x1234 )
    3273           0 :             pItem->SetValue( nVal );
    3274             :         else
    3275           0 :             rStrm.SeekRel( -2*(long)sizeof(sal_uInt16) );
    3276             :     }
    3277             : 
    3278           0 :     return pItem;
    3279             : }
    3280             : 
    3281           0 : SvStream& SvxCharScaleWidthItem::Store( SvStream& rStream, sal_uInt16 nVer ) const
    3282             : {
    3283           0 :     SvStream& rRet = SfxUInt16Item::Store( rStream, nVer );
    3284           0 :     if ( Which() == EE_CHAR_FONTWIDTH )
    3285             :     {
    3286             :         // see comment in Create()....
    3287           0 :         rRet.SeekRel( -1*(long)sizeof(sal_uInt16) );
    3288           0 :         rRet.WriteUInt16( (sal_uInt16)0 );
    3289           0 :         rRet.WriteUInt16( GetValue() );
    3290             :         // Really ugly, but not a problem for reading the doc in 5.2
    3291           0 :         rRet.WriteUInt16( (sal_uInt16)0x1234 );
    3292             :     }
    3293           0 :     return rRet;
    3294             : }
    3295             : 
    3296             : 
    3297           0 : sal_uInt16 SvxCharScaleWidthItem::GetVersion( sal_uInt16 nFFVer ) const
    3298             : {
    3299           0 :     return SOFFICE_FILEFORMAT_50 > nFFVer ? USHRT_MAX : 0;
    3300             : }
    3301             : 
    3302           0 : SfxItemPresentation SvxCharScaleWidthItem::GetPresentation(
    3303             :         SfxItemPresentation ePres,
    3304             :         SfxMapUnit /*eCoreMetric*/, SfxMapUnit /*ePresMetric*/,
    3305             :         OUString &rText, const IntlWrapper*  ) const
    3306             : {
    3307           0 :     switch( ePres )
    3308             :     {
    3309             :     case SFX_ITEM_PRESENTATION_NONE:
    3310           0 :         rText = OUString();
    3311           0 :         break;
    3312             :     case SFX_ITEM_PRESENTATION_NAMELESS:
    3313             :     case SFX_ITEM_PRESENTATION_COMPLETE:
    3314             :         {
    3315           0 :             if( !GetValue() )
    3316           0 :                 rText = EE_RESSTR( RID_SVXITEMS_CHARSCALE_OFF );
    3317             :             else
    3318             :             {
    3319           0 :                 rText = EE_RESSTR( RID_SVXITEMS_CHARSCALE );
    3320           0 :                 rText = rText.replaceFirst( "$(ARG1)",
    3321           0 :                             OUString::number( GetValue() ));
    3322             :             }
    3323           0 :             return ePres;
    3324             :         }
    3325             :         default: ; //prevent warning
    3326             :     }
    3327           0 :     return SFX_ITEM_PRESENTATION_NONE;
    3328             : }
    3329             : 
    3330           0 : bool SvxCharScaleWidthItem::PutValue( const uno::Any& rVal, sal_uInt8 /*nMemberId*/ )
    3331             : {
    3332             :     // SfxUInt16Item::QueryValue returns sal_Int32 in Any now... (srx642w)
    3333             :     // where we still want this to be a sal_Int16
    3334           0 :     sal_Int16 nValue = sal_Int16();
    3335           0 :     if (rVal >>= nValue)
    3336             :     {
    3337           0 :         SetValue( (sal_uInt16) nValue );
    3338           0 :         return true;
    3339             :     }
    3340             : 
    3341             :     OSL_TRACE( "SvxCharScaleWidthItem::PutValue - Wrong type!" );
    3342           0 :     return false;
    3343             : }
    3344             : 
    3345           0 : bool SvxCharScaleWidthItem::QueryValue( uno::Any& rVal, sal_uInt8 /*nMemberId*/ ) const
    3346             : {
    3347             :     // SfxUInt16Item::QueryValue returns sal_Int32 in Any now... (srx642w)
    3348             :     // where we still want this to be a sal_Int16
    3349           0 :     rVal <<= (sal_Int16)GetValue();
    3350           0 :     return true;
    3351             : }
    3352             : 
    3353             : /*************************************************************************
    3354             : |*    class SvxCharReliefItem
    3355             : *************************************************************************/
    3356             : 
    3357           0 : SvxCharReliefItem::SvxCharReliefItem( FontRelief eValue,
    3358             :                                          const sal_uInt16 nId )
    3359           0 :     : SfxEnumItem( nId, (sal_uInt16)eValue )
    3360             : {
    3361           0 : }
    3362             : 
    3363           0 : SfxPoolItem* SvxCharReliefItem::Clone( SfxItemPool * ) const
    3364             : {
    3365           0 :     return new SvxCharReliefItem( *this );
    3366             : }
    3367             : 
    3368           0 : SfxPoolItem* SvxCharReliefItem::Create(SvStream & rStrm, sal_uInt16) const
    3369             : {
    3370             :     sal_uInt16 nVal;
    3371           0 :     rStrm.ReadUInt16( nVal );
    3372           0 :     return new SvxCharReliefItem( (FontRelief)nVal, Which() );
    3373             : }
    3374             : 
    3375           0 : SvStream& SvxCharReliefItem::Store(SvStream & rStrm, sal_uInt16 /*nIVer*/) const
    3376             : {
    3377           0 :     sal_uInt16 nVal = GetValue();
    3378           0 :     rStrm.WriteUInt16( nVal );
    3379           0 :     return rStrm;
    3380             : }
    3381             : 
    3382           0 : sal_uInt16 SvxCharReliefItem::GetVersion( sal_uInt16 nFFVer ) const
    3383             : {
    3384           0 :     return SOFFICE_FILEFORMAT_50 > nFFVer ? USHRT_MAX : 0;
    3385             : }
    3386             : 
    3387           0 : OUString SvxCharReliefItem::GetValueTextByPos( sal_uInt16 nPos ) const
    3388             : {
    3389             :     DBG_ASSERT( nPos < RID_SVXITEMS_RELIEF_ENGRAVED - RID_SVXITEMS_RELIEF_NONE,
    3390             :                     "enum overflow" );
    3391           0 :     return EE_RESSTR(RID_SVXITEMS_RELIEF_BEGIN + nPos);
    3392             : }
    3393             : 
    3394           0 : sal_uInt16 SvxCharReliefItem::GetValueCount() const
    3395             : {
    3396           0 :     return RID_SVXITEMS_RELIEF_ENGRAVED - RID_SVXITEMS_RELIEF_NONE;
    3397             : }
    3398             : 
    3399           0 : SfxItemPresentation SvxCharReliefItem::GetPresentation
    3400             : (
    3401             :     SfxItemPresentation ePres,
    3402             :     SfxMapUnit          /*eCoreUnit*/,
    3403             :     SfxMapUnit          /*ePresUnit*/,
    3404             :     OUString&           rText, const IntlWrapper * /*pIntl*/
    3405             : )   const
    3406             : {
    3407           0 :     SfxItemPresentation eRet = ePres;
    3408           0 :     switch( ePres )
    3409             :     {
    3410             :     case SFX_ITEM_PRESENTATION_NONE:
    3411           0 :         rText = OUString();
    3412           0 :         break;
    3413             : 
    3414             :     case SFX_ITEM_PRESENTATION_NAMELESS:
    3415             :     case SFX_ITEM_PRESENTATION_COMPLETE:
    3416           0 :         rText = GetValueTextByPos( GetValue() );
    3417           0 :         break;
    3418             : 
    3419             :     default:
    3420           0 :         eRet = SFX_ITEM_PRESENTATION_NONE;
    3421             :     }
    3422           0 :     return eRet;
    3423             : }
    3424             : 
    3425           0 : bool SvxCharReliefItem::PutValue( const com::sun::star::uno::Any& rVal,
    3426             :                                         sal_uInt8 nMemberId )
    3427             : {
    3428           0 :     nMemberId &= ~CONVERT_TWIPS;
    3429           0 :     bool bRet = true;
    3430           0 :     switch( nMemberId )
    3431             :     {
    3432             :     case MID_RELIEF:
    3433             :         {
    3434           0 :             sal_Int16 nVal = -1;
    3435           0 :             rVal >>= nVal;
    3436           0 :             if(nVal >= 0 && nVal <= RELIEF_ENGRAVED)
    3437           0 :                 SetValue( (sal_uInt16)nVal );
    3438             :             else
    3439           0 :                 bRet = false;
    3440             :         }
    3441           0 :         break;
    3442             :     default:
    3443           0 :         bRet = false;
    3444           0 :         break;
    3445             :     }
    3446           0 :     return bRet;
    3447             : }
    3448             : 
    3449           0 : bool SvxCharReliefItem::QueryValue( com::sun::star::uno::Any& rVal,
    3450             :                                         sal_uInt8 nMemberId ) const
    3451             : {
    3452           0 :     nMemberId &= ~CONVERT_TWIPS;
    3453           0 :     bool bRet = true;
    3454           0 :     switch( nMemberId )
    3455             :     {
    3456             :     case MID_RELIEF:
    3457           0 :         rVal <<= (sal_Int16)GetValue();
    3458           0 :         break;
    3459             :     default:
    3460           0 :         bRet = false;
    3461           0 :         break;
    3462             :     }
    3463           0 :     return bRet;
    3464             : }
    3465             : 
    3466             : /*************************************************************************
    3467             : |*    class SvxScriptTypeItemItem
    3468             : *************************************************************************/
    3469             : 
    3470           0 : SvxScriptTypeItem::SvxScriptTypeItem( sal_uInt16 nType )
    3471           0 :     : SfxUInt16Item( SID_ATTR_CHAR_SCRIPTTYPE, nType )
    3472             : {
    3473           0 : }
    3474           0 : SfxPoolItem* SvxScriptTypeItem::Clone( SfxItemPool * ) const
    3475             : {
    3476           0 :     return new SvxScriptTypeItem( GetValue() );
    3477             : }
    3478             : 
    3479             : /*************************************************************************
    3480             : |*    class SvxScriptSetItem
    3481             : *************************************************************************/
    3482             : 
    3483           0 : SvxScriptSetItem::SvxScriptSetItem( sal_uInt16 nSlotId, SfxItemPool& rPool )
    3484             :     : SfxSetItem( nSlotId, new SfxItemSet( rPool,
    3485           0 :                         SID_ATTR_CHAR_FONT, SID_ATTR_CHAR_FONT ))
    3486             : {
    3487             :     sal_uInt16 nLatin, nAsian, nComplex;
    3488           0 :     GetWhichIds( nLatin, nAsian, nComplex );
    3489           0 :     GetItemSet().MergeRange( nLatin, nLatin );
    3490           0 :     GetItemSet().MergeRange( nAsian, nAsian );
    3491           0 :     GetItemSet().MergeRange( nComplex, nComplex );
    3492           0 :     GetItemSet().MergeRange( SID_ATTR_CHAR_SCRIPTTYPE, SID_ATTR_CHAR_SCRIPTTYPE );
    3493           0 : }
    3494             : 
    3495           0 : SfxPoolItem* SvxScriptSetItem::Clone( SfxItemPool * ) const
    3496             : {
    3497           0 :     SvxScriptSetItem* p = new SvxScriptSetItem( Which(), *GetItemSet().GetPool() );
    3498           0 :     p->GetItemSet().Put( GetItemSet(), false );
    3499           0 :     return p;
    3500             : }
    3501             : 
    3502           0 : SfxPoolItem* SvxScriptSetItem::Create( SvStream &, sal_uInt16 ) const
    3503             : {
    3504           0 :     return 0;
    3505             : }
    3506             : 
    3507           0 : const SfxPoolItem* SvxScriptSetItem::GetItemOfScriptSet(
    3508             :                             const SfxItemSet& rSet, sal_uInt16 nId )
    3509             : {
    3510             :     const SfxPoolItem* pI;
    3511           0 :     SfxItemState eSt = rSet.GetItemState( nId, false, &pI );
    3512           0 :     if( SFX_ITEM_SET != eSt )
    3513           0 :         pI = SFX_ITEM_DEFAULT == eSt ? &rSet.Get( nId ) : 0;
    3514           0 :     return pI;
    3515             : }
    3516             : 
    3517           0 : const SfxPoolItem* SvxScriptSetItem::GetItemOfScript( sal_uInt16 nSlotId, const SfxItemSet& rSet, sal_uInt16 nScript )
    3518             : {
    3519             :     sal_uInt16 nLatin, nAsian, nComplex;
    3520           0 :     GetWhichIds( nSlotId, rSet, nLatin, nAsian, nComplex );
    3521             : 
    3522             :     const SfxPoolItem *pRet, *pAsn, *pCmplx;
    3523           0 :     switch( nScript )
    3524             :     {
    3525             :     default:                //no one valid -> match to latin
    3526             :     //  case SCRIPTTYPE_LATIN:
    3527           0 :         pRet = GetItemOfScriptSet( rSet, nLatin );
    3528           0 :         break;
    3529             :     case SCRIPTTYPE_ASIAN:
    3530           0 :         pRet = GetItemOfScriptSet( rSet, nAsian );
    3531           0 :         break;
    3532             :     case SCRIPTTYPE_COMPLEX:
    3533           0 :         pRet = GetItemOfScriptSet( rSet, nComplex );
    3534           0 :         break;
    3535             : 
    3536             :     case SCRIPTTYPE_LATIN|SCRIPTTYPE_ASIAN:
    3537           0 :         if( 0 == (pRet = GetItemOfScriptSet( rSet, nLatin )) ||
    3538           0 :             0 == (pAsn = GetItemOfScriptSet( rSet, nAsian )) ||
    3539           0 :             *pRet != *pAsn )
    3540           0 :             pRet = 0;
    3541           0 :         break;
    3542             : 
    3543             :     case SCRIPTTYPE_LATIN|SCRIPTTYPE_COMPLEX:
    3544           0 :         if( 0 == (pRet = GetItemOfScriptSet( rSet, nLatin )) ||
    3545           0 :             0 == (pCmplx = GetItemOfScriptSet( rSet, nComplex )) ||
    3546           0 :             *pRet != *pCmplx )
    3547           0 :             pRet = 0;
    3548           0 :         break;
    3549             : 
    3550             :     case SCRIPTTYPE_ASIAN|SCRIPTTYPE_COMPLEX:
    3551           0 :         if( 0 == (pRet = GetItemOfScriptSet( rSet, nAsian )) ||
    3552           0 :             0 == (pCmplx = GetItemOfScriptSet( rSet, nComplex )) ||
    3553           0 :             *pRet != *pCmplx )
    3554           0 :             pRet = 0;
    3555           0 :         break;
    3556             : 
    3557             :     case SCRIPTTYPE_LATIN|SCRIPTTYPE_ASIAN|SCRIPTTYPE_COMPLEX:
    3558           0 :         if( 0 == (pRet = GetItemOfScriptSet( rSet, nLatin )) ||
    3559           0 :             0 == (pAsn = GetItemOfScriptSet( rSet, nAsian )) ||
    3560           0 :             0 == (pCmplx = GetItemOfScriptSet( rSet, nComplex )) ||
    3561           0 :             *pRet != *pAsn || *pRet != *pCmplx )
    3562           0 :             pRet = 0;
    3563           0 :         break;
    3564             :     }
    3565           0 :     return pRet;
    3566             : }
    3567             : 
    3568           0 : const SfxPoolItem* SvxScriptSetItem::GetItemOfScript( sal_uInt16 nScript ) const
    3569             : {
    3570           0 :     return GetItemOfScript( Which(), GetItemSet(), nScript );
    3571             : }
    3572             : 
    3573           0 : void SvxScriptSetItem::PutItemForScriptType( sal_uInt16 nScriptType,
    3574             :                                              const SfxPoolItem& rItem )
    3575             : {
    3576             :     sal_uInt16 nLatin, nAsian, nComplex;
    3577           0 :     GetWhichIds( nLatin, nAsian, nComplex );
    3578             : 
    3579           0 :     SfxPoolItem* pCpy = rItem.Clone();
    3580           0 :     if( SCRIPTTYPE_LATIN & nScriptType )
    3581             :     {
    3582           0 :         pCpy->SetWhich( nLatin );
    3583           0 :         GetItemSet().Put( *pCpy );
    3584             :     }
    3585           0 :     if( SCRIPTTYPE_ASIAN & nScriptType )
    3586             :     {
    3587           0 :         pCpy->SetWhich( nAsian );
    3588           0 :         GetItemSet().Put( *pCpy );
    3589             :     }
    3590           0 :     if( SCRIPTTYPE_COMPLEX & nScriptType )
    3591             :     {
    3592           0 :         pCpy->SetWhich( nComplex );
    3593           0 :         GetItemSet().Put( *pCpy );
    3594             :     }
    3595           0 :     delete pCpy;
    3596           0 : }
    3597             : 
    3598           0 : void SvxScriptSetItem::GetWhichIds( sal_uInt16 nSlotId, const SfxItemSet& rSet, sal_uInt16& rLatin, sal_uInt16& rAsian, sal_uInt16& rComplex )
    3599             : {
    3600           0 :     const SfxItemPool& rPool = *rSet.GetPool();
    3601           0 :     GetSlotIds( nSlotId, rLatin, rAsian, rComplex );
    3602           0 :     rLatin = rPool.GetWhich( rLatin );
    3603           0 :     rAsian = rPool.GetWhich( rAsian );
    3604           0 :     rComplex = rPool.GetWhich( rComplex );
    3605           0 : }
    3606             : 
    3607           0 : void SvxScriptSetItem::GetWhichIds( sal_uInt16& rLatin, sal_uInt16& rAsian,
    3608             :                                     sal_uInt16& rComplex ) const
    3609             : {
    3610           0 :     GetWhichIds( Which(), GetItemSet(), rLatin, rAsian, rComplex );
    3611           0 : }
    3612             : 
    3613           0 : void SvxScriptSetItem::GetSlotIds( sal_uInt16 nSlotId, sal_uInt16& rLatin,
    3614             :                                     sal_uInt16& rAsian, sal_uInt16& rComplex )
    3615             : {
    3616           0 :     switch( nSlotId )
    3617             :     {
    3618             :     default:
    3619             :         DBG_ASSERT( false, "wrong SlotId for class SvxScriptSetItem" );
    3620             :         // no break - default to font - Id Range !!
    3621             : 
    3622             :     case SID_ATTR_CHAR_FONT:
    3623           0 :         rLatin = SID_ATTR_CHAR_FONT;
    3624           0 :         rAsian = SID_ATTR_CHAR_CJK_FONT;
    3625           0 :         rComplex = SID_ATTR_CHAR_CTL_FONT;
    3626           0 :         break;
    3627             :     case SID_ATTR_CHAR_FONTHEIGHT:
    3628           0 :         rLatin = SID_ATTR_CHAR_FONTHEIGHT;
    3629           0 :         rAsian = SID_ATTR_CHAR_CJK_FONTHEIGHT;
    3630           0 :         rComplex = SID_ATTR_CHAR_CTL_FONTHEIGHT;
    3631           0 :         break;
    3632             :     case SID_ATTR_CHAR_WEIGHT:
    3633           0 :         rLatin = SID_ATTR_CHAR_WEIGHT;
    3634           0 :         rAsian = SID_ATTR_CHAR_CJK_WEIGHT;
    3635           0 :         rComplex = SID_ATTR_CHAR_CTL_WEIGHT;
    3636           0 :         break;
    3637             :     case SID_ATTR_CHAR_POSTURE:
    3638           0 :         rLatin = SID_ATTR_CHAR_POSTURE;
    3639           0 :         rAsian = SID_ATTR_CHAR_CJK_POSTURE;
    3640           0 :         rComplex = SID_ATTR_CHAR_CTL_POSTURE;
    3641           0 :         break;
    3642             :     case SID_ATTR_CHAR_LANGUAGE:
    3643           0 :         rLatin = SID_ATTR_CHAR_LANGUAGE;
    3644           0 :         rAsian = SID_ATTR_CHAR_CJK_LANGUAGE;
    3645           0 :         rComplex = SID_ATTR_CHAR_CTL_LANGUAGE;
    3646           0 :         break;
    3647             :     case SID_ATTR_CHAR_SHADOWED:
    3648           0 :         rLatin = SID_ATTR_CHAR_SHADOWED;
    3649           0 :         rAsian = SID_ATTR_CHAR_SHADOWED;
    3650           0 :         rComplex = SID_ATTR_CHAR_SHADOWED;
    3651           0 :         break;
    3652             :     case SID_ATTR_CHAR_STRIKEOUT:
    3653           0 :         rLatin = SID_ATTR_CHAR_STRIKEOUT;
    3654           0 :         rAsian = SID_ATTR_CHAR_STRIKEOUT;
    3655           0 :         rComplex = SID_ATTR_CHAR_STRIKEOUT;
    3656           0 :         break;
    3657             :     }
    3658           0 : }
    3659             : 
    3660           0 : void GetDefaultFonts( SvxFontItem& rLatin, SvxFontItem& rAsian, SvxFontItem& rComplex )
    3661             : {
    3662           0 :     const sal_uInt16 nItemCnt = 3;
    3663             : 
    3664             :     static struct
    3665             :     {
    3666             :         sal_uInt16 nFontType;
    3667             :         sal_uInt16 nLanguage;
    3668             :     }
    3669             :     aOutTypeArr[ nItemCnt ] =
    3670             :     {
    3671             :         {  DEFAULTFONT_LATIN_TEXT, LANGUAGE_ENGLISH_US },
    3672             :         {  DEFAULTFONT_CJK_TEXT, LANGUAGE_ENGLISH_US },
    3673             :         {  DEFAULTFONT_CTL_TEXT, LANGUAGE_ARABIC_SAUDI_ARABIA }
    3674             :     };
    3675             : 
    3676           0 :     SvxFontItem* aItemArr[ nItemCnt ] = { &rLatin, &rAsian, &rComplex };
    3677             : 
    3678           0 :     for ( sal_uInt16 n = 0; n < nItemCnt; ++n )
    3679             :     {
    3680             :         Font aFont( OutputDevice::GetDefaultFont( aOutTypeArr[ n ].nFontType,
    3681             :                                                   aOutTypeArr[ n ].nLanguage,
    3682           0 :                                                   DEFAULTFONT_FLAGS_ONLYONE, 0 ) );
    3683           0 :         SvxFontItem* pItem = aItemArr[ n ];
    3684           0 :         pItem->SetFamily( aFont.GetFamily() );
    3685           0 :         pItem->SetFamilyName( aFont.GetName() );
    3686           0 :         pItem->SetStyleName( OUString() );
    3687           0 :         pItem->SetPitch( aFont.GetPitch());
    3688           0 :         pItem->SetCharSet(aFont.GetCharSet());
    3689           0 :     }
    3690           0 : }
    3691             : 
    3692             : 
    3693           0 : sal_uInt16 GetI18NScriptTypeOfLanguage( sal_uInt16 nLang )
    3694             : {
    3695           0 :     return GetI18NScriptType( SvtLanguageOptions::GetScriptTypeOfLanguage( nLang ) );
    3696             : }
    3697             : 
    3698           0 : sal_uInt16 GetItemScriptType( short nI18NType )
    3699             : {
    3700           0 :     switch ( nI18NType )
    3701             :     {
    3702           0 :         case i18n::ScriptType::LATIN:   return SCRIPTTYPE_LATIN;
    3703           0 :         case i18n::ScriptType::ASIAN:   return SCRIPTTYPE_ASIAN;
    3704           0 :         case i18n::ScriptType::COMPLEX: return SCRIPTTYPE_COMPLEX;
    3705             :     }
    3706           0 :     return 0;
    3707             : }
    3708             : 
    3709           0 : short GetI18NScriptType( sal_uInt16 nItemType )
    3710             : {
    3711           0 :     switch ( nItemType )
    3712             :     {
    3713           0 :         case SCRIPTTYPE_LATIN:      return i18n::ScriptType::LATIN;
    3714           0 :         case SCRIPTTYPE_ASIAN:      return i18n::ScriptType::ASIAN;
    3715           0 :         case SCRIPTTYPE_COMPLEX:    return i18n::ScriptType::COMPLEX;
    3716             :     }
    3717           0 :     return 0;
    3718             : }
    3719             : 
    3720           0 : bool SvxRsidItem::QueryValue( uno::Any& rVal, sal_uInt8 ) const
    3721             : {
    3722           0 :     rVal <<= ( (sal_uInt32)GetValue() );
    3723           0 :     return true;
    3724             : }
    3725             : 
    3726           0 : bool SvxRsidItem::PutValue( const uno::Any& rVal, sal_uInt8 )
    3727             : {
    3728           0 :     sal_uInt32 nRsid = 0;
    3729           0 :     if( !( rVal >>= nRsid ) )
    3730           0 :         return false;
    3731             : 
    3732           0 :     SetValue( nRsid );
    3733           0 :     return true;
    3734             : }
    3735             : 
    3736           0 : SfxPoolItem* SvxRsidItem::Clone( SfxItemPool * ) const
    3737             : {
    3738           0 :     return new SvxRsidItem( *this );
    3739             : }
    3740             : 
    3741           0 : SfxPoolItem* SvxRsidItem::Create(SvStream& rIn, sal_uInt16 ) const
    3742             : {
    3743           0 :     return new SvxRsidItem( rIn, Which() );
    3744             : }
    3745             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10