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