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