xref: /aoo4110/main/svx/source/items/algitem.cxx (revision b1cdbd2c)
1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski  *
3*b1cdbd2cSJim Jagielski  * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski  * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski  * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski  * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski  * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski  * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski  * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski  *
11*b1cdbd2cSJim Jagielski  *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski  *
13*b1cdbd2cSJim Jagielski  * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski  * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski  * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski  * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski  * under the License.
19*b1cdbd2cSJim Jagielski  *
20*b1cdbd2cSJim Jagielski  *************************************************************/
21*b1cdbd2cSJim Jagielski 
22*b1cdbd2cSJim Jagielski 
23*b1cdbd2cSJim Jagielski 
24*b1cdbd2cSJim Jagielski // MARKER(update_precomp.py): autogen include statement, do not remove
25*b1cdbd2cSJim Jagielski #include "precompiled_svx.hxx"
26*b1cdbd2cSJim Jagielski 
27*b1cdbd2cSJim Jagielski #include <svx/svxitems.hrc>
28*b1cdbd2cSJim Jagielski 
29*b1cdbd2cSJim Jagielski 
30*b1cdbd2cSJim Jagielski #include <tools/stream.hxx>
31*b1cdbd2cSJim Jagielski #include <com/sun/star/table/BorderLine.hpp>
32*b1cdbd2cSJim Jagielski #include <com/sun/star/table/CellVertJustify.hpp>
33*b1cdbd2cSJim Jagielski #include <com/sun/star/table/ShadowLocation.hpp>
34*b1cdbd2cSJim Jagielski #include <com/sun/star/table/TableBorder.hpp>
35*b1cdbd2cSJim Jagielski #include <com/sun/star/table/ShadowFormat.hpp>
36*b1cdbd2cSJim Jagielski #include <com/sun/star/table/CellRangeAddress.hpp>
37*b1cdbd2cSJim Jagielski #include <com/sun/star/table/CellContentType.hpp>
38*b1cdbd2cSJim Jagielski #include <com/sun/star/table/TableOrientation.hpp>
39*b1cdbd2cSJim Jagielski #include <com/sun/star/table/CellHoriJustify.hpp>
40*b1cdbd2cSJim Jagielski #include <com/sun/star/style/ParagraphAdjust.hpp>
41*b1cdbd2cSJim Jagielski #include "com/sun/star/style/VerticalAlignment.hpp"
42*b1cdbd2cSJim Jagielski #include <com/sun/star/util/SortField.hpp>
43*b1cdbd2cSJim Jagielski #include <com/sun/star/util/SortFieldType.hpp>
44*b1cdbd2cSJim Jagielski #include <com/sun/star/table/CellOrientation.hpp>
45*b1cdbd2cSJim Jagielski #include <com/sun/star/table/CellAddress.hpp>
46*b1cdbd2cSJim Jagielski 
47*b1cdbd2cSJim Jagielski #include <svx/algitem.hxx>
48*b1cdbd2cSJim Jagielski #include <svx/dialmgr.hxx>
49*b1cdbd2cSJim Jagielski #include <editeng/itemtype.hxx>
50*b1cdbd2cSJim Jagielski #include <svx/unomid.hxx>
51*b1cdbd2cSJim Jagielski 
52*b1cdbd2cSJim Jagielski using namespace ::rtl;
53*b1cdbd2cSJim Jagielski using namespace ::com::sun::star;
54*b1cdbd2cSJim Jagielski 
55*b1cdbd2cSJim Jagielski // Konvertierung fuer UNO
56*b1cdbd2cSJim Jagielski #define TWIP_TO_MM100(TWIP) 	((TWIP) >= 0 ? (((TWIP)*127L+36L)/72L) : (((TWIP)*127L-36L)/72L))
57*b1cdbd2cSJim Jagielski #define MM100_TO_TWIP(MM100)	((MM100) >= 0 ? (((MM100)*72L+63L)/127L) : (((MM100)*72L-63L)/127L))
58*b1cdbd2cSJim Jagielski 
59*b1cdbd2cSJim Jagielski // STATIC DATA -----------------------------------------------------------
60*b1cdbd2cSJim Jagielski 
61*b1cdbd2cSJim Jagielski //TYPEINIT1_AUTOFACTORY( SvxHorJustifyItem, SfxEnumItem );
62*b1cdbd2cSJim Jagielski TYPEINIT1_FACTORY( SvxHorJustifyItem, SfxEnumItem, new SvxHorJustifyItem(SVX_HOR_JUSTIFY_STANDARD, 0))
63*b1cdbd2cSJim Jagielski TYPEINIT1_FACTORY( SvxVerJustifyItem, SfxEnumItem, new SvxVerJustifyItem(SVX_VER_JUSTIFY_STANDARD, 0) );
64*b1cdbd2cSJim Jagielski TYPEINIT1_FACTORY( SvxOrientationItem, SfxEnumItem, new SvxOrientationItem(SVX_ORIENTATION_STANDARD, 0) );
65*b1cdbd2cSJim Jagielski TYPEINIT1_FACTORY( SvxMarginItem, SfxPoolItem, new SvxMarginItem(0) );
66*b1cdbd2cSJim Jagielski 
67*b1cdbd2cSJim Jagielski // class SvxHorJustifyItem -----------------------------------------------
68*b1cdbd2cSJim Jagielski 
69*b1cdbd2cSJim Jagielski 
SvxHorJustifyItem(const sal_uInt16 nId)70*b1cdbd2cSJim Jagielski SvxHorJustifyItem::SvxHorJustifyItem( const sal_uInt16 nId ) :
71*b1cdbd2cSJim Jagielski     SfxEnumItem( nId, (sal_uInt16)SVX_HOR_JUSTIFY_STANDARD )
72*b1cdbd2cSJim Jagielski {
73*b1cdbd2cSJim Jagielski }
74*b1cdbd2cSJim Jagielski 
SvxHorJustifyItem(const SvxCellHorJustify eJustify,const sal_uInt16 nId)75*b1cdbd2cSJim Jagielski SvxHorJustifyItem::SvxHorJustifyItem( const SvxCellHorJustify eJustify,
76*b1cdbd2cSJim Jagielski 									  const sal_uInt16 nId ) :
77*b1cdbd2cSJim Jagielski 	SfxEnumItem( nId, (sal_uInt16)eJustify )
78*b1cdbd2cSJim Jagielski {
79*b1cdbd2cSJim Jagielski }
80*b1cdbd2cSJim Jagielski 
81*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
82*b1cdbd2cSJim Jagielski 
GetPresentation(SfxItemPresentation ePres,SfxMapUnit,SfxMapUnit,XubString & rText,const IntlWrapper *) const83*b1cdbd2cSJim Jagielski SfxItemPresentation SvxHorJustifyItem::GetPresentation
84*b1cdbd2cSJim Jagielski (
85*b1cdbd2cSJim Jagielski 	SfxItemPresentation ePres,
86*b1cdbd2cSJim Jagielski     SfxMapUnit          /*eCoreUnit*/,
87*b1cdbd2cSJim Jagielski     SfxMapUnit          /*ePresUnit*/,
88*b1cdbd2cSJim Jagielski     XubString&              rText, const IntlWrapper *)    const
89*b1cdbd2cSJim Jagielski {
90*b1cdbd2cSJim Jagielski 	switch ( ePres )
91*b1cdbd2cSJim Jagielski 	{
92*b1cdbd2cSJim Jagielski 		case SFX_ITEM_PRESENTATION_NONE:
93*b1cdbd2cSJim Jagielski 			rText.Erase();
94*b1cdbd2cSJim Jagielski 			return SFX_ITEM_PRESENTATION_NONE;
95*b1cdbd2cSJim Jagielski 		case SFX_ITEM_PRESENTATION_NAMELESS:
96*b1cdbd2cSJim Jagielski 		case SFX_ITEM_PRESENTATION_COMPLETE:
97*b1cdbd2cSJim Jagielski 			rText = GetValueText( GetValue() );
98*b1cdbd2cSJim Jagielski 			return SFX_ITEM_PRESENTATION_COMPLETE;
99*b1cdbd2cSJim Jagielski         default: ; //prevent warning
100*b1cdbd2cSJim Jagielski 	}
101*b1cdbd2cSJim Jagielski 	return SFX_ITEM_PRESENTATION_NONE;
102*b1cdbd2cSJim Jagielski }
103*b1cdbd2cSJim Jagielski 
104*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
105*b1cdbd2cSJim Jagielski 
QueryValue(uno::Any & rVal,sal_uInt8 nMemberId) const106*b1cdbd2cSJim Jagielski sal_Bool SvxHorJustifyItem::QueryValue( uno::Any& rVal, sal_uInt8 nMemberId ) const
107*b1cdbd2cSJim Jagielski {
108*b1cdbd2cSJim Jagielski //    sal_Bool bConvert = 0!=(nMemberId&CONVERT_TWIPS);
109*b1cdbd2cSJim Jagielski     nMemberId &= ~CONVERT_TWIPS;
110*b1cdbd2cSJim Jagielski 	switch ( nMemberId )
111*b1cdbd2cSJim Jagielski 	{
112*b1cdbd2cSJim Jagielski 		case MID_HORJUST_HORJUST:
113*b1cdbd2cSJim Jagielski 			{
114*b1cdbd2cSJim Jagielski 				table::CellHoriJustify eUno = table::CellHoriJustify_STANDARD;
115*b1cdbd2cSJim Jagielski 				switch ( (SvxCellHorJustify)GetValue() )
116*b1cdbd2cSJim Jagielski 				{
117*b1cdbd2cSJim Jagielski 					case SVX_HOR_JUSTIFY_STANDARD: eUno = table::CellHoriJustify_STANDARD; break;
118*b1cdbd2cSJim Jagielski 					case SVX_HOR_JUSTIFY_LEFT:	   eUno = table::CellHoriJustify_LEFT;	   break;
119*b1cdbd2cSJim Jagielski 					case SVX_HOR_JUSTIFY_CENTER:   eUno = table::CellHoriJustify_CENTER;   break;
120*b1cdbd2cSJim Jagielski 					case SVX_HOR_JUSTIFY_RIGHT:	   eUno = table::CellHoriJustify_RIGHT;	   break;
121*b1cdbd2cSJim Jagielski 					case SVX_HOR_JUSTIFY_BLOCK:	   eUno = table::CellHoriJustify_BLOCK;	   break;
122*b1cdbd2cSJim Jagielski 					case SVX_HOR_JUSTIFY_REPEAT:   eUno = table::CellHoriJustify_REPEAT;   break;
123*b1cdbd2cSJim Jagielski 				}
124*b1cdbd2cSJim Jagielski 				rVal <<= eUno;
125*b1cdbd2cSJim Jagielski 			}
126*b1cdbd2cSJim Jagielski 			break;
127*b1cdbd2cSJim Jagielski 		case MID_HORJUST_ADJUST:
128*b1cdbd2cSJim Jagielski 			{
129*b1cdbd2cSJim Jagielski 				//	ParagraphAdjust values, as in SvxAdjustItem
130*b1cdbd2cSJim Jagielski 				//	(same value for ParaAdjust and ParaLastLineAdjust)
131*b1cdbd2cSJim Jagielski 
132*b1cdbd2cSJim Jagielski 				sal_Int16 nAdjust = style::ParagraphAdjust_LEFT;
133*b1cdbd2cSJim Jagielski 				switch ( (SvxCellHorJustify)GetValue() )
134*b1cdbd2cSJim Jagielski 				{
135*b1cdbd2cSJim Jagielski 					// ParagraphAdjust_LEFT is used for STANDARD and REPEAT
136*b1cdbd2cSJim Jagielski 					case SVX_HOR_JUSTIFY_STANDARD:
137*b1cdbd2cSJim Jagielski 					case SVX_HOR_JUSTIFY_REPEAT:
138*b1cdbd2cSJim Jagielski 					case SVX_HOR_JUSTIFY_LEFT:	 nAdjust = style::ParagraphAdjust_LEFT;	  break;
139*b1cdbd2cSJim Jagielski 					case SVX_HOR_JUSTIFY_CENTER: nAdjust = style::ParagraphAdjust_CENTER; break;
140*b1cdbd2cSJim Jagielski 					case SVX_HOR_JUSTIFY_RIGHT:	 nAdjust = style::ParagraphAdjust_RIGHT;  break;
141*b1cdbd2cSJim Jagielski 					case SVX_HOR_JUSTIFY_BLOCK:	 nAdjust = style::ParagraphAdjust_BLOCK;  break;
142*b1cdbd2cSJim Jagielski 				}
143*b1cdbd2cSJim Jagielski 				rVal <<= nAdjust;		// as sal_Int16
144*b1cdbd2cSJim Jagielski 			}
145*b1cdbd2cSJim Jagielski 			break;
146*b1cdbd2cSJim Jagielski 	}
147*b1cdbd2cSJim Jagielski 	return sal_True;
148*b1cdbd2cSJim Jagielski }
149*b1cdbd2cSJim Jagielski 
PutValue(const uno::Any & rVal,sal_uInt8 nMemberId)150*b1cdbd2cSJim Jagielski sal_Bool SvxHorJustifyItem::PutValue( const uno::Any& rVal, sal_uInt8 nMemberId )
151*b1cdbd2cSJim Jagielski {
152*b1cdbd2cSJim Jagielski //    sal_Bool bConvert = 0!=(nMemberId&CONVERT_TWIPS);
153*b1cdbd2cSJim Jagielski     nMemberId &= ~CONVERT_TWIPS;
154*b1cdbd2cSJim Jagielski 	switch ( nMemberId )
155*b1cdbd2cSJim Jagielski 	{
156*b1cdbd2cSJim Jagielski 		case MID_HORJUST_HORJUST:
157*b1cdbd2cSJim Jagielski 			{
158*b1cdbd2cSJim Jagielski 				table::CellHoriJustify eUno;
159*b1cdbd2cSJim Jagielski 				if(!(rVal >>= eUno))
160*b1cdbd2cSJim Jagielski 				{
161*b1cdbd2cSJim Jagielski 					sal_Int32 nValue = 0;
162*b1cdbd2cSJim Jagielski 					if(!(rVal >>= nValue))
163*b1cdbd2cSJim Jagielski 						return sal_False;
164*b1cdbd2cSJim Jagielski 					eUno = (table::CellHoriJustify)nValue;
165*b1cdbd2cSJim Jagielski 				}
166*b1cdbd2cSJim Jagielski 				SvxCellHorJustify eSvx = SVX_HOR_JUSTIFY_STANDARD;
167*b1cdbd2cSJim Jagielski 				switch (eUno)
168*b1cdbd2cSJim Jagielski 				{
169*b1cdbd2cSJim Jagielski 					case table::CellHoriJustify_STANDARD: eSvx = SVX_HOR_JUSTIFY_STANDARD; break;
170*b1cdbd2cSJim Jagielski 					case table::CellHoriJustify_LEFT:	  eSvx = SVX_HOR_JUSTIFY_LEFT;	   break;
171*b1cdbd2cSJim Jagielski 					case table::CellHoriJustify_CENTER:   eSvx = SVX_HOR_JUSTIFY_CENTER;   break;
172*b1cdbd2cSJim Jagielski 					case table::CellHoriJustify_RIGHT:	  eSvx = SVX_HOR_JUSTIFY_RIGHT;	   break;
173*b1cdbd2cSJim Jagielski 					case table::CellHoriJustify_BLOCK:	  eSvx = SVX_HOR_JUSTIFY_BLOCK;	   break;
174*b1cdbd2cSJim Jagielski 					case table::CellHoriJustify_REPEAT:   eSvx = SVX_HOR_JUSTIFY_REPEAT;   break;
175*b1cdbd2cSJim Jagielski                     default: ; //prevent warning
176*b1cdbd2cSJim Jagielski                 }
177*b1cdbd2cSJim Jagielski 				SetValue( (sal_uInt16)eSvx );
178*b1cdbd2cSJim Jagielski 			}
179*b1cdbd2cSJim Jagielski 			break;
180*b1cdbd2cSJim Jagielski 		case MID_HORJUST_ADJUST:
181*b1cdbd2cSJim Jagielski 			{
182*b1cdbd2cSJim Jagielski 				//	property contains ParagraphAdjust values as sal_Int16
183*b1cdbd2cSJim Jagielski 				sal_Int16 nVal = sal_Int16();
184*b1cdbd2cSJim Jagielski 				if(!(rVal >>= nVal))
185*b1cdbd2cSJim Jagielski 					return sal_False;
186*b1cdbd2cSJim Jagielski 
187*b1cdbd2cSJim Jagielski 				SvxCellHorJustify eSvx = SVX_HOR_JUSTIFY_STANDARD;
188*b1cdbd2cSJim Jagielski 				switch (nVal)
189*b1cdbd2cSJim Jagielski 				{
190*b1cdbd2cSJim Jagielski 					//	STRETCH is treated as BLOCK
191*b1cdbd2cSJim Jagielski 					case style::ParagraphAdjust_LEFT:    eSvx = SVX_HOR_JUSTIFY_LEFT;   break;
192*b1cdbd2cSJim Jagielski 					case style::ParagraphAdjust_RIGHT:   eSvx = SVX_HOR_JUSTIFY_RIGHT;  break;
193*b1cdbd2cSJim Jagielski 					case style::ParagraphAdjust_STRETCH:
194*b1cdbd2cSJim Jagielski 					case style::ParagraphAdjust_BLOCK:   eSvx = SVX_HOR_JUSTIFY_BLOCK;  break;
195*b1cdbd2cSJim Jagielski 					case style::ParagraphAdjust_CENTER:  eSvx = SVX_HOR_JUSTIFY_CENTER; break;
196*b1cdbd2cSJim Jagielski 				}
197*b1cdbd2cSJim Jagielski 				SetValue( (sal_uInt16)eSvx );
198*b1cdbd2cSJim Jagielski 			}
199*b1cdbd2cSJim Jagielski 	}
200*b1cdbd2cSJim Jagielski 	return sal_True;
201*b1cdbd2cSJim Jagielski }
202*b1cdbd2cSJim Jagielski 
203*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
204*b1cdbd2cSJim Jagielski 
GetValueText(sal_uInt16 nVal) const205*b1cdbd2cSJim Jagielski XubString SvxHorJustifyItem::GetValueText( sal_uInt16 nVal ) const
206*b1cdbd2cSJim Jagielski {
207*b1cdbd2cSJim Jagielski 	DBG_ASSERT( nVal <= SVX_HOR_JUSTIFY_REPEAT, "enum overflow!" );
208*b1cdbd2cSJim Jagielski 	return SVX_RESSTR(RID_SVXITEMS_HORJUST_STANDARD + nVal);
209*b1cdbd2cSJim Jagielski }
210*b1cdbd2cSJim Jagielski 
211*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
212*b1cdbd2cSJim Jagielski 
Clone(SfxItemPool *) const213*b1cdbd2cSJim Jagielski SfxPoolItem* SvxHorJustifyItem::Clone( SfxItemPool* ) const
214*b1cdbd2cSJim Jagielski {
215*b1cdbd2cSJim Jagielski 	return new SvxHorJustifyItem( *this );
216*b1cdbd2cSJim Jagielski }
217*b1cdbd2cSJim Jagielski 
218*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
219*b1cdbd2cSJim Jagielski 
Create(SvStream & rStream,sal_uInt16) const220*b1cdbd2cSJim Jagielski SfxPoolItem* SvxHorJustifyItem::Create( SvStream& rStream, sal_uInt16 ) const
221*b1cdbd2cSJim Jagielski {
222*b1cdbd2cSJim Jagielski 	sal_uInt16 nVal;
223*b1cdbd2cSJim Jagielski 	rStream >> nVal;
224*b1cdbd2cSJim Jagielski 	return new SvxHorJustifyItem( (SvxCellHorJustify)nVal, Which() );
225*b1cdbd2cSJim Jagielski }
226*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
227*b1cdbd2cSJim Jagielski 
GetValueCount() const228*b1cdbd2cSJim Jagielski sal_uInt16 SvxHorJustifyItem::GetValueCount() const
229*b1cdbd2cSJim Jagielski {
230*b1cdbd2cSJim Jagielski 	return SVX_HOR_JUSTIFY_REPEAT + 1;	// letzter Enum-Wert + 1
231*b1cdbd2cSJim Jagielski }
232*b1cdbd2cSJim Jagielski 
233*b1cdbd2cSJim Jagielski // class SvxVerJustifyItem -----------------------------------------------
234*b1cdbd2cSJim Jagielski 
SvxVerJustifyItem(const sal_uInt16 nId)235*b1cdbd2cSJim Jagielski SvxVerJustifyItem::SvxVerJustifyItem( const sal_uInt16 nId ) :
236*b1cdbd2cSJim Jagielski     SfxEnumItem( nId, (sal_uInt16)SVX_VER_JUSTIFY_STANDARD )
237*b1cdbd2cSJim Jagielski {
238*b1cdbd2cSJim Jagielski }
239*b1cdbd2cSJim Jagielski 
SvxVerJustifyItem(const SvxCellVerJustify eJustify,const sal_uInt16 nId)240*b1cdbd2cSJim Jagielski SvxVerJustifyItem::SvxVerJustifyItem( const SvxCellVerJustify eJustify,
241*b1cdbd2cSJim Jagielski 									  const sal_uInt16 nId ) :
242*b1cdbd2cSJim Jagielski 	SfxEnumItem( nId, (sal_uInt16)eJustify )
243*b1cdbd2cSJim Jagielski {
244*b1cdbd2cSJim Jagielski }
245*b1cdbd2cSJim Jagielski 
246*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
247*b1cdbd2cSJim Jagielski 
GetPresentation(SfxItemPresentation ePres,SfxMapUnit,SfxMapUnit,XubString & rText,const IntlWrapper *) const248*b1cdbd2cSJim Jagielski SfxItemPresentation SvxVerJustifyItem::GetPresentation
249*b1cdbd2cSJim Jagielski (
250*b1cdbd2cSJim Jagielski 	SfxItemPresentation ePres,
251*b1cdbd2cSJim Jagielski     SfxMapUnit          /*eCoreUnit*/,
252*b1cdbd2cSJim Jagielski     SfxMapUnit          /*ePresUnit*/,
253*b1cdbd2cSJim Jagielski     XubString&              rText,
254*b1cdbd2cSJim Jagielski     const IntlWrapper * )    const
255*b1cdbd2cSJim Jagielski {
256*b1cdbd2cSJim Jagielski 	switch ( ePres )
257*b1cdbd2cSJim Jagielski 	{
258*b1cdbd2cSJim Jagielski 		case SFX_ITEM_PRESENTATION_NONE:
259*b1cdbd2cSJim Jagielski 			rText.Erase();
260*b1cdbd2cSJim Jagielski 			return SFX_ITEM_PRESENTATION_NONE;
261*b1cdbd2cSJim Jagielski 		case SFX_ITEM_PRESENTATION_NAMELESS:
262*b1cdbd2cSJim Jagielski 		case SFX_ITEM_PRESENTATION_COMPLETE:
263*b1cdbd2cSJim Jagielski 			rText = GetValueText( GetValue() );
264*b1cdbd2cSJim Jagielski 			return SFX_ITEM_PRESENTATION_COMPLETE;
265*b1cdbd2cSJim Jagielski         default: ; //prevent warning
266*b1cdbd2cSJim Jagielski     }
267*b1cdbd2cSJim Jagielski 	return SFX_ITEM_PRESENTATION_NONE;
268*b1cdbd2cSJim Jagielski }
269*b1cdbd2cSJim Jagielski 
270*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
271*b1cdbd2cSJim Jagielski 
QueryValue(uno::Any & rVal,sal_uInt8 nMemberId) const272*b1cdbd2cSJim Jagielski sal_Bool SvxVerJustifyItem::QueryValue( uno::Any& rVal, sal_uInt8 nMemberId ) const
273*b1cdbd2cSJim Jagielski {
274*b1cdbd2cSJim Jagielski     nMemberId &= ~CONVERT_TWIPS;
275*b1cdbd2cSJim Jagielski 	switch ( nMemberId )
276*b1cdbd2cSJim Jagielski     {
277*b1cdbd2cSJim Jagielski 		case MID_HORJUST_ADJUST:
278*b1cdbd2cSJim Jagielski 			{
279*b1cdbd2cSJim Jagielski                 style::VerticalAlignment eUno = style::VerticalAlignment_TOP;
280*b1cdbd2cSJim Jagielski 	            switch ( (SvxCellVerJustify)GetValue() )
281*b1cdbd2cSJim Jagielski 	            {
282*b1cdbd2cSJim Jagielski 		            case SVX_VER_JUSTIFY_TOP:	   eUno = style::VerticalAlignment_TOP;	    break;
283*b1cdbd2cSJim Jagielski 		            case SVX_VER_JUSTIFY_CENTER:   eUno = style::VerticalAlignment_MIDDLE;	break;
284*b1cdbd2cSJim Jagielski 		            case SVX_VER_JUSTIFY_BOTTOM:   eUno = style::VerticalAlignment_BOTTOM;	break;
285*b1cdbd2cSJim Jagielski                     default: ; //prevent warning
286*b1cdbd2cSJim Jagielski                 }
287*b1cdbd2cSJim Jagielski 	            rVal <<= eUno;
288*b1cdbd2cSJim Jagielski                 break;
289*b1cdbd2cSJim Jagielski             }
290*b1cdbd2cSJim Jagielski         default:
291*b1cdbd2cSJim Jagielski             {
292*b1cdbd2cSJim Jagielski 	            table::CellVertJustify eUno = table::CellVertJustify_STANDARD;
293*b1cdbd2cSJim Jagielski 	            switch ( (SvxCellVerJustify)GetValue() )
294*b1cdbd2cSJim Jagielski 	            {
295*b1cdbd2cSJim Jagielski 		            case SVX_VER_JUSTIFY_STANDARD: eUno = table::CellVertJustify_STANDARD; break;
296*b1cdbd2cSJim Jagielski 		            case SVX_VER_JUSTIFY_TOP:	   eUno = table::CellVertJustify_TOP;	    break;
297*b1cdbd2cSJim Jagielski 		            case SVX_VER_JUSTIFY_CENTER:   eUno = table::CellVertJustify_CENTER;	break;
298*b1cdbd2cSJim Jagielski 		            case SVX_VER_JUSTIFY_BOTTOM:   eUno = table::CellVertJustify_BOTTOM;	break;
299*b1cdbd2cSJim Jagielski                     default: ; //prevent warning
300*b1cdbd2cSJim Jagielski                 }
301*b1cdbd2cSJim Jagielski 	            rVal <<= eUno;
302*b1cdbd2cSJim Jagielski                 break;
303*b1cdbd2cSJim Jagielski             }
304*b1cdbd2cSJim Jagielski     }
305*b1cdbd2cSJim Jagielski 	return sal_True;
306*b1cdbd2cSJim Jagielski }
307*b1cdbd2cSJim Jagielski 
PutValue(const uno::Any & rVal,sal_uInt8 nMemberId)308*b1cdbd2cSJim Jagielski sal_Bool SvxVerJustifyItem::PutValue( const uno::Any& rVal, sal_uInt8 nMemberId )
309*b1cdbd2cSJim Jagielski {
310*b1cdbd2cSJim Jagielski     nMemberId &= ~CONVERT_TWIPS;
311*b1cdbd2cSJim Jagielski 	switch ( nMemberId )
312*b1cdbd2cSJim Jagielski     {
313*b1cdbd2cSJim Jagielski 		case MID_HORJUST_ADJUST:
314*b1cdbd2cSJim Jagielski 			{
315*b1cdbd2cSJim Jagielski 				//	property contains ParagraphAdjust values as sal_Int16
316*b1cdbd2cSJim Jagielski 				style::VerticalAlignment nVal = style::VerticalAlignment_TOP;
317*b1cdbd2cSJim Jagielski 				if(!(rVal >>= nVal))
318*b1cdbd2cSJim Jagielski 					return sal_False;
319*b1cdbd2cSJim Jagielski 
320*b1cdbd2cSJim Jagielski 				SvxCellVerJustify eSvx = SVX_VER_JUSTIFY_STANDARD;
321*b1cdbd2cSJim Jagielski 				switch (nVal)
322*b1cdbd2cSJim Jagielski 				{
323*b1cdbd2cSJim Jagielski 					case style::VerticalAlignment_TOP:      eSvx = SVX_VER_JUSTIFY_TOP;     break;
324*b1cdbd2cSJim Jagielski 					case style::VerticalAlignment_MIDDLE:   eSvx = SVX_VER_JUSTIFY_CENTER;  break;
325*b1cdbd2cSJim Jagielski 					case style::VerticalAlignment_BOTTOM:   eSvx = SVX_VER_JUSTIFY_BOTTOM;  break;
326*b1cdbd2cSJim Jagielski                     default:;
327*b1cdbd2cSJim Jagielski 				}
328*b1cdbd2cSJim Jagielski 				SetValue( (sal_uInt16)eSvx );
329*b1cdbd2cSJim Jagielski                 break;
330*b1cdbd2cSJim Jagielski 			}
331*b1cdbd2cSJim Jagielski         default:
332*b1cdbd2cSJim Jagielski             {
333*b1cdbd2cSJim Jagielski 		        table::CellVertJustify eUno;
334*b1cdbd2cSJim Jagielski 	            if(!(rVal >>= eUno))
335*b1cdbd2cSJim Jagielski 	            {
336*b1cdbd2cSJim Jagielski 		            sal_Int32 nValue = 0;
337*b1cdbd2cSJim Jagielski 		            if(!(rVal >>= nValue))
338*b1cdbd2cSJim Jagielski 			            return sal_False;
339*b1cdbd2cSJim Jagielski 		            eUno = (table::CellVertJustify)nValue;
340*b1cdbd2cSJim Jagielski 	            }
341*b1cdbd2cSJim Jagielski 
342*b1cdbd2cSJim Jagielski 	            SvxCellVerJustify eSvx = SVX_VER_JUSTIFY_STANDARD;
343*b1cdbd2cSJim Jagielski 	            switch (eUno)
344*b1cdbd2cSJim Jagielski 	            {
345*b1cdbd2cSJim Jagielski 		            case table::CellVertJustify_STANDARD: eSvx = SVX_VER_JUSTIFY_STANDARD;  break;
346*b1cdbd2cSJim Jagielski 		            case table::CellVertJustify_TOP:	  eSvx = SVX_VER_JUSTIFY_TOP;	  	break;
347*b1cdbd2cSJim Jagielski 		            case table::CellVertJustify_CENTER:   eSvx = SVX_VER_JUSTIFY_CENTER;	break;
348*b1cdbd2cSJim Jagielski 		            case table::CellVertJustify_BOTTOM:   eSvx = SVX_VER_JUSTIFY_BOTTOM;	break;
349*b1cdbd2cSJim Jagielski                     default: ; //prevent warning
350*b1cdbd2cSJim Jagielski                 }
351*b1cdbd2cSJim Jagielski 	            SetValue( (sal_uInt16)eSvx );
352*b1cdbd2cSJim Jagielski                 break;
353*b1cdbd2cSJim Jagielski             }
354*b1cdbd2cSJim Jagielski     }
355*b1cdbd2cSJim Jagielski 
356*b1cdbd2cSJim Jagielski 	return sal_True;
357*b1cdbd2cSJim Jagielski }
358*b1cdbd2cSJim Jagielski 
359*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
360*b1cdbd2cSJim Jagielski 
GetValueText(sal_uInt16 nVal) const361*b1cdbd2cSJim Jagielski XubString SvxVerJustifyItem::GetValueText( sal_uInt16 nVal ) const
362*b1cdbd2cSJim Jagielski {
363*b1cdbd2cSJim Jagielski 	DBG_ASSERT( nVal <= SVX_VER_JUSTIFY_BOTTOM, "enum overflow!" );
364*b1cdbd2cSJim Jagielski 	return SVX_RESSTR(RID_SVXITEMS_VERJUST_STANDARD + nVal);
365*b1cdbd2cSJim Jagielski }
366*b1cdbd2cSJim Jagielski 
367*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
368*b1cdbd2cSJim Jagielski 
Clone(SfxItemPool *) const369*b1cdbd2cSJim Jagielski SfxPoolItem* SvxVerJustifyItem::Clone( SfxItemPool* ) const
370*b1cdbd2cSJim Jagielski {
371*b1cdbd2cSJim Jagielski 	return new SvxVerJustifyItem( *this );
372*b1cdbd2cSJim Jagielski }
373*b1cdbd2cSJim Jagielski 
374*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
375*b1cdbd2cSJim Jagielski 
Create(SvStream & rStream,sal_uInt16) const376*b1cdbd2cSJim Jagielski SfxPoolItem* SvxVerJustifyItem::Create( SvStream& rStream, sal_uInt16 ) const
377*b1cdbd2cSJim Jagielski {
378*b1cdbd2cSJim Jagielski 	sal_uInt16 nVal;
379*b1cdbd2cSJim Jagielski 	rStream >> nVal;
380*b1cdbd2cSJim Jagielski 	return new SvxVerJustifyItem( (SvxCellVerJustify)nVal, Which() );
381*b1cdbd2cSJim Jagielski }
382*b1cdbd2cSJim Jagielski 
383*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
384*b1cdbd2cSJim Jagielski 
GetValueCount() const385*b1cdbd2cSJim Jagielski sal_uInt16 SvxVerJustifyItem::GetValueCount() const
386*b1cdbd2cSJim Jagielski {
387*b1cdbd2cSJim Jagielski 	return SVX_VER_JUSTIFY_BOTTOM + 1;	// letzter Enum-Wert + 1
388*b1cdbd2cSJim Jagielski }
389*b1cdbd2cSJim Jagielski 
390*b1cdbd2cSJim Jagielski // class SvxOrientationItem ----------------------------------------------
391*b1cdbd2cSJim Jagielski 
SvxOrientationItem(const SvxCellOrientation eOrientation,const sal_uInt16 nId)392*b1cdbd2cSJim Jagielski SvxOrientationItem::SvxOrientationItem( const SvxCellOrientation eOrientation,
393*b1cdbd2cSJim Jagielski 										const sal_uInt16 nId):
394*b1cdbd2cSJim Jagielski 	SfxEnumItem( nId, (sal_uInt16)eOrientation )
395*b1cdbd2cSJim Jagielski {
396*b1cdbd2cSJim Jagielski }
397*b1cdbd2cSJim Jagielski 
SvxOrientationItem(sal_Int32 nRotation,sal_Bool bStacked,const sal_uInt16 nId)398*b1cdbd2cSJim Jagielski SvxOrientationItem::SvxOrientationItem( sal_Int32 nRotation, sal_Bool bStacked, const sal_uInt16 nId ) :
399*b1cdbd2cSJim Jagielski     SfxEnumItem( nId )
400*b1cdbd2cSJim Jagielski {
401*b1cdbd2cSJim Jagielski     SetFromRotation( nRotation, bStacked );
402*b1cdbd2cSJim Jagielski }
403*b1cdbd2cSJim Jagielski 
404*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
405*b1cdbd2cSJim Jagielski 
GetPresentation(SfxItemPresentation ePres,SfxMapUnit,SfxMapUnit,XubString & rText,const IntlWrapper *) const406*b1cdbd2cSJim Jagielski SfxItemPresentation SvxOrientationItem::GetPresentation
407*b1cdbd2cSJim Jagielski (
408*b1cdbd2cSJim Jagielski 	SfxItemPresentation ePres,
409*b1cdbd2cSJim Jagielski     SfxMapUnit          /*eCoreUnit*/,
410*b1cdbd2cSJim Jagielski     SfxMapUnit          /*ePresUnit*/,
411*b1cdbd2cSJim Jagielski     XubString&              rText, const IntlWrapper * ) const
412*b1cdbd2cSJim Jagielski {
413*b1cdbd2cSJim Jagielski 	switch ( ePres )
414*b1cdbd2cSJim Jagielski 	{
415*b1cdbd2cSJim Jagielski 		case SFX_ITEM_PRESENTATION_NONE:
416*b1cdbd2cSJim Jagielski 			rText.Erase();
417*b1cdbd2cSJim Jagielski 			return SFX_ITEM_PRESENTATION_NONE;
418*b1cdbd2cSJim Jagielski 		case SFX_ITEM_PRESENTATION_NAMELESS:
419*b1cdbd2cSJim Jagielski 		case SFX_ITEM_PRESENTATION_COMPLETE:
420*b1cdbd2cSJim Jagielski 			rText = GetValueText( GetValue() );
421*b1cdbd2cSJim Jagielski 			return SFX_ITEM_PRESENTATION_COMPLETE;
422*b1cdbd2cSJim Jagielski         default: ; //prevent warning
423*b1cdbd2cSJim Jagielski     }
424*b1cdbd2cSJim Jagielski 	return SFX_ITEM_PRESENTATION_NONE;
425*b1cdbd2cSJim Jagielski }
426*b1cdbd2cSJim Jagielski 
427*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
428*b1cdbd2cSJim Jagielski 
QueryValue(uno::Any & rVal,sal_uInt8) const429*b1cdbd2cSJim Jagielski sal_Bool SvxOrientationItem::QueryValue( uno::Any& rVal, sal_uInt8 /*nMemberId*/ ) const
430*b1cdbd2cSJim Jagielski {
431*b1cdbd2cSJim Jagielski 	table::CellOrientation eUno = table::CellOrientation_STANDARD;
432*b1cdbd2cSJim Jagielski 	switch ( (SvxCellOrientation)GetValue() )
433*b1cdbd2cSJim Jagielski 	{
434*b1cdbd2cSJim Jagielski 	case SVX_ORIENTATION_STANDARD:	eUno = table::CellOrientation_STANDARD;  break;
435*b1cdbd2cSJim Jagielski 	case SVX_ORIENTATION_TOPBOTTOM:	eUno = table::CellOrientation_TOPBOTTOM; break;
436*b1cdbd2cSJim Jagielski 	case SVX_ORIENTATION_BOTTOMTOP:	eUno = table::CellOrientation_BOTTOMTOP; break;
437*b1cdbd2cSJim Jagielski 	case SVX_ORIENTATION_STACKED:	eUno = table::CellOrientation_STACKED;	  break;
438*b1cdbd2cSJim Jagielski 	}
439*b1cdbd2cSJim Jagielski 	rVal <<= eUno;
440*b1cdbd2cSJim Jagielski 	return sal_True;
441*b1cdbd2cSJim Jagielski }
442*b1cdbd2cSJim Jagielski 
PutValue(const uno::Any & rVal,sal_uInt8)443*b1cdbd2cSJim Jagielski sal_Bool SvxOrientationItem::PutValue( const uno::Any& rVal, sal_uInt8 /*nMemberId*/ )
444*b1cdbd2cSJim Jagielski {
445*b1cdbd2cSJim Jagielski 	table::CellOrientation eOrient;
446*b1cdbd2cSJim Jagielski 	if(!(rVal >>= eOrient))
447*b1cdbd2cSJim Jagielski 	{
448*b1cdbd2cSJim Jagielski 		sal_Int32 nValue = 0;
449*b1cdbd2cSJim Jagielski 		if(!(rVal >>= nValue))
450*b1cdbd2cSJim Jagielski 			return sal_False;
451*b1cdbd2cSJim Jagielski 		eOrient = (table::CellOrientation)nValue;
452*b1cdbd2cSJim Jagielski 	}
453*b1cdbd2cSJim Jagielski 	SvxCellOrientation eSvx = SVX_ORIENTATION_STANDARD;
454*b1cdbd2cSJim Jagielski 	switch (eOrient)
455*b1cdbd2cSJim Jagielski 	{
456*b1cdbd2cSJim Jagielski 		case table::CellOrientation_STANDARD:	eSvx = SVX_ORIENTATION_STANDARD;  break;
457*b1cdbd2cSJim Jagielski 		case table::CellOrientation_TOPBOTTOM:	eSvx = SVX_ORIENTATION_TOPBOTTOM; break;
458*b1cdbd2cSJim Jagielski 		case table::CellOrientation_BOTTOMTOP:	eSvx = SVX_ORIENTATION_BOTTOMTOP; break;
459*b1cdbd2cSJim Jagielski 		case table::CellOrientation_STACKED:	eSvx = SVX_ORIENTATION_STACKED;	  break;
460*b1cdbd2cSJim Jagielski         default: ; //prevent warning
461*b1cdbd2cSJim Jagielski     }
462*b1cdbd2cSJim Jagielski 	SetValue( (sal_uInt16)eSvx );
463*b1cdbd2cSJim Jagielski 	return sal_True;
464*b1cdbd2cSJim Jagielski }
465*b1cdbd2cSJim Jagielski 
466*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
467*b1cdbd2cSJim Jagielski 
GetValueText(sal_uInt16 nVal) const468*b1cdbd2cSJim Jagielski XubString SvxOrientationItem::GetValueText( sal_uInt16 nVal ) const
469*b1cdbd2cSJim Jagielski {
470*b1cdbd2cSJim Jagielski 	DBG_ASSERT( nVal <= SVX_ORIENTATION_STACKED, "enum overflow!" );
471*b1cdbd2cSJim Jagielski 	return SVX_RESSTR(RID_SVXITEMS_ORI_STANDARD + nVal);
472*b1cdbd2cSJim Jagielski }
473*b1cdbd2cSJim Jagielski 
474*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
475*b1cdbd2cSJim Jagielski 
Clone(SfxItemPool *) const476*b1cdbd2cSJim Jagielski SfxPoolItem* SvxOrientationItem::Clone( SfxItemPool* ) const
477*b1cdbd2cSJim Jagielski {
478*b1cdbd2cSJim Jagielski 	return new SvxOrientationItem( *this );
479*b1cdbd2cSJim Jagielski }
480*b1cdbd2cSJim Jagielski 
481*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
482*b1cdbd2cSJim Jagielski 
Create(SvStream & rStream,sal_uInt16) const483*b1cdbd2cSJim Jagielski SfxPoolItem* SvxOrientationItem::Create( SvStream& rStream, sal_uInt16 ) const
484*b1cdbd2cSJim Jagielski {
485*b1cdbd2cSJim Jagielski 	sal_uInt16 nVal;
486*b1cdbd2cSJim Jagielski 	rStream >> nVal;
487*b1cdbd2cSJim Jagielski 	return new SvxOrientationItem( (SvxCellOrientation)nVal, Which() );
488*b1cdbd2cSJim Jagielski }
489*b1cdbd2cSJim Jagielski 
490*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
491*b1cdbd2cSJim Jagielski 
GetValueCount() const492*b1cdbd2cSJim Jagielski sal_uInt16 SvxOrientationItem::GetValueCount() const
493*b1cdbd2cSJim Jagielski {
494*b1cdbd2cSJim Jagielski 	return SVX_ORIENTATION_STACKED + 1;	// letzter Enum-Wert + 1
495*b1cdbd2cSJim Jagielski }
496*b1cdbd2cSJim Jagielski 
497*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
498*b1cdbd2cSJim Jagielski 
IsStacked() const499*b1cdbd2cSJim Jagielski sal_Bool SvxOrientationItem::IsStacked() const
500*b1cdbd2cSJim Jagielski {
501*b1cdbd2cSJim Jagielski     return static_cast< SvxCellOrientation >( GetValue() ) == SVX_ORIENTATION_STACKED;
502*b1cdbd2cSJim Jagielski }
503*b1cdbd2cSJim Jagielski 
GetRotation(sal_Int32 nStdAngle) const504*b1cdbd2cSJim Jagielski sal_Int32 SvxOrientationItem::GetRotation( sal_Int32 nStdAngle ) const
505*b1cdbd2cSJim Jagielski {
506*b1cdbd2cSJim Jagielski     sal_Int32 nAngle = nStdAngle;
507*b1cdbd2cSJim Jagielski     switch( static_cast< SvxCellOrientation >( GetValue() ) )
508*b1cdbd2cSJim Jagielski     {
509*b1cdbd2cSJim Jagielski         case SVX_ORIENTATION_BOTTOMTOP: nAngle = 9000;
510*b1cdbd2cSJim Jagielski         case SVX_ORIENTATION_TOPBOTTOM: nAngle = 27000;
511*b1cdbd2cSJim Jagielski         default: ; //prevent warning
512*b1cdbd2cSJim Jagielski     }
513*b1cdbd2cSJim Jagielski     return nAngle;
514*b1cdbd2cSJim Jagielski }
515*b1cdbd2cSJim Jagielski 
SetFromRotation(sal_Int32 nRotation,sal_Bool bStacked)516*b1cdbd2cSJim Jagielski void SvxOrientationItem::SetFromRotation( sal_Int32 nRotation, sal_Bool bStacked )
517*b1cdbd2cSJim Jagielski {
518*b1cdbd2cSJim Jagielski     if( bStacked )
519*b1cdbd2cSJim Jagielski     {
520*b1cdbd2cSJim Jagielski         SetValue( SVX_ORIENTATION_STACKED );
521*b1cdbd2cSJim Jagielski     }
522*b1cdbd2cSJim Jagielski     else switch( nRotation )
523*b1cdbd2cSJim Jagielski     {
524*b1cdbd2cSJim Jagielski         case 9000:  SetValue( SVX_ORIENTATION_BOTTOMTOP );  break;
525*b1cdbd2cSJim Jagielski         case 27000: SetValue( SVX_ORIENTATION_TOPBOTTOM );  break;
526*b1cdbd2cSJim Jagielski         default:    SetValue( SVX_ORIENTATION_STANDARD );
527*b1cdbd2cSJim Jagielski     }
528*b1cdbd2cSJim Jagielski }
529*b1cdbd2cSJim Jagielski 
530*b1cdbd2cSJim Jagielski // class SvxMarginItem ---------------------------------------------------
531*b1cdbd2cSJim Jagielski 
SvxMarginItem(const sal_uInt16 nId)532*b1cdbd2cSJim Jagielski SvxMarginItem::SvxMarginItem( const sal_uInt16 nId ) :
533*b1cdbd2cSJim Jagielski 
534*b1cdbd2cSJim Jagielski 	SfxPoolItem( nId ),
535*b1cdbd2cSJim Jagielski 
536*b1cdbd2cSJim Jagielski 	nLeftMargin	 ( 20 ),
537*b1cdbd2cSJim Jagielski 	nTopMargin	 ( 20 ),
538*b1cdbd2cSJim Jagielski 	nRightMargin ( 20 ),
539*b1cdbd2cSJim Jagielski 	nBottomMargin( 20 )
540*b1cdbd2cSJim Jagielski {
541*b1cdbd2cSJim Jagielski }
542*b1cdbd2cSJim Jagielski 
543*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
544*b1cdbd2cSJim Jagielski 
SvxMarginItem(sal_Int16 nLeft,sal_Int16 nTop,sal_Int16 nRight,sal_Int16 nBottom,const sal_uInt16 nId)545*b1cdbd2cSJim Jagielski SvxMarginItem::SvxMarginItem( sal_Int16 nLeft,
546*b1cdbd2cSJim Jagielski 							  sal_Int16 nTop,
547*b1cdbd2cSJim Jagielski 							  sal_Int16 nRight,
548*b1cdbd2cSJim Jagielski 							  sal_Int16 nBottom,
549*b1cdbd2cSJim Jagielski 							  const sal_uInt16 nId ) :
550*b1cdbd2cSJim Jagielski 	SfxPoolItem( nId ),
551*b1cdbd2cSJim Jagielski 
552*b1cdbd2cSJim Jagielski 	nLeftMargin	 ( nLeft ),
553*b1cdbd2cSJim Jagielski 	nTopMargin	 ( nTop ),
554*b1cdbd2cSJim Jagielski 	nRightMargin ( nRight ),
555*b1cdbd2cSJim Jagielski 	nBottomMargin( nBottom )
556*b1cdbd2cSJim Jagielski {
557*b1cdbd2cSJim Jagielski }
558*b1cdbd2cSJim Jagielski 
559*b1cdbd2cSJim Jagielski 
560*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
561*b1cdbd2cSJim Jagielski 
SvxMarginItem(const SvxMarginItem & rItem)562*b1cdbd2cSJim Jagielski SvxMarginItem::SvxMarginItem( const SvxMarginItem& rItem ) :
563*b1cdbd2cSJim Jagielski 
564*b1cdbd2cSJim Jagielski 	SfxPoolItem( rItem.Which() )
565*b1cdbd2cSJim Jagielski {
566*b1cdbd2cSJim Jagielski 	nLeftMargin = rItem.nLeftMargin;
567*b1cdbd2cSJim Jagielski 	nTopMargin = rItem.nTopMargin;
568*b1cdbd2cSJim Jagielski 	nRightMargin = rItem.nRightMargin;
569*b1cdbd2cSJim Jagielski 	nBottomMargin = rItem.nBottomMargin;
570*b1cdbd2cSJim Jagielski }
571*b1cdbd2cSJim Jagielski 
572*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
573*b1cdbd2cSJim Jagielski 
GetPresentation(SfxItemPresentation ePres,SfxMapUnit eCoreUnit,SfxMapUnit ePresUnit,XubString & rText,const IntlWrapper * pIntl) const574*b1cdbd2cSJim Jagielski SfxItemPresentation SvxMarginItem::GetPresentation
575*b1cdbd2cSJim Jagielski (
576*b1cdbd2cSJim Jagielski 	SfxItemPresentation ePres,
577*b1cdbd2cSJim Jagielski 	SfxMapUnit			eCoreUnit,
578*b1cdbd2cSJim Jagielski 	SfxMapUnit			ePresUnit,
579*b1cdbd2cSJim Jagielski     XubString&          rText, const IntlWrapper *pIntl
580*b1cdbd2cSJim Jagielski )	const
581*b1cdbd2cSJim Jagielski {
582*b1cdbd2cSJim Jagielski #ifndef SVX_LIGHT
583*b1cdbd2cSJim Jagielski 	switch ( ePres )
584*b1cdbd2cSJim Jagielski 	{
585*b1cdbd2cSJim Jagielski 		case SFX_ITEM_PRESENTATION_NONE:
586*b1cdbd2cSJim Jagielski 			rText.Erase();
587*b1cdbd2cSJim Jagielski 			return SFX_ITEM_PRESENTATION_NONE;
588*b1cdbd2cSJim Jagielski 		case SFX_ITEM_PRESENTATION_NAMELESS:
589*b1cdbd2cSJim Jagielski 		{
590*b1cdbd2cSJim Jagielski             rText = GetMetricText( (long)nLeftMargin, eCoreUnit, ePresUnit, pIntl );
591*b1cdbd2cSJim Jagielski 			rText += cpDelim;
592*b1cdbd2cSJim Jagielski             rText += GetMetricText( (long)nTopMargin, eCoreUnit, ePresUnit, pIntl );
593*b1cdbd2cSJim Jagielski 			rText += cpDelim;
594*b1cdbd2cSJim Jagielski             rText += GetMetricText( (long)nRightMargin, eCoreUnit, ePresUnit, pIntl );
595*b1cdbd2cSJim Jagielski 			rText += cpDelim;
596*b1cdbd2cSJim Jagielski             rText += GetMetricText( (long)nBottomMargin, eCoreUnit, ePresUnit, pIntl );
597*b1cdbd2cSJim Jagielski 			return SFX_ITEM_PRESENTATION_NAMELESS;
598*b1cdbd2cSJim Jagielski 		}
599*b1cdbd2cSJim Jagielski 		case SFX_ITEM_PRESENTATION_COMPLETE:
600*b1cdbd2cSJim Jagielski 		{
601*b1cdbd2cSJim Jagielski 			rText = SVX_RESSTR(RID_SVXITEMS_MARGIN_LEFT);
602*b1cdbd2cSJim Jagielski             rText += GetMetricText( (long)nLeftMargin, eCoreUnit, ePresUnit, pIntl );
603*b1cdbd2cSJim Jagielski 			rText += sal_Unicode(' ');
604*b1cdbd2cSJim Jagielski 			rText += SVX_RESSTR(GetMetricId(ePresUnit));
605*b1cdbd2cSJim Jagielski 			rText += cpDelim;
606*b1cdbd2cSJim Jagielski 			rText += SVX_RESSTR(RID_SVXITEMS_MARGIN_TOP);
607*b1cdbd2cSJim Jagielski             rText += GetMetricText( (long)nTopMargin, eCoreUnit, ePresUnit, pIntl );
608*b1cdbd2cSJim Jagielski 			rText += sal_Unicode(' ');
609*b1cdbd2cSJim Jagielski 			rText += SVX_RESSTR(GetMetricId(ePresUnit));
610*b1cdbd2cSJim Jagielski 			rText += cpDelim;
611*b1cdbd2cSJim Jagielski 			rText += SVX_RESSTR(RID_SVXITEMS_MARGIN_RIGHT);
612*b1cdbd2cSJim Jagielski             rText += GetMetricText( (long)nRightMargin, eCoreUnit, ePresUnit, pIntl );
613*b1cdbd2cSJim Jagielski 			rText += sal_Unicode(' ');
614*b1cdbd2cSJim Jagielski 			rText += SVX_RESSTR(GetMetricId(ePresUnit));
615*b1cdbd2cSJim Jagielski 			rText += cpDelim;
616*b1cdbd2cSJim Jagielski 			rText += SVX_RESSTR(RID_SVXITEMS_MARGIN_BOTTOM);
617*b1cdbd2cSJim Jagielski             rText += GetMetricText( (long)nBottomMargin, eCoreUnit, ePresUnit, pIntl );
618*b1cdbd2cSJim Jagielski 			rText += sal_Unicode(' ');
619*b1cdbd2cSJim Jagielski 			rText += SVX_RESSTR(GetMetricId(ePresUnit));
620*b1cdbd2cSJim Jagielski 			return SFX_ITEM_PRESENTATION_COMPLETE;
621*b1cdbd2cSJim Jagielski 		}
622*b1cdbd2cSJim Jagielski         default: ; //prevent warning
623*b1cdbd2cSJim Jagielski     }
624*b1cdbd2cSJim Jagielski #endif
625*b1cdbd2cSJim Jagielski 	return SFX_ITEM_PRESENTATION_NONE;
626*b1cdbd2cSJim Jagielski }
627*b1cdbd2cSJim Jagielski 
628*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
629*b1cdbd2cSJim Jagielski 
operator ==(const SfxPoolItem & rItem) const630*b1cdbd2cSJim Jagielski int SvxMarginItem::operator==( const SfxPoolItem& rItem ) const
631*b1cdbd2cSJim Jagielski {
632*b1cdbd2cSJim Jagielski 	DBG_ASSERT( SfxPoolItem::operator==( rItem ), "unequal type" );
633*b1cdbd2cSJim Jagielski 
634*b1cdbd2cSJim Jagielski 	return ( ( nLeftMargin == ( (SvxMarginItem&)rItem ).nLeftMargin )	&&
635*b1cdbd2cSJim Jagielski 			 ( nTopMargin == ( (SvxMarginItem&)rItem ).nTopMargin )		&&
636*b1cdbd2cSJim Jagielski 			 ( nRightMargin == ( (SvxMarginItem&)rItem ).nRightMargin )	&&
637*b1cdbd2cSJim Jagielski 			 ( nBottomMargin == ( (SvxMarginItem&)rItem ).nBottomMargin ) );
638*b1cdbd2cSJim Jagielski }
639*b1cdbd2cSJim Jagielski 
640*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
641*b1cdbd2cSJim Jagielski 
Clone(SfxItemPool *) const642*b1cdbd2cSJim Jagielski SfxPoolItem* SvxMarginItem::Clone( SfxItemPool* ) const
643*b1cdbd2cSJim Jagielski {
644*b1cdbd2cSJim Jagielski 	return new SvxMarginItem(*this);
645*b1cdbd2cSJim Jagielski }
646*b1cdbd2cSJim Jagielski 
647*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
648*b1cdbd2cSJim Jagielski 
Create(SvStream & rStream,sal_uInt16) const649*b1cdbd2cSJim Jagielski SfxPoolItem* SvxMarginItem::Create( SvStream& rStream, sal_uInt16 ) const
650*b1cdbd2cSJim Jagielski {
651*b1cdbd2cSJim Jagielski 	sal_Int16   nLeft;
652*b1cdbd2cSJim Jagielski 	sal_Int16   nTop;
653*b1cdbd2cSJim Jagielski 	sal_Int16   nRight;
654*b1cdbd2cSJim Jagielski 	sal_Int16   nBottom;
655*b1cdbd2cSJim Jagielski 	rStream >> nLeft;
656*b1cdbd2cSJim Jagielski 	rStream >> nTop;
657*b1cdbd2cSJim Jagielski 	rStream >> nRight;
658*b1cdbd2cSJim Jagielski 	rStream >> nBottom;
659*b1cdbd2cSJim Jagielski 	return new SvxMarginItem( nLeft, nTop, nRight, nBottom, Which() );
660*b1cdbd2cSJim Jagielski }
661*b1cdbd2cSJim Jagielski 
662*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
663*b1cdbd2cSJim Jagielski 
Store(SvStream & rStream,sal_uInt16) const664*b1cdbd2cSJim Jagielski SvStream& SvxMarginItem::Store( SvStream &rStream, sal_uInt16 /*nItemVersion*/) const
665*b1cdbd2cSJim Jagielski {
666*b1cdbd2cSJim Jagielski 	rStream << nLeftMargin;
667*b1cdbd2cSJim Jagielski 	rStream << nTopMargin;
668*b1cdbd2cSJim Jagielski 	rStream << nRightMargin;
669*b1cdbd2cSJim Jagielski 	rStream << nBottomMargin;
670*b1cdbd2cSJim Jagielski 	return rStream;
671*b1cdbd2cSJim Jagielski }
672*b1cdbd2cSJim Jagielski 
673*b1cdbd2cSJim Jagielski 
674*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
675*b1cdbd2cSJim Jagielski 
QueryValue(uno::Any & rVal,sal_uInt8 nMemberId) const676*b1cdbd2cSJim Jagielski sal_Bool SvxMarginItem::QueryValue( uno::Any& rVal, sal_uInt8 nMemberId ) const
677*b1cdbd2cSJim Jagielski {
678*b1cdbd2cSJim Jagielski     sal_Bool bConvert = 0!=(nMemberId&CONVERT_TWIPS);
679*b1cdbd2cSJim Jagielski     nMemberId &= ~CONVERT_TWIPS;
680*b1cdbd2cSJim Jagielski     switch ( nMemberId )
681*b1cdbd2cSJim Jagielski 	{
682*b1cdbd2cSJim Jagielski 		//	jetzt alles signed
683*b1cdbd2cSJim Jagielski 		case MID_MARGIN_L_MARGIN:
684*b1cdbd2cSJim Jagielski 			rVal <<= (sal_Int32)( bConvert ? TWIP_TO_MM100(nLeftMargin) : nLeftMargin );
685*b1cdbd2cSJim Jagielski 			break;
686*b1cdbd2cSJim Jagielski 		case MID_MARGIN_R_MARGIN:
687*b1cdbd2cSJim Jagielski 			rVal <<= (sal_Int32)( bConvert ? TWIP_TO_MM100(nRightMargin) : nRightMargin );
688*b1cdbd2cSJim Jagielski 			break;
689*b1cdbd2cSJim Jagielski 		case MID_MARGIN_UP_MARGIN:
690*b1cdbd2cSJim Jagielski 			rVal <<= (sal_Int32)( bConvert ? TWIP_TO_MM100(nTopMargin) : nTopMargin );
691*b1cdbd2cSJim Jagielski 			break;
692*b1cdbd2cSJim Jagielski 		case MID_MARGIN_LO_MARGIN:
693*b1cdbd2cSJim Jagielski 			rVal <<= (sal_Int32)( bConvert ? TWIP_TO_MM100(nBottomMargin) : nBottomMargin );
694*b1cdbd2cSJim Jagielski 			break;
695*b1cdbd2cSJim Jagielski 		default:
696*b1cdbd2cSJim Jagielski 			DBG_ERROR("unknown MemberId");
697*b1cdbd2cSJim Jagielski 			return sal_False;
698*b1cdbd2cSJim Jagielski 	}
699*b1cdbd2cSJim Jagielski 	return sal_True;
700*b1cdbd2cSJim Jagielski }
701*b1cdbd2cSJim Jagielski 
702*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
703*b1cdbd2cSJim Jagielski 
PutValue(const uno::Any & rVal,sal_uInt8 nMemberId)704*b1cdbd2cSJim Jagielski sal_Bool SvxMarginItem::PutValue( const uno::Any& rVal, sal_uInt8 nMemberId )
705*b1cdbd2cSJim Jagielski {
706*b1cdbd2cSJim Jagielski 	sal_Bool bConvert = ( ( nMemberId & CONVERT_TWIPS ) != 0 );
707*b1cdbd2cSJim Jagielski 	long nMaxVal = bConvert ? TWIP_TO_MM100(SHRT_MAX) : SHRT_MAX;	// Members sind sal_Int16
708*b1cdbd2cSJim Jagielski 	sal_Int32 nVal = 0;
709*b1cdbd2cSJim Jagielski 	if(!(rVal >>= nVal) || (nVal > nMaxVal))
710*b1cdbd2cSJim Jagielski 		return sal_False;
711*b1cdbd2cSJim Jagielski 
712*b1cdbd2cSJim Jagielski 	switch ( nMemberId & ~CONVERT_TWIPS )
713*b1cdbd2cSJim Jagielski 	{
714*b1cdbd2cSJim Jagielski 		case MID_MARGIN_L_MARGIN:
715*b1cdbd2cSJim Jagielski 			nLeftMargin = (sal_Int16)( bConvert ? MM100_TO_TWIP(nVal) : nVal );
716*b1cdbd2cSJim Jagielski 			break;
717*b1cdbd2cSJim Jagielski 		case MID_MARGIN_R_MARGIN:
718*b1cdbd2cSJim Jagielski 			nRightMargin = (sal_Int16)( bConvert ? MM100_TO_TWIP(nVal) : nVal );
719*b1cdbd2cSJim Jagielski 			break;
720*b1cdbd2cSJim Jagielski 		case MID_MARGIN_UP_MARGIN:
721*b1cdbd2cSJim Jagielski 			nTopMargin = (sal_Int16)( bConvert ? MM100_TO_TWIP(nVal) : nVal );
722*b1cdbd2cSJim Jagielski 			break;
723*b1cdbd2cSJim Jagielski 		case MID_MARGIN_LO_MARGIN:
724*b1cdbd2cSJim Jagielski 			nBottomMargin = (sal_Int16)( bConvert ? MM100_TO_TWIP(nVal) : nVal );
725*b1cdbd2cSJim Jagielski 			break;
726*b1cdbd2cSJim Jagielski 		default:
727*b1cdbd2cSJim Jagielski 			DBG_ERROR("unknown MemberId");
728*b1cdbd2cSJim Jagielski 			return sal_False;
729*b1cdbd2cSJim Jagielski 	}
730*b1cdbd2cSJim Jagielski 	return sal_True;
731*b1cdbd2cSJim Jagielski }
732*b1cdbd2cSJim Jagielski 
733*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
734*b1cdbd2cSJim Jagielski 
SetLeftMargin(sal_Int16 nLeft)735*b1cdbd2cSJim Jagielski sal_Bool SvxMarginItem::SetLeftMargin( sal_Int16 nLeft )
736*b1cdbd2cSJim Jagielski {
737*b1cdbd2cSJim Jagielski 	nLeftMargin = nLeft;
738*b1cdbd2cSJim Jagielski 	return sal_True;
739*b1cdbd2cSJim Jagielski }
740*b1cdbd2cSJim Jagielski 
741*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
742*b1cdbd2cSJim Jagielski 
SetTopMargin(sal_Int16 nTop)743*b1cdbd2cSJim Jagielski sal_Bool SvxMarginItem::SetTopMargin( sal_Int16 nTop )
744*b1cdbd2cSJim Jagielski {
745*b1cdbd2cSJim Jagielski 	nTopMargin = nTop;
746*b1cdbd2cSJim Jagielski 	return sal_True;
747*b1cdbd2cSJim Jagielski }
748*b1cdbd2cSJim Jagielski 
749*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
750*b1cdbd2cSJim Jagielski 
SetRightMargin(sal_Int16 nRight)751*b1cdbd2cSJim Jagielski sal_Bool SvxMarginItem::SetRightMargin( sal_Int16 nRight )
752*b1cdbd2cSJim Jagielski {
753*b1cdbd2cSJim Jagielski 	nRightMargin = nRight;
754*b1cdbd2cSJim Jagielski 	return sal_True;
755*b1cdbd2cSJim Jagielski }
756*b1cdbd2cSJim Jagielski 
757*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
758*b1cdbd2cSJim Jagielski 
SetBottomMargin(sal_Int16 nBottom)759*b1cdbd2cSJim Jagielski sal_Bool SvxMarginItem::SetBottomMargin( sal_Int16 nBottom )
760*b1cdbd2cSJim Jagielski {
761*b1cdbd2cSJim Jagielski 	nBottomMargin = nBottom;
762*b1cdbd2cSJim Jagielski 	return sal_True;
763*b1cdbd2cSJim Jagielski }
764*b1cdbd2cSJim Jagielski 
765*b1cdbd2cSJim Jagielski 
766