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