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/TabStop.hpp>
21 : #include <com/sun/star/style/LineSpacing.hpp>
22 : #include <com/sun/star/style/LineSpacingMode.hpp>
23 : #include <com/sun/star/uno/Sequence.hxx>
24 : #include <comphelper/processfactory.hxx>
25 : #include <unotools/syslocale.hxx>
26 : #include <comphelper/types.hxx>
27 : #include <tools/rtti.hxx>
28 : #include <svl/itempool.hxx>
29 : #include <svl/memberid.hrc>
30 : #include <editeng/editrids.hrc>
31 : #include <editeng/lspcitem.hxx>
32 : #include <editeng/adjustitem.hxx>
33 : #include <editeng/orphitem.hxx>
34 : #include <editeng/widwitem.hxx>
35 : #include <editeng/tstpitem.hxx>
36 : #include <editeng/pmdlitem.hxx>
37 : #include <editeng/spltitem.hxx>
38 : #include <editeng/hyphenzoneitem.hxx>
39 : #include <editeng/scriptspaceitem.hxx>
40 : #include <editeng/hngpnctitem.hxx>
41 : #include <editeng/forbiddenruleitem.hxx>
42 : #include <editeng/paravertalignitem.hxx>
43 : #include <editeng/pgrditem.hxx>
44 : #include <rtl/ustring.hxx>
45 : #include <editeng/memberids.hrc>
46 : #include <editeng/editids.hrc>
47 : #include <editeng/itemtype.hxx>
48 : #include <editeng/eerdll.hxx>
49 : #include <editeng/paperinf.hxx>
50 : #include <vcl/svapp.hxx>
51 : #include <algorithm>
52 :
53 : using namespace ::rtl;
54 : using namespace ::com::sun::star;
55 :
56 : // Konvertierung fuer UNO
57 : #define TWIP_TO_MM100(TWIP) ((TWIP) >= 0 ? (((TWIP)*127L+36L)/72L) : (((TWIP)*127L-36L)/72L))
58 : #define TWIP_TO_MM100_UNSIGNED(TWIP) ((((TWIP)*127L+36L)/72L))
59 : #define MM100_TO_TWIP(MM100) ((MM100) >= 0 ? (((MM100)*72L+63L)/127L) : (((MM100)*72L-63L)/127L))
60 : #define MM100_TO_TWIP_UNSIGNED(MM100) ((((MM100)*72L+63L)/127L))
61 :
62 :
63 : // STATIC DATA -----------------------------------------------------------
64 :
65 :
66 :
67 :
68 :
69 174334 : TYPEINIT1_FACTORY(SvxLineSpacingItem, SfxPoolItem , new SvxLineSpacingItem(LINE_SPACE_DEFAULT_HEIGHT, 0));
70 246794 : TYPEINIT1_FACTORY(SvxAdjustItem, SfxPoolItem, new SvxAdjustItem(SVX_ADJUST_LEFT, 0));
71 14978 : TYPEINIT1_FACTORY(SvxWidowsItem, SfxByteItem, new SvxWidowsItem(0, 0));
72 14559 : TYPEINIT1_FACTORY(SvxOrphansItem, SfxByteItem, new SvxOrphansItem(0, 0));
73 6051 : TYPEINIT1_FACTORY(SvxHyphenZoneItem, SfxPoolItem, new SvxHyphenZoneItem(false, 0));
74 125229 : TYPEINIT1_FACTORY(SvxTabStopItem, SfxPoolItem, new SvxTabStopItem(0));
75 5717 : TYPEINIT1_FACTORY(SvxFmtSplitItem, SfxBoolItem, new SvxFmtSplitItem(false, 0));
76 37 : TYPEINIT1_FACTORY(SvxPageModelItem, SfxStringItem, new SvxPageModelItem(0));
77 395887 : TYPEINIT1_FACTORY(SvxScriptSpaceItem, SfxBoolItem, new SvxScriptSpaceItem(false, 0));
78 9122 : TYPEINIT1_FACTORY(SvxHangingPunctuationItem, SfxBoolItem, new SvxHangingPunctuationItem(false, 0));
79 9011 : TYPEINIT1_FACTORY(SvxForbiddenRuleItem, SfxBoolItem, new SvxForbiddenRuleItem(false, 0));
80 5763 : TYPEINIT1_FACTORY(SvxParaVertAlignItem, SfxUInt16Item, new SvxParaVertAlignItem(0, 0));
81 5655 : TYPEINIT1_FACTORY(SvxParaGridItem, SfxBoolItem, new SvxParaGridItem(true, 0));
82 :
83 :
84 :
85 3228 : SvxLineSpacingItem::SvxLineSpacingItem( sal_uInt16 nHeight, const sal_uInt16 nId )
86 3228 : : SfxEnumItemInterface( nId )
87 : {
88 3228 : nPropLineSpace = 100;
89 3228 : nInterLineSpace = 0;
90 3228 : nLineHeight = nHeight;
91 3228 : eLineSpace = SVX_LINE_SPACE_AUTO;
92 3228 : eInterLineSpace = SVX_INTER_LINE_SPACE_OFF;
93 3228 : }
94 :
95 :
96 :
97 47707 : bool SvxLineSpacingItem::operator==( const SfxPoolItem& rAttr ) const
98 : {
99 : DBG_ASSERT( SfxPoolItem::operator==(rAttr), "unequal types" );
100 :
101 47707 : const SvxLineSpacingItem& rLineSpace = (const SvxLineSpacingItem&)rAttr;
102 : return (
103 : // Same Linespacing Rule?
104 47707 : (eLineSpace == rLineSpace.eLineSpace)
105 : // For maximum and minimum Linespacing be the size must coincide.
106 47962 : && (eLineSpace == SVX_LINE_SPACE_AUTO ||
107 7345 : nLineHeight == rLineSpace.nLineHeight)
108 : // Same Linespacing Rule?
109 35876 : && ( eInterLineSpace == rLineSpace.eInterLineSpace )
110 : // Either set proportional or additive.
111 22784 : && (( eInterLineSpace == SVX_INTER_LINE_SPACE_OFF)
112 10256 : || (eInterLineSpace == SVX_INTER_LINE_SPACE_PROP
113 10097 : && nPropLineSpace == rLineSpace.nPropLineSpace)
114 4558 : || (eInterLineSpace == SVX_INTER_LINE_SPACE_FIX
115 159 : && (nInterLineSpace == rLineSpace.nInterLineSpace)))) ?
116 88876 : 1 : 0;
117 : }
118 :
119 : /* Who does still know why the LineSpacingItem is so complicated?
120 : We can not use it for UNO since there are only two values:
121 : - ein sal_uInt16 for the mode
122 : - ein sal_uInt32 for all values (distance, height, rel. detail)
123 : */
124 7685 : bool SvxLineSpacingItem::QueryValue( uno::Any& rVal, sal_uInt8 nMemberId ) const
125 : {
126 7685 : sal_Bool bConvert = 0!=(nMemberId&CONVERT_TWIPS);
127 7685 : nMemberId &= ~CONVERT_TWIPS;
128 :
129 7685 : style::LineSpacing aLSp;
130 7685 : switch( eLineSpace )
131 : {
132 : case SVX_LINE_SPACE_AUTO:
133 7460 : if(eInterLineSpace == SVX_INTER_LINE_SPACE_FIX)
134 : {
135 25 : aLSp.Mode = style::LineSpacingMode::LEADING;
136 25 : aLSp.Height = ( bConvert ? (short)TWIP_TO_MM100(nInterLineSpace) : nInterLineSpace);
137 : }
138 7435 : else if(eInterLineSpace == SVX_INTER_LINE_SPACE_OFF)
139 : {
140 2712 : aLSp.Mode = style::LineSpacingMode::PROP;
141 2712 : aLSp.Height = 100;
142 : }
143 : else
144 : {
145 4723 : aLSp.Mode = style::LineSpacingMode::PROP;
146 4723 : aLSp.Height = nPropLineSpace;
147 : }
148 7460 : break;
149 : case SVX_LINE_SPACE_FIX :
150 : case SVX_LINE_SPACE_MIN :
151 225 : aLSp.Mode = eLineSpace == SVX_LINE_SPACE_FIX ? style::LineSpacingMode::FIX : style::LineSpacingMode::MINIMUM;
152 225 : aLSp.Height = ( bConvert ? (short)TWIP_TO_MM100_UNSIGNED(nLineHeight) : nLineHeight );
153 225 : break;
154 : default:
155 : ;//prevent warning about SVX_LINE_SPACE_END
156 : }
157 :
158 7685 : switch ( nMemberId )
159 : {
160 7685 : case 0 : rVal <<= aLSp; break;
161 0 : case MID_LINESPACE : rVal <<= aLSp.Mode; break;
162 0 : case MID_HEIGHT : rVal <<= aLSp.Height; break;
163 0 : default: OSL_FAIL("Wrong MemberId!"); break;
164 : }
165 :
166 7685 : return true;
167 : }
168 :
169 7179 : bool SvxLineSpacingItem::PutValue( const uno::Any& rVal, sal_uInt8 nMemberId )
170 : {
171 7179 : sal_Bool bConvert = 0!=(nMemberId&CONVERT_TWIPS);
172 7179 : nMemberId &= ~CONVERT_TWIPS;
173 :
174 : // fill with current data
175 7179 : style::LineSpacing aLSp;
176 7179 : uno::Any aAny;
177 7179 : sal_Bool bRet = QueryValue( aAny, bConvert ? CONVERT_TWIPS : 0 ) && ( aAny >>= aLSp );
178 :
179 : // get new data
180 7179 : switch ( nMemberId )
181 : {
182 7179 : case 0 : bRet = (rVal >>= aLSp); break;
183 0 : case MID_LINESPACE : bRet = (rVal >>= aLSp.Mode); break;
184 0 : case MID_HEIGHT : bRet = (rVal >>= aLSp.Height); break;
185 0 : default: OSL_FAIL("Wrong MemberId!"); break;
186 : }
187 :
188 7179 : if( bRet )
189 : {
190 7179 : nLineHeight = aLSp.Height;
191 7179 : switch( aLSp.Mode )
192 : {
193 : case style::LineSpacingMode::LEADING:
194 : {
195 9 : eInterLineSpace = SVX_INTER_LINE_SPACE_FIX;
196 9 : eLineSpace = SVX_LINE_SPACE_AUTO;
197 9 : nInterLineSpace = aLSp.Height;
198 9 : if(bConvert)
199 3 : nInterLineSpace = (short)MM100_TO_TWIP(nInterLineSpace);
200 :
201 : }
202 9 : break;
203 : case style::LineSpacingMode::PROP:
204 : {
205 5961 : eLineSpace = SVX_LINE_SPACE_AUTO;
206 5961 : nPropLineSpace = (sal_Int16)aLSp.Height;
207 5961 : if(100 == aLSp.Height)
208 4040 : eInterLineSpace = SVX_INTER_LINE_SPACE_OFF;
209 : else
210 1921 : eInterLineSpace = SVX_INTER_LINE_SPACE_PROP;
211 : }
212 5961 : break;
213 : case style::LineSpacingMode::FIX:
214 : case style::LineSpacingMode::MINIMUM:
215 : {
216 1209 : eInterLineSpace = SVX_INTER_LINE_SPACE_OFF;
217 1209 : eLineSpace = aLSp.Mode == style::LineSpacingMode::FIX ? SVX_LINE_SPACE_FIX : SVX_LINE_SPACE_MIN;
218 1209 : nLineHeight = aLSp.Height;
219 1209 : if(bConvert)
220 1203 : nLineHeight = (sal_uInt16)MM100_TO_TWIP_UNSIGNED(nLineHeight);
221 : }
222 1209 : break;
223 : }
224 : }
225 :
226 7179 : return bRet;
227 : }
228 :
229 :
230 :
231 16816 : SfxPoolItem* SvxLineSpacingItem::Clone( SfxItemPool * ) const
232 : {
233 16816 : return new SvxLineSpacingItem( *this );
234 : }
235 :
236 :
237 :
238 0 : SfxItemPresentation SvxLineSpacingItem::GetPresentation
239 : (
240 : SfxItemPresentation /*ePres*/,
241 : SfxMapUnit /*eCoreUnit*/,
242 : SfxMapUnit /*ePresUnit*/,
243 : OUString& rText, const IntlWrapper *
244 : ) const
245 : {
246 : #ifdef DBG_UTIL
247 : rText = "SvxLineSpacingItem";
248 : #else
249 0 : rText = OUString();
250 : #endif
251 0 : return SFX_ITEM_PRESENTATION_NONE;
252 : }
253 :
254 :
255 :
256 0 : SfxPoolItem* SvxLineSpacingItem::Create(SvStream& rStrm, sal_uInt16) const
257 : {
258 : sal_Int8 nPropSpace;
259 : short nInterSpace;
260 : sal_uInt16 nHeight;
261 : sal_Int8 nRule, nInterRule;
262 :
263 0 : rStrm.ReadSChar( nPropSpace )
264 0 : .ReadInt16( nInterSpace )
265 0 : .ReadUInt16( nHeight )
266 0 : .ReadSChar( nRule )
267 0 : .ReadSChar( nInterRule );
268 :
269 0 : SvxLineSpacingItem* pAttr = new SvxLineSpacingItem( nHeight, Which() );
270 0 : pAttr->SetInterLineSpace( nInterSpace );
271 0 : pAttr->SetPropLineSpace( nPropSpace );
272 0 : pAttr->GetLineSpaceRule() = (SvxLineSpace)nRule;
273 0 : pAttr->GetInterLineSpaceRule() = (SvxInterLineSpace)nInterRule;
274 0 : return pAttr;
275 : }
276 :
277 :
278 :
279 0 : SvStream& SvxLineSpacingItem::Store( SvStream& rStrm, sal_uInt16 /*nItemVersion*/ ) const
280 : {
281 0 : rStrm.WriteSChar( (sal_Int8) GetPropLineSpace() )
282 0 : .WriteInt16( (short) GetInterLineSpace() )
283 0 : .WriteUInt16( (sal_uInt16) GetLineHeight() )
284 0 : .WriteSChar( (sal_Int8) GetLineSpaceRule() )
285 0 : .WriteSChar( (sal_Int8) GetInterLineSpaceRule() );
286 0 : return rStrm;
287 : }
288 :
289 :
290 :
291 0 : sal_uInt16 SvxLineSpacingItem::GetValueCount() const
292 : {
293 0 : return SVX_LINESPACE_END; // SVX_LINESPACE_TWO_LINES + 1
294 : }
295 :
296 :
297 :
298 0 : OUString SvxLineSpacingItem::GetValueTextByPos( sal_uInt16 nPos ) const
299 : {
300 : //! load strings from resource
301 0 : OUString aText;
302 0 : switch ( nPos )
303 : {
304 : case SVX_LINESPACE_USER:
305 0 : aText = "User";
306 0 : break;
307 : case SVX_LINESPACE_ONE_LINE:
308 0 : aText = "One line";
309 0 : break;
310 : case SVX_LINESPACE_ONE_POINT_FIVE_LINES:
311 0 : aText = "1.5 line";
312 0 : break;
313 : case SVX_LINESPACE_TWO_LINES:
314 0 : aText = "Two lines";
315 0 : break;
316 : }
317 0 : return aText;
318 : }
319 :
320 :
321 :
322 0 : sal_uInt16 SvxLineSpacingItem::GetEnumValue() const
323 : {
324 : sal_uInt16 nVal;
325 0 : switch ( nPropLineSpace )
326 : {
327 0 : case 100: nVal = SVX_LINESPACE_ONE_LINE; break;
328 0 : case 150: nVal = SVX_LINESPACE_ONE_POINT_FIVE_LINES; break;
329 0 : case 200: nVal = SVX_LINESPACE_TWO_LINES; break;
330 0 : default: nVal = SVX_LINESPACE_USER; break;
331 : }
332 0 : return nVal;
333 : }
334 :
335 :
336 :
337 0 : void SvxLineSpacingItem::SetEnumValue( sal_uInt16 nVal )
338 : {
339 0 : switch ( nVal )
340 : {
341 0 : case SVX_LINESPACE_ONE_LINE: nPropLineSpace = 100; break;
342 0 : case SVX_LINESPACE_ONE_POINT_FIVE_LINES: nPropLineSpace = 150; break;
343 0 : case SVX_LINESPACE_TWO_LINES: nPropLineSpace = 200; break;
344 : }
345 0 : }
346 :
347 : // class SvxAdjustItem ---------------------------------------------------
348 :
349 26683 : SvxAdjustItem::SvxAdjustItem(const SvxAdjust eAdjst, const sal_uInt16 nId )
350 : : SfxEnumItemInterface( nId ),
351 26683 : bOneBlock( false ), bLastCenter( false ), bLastBlock( false )
352 : {
353 26683 : SetAdjust( eAdjst );
354 26683 : }
355 :
356 :
357 :
358 110242 : bool SvxAdjustItem::operator==( const SfxPoolItem& rAttr ) const
359 : {
360 : DBG_ASSERT( SfxPoolItem::operator==(rAttr), "unequal types" );
361 :
362 177932 : return( ( GetAdjust() == ((SvxAdjustItem&)rAttr).GetAdjust() &&
363 135380 : bOneBlock == ((SvxAdjustItem&)rAttr).bOneBlock &&
364 67690 : bLastCenter == ((SvxAdjustItem&)rAttr).bLastCenter &&
365 67690 : bLastBlock == ((SvxAdjustItem&)rAttr).bLastBlock )
366 177932 : ? 1 : 0 );
367 : }
368 :
369 901 : bool SvxAdjustItem::QueryValue( uno::Any& rVal, sal_uInt8 nMemberId ) const
370 : {
371 901 : nMemberId &= ~CONVERT_TWIPS;
372 901 : switch( nMemberId )
373 : {
374 600 : case MID_PARA_ADJUST : rVal <<= (sal_Int16)GetAdjust(); break;
375 272 : case MID_LAST_LINE_ADJUST : rVal <<= (sal_Int16)GetLastBlock(); break;
376 : case MID_EXPAND_SINGLE :
377 : {
378 29 : sal_Bool bValue = bOneBlock;
379 29 : rVal.setValue( &bValue, ::getCppuBooleanType() );
380 29 : break;
381 : }
382 : default: ;//prevent warning
383 : }
384 901 : return true;
385 : }
386 :
387 18700 : bool SvxAdjustItem::PutValue( const uno::Any& rVal, sal_uInt8 nMemberId )
388 : {
389 18700 : nMemberId &= ~CONVERT_TWIPS;
390 18700 : switch( nMemberId )
391 : {
392 : case MID_PARA_ADJUST :
393 : case MID_LAST_LINE_ADJUST :
394 : {
395 18238 : sal_Int32 eVal = - 1;
396 : try
397 : {
398 18238 : eVal = ::comphelper::getEnumAsINT32(rVal);
399 : }
400 0 : catch(...) {}
401 18238 : if(eVal >= 0 && eVal <= 4)
402 : {
403 18238 : if(MID_LAST_LINE_ADJUST == nMemberId &&
404 11 : eVal != SVX_ADJUST_LEFT &&
405 10 : eVal != SVX_ADJUST_BLOCK &&
406 : eVal != SVX_ADJUST_CENTER)
407 10 : return false;
408 18228 : if(eVal < (sal_uInt16)SVX_ADJUST_END)
409 : nMemberId == MID_PARA_ADJUST ?
410 11795 : SetAdjust((SvxAdjust)eVal) :
411 24661 : SetLastBlock((SvxAdjust)eVal);
412 : }
413 : }
414 18228 : break;
415 : case MID_EXPAND_SINGLE :
416 462 : bOneBlock = Any2Bool(rVal);
417 462 : break;
418 : }
419 18690 : return true;
420 : }
421 :
422 :
423 :
424 26248 : SfxPoolItem* SvxAdjustItem::Clone( SfxItemPool * ) const
425 : {
426 26248 : return new SvxAdjustItem( *this );
427 : }
428 :
429 :
430 :
431 0 : SfxItemPresentation SvxAdjustItem::GetPresentation
432 : (
433 : SfxItemPresentation ePres,
434 : SfxMapUnit /*eCoreUnit*/,
435 : SfxMapUnit /*ePresUnit*/,
436 : OUString& rText, const IntlWrapper *
437 : ) const
438 : {
439 0 : switch ( ePres )
440 : {
441 : case SFX_ITEM_PRESENTATION_NONE:
442 0 : rText = OUString();
443 0 : return SFX_ITEM_PRESENTATION_NONE;
444 : case SFX_ITEM_PRESENTATION_NAMELESS:
445 : case SFX_ITEM_PRESENTATION_COMPLETE:
446 0 : rText = GetValueTextByPos( (sal_uInt16)GetAdjust() );
447 0 : return ePres;
448 : default: ;//prevent warning
449 : }
450 0 : return SFX_ITEM_PRESENTATION_NONE;
451 : }
452 :
453 :
454 :
455 0 : sal_uInt16 SvxAdjustItem::GetValueCount() const
456 : {
457 0 : return SVX_ADJUST_END; // SVX_ADJUST_BLOCKLINE + 1
458 : }
459 :
460 :
461 :
462 0 : OUString SvxAdjustItem::GetValueTextByPos( sal_uInt16 nPos ) const
463 : {
464 : DBG_ASSERT( nPos <= (sal_uInt16)SVX_ADJUST_BLOCKLINE, "enum overflow!" );
465 0 : return EE_RESSTR(RID_SVXITEMS_ADJUST_BEGIN + nPos);
466 : }
467 :
468 :
469 :
470 0 : sal_uInt16 SvxAdjustItem::GetEnumValue() const
471 : {
472 0 : return (sal_uInt16)GetAdjust();
473 : }
474 :
475 :
476 :
477 0 : void SvxAdjustItem::SetEnumValue( sal_uInt16 nVal )
478 : {
479 0 : SetAdjust( (const SvxAdjust)nVal );
480 0 : }
481 :
482 :
483 :
484 7418 : sal_uInt16 SvxAdjustItem::GetVersion( sal_uInt16 nFileVersion ) const
485 : {
486 : return (nFileVersion == SOFFICE_FILEFORMAT_31)
487 7418 : ? 0 : ADJUST_LASTBLOCK_VERSION;
488 : }
489 :
490 :
491 :
492 256 : SfxPoolItem* SvxAdjustItem::Create(SvStream& rStrm, sal_uInt16 nVersion) const
493 : {
494 : char eAdjustment;
495 256 : rStrm.ReadChar( eAdjustment );
496 256 : SvxAdjustItem *pRet = new SvxAdjustItem( (SvxAdjust)eAdjustment, Which() );
497 256 : if( nVersion >= ADJUST_LASTBLOCK_VERSION )
498 : {
499 : sal_Int8 nFlags;
500 256 : rStrm.ReadSChar( nFlags );
501 256 : pRet->bOneBlock = 0 != (nFlags & 0x0001);
502 256 : pRet->bLastCenter = 0 != (nFlags & 0x0002);
503 256 : pRet->bLastBlock = 0 != (nFlags & 0x0004);
504 : }
505 256 : return pRet;
506 : }
507 :
508 :
509 :
510 528 : SvStream& SvxAdjustItem::Store( SvStream& rStrm, sal_uInt16 nItemVersion ) const
511 : {
512 528 : rStrm.WriteChar( (char)GetAdjust() );
513 528 : if ( nItemVersion >= ADJUST_LASTBLOCK_VERSION )
514 : {
515 528 : sal_Int8 nFlags = 0;
516 528 : if ( bOneBlock )
517 0 : nFlags |= 0x0001;
518 528 : if ( bLastCenter )
519 0 : nFlags |= 0x0002;
520 528 : if ( bLastBlock )
521 0 : nFlags |= 0x0004;
522 528 : rStrm.WriteSChar( (sal_Int8) nFlags );
523 : }
524 528 : return rStrm;
525 : }
526 :
527 : // class SvxWidowsItem ---------------------------------------------------
528 :
529 146 : SvxWidowsItem::SvxWidowsItem(const sal_uInt8 nL, const sal_uInt16 nId ) :
530 146 : SfxByteItem( nId, nL )
531 : {
532 146 : }
533 :
534 :
535 :
536 5542 : SfxPoolItem* SvxWidowsItem::Clone( SfxItemPool * ) const
537 : {
538 5542 : return new SvxWidowsItem( *this );
539 : }
540 :
541 :
542 :
543 0 : SfxPoolItem* SvxWidowsItem::Create(SvStream& rStrm, sal_uInt16) const
544 : {
545 : sal_Int8 nLines;
546 0 : rStrm.ReadSChar( nLines );
547 0 : return new SvxWidowsItem( nLines, Which() );
548 : }
549 :
550 :
551 :
552 0 : SvStream& SvxWidowsItem::Store( SvStream& rStrm, sal_uInt16 /*nItemVersion*/ ) const
553 : {
554 0 : rStrm.WriteSChar( (sal_Int8)GetValue() );
555 0 : return rStrm;
556 : }
557 :
558 :
559 :
560 0 : SfxItemPresentation SvxWidowsItem::GetPresentation
561 : (
562 : SfxItemPresentation ePres,
563 : SfxMapUnit /*eCoreUnit*/,
564 : SfxMapUnit /*ePresUnit*/,
565 : OUString& rText, const IntlWrapper *
566 : ) const
567 : {
568 0 : switch ( ePres )
569 : {
570 : case SFX_ITEM_PRESENTATION_NONE:
571 : {
572 0 : rText = OUString();
573 0 : break;
574 : }
575 :
576 : case SFX_ITEM_PRESENTATION_NAMELESS:
577 : {
578 0 : rText = EE_RESSTR(RID_SVXITEMS_LINES);
579 0 : break;
580 : }
581 :
582 : case SFX_ITEM_PRESENTATION_COMPLETE:
583 : {
584 0 : rText = EE_RESSTR(RID_SVXITEMS_WIDOWS_COMPLETE) + " " + EE_RESSTR(RID_SVXITEMS_LINES);
585 0 : break;
586 : }
587 :
588 : default:
589 : {
590 : SAL_WARN( "editeng.items", "SvxWidowsItem::GetPresentation(): unknown SfxItemPresentation" );
591 : }
592 : }
593 :
594 0 : rText = rText.replaceFirst( "%1", OUString::number( GetValue() ) );
595 0 : return ePres;
596 : }
597 :
598 : // class SvxOrphansItem --------------------------------------------------
599 :
600 146 : SvxOrphansItem::SvxOrphansItem(const sal_uInt8 nL, const sal_uInt16 nId ) :
601 146 : SfxByteItem( nId, nL )
602 : {
603 146 : }
604 :
605 :
606 :
607 5536 : SfxPoolItem* SvxOrphansItem::Clone( SfxItemPool * ) const
608 : {
609 5536 : return new SvxOrphansItem( *this );
610 : }
611 :
612 :
613 :
614 0 : SfxPoolItem* SvxOrphansItem::Create(SvStream& rStrm, sal_uInt16) const
615 : {
616 : sal_Int8 nLines;
617 0 : rStrm.ReadSChar( nLines );
618 0 : return new SvxOrphansItem( nLines, Which() );
619 : }
620 :
621 :
622 :
623 0 : SvStream& SvxOrphansItem::Store( SvStream& rStrm, sal_uInt16 /*nItemVersion*/ ) const
624 : {
625 0 : rStrm.WriteSChar( (sal_Int8) GetValue() );
626 0 : return rStrm;
627 : }
628 :
629 :
630 :
631 0 : SfxItemPresentation SvxOrphansItem::GetPresentation
632 : (
633 : SfxItemPresentation ePres,
634 : SfxMapUnit /*eCoreUnit*/,
635 : SfxMapUnit /*ePresUnit*/,
636 : OUString& rText, const IntlWrapper *
637 : ) const
638 : {
639 0 : switch ( ePres )
640 : {
641 : case SFX_ITEM_PRESENTATION_NONE:
642 : {
643 0 : rText = OUString();
644 0 : break;
645 : }
646 :
647 : case SFX_ITEM_PRESENTATION_NAMELESS:
648 : {
649 0 : rText = EE_RESSTR(RID_SVXITEMS_LINES);
650 0 : break;
651 : }
652 :
653 : case SFX_ITEM_PRESENTATION_COMPLETE:
654 : {
655 0 : rText = EE_RESSTR(RID_SVXITEMS_ORPHANS_COMPLETE) + " " + EE_RESSTR(RID_SVXITEMS_LINES);
656 0 : break;
657 : }
658 :
659 : default:
660 : {
661 : SAL_WARN( "editeng.items", "SvxOrphansItem::GetPresentation(): unknown SfxItemPresentation" );
662 : }
663 : }
664 :
665 0 : rText = rText.replaceFirst( "%1", OUString::number( GetValue() ) );
666 0 : return ePres;
667 : }
668 :
669 : // class SvxHyphenZoneItem -----------------------------------------------
670 :
671 37 : SvxHyphenZoneItem::SvxHyphenZoneItem( const bool bHyph, const sal_uInt16 nId ) :
672 37 : SfxPoolItem( nId )
673 : {
674 37 : bHyphen = bHyph;
675 37 : bPageEnd = true;
676 37 : nMinLead = nMinTrail = 0;
677 37 : nMaxHyphens = 255;
678 37 : }
679 :
680 :
681 112 : bool SvxHyphenZoneItem::QueryValue( uno::Any& rVal, sal_uInt8 nMemberId ) const
682 : {
683 112 : nMemberId &= ~CONVERT_TWIPS;
684 112 : switch(nMemberId)
685 : {
686 : case MID_IS_HYPHEN:
687 28 : rVal = Bool2Any(bHyphen);
688 28 : break;
689 : case MID_HYPHEN_MIN_LEAD:
690 28 : rVal <<= (sal_Int16)nMinLead;
691 28 : break;
692 : case MID_HYPHEN_MIN_TRAIL:
693 28 : rVal <<= (sal_Int16)nMinTrail;
694 28 : break;
695 : case MID_HYPHEN_MAX_HYPHENS:
696 28 : rVal <<= (sal_Int16)nMaxHyphens;
697 28 : break;
698 : }
699 112 : return true;
700 : }
701 :
702 1107 : bool SvxHyphenZoneItem::PutValue( const uno::Any& rVal, sal_uInt8 nMemberId )
703 : {
704 1107 : nMemberId &= ~CONVERT_TWIPS;
705 1107 : sal_Int16 nNewVal = 0;
706 :
707 1107 : if( nMemberId != MID_IS_HYPHEN )
708 342 : if(!(rVal >>= nNewVal))
709 0 : return false;
710 :
711 1107 : switch(nMemberId)
712 : {
713 : case MID_IS_HYPHEN:
714 765 : bHyphen = Any2Bool(rVal);
715 765 : break;
716 : case MID_HYPHEN_MIN_LEAD:
717 110 : nMinLead = (sal_uInt8)nNewVal;
718 110 : break;
719 : case MID_HYPHEN_MIN_TRAIL:
720 116 : nMinTrail = (sal_uInt8)nNewVal;
721 116 : break;
722 : case MID_HYPHEN_MAX_HYPHENS:
723 116 : nMaxHyphens = (sal_uInt8)nNewVal;
724 116 : break;
725 : }
726 1107 : return true;
727 : }
728 :
729 :
730 :
731 5045 : bool SvxHyphenZoneItem::operator==( const SfxPoolItem& rAttr ) const
732 : {
733 : DBG_ASSERT( SfxPoolItem::operator==(rAttr), "unequal types" );
734 :
735 5045 : return ( (((SvxHyphenZoneItem&)rAttr).bHyphen == bHyphen)
736 5029 : && (((SvxHyphenZoneItem&)rAttr).bPageEnd == bPageEnd)
737 5029 : && (((SvxHyphenZoneItem&)rAttr).nMinLead == nMinLead)
738 3184 : && (((SvxHyphenZoneItem&)rAttr).nMinTrail == nMinTrail)
739 8114 : && (((SvxHyphenZoneItem&)rAttr).nMaxHyphens == nMaxHyphens) );
740 : }
741 :
742 :
743 :
744 7883 : SfxPoolItem* SvxHyphenZoneItem::Clone( SfxItemPool * ) const
745 : {
746 7883 : return new SvxHyphenZoneItem( *this );
747 : }
748 :
749 :
750 :
751 0 : SfxItemPresentation SvxHyphenZoneItem::GetPresentation
752 : (
753 : SfxItemPresentation ePres,
754 : SfxMapUnit /*eCoreUnit*/,
755 : SfxMapUnit /*ePresUnit*/,
756 : OUString& rText, const IntlWrapper *
757 : ) const
758 : {
759 0 : OUString cpDelimTmp(cpDelim);
760 0 : switch ( ePres )
761 : {
762 : case SFX_ITEM_PRESENTATION_NONE:
763 0 : rText = OUString();
764 0 : return SFX_ITEM_PRESENTATION_NONE;
765 : case SFX_ITEM_PRESENTATION_NAMELESS:
766 : {
767 0 : sal_uInt16 nId = RID_SVXITEMS_HYPHEN_FALSE;
768 :
769 0 : if ( bHyphen )
770 0 : nId = RID_SVXITEMS_HYPHEN_TRUE;
771 0 : rText = EE_RESSTR(nId) + cpDelimTmp;
772 0 : nId = RID_SVXITEMS_PAGE_END_FALSE;
773 :
774 0 : if ( bPageEnd )
775 0 : nId = RID_SVXITEMS_PAGE_END_TRUE;
776 0 : rText = rText + EE_RESSTR(nId) + cpDelimTmp +
777 0 : OUString::number( nMinLead ) + cpDelimTmp +
778 0 : OUString::number( nMinTrail ) + cpDelimTmp +
779 0 : OUString::number( nMaxHyphens );
780 0 : return SFX_ITEM_PRESENTATION_COMPLETE;
781 : }
782 : case SFX_ITEM_PRESENTATION_COMPLETE:
783 : {
784 0 : sal_uInt16 nId = RID_SVXITEMS_HYPHEN_FALSE;
785 :
786 0 : if ( bHyphen )
787 0 : nId = RID_SVXITEMS_HYPHEN_TRUE;
788 0 : rText = EE_RESSTR(nId) + cpDelimTmp;
789 0 : nId = RID_SVXITEMS_PAGE_END_FALSE;
790 :
791 0 : if ( bPageEnd )
792 0 : nId = RID_SVXITEMS_PAGE_END_TRUE;
793 0 : rText = rText +
794 0 : EE_RESSTR(nId) +
795 0 : cpDelimTmp +
796 0 : EE_RESSTR(RID_SVXITEMS_HYPHEN_MINLEAD).replaceAll("%1", OUString::number(nMinLead)) +
797 0 : cpDelimTmp +
798 0 : EE_RESSTR(RID_SVXITEMS_HYPHEN_MINTRAIL).replaceAll("%1", OUString::number(nMinTrail)) +
799 0 : cpDelimTmp +
800 0 : EE_RESSTR(RID_SVXITEMS_HYPHEN_MAX).replaceAll("%1", OUString::number(nMaxHyphens));
801 0 : return SFX_ITEM_PRESENTATION_COMPLETE;
802 : }
803 : default: ;//prevent warning
804 : }
805 0 : return SFX_ITEM_PRESENTATION_NONE;
806 : }
807 :
808 :
809 :
810 0 : SfxPoolItem* SvxHyphenZoneItem::Create(SvStream& rStrm, sal_uInt16) const
811 : {
812 : sal_Int8 _bHyphen, _bHyphenPageEnd;
813 : sal_Int8 _nMinLead, _nMinTrail, _nMaxHyphens;
814 0 : rStrm.ReadSChar( _bHyphen ).ReadSChar( _bHyphenPageEnd ).ReadSChar( _nMinLead ).ReadSChar( _nMinTrail ).ReadSChar( _nMaxHyphens );
815 0 : SvxHyphenZoneItem* pAttr = new SvxHyphenZoneItem( false, Which() );
816 0 : pAttr->SetHyphen( _bHyphen != 0 );
817 0 : pAttr->SetPageEnd( _bHyphenPageEnd != 0 );
818 0 : pAttr->GetMinLead() = _nMinLead;
819 0 : pAttr->GetMinTrail() = _nMinTrail;
820 0 : pAttr->GetMaxHyphens() = _nMaxHyphens;
821 0 : return pAttr;
822 : }
823 :
824 :
825 :
826 0 : SvStream& SvxHyphenZoneItem::Store( SvStream& rStrm, sal_uInt16 /*nItemVersion*/ ) const
827 : {
828 0 : rStrm.WriteSChar( (sal_Int8) IsHyphen() )
829 0 : .WriteSChar( (sal_Int8) IsPageEnd() )
830 0 : .WriteSChar( (sal_Int8) GetMinLead() )
831 0 : .WriteSChar( (sal_Int8) GetMinTrail() )
832 0 : .WriteSChar( (sal_Int8) GetMaxHyphens() );
833 0 : return rStrm;
834 : }
835 :
836 : // class SvxTabStop ------------------------------------------------------
837 :
838 120191 : SvxTabStop::SvxTabStop()
839 : {
840 120191 : nTabPos = 0;
841 120191 : eAdjustment = SVX_TAB_ADJUST_LEFT;
842 120191 : m_cDecimal = cDfltDecimalChar;
843 120191 : cFill = cDfltFillChar;
844 120191 : }
845 :
846 :
847 :
848 15878 : SvxTabStop::SvxTabStop( const sal_Int32 nPos, const SvxTabAdjust eAdjst,
849 : const sal_Unicode cDec, const sal_Unicode cFil )
850 : {
851 15878 : nTabPos = nPos;
852 15878 : eAdjustment = eAdjst;
853 15878 : m_cDecimal = cDec;
854 15878 : cFill = cFil;
855 15878 : }
856 :
857 17825 : void SvxTabStop::fillDecimal() const
858 : {
859 17825 : if ( cDfltDecimalChar == m_cDecimal )
860 4440 : m_cDecimal = SvtSysLocale().GetLocaleData().getNumDecimalSep()[0];
861 17825 : }
862 :
863 :
864 0 : OUString SvxTabStop::GetValueString() const
865 : {
866 : OUString aStr = "("
867 0 : + OUString::number(nTabPos)
868 0 : + ", "
869 0 : + EE_RESSTR(RID_SVXITEMS_TAB_ADJUST_BEGIN + (sal_uInt16)eAdjustment)
870 0 : + ", ["
871 0 : + EE_RESSTR(RID_SVXITEMS_TAB_DECIMAL_CHAR)
872 0 : + OUString(GetDecimal())
873 0 : + "], , ["
874 0 : + EE_RESSTR(RID_SVXITEMS_TAB_FILL_CHAR)
875 0 : + OUString(cFill)
876 0 : + "])";
877 :
878 0 : return aStr;
879 : }
880 :
881 : // class SvxTabStopItem --------------------------------------------------
882 :
883 1 : SvxTabStopItem::SvxTabStopItem( sal_uInt16 _nWhich ) :
884 : SfxPoolItem( _nWhich ),
885 1 : maTabStops()
886 : {
887 1 : const sal_uInt16 nTabs = SVX_TAB_DEFCOUNT, nDist = SVX_TAB_DEFDIST;
888 1 : const SvxTabAdjust eAdjst= SVX_TAB_ADJUST_DEFAULT;
889 :
890 11 : for (sal_uInt16 i = 0; i < nTabs; ++i)
891 : {
892 10 : SvxTabStop aTab( (i + 1) * nDist, eAdjst );
893 10 : maTabStops.insert( aTab );
894 : }
895 1 : }
896 :
897 :
898 :
899 2449 : SvxTabStopItem::SvxTabStopItem( const sal_uInt16 nTabs,
900 : const sal_uInt16 nDist,
901 : const SvxTabAdjust eAdjst,
902 : sal_uInt16 _nWhich ) :
903 : SfxPoolItem( _nWhich ),
904 2449 : maTabStops()
905 : {
906 4293 : for ( sal_uInt16 i = 0; i < nTabs; ++i )
907 : {
908 1844 : SvxTabStop aTab( (i + 1) * nDist, eAdjst );
909 1844 : maTabStops.insert( aTab );
910 : }
911 2449 : }
912 :
913 :
914 :
915 140953 : SvxTabStopItem::SvxTabStopItem( const SvxTabStopItem& rTSI ) :
916 140953 : SfxPoolItem( rTSI.Which() ),
917 140953 : maTabStops( rTSI.maTabStops )
918 : {
919 140953 : }
920 :
921 :
922 :
923 13878 : sal_uInt16 SvxTabStopItem::GetPos( const SvxTabStop& rTab ) const
924 : {
925 13878 : SvxTabStopArr::const_iterator it = maTabStops.find( rTab );
926 13878 : return it != maTabStops.end() ? it - maTabStops.begin() : SVX_TAB_NOTFOUND;
927 : }
928 :
929 :
930 :
931 572 : sal_uInt16 SvxTabStopItem::GetPos( const sal_Int32 nPos ) const
932 : {
933 572 : SvxTabStopArr::const_iterator it = maTabStops.find( SvxTabStop( nPos ) );
934 572 : return it != maTabStops.end() ? it - maTabStops.begin() : SVX_TAB_NOTFOUND;
935 : }
936 :
937 :
938 :
939 29 : SvxTabStopItem& SvxTabStopItem::operator=( const SvxTabStopItem& rTSI )
940 : {
941 29 : maTabStops = rTSI.maTabStops;
942 29 : return *this;
943 : }
944 :
945 301 : bool SvxTabStopItem::QueryValue( uno::Any& rVal, sal_uInt8 nMemberId ) const
946 : {
947 301 : sal_Bool bConvert = 0!=(nMemberId&CONVERT_TWIPS);
948 301 : nMemberId &= ~CONVERT_TWIPS;
949 301 : switch ( nMemberId )
950 : {
951 : case MID_TABSTOPS:
952 : {
953 280 : sal_uInt16 nCount = Count();
954 280 : uno::Sequence< style::TabStop> aSeq(nCount);
955 280 : style::TabStop* pArr = aSeq.getArray();
956 368 : for(sal_uInt16 i = 0; i < nCount; i++)
957 : {
958 88 : const SvxTabStop& rTab = (*this)[i];
959 88 : pArr[i].Position = bConvert ? TWIP_TO_MM100(rTab.GetTabPos()) : rTab.GetTabPos();
960 88 : switch(rTab.GetAdjustment())
961 : {
962 47 : case SVX_TAB_ADJUST_LEFT : pArr[i].Alignment = style::TabAlign_LEFT; break;
963 6 : case SVX_TAB_ADJUST_RIGHT : pArr[i].Alignment = style::TabAlign_RIGHT; break;
964 0 : case SVX_TAB_ADJUST_DECIMAL: pArr[i].Alignment = style::TabAlign_DECIMAL; break;
965 6 : case SVX_TAB_ADJUST_CENTER : pArr[i].Alignment = style::TabAlign_CENTER; break;
966 : default: //SVX_TAB_ADJUST_DEFAULT
967 29 : pArr[i].Alignment = style::TabAlign_DEFAULT;
968 :
969 : }
970 88 : pArr[i].DecimalChar = rTab.GetDecimal();
971 88 : pArr[i].FillChar = rTab.GetFill();
972 : }
973 280 : rVal <<= aSeq;
974 280 : break;
975 : }
976 : case MID_STD_TAB:
977 : {
978 21 : const SvxTabStop &rTab = maTabStops.front();
979 21 : rVal <<= (static_cast<sal_Int32>(bConvert ? TWIP_TO_MM100(rTab.GetTabPos()) : rTab.GetTabPos()));
980 21 : break;
981 : }
982 : }
983 301 : return true;
984 : }
985 :
986 3964 : bool SvxTabStopItem::PutValue( const uno::Any& rVal, sal_uInt8 nMemberId )
987 : {
988 3964 : sal_Bool bConvert = 0!=(nMemberId&CONVERT_TWIPS);
989 3964 : nMemberId &= ~CONVERT_TWIPS;
990 3964 : switch ( nMemberId )
991 : {
992 : case MID_TABSTOPS:
993 : {
994 2651 : uno::Sequence< style::TabStop> aSeq;
995 2651 : if(!(rVal >>= aSeq))
996 : {
997 0 : uno::Sequence < uno::Sequence < uno::Any > > aAnySeq;
998 0 : if (!(rVal >>= aAnySeq))
999 0 : return false;
1000 0 : sal_Int32 nLength = aAnySeq.getLength();
1001 0 : aSeq.realloc( nLength );
1002 0 : for ( sal_Int32 n=0; n<nLength; n++ )
1003 : {
1004 0 : uno::Sequence < uno::Any >& rAnySeq = aAnySeq[n];
1005 0 : if ( rAnySeq.getLength() == 4 )
1006 : {
1007 0 : if (!(rAnySeq[0] >>= aSeq[n].Position)) return false;
1008 0 : if (!(rAnySeq[1] >>= aSeq[n].Alignment))
1009 : {
1010 0 : sal_Int32 nVal = 0;
1011 0 : if (rAnySeq[1] >>= nVal)
1012 0 : aSeq[n].Alignment = (com::sun::star::style::TabAlign) nVal;
1013 : else
1014 0 : return false;
1015 : }
1016 0 : if (!(rAnySeq[2] >>= aSeq[n].DecimalChar))
1017 : {
1018 0 : OUString aVal;
1019 0 : if ( (rAnySeq[2] >>= aVal) && aVal.getLength() == 1 )
1020 0 : aSeq[n].DecimalChar = aVal.toChar();
1021 : else
1022 0 : return false;
1023 : }
1024 0 : if (!(rAnySeq[3] >>= aSeq[n].FillChar))
1025 : {
1026 0 : OUString aVal;
1027 0 : if ( (rAnySeq[3] >>= aVal) && aVal.getLength() == 1 )
1028 0 : aSeq[n].FillChar = aVal.toChar();
1029 : else
1030 0 : return false;
1031 : }
1032 : }
1033 : else
1034 0 : return false;
1035 0 : }
1036 : }
1037 :
1038 2651 : maTabStops.clear();
1039 2651 : const style::TabStop* pArr = aSeq.getConstArray();
1040 2651 : const sal_uInt16 nCount = (sal_uInt16)aSeq.getLength();
1041 7614 : for(sal_uInt16 i = 0; i < nCount ; i++)
1042 : {
1043 4963 : SvxTabAdjust eAdjust = SVX_TAB_ADJUST_DEFAULT;
1044 4963 : switch(pArr[i].Alignment)
1045 : {
1046 2767 : case style::TabAlign_LEFT : eAdjust = SVX_TAB_ADJUST_LEFT; break;
1047 681 : case style::TabAlign_CENTER : eAdjust = SVX_TAB_ADJUST_CENTER; break;
1048 1467 : case style::TabAlign_RIGHT : eAdjust = SVX_TAB_ADJUST_RIGHT; break;
1049 48 : case style::TabAlign_DECIMAL: eAdjust = SVX_TAB_ADJUST_DECIMAL; break;
1050 : default: ;//prevent warning
1051 : }
1052 4963 : sal_Unicode cFill = pArr[i].FillChar;
1053 4963 : sal_Unicode cDecimal = pArr[i].DecimalChar;
1054 9508 : SvxTabStop aTab( bConvert ? MM100_TO_TWIP(pArr[i].Position) : pArr[i].Position,
1055 : eAdjust,
1056 : cDecimal,
1057 14471 : cFill );
1058 4963 : Insert(aTab);
1059 : }
1060 2651 : break;
1061 : }
1062 : case MID_STD_TAB:
1063 : {
1064 1313 : sal_Int32 nNewPos = 0;
1065 1313 : if (!(rVal >>= nNewPos) )
1066 0 : return false;
1067 1313 : if (bConvert)
1068 1313 : nNewPos = MM100_TO_TWIP ( nNewPos );
1069 1313 : if (nNewPos <= 0)
1070 0 : return false;
1071 1313 : const SvxTabStop& rTab = maTabStops.front();
1072 1313 : SvxTabStop aNewTab ( nNewPos, rTab.GetAdjustment(), rTab.GetDecimal(), rTab.GetFill() );
1073 1313 : Remove( 0 );
1074 1313 : Insert( aNewTab );
1075 1313 : break;
1076 : }
1077 : }
1078 3964 : return true;
1079 : }
1080 :
1081 :
1082 26055 : bool SvxTabStopItem::operator==( const SfxPoolItem& rAttr ) const
1083 : {
1084 : DBG_ASSERT( SfxPoolItem::operator==(rAttr), "unequal types" );
1085 :
1086 26055 : const SvxTabStopItem& rTSI = (SvxTabStopItem&)rAttr;
1087 :
1088 26055 : if ( Count() != rTSI.Count() )
1089 7528 : return false;
1090 :
1091 31873 : for ( sal_uInt16 i = 0; i < Count(); ++i )
1092 22583 : if( !(*this)[i].IsEqual( rTSI[i] ) )
1093 9237 : return false;
1094 9290 : return true;
1095 : }
1096 :
1097 :
1098 :
1099 27895 : SfxPoolItem* SvxTabStopItem::Clone( SfxItemPool * ) const
1100 : {
1101 27895 : return new SvxTabStopItem( *this );
1102 : }
1103 :
1104 :
1105 :
1106 0 : SfxItemPresentation SvxTabStopItem::GetPresentation
1107 : (
1108 : SfxItemPresentation ePres,
1109 : SfxMapUnit eCoreUnit,
1110 : SfxMapUnit ePresUnit,
1111 : OUString& rText, const IntlWrapper *pIntl
1112 : ) const
1113 : {
1114 0 : rText = OUString();
1115 :
1116 0 : if ( ePres > SFX_ITEM_PRESENTATION_NONE )
1117 : {
1118 0 : sal_Bool bComma = sal_False;
1119 :
1120 0 : for ( sal_uInt16 i = 0; i < Count(); ++i )
1121 : {
1122 0 : if ( SVX_TAB_ADJUST_DEFAULT != ((*this)[i]).GetAdjustment() )
1123 : {
1124 0 : if ( bComma )
1125 0 : rText += ",";
1126 0 : rText += GetMetricText(
1127 0 : ((*this)[i]).GetTabPos(), eCoreUnit, ePresUnit, pIntl );
1128 0 : if ( SFX_ITEM_PRESENTATION_COMPLETE == ePres )
1129 : {
1130 0 : rText += " " + EE_RESSTR(GetMetricId(ePresUnit));
1131 : }
1132 0 : bComma = sal_True;
1133 : }
1134 : }
1135 : }
1136 0 : return ePres;
1137 : }
1138 :
1139 :
1140 :
1141 0 : SfxPoolItem* SvxTabStopItem::Create( SvStream& rStrm, sal_uInt16 ) const
1142 : {
1143 : sal_Int8 nTabs;
1144 0 : rStrm.ReadSChar( nTabs );
1145 : SvxTabStopItem* pAttr =
1146 0 : new SvxTabStopItem( 0, 0, SVX_TAB_ADJUST_DEFAULT, Which() );
1147 :
1148 0 : for ( sal_Int8 i = 0; i < nTabs; i++ )
1149 : {
1150 0 : sal_Int32 nPos(0);
1151 : sal_Int8 eAdjust;
1152 : unsigned char cDecimal, cFill;
1153 0 : rStrm.ReadInt32( nPos ).ReadSChar( eAdjust ).ReadUChar( cDecimal ).ReadUChar( cFill );
1154 0 : if( !i || SVX_TAB_ADJUST_DEFAULT != eAdjust )
1155 : pAttr->Insert( SvxTabStop
1156 0 : ( nPos, (SvxTabAdjust)eAdjust, sal_Unicode(cDecimal), sal_Unicode(cFill) ) );
1157 : }
1158 0 : return pAttr;
1159 : }
1160 :
1161 :
1162 :
1163 0 : SvStream& SvxTabStopItem::Store( SvStream& rStrm, sal_uInt16 /*nItemVersion*/ ) const
1164 : {
1165 : // Default-Tabs are only expanded for the default Attribute. For complete
1166 : // backward compabillity (<=304) all tabs have to be expanded, this makes
1167 : // the files grow large in size. All only SWG!
1168 :
1169 0 : const SfxItemPool *pPool = SfxItemPool::GetStoringPool();
1170 : const bool bStoreDefTabs = pPool
1171 0 : && pPool->GetName() == "SWG"
1172 0 : && ::IsDefaultItem( this );
1173 :
1174 0 : const short nTabs = Count();
1175 0 : sal_uInt16 nCount = 0, nDefDist = 0;
1176 0 : sal_Int32 nNew = 0;
1177 :
1178 0 : if( bStoreDefTabs )
1179 : {
1180 : const SvxTabStopItem& rDefTab = (const SvxTabStopItem &)
1181 0 : pPool->GetDefaultItem( pPool->GetWhich( SID_ATTR_TABSTOP, false ) );
1182 0 : nDefDist = sal_uInt16( rDefTab.maTabStops.front().GetTabPos() );
1183 0 : const sal_Int32 nPos = nTabs > 0 ? (*this)[nTabs-1].GetTabPos() : 0;
1184 0 : nCount = (sal_uInt16)(nPos / nDefDist);
1185 0 : nNew = (nCount + 1) * nDefDist;
1186 :
1187 0 : if( nNew <= nPos + 50 )
1188 0 : nNew += nDefDist;
1189 :
1190 0 : sal_Int32 lA3Width = SvxPaperInfo::GetPaperSize(PAPER_A3).Width();
1191 0 : nCount = (sal_uInt16)(nNew < lA3Width ? ( lA3Width - nNew ) / nDefDist + 1 : 0);
1192 : }
1193 :
1194 0 : rStrm.WriteSChar( (sal_Int8) ( nTabs + nCount ) );
1195 0 : for ( short i = 0; i < nTabs; i++ )
1196 : {
1197 0 : const SvxTabStop& rTab = (*this)[ i ];
1198 0 : rStrm.WriteInt32( rTab.GetTabPos() )
1199 0 : .WriteSChar( (sal_Int8) rTab.GetAdjustment() )
1200 0 : .WriteUChar( (unsigned char) rTab.GetDecimal() )
1201 0 : .WriteUChar( (unsigned char) rTab.GetFill() );
1202 : }
1203 :
1204 0 : if ( bStoreDefTabs )
1205 0 : for( ; nCount; --nCount )
1206 : {
1207 0 : SvxTabStop aSwTabStop(nNew, SVX_TAB_ADJUST_DEFAULT);
1208 0 : rStrm.WriteInt32( aSwTabStop.GetTabPos() )
1209 0 : .WriteSChar( (sal_Int8) aSwTabStop.GetAdjustment() )
1210 0 : .WriteUChar( (unsigned char) aSwTabStop.GetDecimal() )
1211 0 : .WriteUChar( (unsigned char) aSwTabStop.GetFill() );
1212 0 : nNew += nDefDist;
1213 : }
1214 :
1215 0 : return rStrm;
1216 : }
1217 :
1218 :
1219 13866 : bool SvxTabStopItem::Insert( const SvxTabStop& rTab )
1220 : {
1221 13866 : sal_uInt16 nTabPos = GetPos(rTab);
1222 13866 : if(SVX_TAB_NOTFOUND != nTabPos )
1223 160 : Remove(nTabPos);
1224 13866 : return maTabStops.insert( rTab ).second;
1225 : }
1226 :
1227 12 : void SvxTabStopItem::Insert( const SvxTabStopItem* pTabs, sal_uInt16 nStart,
1228 : sal_uInt16 nEnd )
1229 : {
1230 24 : for( sal_uInt16 i = nStart; i < nEnd && i < pTabs->Count(); i++ )
1231 : {
1232 12 : const SvxTabStop& rTab = (*pTabs)[i];
1233 12 : sal_uInt16 nTabPos = GetPos(rTab);
1234 12 : if(SVX_TAB_NOTFOUND != nTabPos)
1235 0 : Remove(nTabPos);
1236 : }
1237 24 : for( sal_uInt16 i = nStart; i < nEnd && i < pTabs->Count(); i++ )
1238 : {
1239 12 : maTabStops.insert( (*pTabs)[i] );
1240 : }
1241 12 : }
1242 :
1243 :
1244 :
1245 : // class SvxFmtSplitItem -------------------------------------------------
1246 1248 : SvxFmtSplitItem::~SvxFmtSplitItem()
1247 : {
1248 1248 : }
1249 :
1250 581 : SfxPoolItem* SvxFmtSplitItem::Clone( SfxItemPool * ) const
1251 : {
1252 581 : return new SvxFmtSplitItem( *this );
1253 : }
1254 :
1255 :
1256 :
1257 0 : SvStream& SvxFmtSplitItem::Store( SvStream& rStrm, sal_uInt16 /*nItemVersion*/ ) const
1258 : {
1259 0 : rStrm.WriteSChar( (sal_Int8)GetValue() );
1260 0 : return rStrm;
1261 : }
1262 :
1263 :
1264 :
1265 0 : SfxPoolItem* SvxFmtSplitItem::Create( SvStream& rStrm, sal_uInt16 ) const
1266 : {
1267 : sal_Int8 bIsSplit;
1268 0 : rStrm.ReadSChar( bIsSplit );
1269 0 : return new SvxFmtSplitItem( bIsSplit != 0, Which() );
1270 : }
1271 :
1272 :
1273 :
1274 0 : SfxItemPresentation SvxFmtSplitItem::GetPresentation
1275 : (
1276 : SfxItemPresentation ePres,
1277 : SfxMapUnit /*eCoreUnit*/,
1278 : SfxMapUnit /*ePresUnit*/,
1279 : OUString& rText, const IntlWrapper *
1280 : ) const
1281 : {
1282 0 : switch ( ePres )
1283 : {
1284 : case SFX_ITEM_PRESENTATION_NONE:
1285 0 : rText = OUString();
1286 0 : return SFX_ITEM_PRESENTATION_NONE;
1287 : case SFX_ITEM_PRESENTATION_NAMELESS:
1288 : case SFX_ITEM_PRESENTATION_COMPLETE:
1289 : {
1290 0 : sal_uInt16 nId = RID_SVXITEMS_FMTSPLIT_FALSE;
1291 :
1292 0 : if ( GetValue() )
1293 0 : nId = RID_SVXITEMS_FMTSPLIT_TRUE;
1294 0 : rText = EE_RESSTR(nId);
1295 0 : return ePres;
1296 : }
1297 : default: ;//prevent warning
1298 : }
1299 0 : return SFX_ITEM_PRESENTATION_NONE;
1300 : }
1301 :
1302 :
1303 :
1304 0 : SfxPoolItem* SvxPageModelItem::Clone( SfxItemPool* ) const
1305 : {
1306 0 : return new SvxPageModelItem( *this );
1307 : }
1308 :
1309 :
1310 :
1311 0 : bool SvxPageModelItem::QueryValue( com::sun::star::uno::Any& rVal, sal_uInt8 nMemberId ) const
1312 : {
1313 0 : nMemberId &= ~CONVERT_TWIPS;
1314 :
1315 0 : switch ( nMemberId )
1316 : {
1317 0 : case MID_AUTO: rVal <<= (sal_Bool) bAuto; break;
1318 0 : case MID_NAME: rVal <<= OUString( GetValue() ); break;
1319 0 : default: OSL_FAIL("Wrong MemberId!"); return false;
1320 : }
1321 :
1322 0 : return true;
1323 : }
1324 :
1325 0 : bool SvxPageModelItem::PutValue( const com::sun::star::uno::Any& rVal, sal_uInt8 nMemberId )
1326 : {
1327 0 : nMemberId &= ~CONVERT_TWIPS;
1328 : sal_Bool bRet;
1329 0 : OUString aStr;
1330 0 : switch ( nMemberId )
1331 : {
1332 0 : case MID_AUTO: bRet = ( rVal >>= bAuto ); break;
1333 0 : case MID_NAME: bRet = ( rVal >>= aStr ); if ( bRet ) SetValue(aStr); break;
1334 0 : default: OSL_FAIL("Wrong MemberId!"); return false;
1335 : }
1336 :
1337 0 : return bRet;
1338 : }
1339 :
1340 0 : SfxItemPresentation SvxPageModelItem::GetPresentation
1341 : (
1342 : SfxItemPresentation ePres,
1343 : SfxMapUnit /*eCoreUnit*/,
1344 : SfxMapUnit /*ePresUnit*/,
1345 : OUString& rText, const IntlWrapper *
1346 : ) const
1347 : {
1348 0 : rText = OUString();
1349 0 : bool bSet = !GetValue().isEmpty();
1350 :
1351 0 : switch ( ePres )
1352 : {
1353 : case SFX_ITEM_PRESENTATION_NONE:
1354 0 : return SFX_ITEM_PRESENTATION_NONE;
1355 :
1356 : case SFX_ITEM_PRESENTATION_NAMELESS:
1357 0 : if ( bSet )
1358 0 : rText = GetValue();
1359 0 : return SFX_ITEM_PRESENTATION_NAMELESS;
1360 :
1361 : case SFX_ITEM_PRESENTATION_COMPLETE:
1362 0 : if ( bSet )
1363 : {
1364 0 : rText = EE_RESSTR(RID_SVXITEMS_PAGEMODEL_COMPLETE) + GetValue();
1365 : }
1366 0 : return SFX_ITEM_PRESENTATION_COMPLETE;
1367 : default: ;//prevent warning
1368 : }
1369 0 : return SFX_ITEM_PRESENTATION_NONE;
1370 : }
1371 :
1372 :
1373 :
1374 29996 : SvxScriptSpaceItem::SvxScriptSpaceItem( bool bOn, const sal_uInt16 nId )
1375 29996 : : SfxBoolItem( nId, bOn )
1376 : {
1377 29996 : }
1378 :
1379 25718 : SfxPoolItem* SvxScriptSpaceItem::Clone( SfxItemPool * ) const
1380 : {
1381 25718 : return new SvxScriptSpaceItem( GetValue(), Which() );
1382 : }
1383 :
1384 0 : SfxPoolItem* SvxScriptSpaceItem::Create(SvStream & rStrm, sal_uInt16) const
1385 : {
1386 : sal_Bool bFlag;
1387 0 : rStrm.ReadUChar( bFlag );
1388 0 : return new SvxScriptSpaceItem( bFlag, Which() );
1389 : }
1390 :
1391 7182 : sal_uInt16 SvxScriptSpaceItem::GetVersion( sal_uInt16 nFFVer ) const
1392 : {
1393 : DBG_ASSERT( SOFFICE_FILEFORMAT_31==nFFVer ||
1394 : SOFFICE_FILEFORMAT_40==nFFVer ||
1395 : SOFFICE_FILEFORMAT_50==nFFVer,
1396 : "SvxTwoLinesItem: Is there a new file format? ");
1397 :
1398 7182 : return SOFFICE_FILEFORMAT_50 > nFFVer ? USHRT_MAX : 0;
1399 : }
1400 :
1401 0 : SfxItemPresentation SvxScriptSpaceItem::GetPresentation(
1402 : SfxItemPresentation ePres,
1403 : SfxMapUnit /*eCoreMetric*/, SfxMapUnit /*ePresMetric*/,
1404 : OUString &rText, const IntlWrapper* /*pIntl*/ ) const
1405 : {
1406 0 : switch( ePres )
1407 : {
1408 : case SFX_ITEM_PRESENTATION_NONE:
1409 0 : rText = OUString();
1410 0 : break;
1411 : case SFX_ITEM_PRESENTATION_NAMELESS:
1412 : case SFX_ITEM_PRESENTATION_COMPLETE:
1413 : {
1414 0 : rText = EE_RESSTR( !GetValue()
1415 : ? RID_SVXITEMS_SCRPTSPC_OFF
1416 0 : : RID_SVXITEMS_SCRPTSPC_ON );
1417 0 : return ePres;
1418 : }
1419 : default: ;//prevent warning
1420 : }
1421 0 : return SFX_ITEM_PRESENTATION_NONE;
1422 : }
1423 :
1424 :
1425 :
1426 2134 : SvxHangingPunctuationItem::SvxHangingPunctuationItem(
1427 : bool bOn, const sal_uInt16 nId )
1428 2134 : : SfxBoolItem( nId, bOn )
1429 : {
1430 2134 : }
1431 :
1432 1092 : SfxPoolItem* SvxHangingPunctuationItem::Clone( SfxItemPool * ) const
1433 : {
1434 1092 : return new SvxHangingPunctuationItem( GetValue(), Which() );
1435 : }
1436 :
1437 0 : SfxPoolItem* SvxHangingPunctuationItem::Create(SvStream & rStrm, sal_uInt16) const
1438 : {
1439 : sal_Bool nValue;
1440 0 : rStrm.ReadUChar( nValue );
1441 0 : return new SvxHangingPunctuationItem( nValue, Which() );
1442 : }
1443 :
1444 0 : sal_uInt16 SvxHangingPunctuationItem::GetVersion( sal_uInt16 nFFVer ) const
1445 : {
1446 : DBG_ASSERT( SOFFICE_FILEFORMAT_31==nFFVer ||
1447 : SOFFICE_FILEFORMAT_40==nFFVer ||
1448 : SOFFICE_FILEFORMAT_50==nFFVer,
1449 : "SvxHangingPunctuationItem: Is there a new file format? ");
1450 :
1451 0 : return SOFFICE_FILEFORMAT_50 > nFFVer ? USHRT_MAX : 0;
1452 : }
1453 :
1454 0 : SfxItemPresentation SvxHangingPunctuationItem::GetPresentation(
1455 : SfxItemPresentation ePres,
1456 : SfxMapUnit /*eCoreMetric*/, SfxMapUnit /*ePresMetric*/,
1457 : OUString &rText, const IntlWrapper* /*pIntl*/ ) const
1458 : {
1459 0 : switch( ePres )
1460 : {
1461 : case SFX_ITEM_PRESENTATION_NONE:
1462 0 : rText = OUString();
1463 0 : break;
1464 : case SFX_ITEM_PRESENTATION_NAMELESS:
1465 : case SFX_ITEM_PRESENTATION_COMPLETE:
1466 : {
1467 0 : rText = EE_RESSTR( !GetValue()
1468 : ? RID_SVXITEMS_HNGPNCT_OFF
1469 0 : : RID_SVXITEMS_HNGPNCT_ON );
1470 0 : return ePres;
1471 : }
1472 : default: ;//prevent warning
1473 0 : break;
1474 : }
1475 0 : return SFX_ITEM_PRESENTATION_NONE;
1476 : }
1477 :
1478 :
1479 1814 : SvxForbiddenRuleItem::SvxForbiddenRuleItem(
1480 : bool bOn, const sal_uInt16 nId )
1481 1814 : : SfxBoolItem( nId, bOn )
1482 : {
1483 1814 : }
1484 :
1485 772 : SfxPoolItem* SvxForbiddenRuleItem::Clone( SfxItemPool * ) const
1486 : {
1487 772 : return new SvxForbiddenRuleItem( GetValue(), Which() );
1488 : }
1489 :
1490 0 : SfxPoolItem* SvxForbiddenRuleItem::Create(SvStream & rStrm, sal_uInt16) const
1491 : {
1492 : sal_Bool nValue;
1493 0 : rStrm.ReadUChar( nValue );
1494 0 : return new SvxForbiddenRuleItem( nValue, Which() );
1495 : }
1496 :
1497 0 : sal_uInt16 SvxForbiddenRuleItem::GetVersion( sal_uInt16 nFFVer ) const
1498 : {
1499 : DBG_ASSERT( SOFFICE_FILEFORMAT_31==nFFVer ||
1500 : SOFFICE_FILEFORMAT_40==nFFVer ||
1501 : SOFFICE_FILEFORMAT_50==nFFVer,
1502 : "SvxForbiddenRuleItem: Is there a new file format? ");
1503 :
1504 0 : return SOFFICE_FILEFORMAT_50 > nFFVer ? USHRT_MAX : 0;
1505 : }
1506 :
1507 0 : SfxItemPresentation SvxForbiddenRuleItem::GetPresentation(
1508 : SfxItemPresentation ePres,
1509 : SfxMapUnit /*eCoreMetric*/, SfxMapUnit /*ePresMetric*/,
1510 : OUString &rText, const IntlWrapper* /*pIntl*/ ) const
1511 : {
1512 0 : switch( ePres )
1513 : {
1514 : case SFX_ITEM_PRESENTATION_NONE:
1515 0 : rText = OUString();
1516 0 : break;
1517 : case SFX_ITEM_PRESENTATION_NAMELESS:
1518 : case SFX_ITEM_PRESENTATION_COMPLETE:
1519 : {
1520 0 : rText = EE_RESSTR( !GetValue()
1521 : ? RID_SVXITEMS_FORBIDDEN_RULE_OFF
1522 0 : : RID_SVXITEMS_FORBIDDEN_RULE_ON );
1523 0 : return ePres;
1524 : }
1525 : default: ;//prevent warning
1526 0 : break;
1527 : }
1528 0 : return SFX_ITEM_PRESENTATION_NONE;
1529 : }
1530 :
1531 : /*************************************************************************
1532 : |* class SvxParaVertAlignItem
1533 : *************************************************************************/
1534 :
1535 433 : SvxParaVertAlignItem::SvxParaVertAlignItem( sal_uInt16 nValue,
1536 : const sal_uInt16 nW )
1537 433 : : SfxUInt16Item( nW, nValue )
1538 : {
1539 433 : }
1540 :
1541 363 : SfxPoolItem* SvxParaVertAlignItem::Clone( SfxItemPool* ) const
1542 : {
1543 363 : return new SvxParaVertAlignItem( GetValue(), Which() );
1544 : }
1545 :
1546 0 : SfxPoolItem* SvxParaVertAlignItem::Create( SvStream& rStrm, sal_uInt16 ) const
1547 : {
1548 : sal_uInt16 nVal;
1549 0 : rStrm.ReadUInt16( nVal );
1550 0 : return new SvxParaVertAlignItem( nVal, Which() );
1551 : }
1552 :
1553 0 : SvStream& SvxParaVertAlignItem::Store( SvStream & rStrm, sal_uInt16 ) const
1554 : {
1555 0 : rStrm.WriteUInt16( GetValue() );
1556 0 : return rStrm;
1557 : }
1558 :
1559 0 : sal_uInt16 SvxParaVertAlignItem::GetVersion( sal_uInt16 nFFVer ) const
1560 : {
1561 0 : return SOFFICE_FILEFORMAT_50 > nFFVer ? USHRT_MAX : 0;
1562 : }
1563 :
1564 0 : SfxItemPresentation SvxParaVertAlignItem::GetPresentation(
1565 : SfxItemPresentation ePres,
1566 : SfxMapUnit /*eCoreMetric*/, SfxMapUnit /*ePresMetric*/,
1567 : OUString &rText, const IntlWrapper* ) const
1568 : {
1569 0 : switch( ePres )
1570 : {
1571 : case SFX_ITEM_PRESENTATION_NONE:
1572 0 : rText = OUString();
1573 0 : break;
1574 : case SFX_ITEM_PRESENTATION_NAMELESS:
1575 : case SFX_ITEM_PRESENTATION_COMPLETE:
1576 : {
1577 : sal_uInt16 nTmp;
1578 0 : switch( GetValue() )
1579 : {
1580 0 : case AUTOMATIC: nTmp = RID_SVXITEMS_PARAVERTALIGN_AUTO; break;
1581 0 : case TOP: nTmp = RID_SVXITEMS_PARAVERTALIGN_TOP; break;
1582 0 : case CENTER: nTmp = RID_SVXITEMS_PARAVERTALIGN_CENTER; break;
1583 0 : case BOTTOM: nTmp = RID_SVXITEMS_PARAVERTALIGN_BOTTOM; break;
1584 0 : default: nTmp = RID_SVXITEMS_PARAVERTALIGN_BASELINE; break;
1585 : }
1586 0 : rText = EE_RESSTR( nTmp );
1587 0 : return ePres;
1588 : }
1589 : default: ;//prevent warning
1590 0 : break;
1591 : }
1592 0 : return SFX_ITEM_PRESENTATION_NONE;
1593 : }
1594 :
1595 7 : bool SvxParaVertAlignItem::QueryValue( com::sun::star::uno::Any& rVal,
1596 : sal_uInt8 /*nMemberId*/ ) const
1597 : {
1598 7 : rVal <<= (sal_Int16)GetValue();
1599 7 : return true;
1600 : }
1601 :
1602 228 : bool SvxParaVertAlignItem::PutValue( const com::sun::star::uno::Any& rVal,
1603 : sal_uInt8 /*nMemberId*/ )
1604 : {
1605 228 : sal_Int16 nVal = sal_Int16();
1606 228 : if((rVal >>= nVal) && nVal >=0 && nVal <= BOTTOM )
1607 : {
1608 228 : SetValue( (sal_uInt16)nVal );
1609 228 : return true;
1610 : }
1611 : else
1612 0 : return false;
1613 : }
1614 :
1615 489 : bool SvxParaVertAlignItem::operator==( const SfxPoolItem& rItem ) const
1616 : {
1617 : DBG_ASSERT( SfxPoolItem::operator==( rItem ), "unequal type" );
1618 489 : return SfxUInt16Item::operator==( rItem );
1619 : }
1620 :
1621 :
1622 1554 : SvxParaGridItem::SvxParaGridItem( bool bOn, const sal_uInt16 nId )
1623 1554 : : SfxBoolItem( nId, bOn )
1624 : {
1625 1554 : }
1626 :
1627 1316 : SfxPoolItem* SvxParaGridItem::Clone( SfxItemPool * ) const
1628 : {
1629 1316 : return new SvxParaGridItem( GetValue(), Which() );
1630 : }
1631 :
1632 0 : SfxPoolItem* SvxParaGridItem::Create(SvStream & rStrm, sal_uInt16) const
1633 : {
1634 : sal_Bool bFlag;
1635 0 : rStrm.ReadUChar( bFlag );
1636 0 : return new SvxParaGridItem( bFlag, Which() );
1637 : }
1638 :
1639 0 : sal_uInt16 SvxParaGridItem::GetVersion( sal_uInt16 nFFVer ) const
1640 : {
1641 : DBG_ASSERT( SOFFICE_FILEFORMAT_31==nFFVer ||
1642 : SOFFICE_FILEFORMAT_40==nFFVer ||
1643 : SOFFICE_FILEFORMAT_50==nFFVer,
1644 : "SvxParaGridItem: Is there a new file format? ");
1645 :
1646 0 : return SOFFICE_FILEFORMAT_50 > nFFVer ? USHRT_MAX : 0;
1647 : }
1648 :
1649 0 : SfxItemPresentation SvxParaGridItem::GetPresentation(
1650 : SfxItemPresentation ePres,
1651 : SfxMapUnit /*eCoreMetric*/, SfxMapUnit /*ePresMetric*/,
1652 : OUString &rText, const IntlWrapper* /*pIntl*/ ) const
1653 : {
1654 0 : switch( ePres )
1655 : {
1656 : case SFX_ITEM_PRESENTATION_NONE:
1657 0 : rText = OUString();
1658 0 : break;
1659 : case SFX_ITEM_PRESENTATION_NAMELESS:
1660 : case SFX_ITEM_PRESENTATION_COMPLETE:
1661 : {
1662 0 : rText = GetValue() ?
1663 : EE_RESSTR( RID_SVXITEMS_PARASNAPTOGRID_ON ) :
1664 0 : EE_RESSTR( RID_SVXITEMS_PARASNAPTOGRID_OFF );
1665 :
1666 0 : return ePres;
1667 : }
1668 : default: ;//prevent warning
1669 0 : break;
1670 : }
1671 0 : return SFX_ITEM_PRESENTATION_NONE;
1672 : }
1673 :
1674 :
1675 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|