Branch data Line data Source code
1 : : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : : /*************************************************************************
3 : : *
4 : : * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 : : *
6 : : * Copyright 2000, 2010 Oracle and/or its affiliates.
7 : : *
8 : : * OpenOffice.org - a multi-platform office productivity suite
9 : : *
10 : : * This file is part of OpenOffice.org.
11 : : *
12 : : * OpenOffice.org is free software: you can redistribute it and/or modify
13 : : * it under the terms of the GNU Lesser General Public License version 3
14 : : * only, as published by the Free Software Foundation.
15 : : *
16 : : * OpenOffice.org is distributed in the hope that it will be useful,
17 : : * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 : : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 : : * GNU Lesser General Public License version 3 for more details
20 : : * (a copy is included in the LICENSE file that accompanied this code).
21 : : *
22 : : * You should have received a copy of the GNU Lesser General Public License
23 : : * version 3 along with OpenOffice.org. If not, see
24 : : * <http://www.openoffice.org/license.html>
25 : : * for a copy of the LGPLv3 License.
26 : : *
27 : : ************************************************************************/
28 : :
29 : : #include "editeng/justifyitem.hxx"
30 : : #include "editeng/memberids.hrc"
31 : : #include "editeng/editrids.hrc"
32 : : #include "editeng/eerdll.hxx"
33 : :
34 : : #include <tools/stream.hxx>
35 : :
36 : : #include <com/sun/star/table/CellHoriJustify.hpp>
37 : : #include <com/sun/star/style/ParagraphAdjust.hpp>
38 : : #include <com/sun/star/table/CellJustifyMethod.hpp>
39 : : #include <com/sun/star/table/CellVertJustify2.hpp>
40 : : #include <com/sun/star/style/VerticalAlignment.hpp>
41 : :
42 : :
43 [ - + ][ - + ]: 5483 : TYPEINIT1_FACTORY( SvxHorJustifyItem, SfxEnumItem, new SvxHorJustifyItem(SVX_HOR_JUSTIFY_STANDARD, 0) );
[ # # ]
44 [ - + ][ - + ]: 123693 : TYPEINIT1_FACTORY( SvxVerJustifyItem, SfxEnumItem, new SvxVerJustifyItem(SVX_VER_JUSTIFY_STANDARD, 0) );
[ # # ]
45 : :
46 : : using namespace ::com::sun::star;
47 : :
48 : :
49 : :
50 : 0 : SvxHorJustifyItem::SvxHorJustifyItem( const sal_uInt16 nId ) :
51 : 0 : SfxEnumItem( nId, (sal_uInt16)SVX_HOR_JUSTIFY_STANDARD )
52 : : {
53 : 0 : }
54 : :
55 : 2811 : SvxHorJustifyItem::SvxHorJustifyItem( const SvxCellHorJustify eJustify,
56 : : const sal_uInt16 nId ) :
57 : 2811 : SfxEnumItem( nId, (sal_uInt16)eJustify )
58 : : {
59 : 2811 : }
60 : :
61 : :
62 : 0 : SfxItemPresentation SvxHorJustifyItem::GetPresentation
63 : : (
64 : : SfxItemPresentation ePres,
65 : : SfxMapUnit /*eCoreUnit*/,
66 : : SfxMapUnit /*ePresUnit*/,
67 : : XubString& rText, const IntlWrapper *) const
68 : : {
69 [ # # # ]: 0 : switch ( ePres )
70 : : {
71 : : case SFX_ITEM_PRESENTATION_NONE:
72 : 0 : rText.Erase();
73 : 0 : return SFX_ITEM_PRESENTATION_NONE;
74 : : case SFX_ITEM_PRESENTATION_NAMELESS:
75 : : case SFX_ITEM_PRESENTATION_COMPLETE:
76 [ # # ]: 0 : rText = GetValueText( GetValue() );
77 : 0 : return SFX_ITEM_PRESENTATION_COMPLETE;
78 : : default: ; //prevent warning
79 : : }
80 : 0 : return SFX_ITEM_PRESENTATION_NONE;
81 : : }
82 : :
83 : :
84 : 107 : bool SvxHorJustifyItem::QueryValue( uno::Any& rVal, sal_uInt8 nMemberId ) const
85 : : {
86 : 107 : nMemberId &= ~CONVERT_TWIPS;
87 [ + + - ]: 107 : switch ( nMemberId )
88 : : {
89 : : case MID_HORJUST_HORJUST:
90 : : {
91 : 39 : table::CellHoriJustify eUno = table::CellHoriJustify_STANDARD;
92 [ + + + + : 39 : switch ( (SvxCellHorJustify)GetValue() )
+ - - ]
93 : : {
94 : 7 : case SVX_HOR_JUSTIFY_STANDARD: eUno = table::CellHoriJustify_STANDARD; break;
95 : 3 : case SVX_HOR_JUSTIFY_LEFT: eUno = table::CellHoriJustify_LEFT; break;
96 : 10 : case SVX_HOR_JUSTIFY_CENTER: eUno = table::CellHoriJustify_CENTER; break;
97 : 15 : case SVX_HOR_JUSTIFY_RIGHT: eUno = table::CellHoriJustify_RIGHT; break;
98 : 4 : case SVX_HOR_JUSTIFY_BLOCK: eUno = table::CellHoriJustify_BLOCK; break;
99 : 0 : case SVX_HOR_JUSTIFY_REPEAT: eUno = table::CellHoriJustify_REPEAT; break;
100 : : }
101 [ + - ]: 39 : rVal <<= eUno;
102 : : }
103 : 39 : break;
104 : : case MID_HORJUST_ADJUST:
105 : : {
106 : : // ParagraphAdjust values, as in SvxAdjustItem
107 : : // (same value for ParaAdjust and ParaLastLineAdjust)
108 : :
109 : 68 : sal_Int16 nAdjust = style::ParagraphAdjust_LEFT;
110 [ + + + + : 68 : switch ( (SvxCellHorJustify)GetValue() )
- ]
111 : : {
112 : : // ParagraphAdjust_LEFT is used for STANDARD and REPEAT
113 : : case SVX_HOR_JUSTIFY_STANDARD:
114 : : case SVX_HOR_JUSTIFY_REPEAT:
115 : 16 : case SVX_HOR_JUSTIFY_LEFT: nAdjust = style::ParagraphAdjust_LEFT; break;
116 : 16 : case SVX_HOR_JUSTIFY_CENTER: nAdjust = style::ParagraphAdjust_CENTER; break;
117 : 30 : case SVX_HOR_JUSTIFY_RIGHT: nAdjust = style::ParagraphAdjust_RIGHT; break;
118 : 6 : case SVX_HOR_JUSTIFY_BLOCK: nAdjust = style::ParagraphAdjust_BLOCK; break;
119 : : }
120 [ + - ]: 68 : rVal <<= nAdjust; // as sal_Int16
121 : : }
122 : 68 : break;
123 : : }
124 : 107 : return true;
125 : : }
126 : :
127 : 221 : bool SvxHorJustifyItem::PutValue( const uno::Any& rVal, sal_uInt8 nMemberId )
128 : : {
129 : 221 : nMemberId &= ~CONVERT_TWIPS;
130 [ + + - ]: 221 : switch ( nMemberId )
131 : : {
132 : : case MID_HORJUST_HORJUST:
133 : : {
134 : : table::CellHoriJustify eUno;
135 [ + - ][ + + ]: 206 : if(!(rVal >>= eUno))
136 : : {
137 : 2 : sal_Int32 nValue = 0;
138 [ + - ]: 2 : if(!(rVal >>= nValue))
139 : 2 : return false;
140 : 0 : eUno = (table::CellHoriJustify)nValue;
141 : : }
142 : 204 : SvxCellHorJustify eSvx = SVX_HOR_JUSTIFY_STANDARD;
143 [ + + + + : 204 : switch (eUno)
+ + - ]
144 : : {
145 : 42 : case table::CellHoriJustify_STANDARD: eSvx = SVX_HOR_JUSTIFY_STANDARD; break;
146 : 8 : case table::CellHoriJustify_LEFT: eSvx = SVX_HOR_JUSTIFY_LEFT; break;
147 : 140 : case table::CellHoriJustify_CENTER: eSvx = SVX_HOR_JUSTIFY_CENTER; break;
148 : 5 : case table::CellHoriJustify_RIGHT: eSvx = SVX_HOR_JUSTIFY_RIGHT; break;
149 : 8 : case table::CellHoriJustify_BLOCK: eSvx = SVX_HOR_JUSTIFY_BLOCK; break;
150 : 1 : case table::CellHoriJustify_REPEAT: eSvx = SVX_HOR_JUSTIFY_REPEAT; break;
151 : : default: ; //prevent warning
152 : : }
153 : 204 : SetValue( (sal_uInt16)eSvx );
154 : : }
155 : 204 : break;
156 : : case MID_HORJUST_ADJUST:
157 : : {
158 : : // property contains ParagraphAdjust values as sal_Int16
159 : 15 : sal_Int16 nVal = sal_Int16();
160 [ - + ]: 15 : if(!(rVal >>= nVal))
161 : 0 : return false;
162 : :
163 : 15 : SvxCellHorJustify eSvx = SVX_HOR_JUSTIFY_STANDARD;
164 [ - + + + : 15 : switch (nVal)
- ]
165 : : {
166 : : // STRETCH is treated as BLOCK
167 : 0 : case style::ParagraphAdjust_LEFT: eSvx = SVX_HOR_JUSTIFY_LEFT; break;
168 : 8 : case style::ParagraphAdjust_RIGHT: eSvx = SVX_HOR_JUSTIFY_RIGHT; break;
169 : : case style::ParagraphAdjust_STRETCH:
170 : 4 : case style::ParagraphAdjust_BLOCK: eSvx = SVX_HOR_JUSTIFY_BLOCK; break;
171 : 3 : case style::ParagraphAdjust_CENTER: eSvx = SVX_HOR_JUSTIFY_CENTER; break;
172 : : }
173 : 15 : SetValue( (sal_uInt16)eSvx );
174 : : }
175 : : }
176 : 221 : return true;
177 : : }
178 : :
179 : :
180 : 0 : XubString SvxHorJustifyItem::GetValueText( sal_uInt16 nVal ) const
181 : : {
182 : : DBG_ASSERT( nVal <= SVX_HOR_JUSTIFY_REPEAT, "enum overflow!" );
183 [ # # ][ # # ]: 0 : return EE_RESSTR(RID_SVXITEMS_HORJUST_STANDARD + nVal);
184 : : }
185 : :
186 : :
187 : 1067 : SfxPoolItem* SvxHorJustifyItem::Clone( SfxItemPool* ) const
188 : : {
189 [ + - ]: 1067 : return new SvxHorJustifyItem( *this );
190 : : }
191 : :
192 : :
193 : 256 : SfxPoolItem* SvxHorJustifyItem::Create( SvStream& rStream, sal_uInt16 ) const
194 : : {
195 : : sal_uInt16 nVal;
196 [ + - ]: 256 : rStream >> nVal;
197 [ + - ][ + - ]: 256 : return new SvxHorJustifyItem( (SvxCellHorJustify)nVal, Which() );
198 : : }
199 : :
200 : :
201 : 0 : sal_uInt16 SvxHorJustifyItem::GetValueCount() const
202 : : {
203 : 0 : return SVX_HOR_JUSTIFY_REPEAT + 1; // Last Enum value + 1
204 : : }
205 : :
206 : :
207 : 0 : SvxVerJustifyItem::SvxVerJustifyItem( const sal_uInt16 nId ) :
208 : 0 : SfxEnumItem( nId, (sal_uInt16)SVX_VER_JUSTIFY_STANDARD )
209 : : {
210 : 0 : }
211 : :
212 : 2413 : SvxVerJustifyItem::SvxVerJustifyItem( const SvxCellVerJustify eJustify,
213 : : const sal_uInt16 nId ) :
214 : 2413 : SfxEnumItem( nId, (sal_uInt16)eJustify )
215 : : {
216 : 2413 : }
217 : :
218 : :
219 : 0 : SfxItemPresentation SvxVerJustifyItem::GetPresentation
220 : : (
221 : : SfxItemPresentation ePres,
222 : : SfxMapUnit /*eCoreUnit*/,
223 : : SfxMapUnit /*ePresUnit*/,
224 : : XubString& rText,
225 : : const IntlWrapper * ) const
226 : : {
227 [ # # # ]: 0 : switch ( ePres )
228 : : {
229 : : case SFX_ITEM_PRESENTATION_NONE:
230 : 0 : rText.Erase();
231 : 0 : return SFX_ITEM_PRESENTATION_NONE;
232 : : case SFX_ITEM_PRESENTATION_NAMELESS:
233 : : case SFX_ITEM_PRESENTATION_COMPLETE:
234 [ # # ]: 0 : rText = GetValueText( GetValue() );
235 : 0 : return SFX_ITEM_PRESENTATION_COMPLETE;
236 : : default: ; //prevent warning
237 : : }
238 : 0 : return SFX_ITEM_PRESENTATION_NONE;
239 : : }
240 : :
241 : :
242 : 31 : bool SvxVerJustifyItem::QueryValue( uno::Any& rVal, sal_uInt8 nMemberId ) const
243 : : {
244 : 31 : nMemberId &= ~CONVERT_TWIPS;
245 [ - + ]: 31 : switch ( nMemberId )
246 : : {
247 : : case MID_HORJUST_ADJUST:
248 : : {
249 : 0 : style::VerticalAlignment eUno = style::VerticalAlignment_TOP;
250 [ # # # # ]: 0 : switch ( (SvxCellVerJustify)GetValue() )
251 : : {
252 : 0 : case SVX_VER_JUSTIFY_TOP: eUno = style::VerticalAlignment_TOP; break;
253 : 0 : case SVX_VER_JUSTIFY_CENTER: eUno = style::VerticalAlignment_MIDDLE; break;
254 : 0 : case SVX_VER_JUSTIFY_BOTTOM: eUno = style::VerticalAlignment_BOTTOM; break;
255 : : default: ; //prevent warning
256 : : }
257 [ # # ]: 0 : rVal <<= eUno;
258 : : break;
259 : : }
260 : : default:
261 : : {
262 : 31 : sal_Int32 nUno = table::CellVertJustify2::STANDARD;
263 [ + - + + : 31 : switch ( (SvxCellVerJustify)GetValue() )
- - ]
264 : : {
265 : 27 : case SVX_VER_JUSTIFY_STANDARD: nUno = table::CellVertJustify2::STANDARD; break;
266 : 0 : case SVX_VER_JUSTIFY_TOP: nUno = table::CellVertJustify2::TOP; break;
267 : 2 : case SVX_VER_JUSTIFY_CENTER: nUno = table::CellVertJustify2::CENTER; break;
268 : 2 : case SVX_VER_JUSTIFY_BOTTOM: nUno = table::CellVertJustify2::BOTTOM; break;
269 : 0 : case SVX_VER_JUSTIFY_BLOCK: nUno = table::CellVertJustify2::BLOCK; break;
270 : : default: ; //prevent warning
271 : : }
272 [ + - ]: 31 : rVal <<= nUno;
273 : : break;
274 : : }
275 : : }
276 : 31 : return true;
277 : : }
278 : :
279 : 50 : bool SvxVerJustifyItem::PutValue( const uno::Any& rVal, sal_uInt8 nMemberId )
280 : : {
281 : 50 : nMemberId &= ~CONVERT_TWIPS;
282 [ - + ]: 50 : switch ( nMemberId )
283 : : {
284 : : case MID_HORJUST_ADJUST:
285 : : {
286 : : // property contains ParagraphAdjust values as sal_Int16
287 : 0 : style::VerticalAlignment nVal = style::VerticalAlignment_TOP;
288 [ # # ][ # # ]: 0 : if(!(rVal >>= nVal))
289 : 0 : return false;
290 : :
291 : 0 : SvxCellVerJustify eSvx = SVX_VER_JUSTIFY_STANDARD;
292 [ # # # # ]: 0 : switch (nVal)
293 : : {
294 : 0 : case style::VerticalAlignment_TOP: eSvx = SVX_VER_JUSTIFY_TOP; break;
295 : 0 : case style::VerticalAlignment_MIDDLE: eSvx = SVX_VER_JUSTIFY_CENTER; break;
296 : 0 : case style::VerticalAlignment_BOTTOM: eSvx = SVX_VER_JUSTIFY_BOTTOM; break;
297 : : default:;
298 : : }
299 : 0 : SetValue( (sal_uInt16)eSvx );
300 : : break;
301 : : }
302 : : default:
303 : : {
304 : 50 : sal_Int32 eUno = table::CellVertJustify2::STANDARD;
305 : 50 : rVal >>= eUno;
306 : :
307 : 50 : SvxCellVerJustify eSvx = SVX_VER_JUSTIFY_STANDARD;
308 [ - - + + : 50 : switch (eUno)
- + ]
309 : : {
310 : 0 : case table::CellVertJustify2::STANDARD: eSvx = SVX_VER_JUSTIFY_STANDARD; break;
311 : 0 : case table::CellVertJustify2::TOP: eSvx = SVX_VER_JUSTIFY_TOP; break;
312 : 2 : case table::CellVertJustify2::CENTER: eSvx = SVX_VER_JUSTIFY_CENTER; break;
313 : 42 : case table::CellVertJustify2::BOTTOM: eSvx = SVX_VER_JUSTIFY_BOTTOM; break;
314 : 0 : case table::CellVertJustify2::BLOCK: eSvx = SVX_VER_JUSTIFY_BLOCK; break;
315 : : default: ; //prevent warning
316 : : }
317 : 50 : SetValue( (sal_uInt16)eSvx );
318 : : break;
319 : : }
320 : : }
321 : :
322 : 50 : return true;
323 : : }
324 : :
325 : :
326 : 0 : XubString SvxVerJustifyItem::GetValueText( sal_uInt16 nVal ) const
327 : : {
328 : : DBG_ASSERT( nVal <= SVX_VER_JUSTIFY_BOTTOM, "enum overflow!" );
329 [ # # ][ # # ]: 0 : return EE_RESSTR(RID_SVXITEMS_VERJUST_STANDARD + nVal);
330 : : }
331 : :
332 : :
333 : 438 : SfxPoolItem* SvxVerJustifyItem::Clone( SfxItemPool* ) const
334 : : {
335 [ + - ]: 438 : return new SvxVerJustifyItem( *this );
336 : : }
337 : :
338 : :
339 : 256 : SfxPoolItem* SvxVerJustifyItem::Create( SvStream& rStream, sal_uInt16 ) const
340 : : {
341 : : sal_uInt16 nVal;
342 [ + - ]: 256 : rStream >> nVal;
343 [ + - ][ + - ]: 256 : return new SvxVerJustifyItem( (SvxCellVerJustify)nVal, Which() );
344 : : }
345 : :
346 : :
347 : 0 : sal_uInt16 SvxVerJustifyItem::GetValueCount() const
348 : : {
349 : 0 : return SVX_VER_JUSTIFY_BOTTOM + 1; // Last Enum value + 1
350 : : }
351 : :
352 : :
353 : 3701 : SvxJustifyMethodItem::SvxJustifyMethodItem( const SvxCellJustifyMethod eJustify,
354 : : const sal_uInt16 nId ) :
355 : 3701 : SfxEnumItem( nId, (sal_uInt16)eJustify )
356 : : {
357 : 3701 : }
358 : :
359 : :
360 : 0 : SfxItemPresentation SvxJustifyMethodItem::GetPresentation
361 : : (
362 : : SfxItemPresentation ePres,
363 : : SfxMapUnit /*eCoreUnit*/,
364 : : SfxMapUnit /*ePresUnit*/,
365 : : XubString& rText,
366 : : const IntlWrapper * ) const
367 : : {
368 [ # # # ]: 0 : switch ( ePres )
369 : : {
370 : : case SFX_ITEM_PRESENTATION_NONE:
371 : 0 : rText.Erase();
372 : 0 : return SFX_ITEM_PRESENTATION_NONE;
373 : : case SFX_ITEM_PRESENTATION_NAMELESS:
374 : : case SFX_ITEM_PRESENTATION_COMPLETE:
375 [ # # ]: 0 : rText = GetValueText( GetValue() );
376 : 0 : return SFX_ITEM_PRESENTATION_COMPLETE;
377 : : default: ; //prevent warning
378 : : }
379 : 0 : return SFX_ITEM_PRESENTATION_NONE;
380 : : }
381 : :
382 : :
383 : 46 : bool SvxJustifyMethodItem::QueryValue( uno::Any& rVal, sal_uInt8 /*nMemberId*/ ) const
384 : : {
385 : 46 : sal_Int32 nUno = table::CellJustifyMethod::AUTO;
386 [ + - - ]: 46 : switch (static_cast<SvxCellJustifyMethod>(GetValue()))
387 : : {
388 : 46 : case SVX_JUSTIFY_METHOD_AUTO: nUno = table::CellJustifyMethod::AUTO; break;
389 : 0 : case SVX_JUSTIFY_METHOD_DISTRIBUTE: nUno = table::CellJustifyMethod::DISTRIBUTE; break;
390 : : default:;
391 : : }
392 [ + - ]: 46 : rVal <<= nUno;
393 : 46 : return true;
394 : : }
395 : :
396 : 94 : bool SvxJustifyMethodItem::PutValue( const uno::Any& rVal, sal_uInt8 /*nMemberId*/ )
397 : : {
398 : 94 : sal_Int32 nVal = table::CellJustifyMethod::AUTO;
399 [ - + ]: 94 : if (!(rVal >>= nVal))
400 : 0 : return false;
401 : :
402 : 94 : SvxCellJustifyMethod eSvx = SVX_JUSTIFY_METHOD_AUTO;
403 [ + - + ]: 94 : switch (nVal)
404 : : {
405 : : case table::CellJustifyMethod::AUTO:
406 : 84 : eSvx = SVX_JUSTIFY_METHOD_AUTO;
407 : 84 : break;
408 : : case table::CellJustifyMethod::DISTRIBUTE:
409 : 0 : eSvx = SVX_JUSTIFY_METHOD_DISTRIBUTE;
410 : 0 : break;
411 : : default:;
412 : : }
413 : 94 : SetValue(static_cast<sal_uInt16>(eSvx));
414 : 94 : return true;
415 : : }
416 : :
417 : :
418 : 0 : XubString SvxJustifyMethodItem::GetValueText( sal_uInt16 nVal ) const
419 : : {
420 : : DBG_ASSERT( nVal <= SVX_VER_JUSTIFY_BOTTOM, "enum overflow!" );
421 [ # # ][ # # ]: 0 : return EE_RESSTR(RID_SVXITEMS_JUSTMETHOD_AUTO + nVal);
422 : : }
423 : :
424 : :
425 : 532 : SfxPoolItem* SvxJustifyMethodItem::Clone( SfxItemPool* ) const
426 : : {
427 [ + - ]: 532 : return new SvxJustifyMethodItem( *this );
428 : : }
429 : :
430 : :
431 : 0 : SfxPoolItem* SvxJustifyMethodItem::Create( SvStream& rStream, sal_uInt16 ) const
432 : : {
433 : : sal_uInt16 nVal;
434 [ # # ]: 0 : rStream >> nVal;
435 [ # # ][ # # ]: 0 : return new SvxJustifyMethodItem( (SvxCellJustifyMethod)nVal, Which() );
436 : : }
437 : :
438 : :
439 : 0 : sal_uInt16 SvxJustifyMethodItem::GetValueCount() const
440 : : {
441 : 0 : return SVX_JUSTIFY_METHOD_DISTRIBUTE + 1; // Last Enum value + 1
442 : : }
443 : :
444 : 0 : SvxJustifyMethodItem& SvxJustifyMethodItem::operator=(const SvxJustifyMethodItem& r)
445 : : {
446 : 0 : SetValue( r.GetValue() );
447 : 0 : return *this;
448 : : }
449 : :
450 : : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|