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

Generated by: LCOV version 1.10