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 <svx/dialogs.hrc>
21 : #include "svx/rulritem.hxx"
22 : #include <tools/mapunit.hxx>
23 : #include <osl/diagnose.h>
24 : #include <com/sun/star/awt/Rectangle.hpp>
25 : #include <com/sun/star/frame/status/LeftRightMargin.hpp>
26 : #include <com/sun/star/frame/status/UpperLowerMargin.hpp>
27 :
28 6811 : TYPEINIT1_AUTOFACTORY(SvxPagePosSizeItem, SfxPoolItem);
29 11313 : TYPEINIT1_AUTOFACTORY(SvxLongLRSpaceItem, SfxPoolItem);
30 11559 : TYPEINIT1_AUTOFACTORY(SvxLongULSpaceItem, SfxPoolItem);
31 1225 : TYPEINIT1(SvxColumnItem, SfxPoolItem);
32 96 : TYPEINIT1(SvxObjectItem, SfxPoolItem);
33 :
34 : /* SvxLongLRSpaceItem */
35 :
36 800 : bool SvxLongLRSpaceItem::operator==( const SfxPoolItem& rCmp) const
37 : {
38 1600 : return SfxPoolItem::operator==(rCmp) &&
39 1584 : mlLeft == static_cast<const SvxLongLRSpaceItem &>(rCmp).mlLeft &&
40 1584 : mlRight == static_cast<const SvxLongLRSpaceItem &>(rCmp).mlRight;
41 : }
42 :
43 661 : bool SvxLongLRSpaceItem::QueryValue( ::com::sun::star::uno::Any& rVal, sal_uInt8 nMemberId ) const
44 : {
45 661 : bool bConvert = 0!=(nMemberId&CONVERT_TWIPS);
46 661 : nMemberId &= ~CONVERT_TWIPS;
47 :
48 : sal_Int32 nVal;
49 661 : switch( nMemberId )
50 : {
51 : case 0:
52 : {
53 661 : ::com::sun::star::frame::status::LeftRightMargin aLeftRightMargin;
54 661 : aLeftRightMargin.Left = bConvert ? convertTwipToMm100( mlLeft ) : mlLeft;
55 661 : aLeftRightMargin.Right = bConvert ? convertTwipToMm100( mlRight ) : mlRight;
56 661 : rVal <<= aLeftRightMargin;
57 661 : return true;
58 : }
59 :
60 : case MID_LEFT:
61 0 : nVal = mlLeft;
62 0 : break;
63 : case MID_RIGHT:
64 0 : nVal = mlRight;
65 0 : break;
66 : default:
67 : OSL_FAIL("Wrong MemberId!");
68 0 : return false;
69 : }
70 :
71 0 : if ( bConvert )
72 0 : nVal = convertTwipToMm100( nVal );
73 :
74 0 : rVal <<= nVal;
75 0 : return true;
76 : }
77 :
78 0 : bool SvxLongLRSpaceItem::PutValue( const ::com::sun::star::uno::Any& rVal, sal_uInt8 nMemberId )
79 : {
80 0 : bool bConvert = 0!=(nMemberId&CONVERT_TWIPS);
81 0 : nMemberId &= ~CONVERT_TWIPS;
82 :
83 0 : sal_Int32 nVal = 0;
84 0 : if ( nMemberId == 0 )
85 : {
86 0 : ::com::sun::star::frame::status::LeftRightMargin aLeftRightMargin;
87 0 : if ( rVal >>= aLeftRightMargin )
88 : {
89 0 : mlLeft = bConvert ? convertMm100ToTwip(aLeftRightMargin.Left) : aLeftRightMargin.Left;
90 0 : mlRight = bConvert ? convertMm100ToTwip(aLeftRightMargin.Right) : aLeftRightMargin.Right;
91 0 : return true;
92 : }
93 : }
94 0 : else if ( rVal >>= nVal )
95 : {
96 0 : if ( bConvert )
97 0 : nVal = convertMm100ToTwip( nVal );
98 :
99 0 : switch( nMemberId )
100 : {
101 : case MID_LEFT:
102 0 : mlLeft = nVal;
103 0 : break;
104 : case MID_RIGHT:
105 0 : mlRight = nVal;
106 0 : break;
107 : default:
108 : OSL_FAIL("Wrong MemberId!");
109 0 : return false;
110 : }
111 :
112 0 : return true;
113 : }
114 :
115 0 : return false;
116 : }
117 :
118 0 : bool SvxLongLRSpaceItem::GetPresentation(
119 : SfxItemPresentation /*ePres*/,
120 : SfxMapUnit /*eCoreUnit*/,
121 : SfxMapUnit /*ePresUnit*/,
122 : OUString& /*rText*/,
123 : const IntlWrapper* /*pWrapper*/) const
124 : {
125 0 : return false;
126 : }
127 :
128 3107 : SfxPoolItem* SvxLongLRSpaceItem::Clone(SfxItemPool *) const
129 : {
130 3107 : return new SvxLongLRSpaceItem(*this);
131 : }
132 :
133 1782 : SvxLongLRSpaceItem::SvxLongLRSpaceItem(long lLeft, long lRight, sal_uInt16 nId) :
134 : SfxPoolItem (nId),
135 : mlLeft (lLeft),
136 1782 : mlRight (lRight)
137 1782 : {}
138 :
139 0 : SvxLongLRSpaceItem::SvxLongLRSpaceItem() :
140 : SfxPoolItem (0),
141 : mlLeft (0),
142 0 : mlRight (0)
143 0 : {}
144 :
145 3422 : SvxLongLRSpaceItem::SvxLongLRSpaceItem(const SvxLongLRSpaceItem &rCpy) :
146 : SfxPoolItem (rCpy),
147 : mlLeft (rCpy.mlLeft),
148 3422 : mlRight (rCpy.mlRight)
149 3422 : {}
150 :
151 :
152 :
153 4 : void SvxLongLRSpaceItem::SetLeft(long lArgLeft)
154 : {
155 4 : mlLeft = lArgLeft;
156 4 : }
157 :
158 4 : void SvxLongLRSpaceItem::SetRight(long lArgRight)
159 : {
160 4 : mlRight = lArgRight;
161 4 : }
162 :
163 : /* SvxLongULSpaceItem */
164 :
165 818 : bool SvxLongULSpaceItem::operator==( const SfxPoolItem& rCmp) const
166 : {
167 1636 : return SfxPoolItem::operator==(rCmp) &&
168 1626 : mlLeft == static_cast<const SvxLongULSpaceItem&>(rCmp).mlLeft &&
169 1626 : mlRight == static_cast<const SvxLongULSpaceItem&>(rCmp).mlRight;
170 : }
171 :
172 675 : bool SvxLongULSpaceItem::QueryValue( ::com::sun::star::uno::Any& rVal, sal_uInt8 nMemberId ) const
173 : {
174 675 : bool bConvert = 0!=(nMemberId&CONVERT_TWIPS);
175 675 : nMemberId &= ~CONVERT_TWIPS;
176 :
177 : sal_Int32 nVal;
178 675 : switch( nMemberId )
179 : {
180 : case 0:
181 : {
182 675 : ::com::sun::star::frame::status::UpperLowerMargin aUpperLowerMargin;
183 675 : aUpperLowerMargin.Upper = bConvert ? convertTwipToMm100( mlLeft ) : mlLeft;
184 675 : aUpperLowerMargin.Lower = bConvert ? convertTwipToMm100( mlRight ) : mlRight;
185 675 : rVal <<= aUpperLowerMargin;
186 675 : return true;
187 : }
188 :
189 : case MID_UPPER:
190 0 : nVal = mlLeft;
191 0 : break;
192 : case MID_LOWER:
193 0 : nVal = mlRight;
194 0 : break;
195 0 : default: OSL_FAIL("Wrong MemberId!"); return false;
196 : }
197 :
198 0 : if ( bConvert )
199 0 : nVal = convertTwipToMm100( nVal );
200 :
201 0 : rVal <<= nVal;
202 0 : return true;
203 : }
204 :
205 0 : bool SvxLongULSpaceItem::PutValue( const ::com::sun::star::uno::Any& rVal, sal_uInt8 nMemberId )
206 : {
207 0 : bool bConvert = 0!=(nMemberId&CONVERT_TWIPS);
208 0 : nMemberId &= ~CONVERT_TWIPS;
209 :
210 0 : sal_Int32 nVal = 0;
211 0 : if ( nMemberId == 0 )
212 : {
213 0 : ::com::sun::star::frame::status::UpperLowerMargin aUpperLowerMargin;
214 0 : if ( rVal >>= aUpperLowerMargin )
215 : {
216 0 : mlLeft = bConvert ? convertMm100ToTwip( aUpperLowerMargin.Upper ) : aUpperLowerMargin.Upper;
217 0 : mlRight = bConvert ? convertMm100ToTwip( aUpperLowerMargin.Lower ) : aUpperLowerMargin.Lower;
218 0 : return true;
219 : }
220 : }
221 0 : else if ( rVal >>= nVal )
222 : {
223 0 : if ( bConvert )
224 0 : nVal = convertMm100ToTwip( nVal );
225 :
226 0 : switch( nMemberId )
227 : {
228 : case MID_UPPER:
229 0 : mlLeft = nVal;
230 0 : break;
231 : case MID_LOWER:
232 0 : mlRight = nVal;
233 0 : break;
234 : default:
235 : OSL_FAIL("Wrong MemberId!");
236 0 : return false;
237 : }
238 :
239 0 : return true;
240 : }
241 :
242 0 : return false;
243 : }
244 :
245 0 : bool SvxLongULSpaceItem::GetPresentation(
246 : SfxItemPresentation /*ePres*/,
247 : SfxMapUnit /*eCoreUnit*/,
248 : SfxMapUnit /*ePresUnit*/,
249 : OUString& /*rText*/,
250 : const IntlWrapper* /*pWrapper*/ ) const
251 : {
252 0 : return false;
253 : }
254 :
255 3169 : SfxPoolItem* SvxLongULSpaceItem::Clone(SfxItemPool *) const
256 : {
257 3169 : return new SvxLongULSpaceItem(*this);
258 : }
259 :
260 1817 : SvxLongULSpaceItem::SvxLongULSpaceItem(long lLeft, long lRight, sal_uInt16 nId) :
261 : SfxPoolItem (nId),
262 : mlLeft (lLeft),
263 1817 : mlRight (lRight)
264 1817 : {}
265 :
266 3498 : SvxLongULSpaceItem::SvxLongULSpaceItem(const SvxLongULSpaceItem &rCpy) :
267 : SfxPoolItem (rCpy),
268 : mlLeft (rCpy.mlLeft),
269 3498 : mlRight (rCpy.mlRight)
270 3498 : {}
271 :
272 0 : SvxLongULSpaceItem::SvxLongULSpaceItem() :
273 : SfxPoolItem (0),
274 : mlLeft (0),
275 0 : mlRight (0)
276 0 : {}
277 :
278 :
279 :
280 1 : void SvxLongULSpaceItem::SetUpper(long lArgLeft)
281 : {
282 1 : mlLeft = lArgLeft;
283 1 : }
284 :
285 1 : void SvxLongULSpaceItem::SetLower(long lArgRight)
286 : {
287 1 : mlRight = lArgRight;
288 1 : }
289 :
290 : /* SvxPagePosSizeItem */
291 :
292 324 : bool SvxPagePosSizeItem::operator==( const SfxPoolItem& rCmp) const
293 : {
294 648 : return SfxPoolItem::operator==(rCmp) &&
295 610 : aPos == static_cast<const SvxPagePosSizeItem &>(rCmp).aPos &&
296 894 : lWidth == static_cast<const SvxPagePosSizeItem &>(rCmp).lWidth &&
297 608 : lHeight == static_cast<const SvxPagePosSizeItem &>(rCmp).lHeight;
298 : }
299 :
300 352 : bool SvxPagePosSizeItem::QueryValue( ::com::sun::star::uno::Any& rVal, sal_uInt8 nMemberId ) const
301 : {
302 352 : nMemberId &= ~CONVERT_TWIPS;
303 :
304 : sal_Int32 nVal;
305 352 : switch ( nMemberId )
306 : {
307 : case 0 :
308 : {
309 352 : com::sun::star::awt::Rectangle aPagePosSize;
310 352 : aPagePosSize.X = aPos.X();
311 352 : aPagePosSize.Y = aPos.Y();
312 352 : aPagePosSize.Width = lWidth;
313 352 : aPagePosSize.Height = lHeight;
314 352 : rVal <<= aPagePosSize;
315 352 : return true;
316 : }
317 :
318 0 : case MID_X: nVal = aPos.X(); break;
319 0 : case MID_Y: nVal = aPos.Y(); break;
320 0 : case MID_WIDTH: nVal = lWidth; break;
321 0 : case MID_HEIGHT: nVal = lHeight; break;
322 :
323 0 : default: OSL_FAIL("Wrong MemberId!"); return false;
324 : }
325 :
326 0 : rVal <<= nVal;
327 0 : return true;
328 : }
329 :
330 0 : bool SvxPagePosSizeItem::PutValue( const ::com::sun::star::uno::Any& rVal, sal_uInt8 nMemberId )
331 : {
332 0 : nMemberId &= ~CONVERT_TWIPS;
333 :
334 0 : sal_Int32 nVal = 0;
335 0 : if ( nMemberId == 0 )
336 : {
337 0 : com::sun::star::awt::Rectangle aPagePosSize;
338 0 : if ( rVal >>= aPagePosSize )
339 : {
340 0 : aPos.X() = aPagePosSize.X;
341 0 : aPos.Y() = aPagePosSize.Y;
342 0 : lWidth = aPagePosSize.Width;
343 0 : lHeight = aPagePosSize.Height;
344 0 : return true;
345 : }
346 : else
347 0 : return false;
348 : }
349 0 : else if ( rVal >>= nVal )
350 : {
351 0 : switch ( nMemberId )
352 : {
353 0 : case MID_X: aPos.X() = nVal; break;
354 0 : case MID_Y: aPos.Y() = nVal; break;
355 0 : case MID_WIDTH: lWidth = nVal; break;
356 0 : case MID_HEIGHT: lHeight = nVal; break;
357 :
358 0 : default: OSL_FAIL("Wrong MemberId!"); return false;
359 : }
360 :
361 0 : return true;
362 : }
363 :
364 0 : return false;
365 : }
366 :
367 0 : bool SvxPagePosSizeItem::GetPresentation(
368 : SfxItemPresentation /*ePres*/,
369 : SfxMapUnit /*eCoreUnit*/,
370 : SfxMapUnit /*ePresUnit*/,
371 : OUString& /*rText*/,
372 : const IntlWrapper* /*pWrapper*/ ) const
373 : {
374 0 : return false;
375 : }
376 :
377 1344 : SfxPoolItem* SvxPagePosSizeItem::Clone(SfxItemPool *) const
378 : {
379 1344 : return new SvxPagePosSizeItem(*this);
380 : }
381 :
382 636 : SvxPagePosSizeItem::SvxPagePosSizeItem(const Point &rP, long lW, long lH) :
383 : SfxPoolItem (SID_RULER_PAGE_POS),
384 : aPos (rP),
385 : lWidth (lW),
386 636 : lHeight (lH)
387 636 : {}
388 :
389 2014 : SvxPagePosSizeItem::SvxPagePosSizeItem(const SvxPagePosSizeItem &rCpy) :
390 : SfxPoolItem (rCpy),
391 : aPos (rCpy.aPos),
392 : lWidth (rCpy.lWidth),
393 2014 : lHeight (rCpy.lHeight)
394 2014 : {}
395 :
396 0 : SvxPagePosSizeItem::SvxPagePosSizeItem() :
397 : SfxPoolItem (0),
398 : aPos (0, 0),
399 : lWidth (0),
400 0 : lHeight (0)
401 0 : {}
402 :
403 : /* SvxColumnItem */
404 :
405 4 : bool SvxColumnItem::operator==(const SfxPoolItem& rCmp) const
406 : {
407 12 : if(!SfxPoolItem::operator==(rCmp) ||
408 8 : nActColumn != static_cast<const SvxColumnItem&>(rCmp).nActColumn ||
409 8 : nLeft != static_cast<const SvxColumnItem&>(rCmp).nLeft ||
410 8 : nRight != static_cast<const SvxColumnItem&>(rCmp).nRight ||
411 12 : bTable != static_cast<const SvxColumnItem&>(rCmp).bTable ||
412 4 : Count() != static_cast<const SvxColumnItem&>(rCmp).Count())
413 0 : return false;
414 :
415 4 : const sal_uInt16 nCount = static_cast<const SvxColumnItem&>(rCmp).Count();
416 12 : for(sal_uInt16 i = 0; i < nCount;++i)
417 : {
418 8 : if( (*this)[i] != static_cast<const SvxColumnItem&>(rCmp)[i] )
419 0 : return false;
420 : }
421 4 : return true;
422 : }
423 :
424 0 : SvxColumnItem::SvxColumnItem( sal_uInt16 nAct ) :
425 : SfxPoolItem (SID_RULER_BORDERS),
426 : nLeft (0),
427 : nRight (0),
428 : nActColumn (nAct),
429 : bTable (false),
430 0 : bOrtho (true)
431 :
432 0 : {}
433 :
434 6 : SvxColumnItem::SvxColumnItem( sal_uInt16 nActCol, sal_uInt16 left, sal_uInt16 right ) :
435 : SfxPoolItem (SID_RULER_BORDERS),
436 : nLeft (left),
437 : nRight (right),
438 : nActColumn (nActCol),
439 : bTable (true),
440 6 : bOrtho (true)
441 6 : {}
442 :
443 12 : SvxColumnItem::SvxColumnItem( const SvxColumnItem& rCopy ) :
444 : SfxPoolItem (rCopy),
445 : nLeft (rCopy.nLeft),
446 : nRight (rCopy.nRight),
447 : nActColumn (rCopy.nActColumn),
448 : bTable (rCopy.bTable),
449 12 : bOrtho (rCopy.bOrtho)
450 : {
451 12 : aColumns.resize(rCopy.aColumns.size());
452 12 : std::copy(rCopy.aColumns.begin(), rCopy.aColumns.end(), aColumns.begin());
453 12 : }
454 :
455 30 : SvxColumnItem::~SvxColumnItem()
456 30 : {}
457 :
458 0 : bool SvxColumnItem::GetPresentation(
459 : SfxItemPresentation /*ePres*/,
460 : SfxMapUnit /*eCoreUnit*/,
461 : SfxMapUnit /*ePresUnit*/,
462 : OUString& /*rText*/,
463 : const IntlWrapper* /*pWrapper*/ ) const
464 : {
465 0 : return false;
466 : }
467 :
468 10 : SfxPoolItem* SvxColumnItem::Clone(SfxItemPool* /*pPool*/) const
469 : {
470 10 : return new SvxColumnItem(*this);
471 : }
472 :
473 0 : const SvxColumnItem& SvxColumnItem::operator=(const SvxColumnItem& rCopy)
474 : {
475 0 : nLeft = rCopy.nLeft;
476 0 : nRight = rCopy.nRight;
477 0 : bTable = rCopy.bTable;
478 0 : nActColumn = rCopy.nActColumn;
479 0 : aColumns.resize(rCopy.aColumns.size());
480 :
481 0 : std::copy(rCopy.aColumns.begin(), rCopy.aColumns.end(), aColumns.begin());
482 :
483 0 : return *this;
484 : }
485 :
486 0 : bool SvxColumnItem::CalcOrtho() const
487 : {
488 0 : const sal_uInt16 nCount = Count();
489 : DBG_ASSERT(nCount >= 2, "no columns");
490 0 : if(nCount < 2)
491 0 : return false;
492 :
493 0 : long nColWidth = (*this)[0].GetWidth();
494 0 : for(sal_uInt16 i = 1; i < nCount; ++i) {
495 0 : if( (*this)[i].GetWidth() != nColWidth)
496 0 : return false;
497 : }
498 : //!! Wide divider
499 0 : return true;
500 : }
501 :
502 2 : bool SvxColumnItem::QueryValue( com::sun::star::uno::Any& rVal, sal_uInt8 nMemberId ) const
503 : {
504 2 : nMemberId &= ~CONVERT_TWIPS;
505 2 : switch ( nMemberId )
506 : {
507 : case MID_COLUMNARRAY:
508 0 : return false;
509 : case MID_RIGHT:
510 0 : rVal <<= nRight;
511 0 : break;
512 : case MID_LEFT:
513 0 : rVal <<= nLeft;
514 0 : break;
515 : case MID_ORTHO:
516 0 : rVal <<= bOrtho;
517 0 : break;
518 : case MID_ACTUAL:
519 0 : rVal <<= (sal_Int32) nActColumn;
520 0 : break;
521 : case MID_TABLE:
522 0 : rVal <<= bTable;
523 0 : break;
524 : default:
525 : OSL_FAIL("Wrong MemberId!");
526 2 : return false;
527 : }
528 :
529 0 : return true;
530 : }
531 :
532 0 : bool SvxColumnItem::PutValue( const com::sun::star::uno::Any& rVal, sal_uInt8 nMemberId )
533 : {
534 0 : nMemberId &= ~CONVERT_TWIPS;
535 0 : sal_Int32 nVal = 0;
536 0 : switch ( nMemberId )
537 : {
538 : case MID_COLUMNARRAY:
539 : {
540 0 : return false;
541 : }
542 : case MID_RIGHT:
543 0 : rVal >>= nRight;
544 0 : break;
545 : case MID_LEFT:
546 0 : rVal >>= nLeft;
547 0 : break;
548 : case MID_ORTHO:
549 0 : rVal >>= nVal;
550 0 : bOrtho = (bool) nVal;
551 0 : break;
552 : case MID_ACTUAL:
553 0 : rVal >>= nVal;
554 0 : nActColumn = (sal_uInt16) nVal;
555 0 : break;
556 : case MID_TABLE:
557 0 : rVal >>= nVal;
558 0 : bTable = (bool) nVal;
559 0 : break;
560 : default:
561 : OSL_FAIL("Wrong MemberId!");
562 0 : return false;
563 : }
564 :
565 0 : return true;
566 : }
567 :
568 64 : sal_uInt16 SvxColumnItem::Count() const
569 : {
570 64 : return aColumns.size();
571 : }
572 :
573 50 : SvxColumnDescription& SvxColumnItem::At(sal_uInt16 index)
574 : {
575 50 : return aColumns[index];
576 : }
577 :
578 6 : SvxColumnDescription& SvxColumnItem::GetActiveColumnDescription()
579 : {
580 6 : return aColumns[GetActColumn()];
581 : }
582 :
583 0 : SvxColumnDescription& SvxColumnItem::operator[](sal_uInt16 index)
584 : {
585 0 : return aColumns[index];
586 : }
587 :
588 16 : const SvxColumnDescription& SvxColumnItem::operator[](sal_uInt16 index) const
589 : {
590 16 : return aColumns[index];
591 : }
592 :
593 12 : void SvxColumnItem::Insert(const SvxColumnDescription &rDesc, sal_uInt16 nPos)
594 : {
595 12 : aColumns.insert(aColumns.begin() + nPos, rDesc);
596 12 : }
597 :
598 12 : void SvxColumnItem::Append(const SvxColumnDescription &rDesc)
599 : {
600 12 : Insert(rDesc, Count());
601 12 : }
602 :
603 0 : void SvxColumnItem::SetLeft(long left)
604 : {
605 0 : nLeft = left;
606 0 : }
607 :
608 0 : void SvxColumnItem::SetRight(long right)
609 : {
610 0 : nRight = right;
611 0 : }
612 :
613 :
614 0 : bool SvxColumnItem::IsFirstAct() const
615 : {
616 0 : return nActColumn == 0;
617 : }
618 :
619 0 : bool SvxColumnItem::IsLastAct() const
620 : {
621 0 : return nActColumn == Count() - 1;
622 : }
623 :
624 24 : SvxColumnDescription::SvxColumnDescription() :
625 : nStart (0),
626 : nEnd (0),
627 : bVisible (true),
628 : nEndMin (0),
629 24 : nEndMax (0)
630 24 : {}
631 :
632 18 : SvxColumnDescription::SvxColumnDescription(const SvxColumnDescription &rCopy) :
633 : nStart (rCopy.nStart),
634 : nEnd (rCopy.nEnd),
635 : bVisible (rCopy.bVisible),
636 : nEndMin (rCopy.nEndMin),
637 18 : nEndMax (rCopy.nEndMax)
638 18 : {}
639 :
640 0 : SvxColumnDescription::SvxColumnDescription(long start, long end, bool bVis) :
641 : nStart (start),
642 : nEnd (end),
643 : bVisible (bVis),
644 : nEndMin (0),
645 0 : nEndMax (0)
646 0 : {}
647 :
648 12 : SvxColumnDescription::SvxColumnDescription(long start, long end, long endMin, long endMax, bool bVis) :
649 : nStart (start),
650 : nEnd (end),
651 : bVisible (bVis),
652 : // fdo#85858 hack: clamp these to smaller value to prevent overflow
653 24 : nEndMin(std::min<long>(endMin, std::numeric_limits<unsigned short>::max())),
654 36 : nEndMax(std::min<long>(endMax, std::numeric_limits<unsigned short>::max()))
655 12 : {}
656 :
657 8 : bool SvxColumnDescription::operator==(const SvxColumnDescription& rCmp) const
658 : {
659 8 : return nStart == rCmp.nStart
660 8 : && bVisible == rCmp.bVisible
661 8 : && nEnd == rCmp.nEnd
662 8 : && nEndMin == rCmp.nEndMin
663 16 : && nEndMax == rCmp.nEndMax;
664 : }
665 :
666 8 : bool SvxColumnDescription::operator!=(const SvxColumnDescription& rCmp) const
667 : {
668 8 : return !operator==(rCmp);
669 : }
670 :
671 0 : long SvxColumnDescription::GetWidth() const
672 : {
673 0 : return nEnd - nStart;
674 : }
675 :
676 : /* SvxColumnItem */
677 0 : void SvxColumnItem::SetOrtho(bool bVal)
678 : {
679 0 : bOrtho = bVal;
680 0 : }
681 :
682 6 : bool SvxColumnItem::IsConsistent() const
683 : {
684 6 : return nActColumn < aColumns.size();
685 : }
686 :
687 0 : bool SvxObjectItem::operator==( const SfxPoolItem& rCmp ) const
688 : {
689 0 : return SfxPoolItem::operator==(rCmp) &&
690 0 : nStartX == static_cast<const SvxObjectItem&>(rCmp).nStartX &&
691 0 : nEndX == static_cast<const SvxObjectItem&>(rCmp).nEndX &&
692 0 : nStartY == static_cast<const SvxObjectItem&>(rCmp).nStartY &&
693 0 : nEndY == static_cast<const SvxObjectItem&>(rCmp).nEndY &&
694 0 : bLimits == static_cast<const SvxObjectItem&>(rCmp).bLimits;
695 : }
696 :
697 0 : bool SvxObjectItem::GetPresentation(
698 : SfxItemPresentation /*ePres*/,
699 : SfxMapUnit /*eCoreUnit*/,
700 : SfxMapUnit /*ePresUnit*/,
701 : OUString& /*rText*/,
702 : const IntlWrapper* /*pWrapper*/ ) const
703 : {
704 0 : return false;
705 : }
706 :
707 0 : SfxPoolItem* SvxObjectItem::Clone(SfxItemPool *) const
708 : {
709 0 : return new SvxObjectItem(*this);
710 : }
711 :
712 0 : SvxObjectItem::SvxObjectItem( long nSX, long nEX,
713 : long nSY, long nEY, bool limits ) :
714 : SfxPoolItem (SID_RULER_OBJECT),
715 : nStartX (nSX),
716 : nEndX (nEX),
717 : nStartY (nSY),
718 : nEndY (nEY),
719 0 : bLimits (limits)
720 0 : {}
721 :
722 0 : SvxObjectItem::SvxObjectItem( const SvxObjectItem& rCopy ) :
723 : SfxPoolItem (rCopy),
724 : nStartX (rCopy.nStartX),
725 : nEndX (rCopy.nEndX),
726 : nStartY (rCopy.nStartY),
727 : nEndY (rCopy.nEndY),
728 0 : bLimits (rCopy.bLimits)
729 0 : {}
730 :
731 0 : bool SvxObjectItem::QueryValue( com::sun::star::uno::Any& rVal, sal_uInt8 nMemberId ) const
732 : {
733 0 : nMemberId &= ~CONVERT_TWIPS;
734 0 : switch (nMemberId)
735 : {
736 : case MID_START_X:
737 0 : rVal <<= nStartX;
738 0 : break;
739 : case MID_START_Y:
740 0 : rVal <<= nStartY;
741 0 : break;
742 : case MID_END_X:
743 0 : rVal <<= nEndX;
744 0 : break;
745 : case MID_END_Y:
746 0 : rVal <<= nEndY;
747 0 : break;
748 : case MID_LIMIT:
749 0 : rVal <<= bLimits;
750 0 : break;
751 : default:
752 : OSL_FAIL( "Wrong MemberId" );
753 0 : return false;
754 : }
755 :
756 0 : return true;
757 : }
758 :
759 0 : bool SvxObjectItem::PutValue( const com::sun::star::uno::Any& rVal, sal_uInt8 nMemberId )
760 : {
761 0 : nMemberId &= ~CONVERT_TWIPS;
762 0 : bool bRet = false;
763 0 : switch (nMemberId)
764 : {
765 : case MID_START_X:
766 0 : bRet = (rVal >>= nStartX);
767 0 : break;
768 : case MID_START_Y:
769 0 : bRet = (rVal >>= nStartY);
770 0 : break;
771 : case MID_END_X:
772 0 : bRet = (rVal >>= nEndX);
773 0 : break;
774 : case MID_END_Y:
775 0 : bRet = (rVal >>= nEndY);
776 0 : break;
777 : case MID_LIMIT:
778 0 : bRet = (rVal >>= bLimits);
779 0 : break;
780 : default: OSL_FAIL( "Wrong MemberId" );
781 : }
782 :
783 0 : return bRet;
784 : }
785 :
786 :
787 :
788 :
789 :
790 :
791 0 : void SvxObjectItem::SetStartX(long lValue)
792 : {
793 0 : nStartX = lValue;
794 0 : }
795 :
796 0 : void SvxObjectItem::SetEndX(long lValue)
797 : {
798 0 : nEndX = lValue;
799 0 : }
800 :
801 0 : void SvxObjectItem::SetStartY(long lValue)
802 : {
803 0 : nStartY = lValue;
804 0 : }
805 :
806 0 : void SvxObjectItem::SetEndY(long lValue)
807 : {
808 0 : nEndY = lValue;
809 0 : }
810 :
811 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|