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

Generated by: LCOV version 1.11