xref: /aoo4110/main/svl/source/items/poolitem.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_svl.hxx"
26*b1cdbd2cSJim Jagielski 
27*b1cdbd2cSJim Jagielski #include <svl/poolitem.hxx>
28*b1cdbd2cSJim Jagielski #include <tools/stream.hxx>
29*b1cdbd2cSJim Jagielski 
30*b1cdbd2cSJim Jagielski // STATIC DATA -----------------------------------------------------------
31*b1cdbd2cSJim Jagielski 
32*b1cdbd2cSJim Jagielski DBG_NAME(SfxPoolItem)
33*b1cdbd2cSJim Jagielski DBG_NAME(SfxVoidItem)
34*b1cdbd2cSJim Jagielski // @@@ DBG_NAME(SfxInvalidItem);
35*b1cdbd2cSJim Jagielski DBG_NAME(SfxItemHandle)
36*b1cdbd2cSJim Jagielski 
37*b1cdbd2cSJim Jagielski sal_uInt8 nSfxFlag8Val[8] =
38*b1cdbd2cSJim Jagielski {
39*b1cdbd2cSJim Jagielski 	1, 2, 4, 8, 16, 32, 64, 128
40*b1cdbd2cSJim Jagielski };
41*b1cdbd2cSJim Jagielski 
42*b1cdbd2cSJim Jagielski sal_uInt16 nSfxFlag16Val[16] =
43*b1cdbd2cSJim Jagielski {
44*b1cdbd2cSJim Jagielski 	1, 2, 4, 8, 16, 32, 64, 128, 256, 512,
45*b1cdbd2cSJim Jagielski 	1024, 2048, 4096, 8192, 16384, 32768
46*b1cdbd2cSJim Jagielski };
47*b1cdbd2cSJim Jagielski 
48*b1cdbd2cSJim Jagielski sal_uLong nSfxFlag32Val[32] =
49*b1cdbd2cSJim Jagielski {
50*b1cdbd2cSJim Jagielski 	0x1L, 0x2L, 0x4L, 0x8L,
51*b1cdbd2cSJim Jagielski 	0x10L, 0x20L, 0x40L, 0x80L,
52*b1cdbd2cSJim Jagielski 	0x100L, 0x200L, 0x400L, 0x800L,
53*b1cdbd2cSJim Jagielski 	0x1000L, 0x2000L, 0x40000L, 0x8000L,
54*b1cdbd2cSJim Jagielski 	0x10000L, 0x20000L, 0x40000L, 0x80000L,
55*b1cdbd2cSJim Jagielski 	0x100000L, 0x200000L, 0x400000L, 0x800000L,
56*b1cdbd2cSJim Jagielski 	0x1000000L, 0x2000000L, 0x4000000L, 0x8000000L,
57*b1cdbd2cSJim Jagielski 	0x10000000L, 0x20000000L, 0x40000000L, 0x80000000L
58*b1cdbd2cSJim Jagielski };
59*b1cdbd2cSJim Jagielski 
60*b1cdbd2cSJim Jagielski // RTTI ------------------------------------------------------------------
61*b1cdbd2cSJim Jagielski 
62*b1cdbd2cSJim Jagielski TYPEINIT0(SfxPoolItem);
63*b1cdbd2cSJim Jagielski TYPEINIT1(SfxVoidItem, SfxPoolItem);
64*b1cdbd2cSJim Jagielski // @@@ TYPEINIT1(SfxInvalidItem, SfxPoolItem);
65*b1cdbd2cSJim Jagielski TYPEINIT1(SfxSetItem, SfxPoolItem);
66*b1cdbd2cSJim Jagielski // @@@ TYPEINIT1(SfxItemChangedHint, SfxHint);
67*b1cdbd2cSJim Jagielski 
68*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
69*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 1
70*b1cdbd2cSJim Jagielski static sal_uLong nItemCount = 0;
71*b1cdbd2cSJim Jagielski 
72*b1cdbd2cSJim Jagielski const char* pw1 = "Wow! 10.000 items!";
73*b1cdbd2cSJim Jagielski const char* pw2 = "Wow! 100.000 items!";
74*b1cdbd2cSJim Jagielski const char* pw3 = "Wow! 1.000.000 items!";
75*b1cdbd2cSJim Jagielski const char* pw4 = "Wow! 50.000.000 items!";
76*b1cdbd2cSJim Jagielski const char* pw5 = "Wow! 10.000.000 items!";
77*b1cdbd2cSJim Jagielski #endif
78*b1cdbd2cSJim Jagielski 
IMPL_PTRHINT(SfxPoolItemHint,SfxPoolItem)79*b1cdbd2cSJim Jagielski IMPL_PTRHINT(SfxPoolItemHint,SfxPoolItem)
80*b1cdbd2cSJim Jagielski 
81*b1cdbd2cSJim Jagielski // SfxPoolItem -----------------------------------------------------------
82*b1cdbd2cSJim Jagielski SfxPoolItem::SfxPoolItem( sal_uInt16 nW )
83*b1cdbd2cSJim Jagielski 	: nRefCount( 0 ),
84*b1cdbd2cSJim Jagielski 	  nWhich( nW )
85*b1cdbd2cSJim Jagielski 	  , nKind( 0 )
86*b1cdbd2cSJim Jagielski {
87*b1cdbd2cSJim Jagielski 	DBG_CTOR(SfxPoolItem, 0);
88*b1cdbd2cSJim Jagielski 	DBG_ASSERT(nW <= SHRT_MAX, "Which Bereich ueberschritten");
89*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 1
90*b1cdbd2cSJim Jagielski 	++nItemCount;
91*b1cdbd2cSJim Jagielski 	if ( pw1 && nItemCount>=10000 )
92*b1cdbd2cSJim Jagielski 	{
93*b1cdbd2cSJim Jagielski 		DBG_WARNING( pw1 );
94*b1cdbd2cSJim Jagielski 		pw1 = NULL;
95*b1cdbd2cSJim Jagielski 	}
96*b1cdbd2cSJim Jagielski 	if ( pw2 && nItemCount>=100000 )
97*b1cdbd2cSJim Jagielski 	{
98*b1cdbd2cSJim Jagielski 		DBG_WARNING( pw2 );
99*b1cdbd2cSJim Jagielski 		pw2 = NULL;
100*b1cdbd2cSJim Jagielski 	}
101*b1cdbd2cSJim Jagielski 	if ( pw3 && nItemCount>=1000000 )
102*b1cdbd2cSJim Jagielski 	{
103*b1cdbd2cSJim Jagielski 		DBG_WARNING( pw3 );
104*b1cdbd2cSJim Jagielski 		pw3 = NULL;
105*b1cdbd2cSJim Jagielski 	}
106*b1cdbd2cSJim Jagielski 	if ( pw4 && nItemCount>=5000000 )
107*b1cdbd2cSJim Jagielski 	{
108*b1cdbd2cSJim Jagielski 		DBG_WARNING( pw4 );
109*b1cdbd2cSJim Jagielski 		pw4 = NULL;
110*b1cdbd2cSJim Jagielski 	}
111*b1cdbd2cSJim Jagielski 	if ( pw5 && nItemCount>=10000000 )
112*b1cdbd2cSJim Jagielski 	{
113*b1cdbd2cSJim Jagielski 		DBG_WARNING( pw5 );
114*b1cdbd2cSJim Jagielski 		pw5 = NULL;
115*b1cdbd2cSJim Jagielski 	}
116*b1cdbd2cSJim Jagielski #endif
117*b1cdbd2cSJim Jagielski }
118*b1cdbd2cSJim Jagielski 
119*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
SfxPoolItem(const SfxPoolItem & rCpy)120*b1cdbd2cSJim Jagielski SfxPoolItem::SfxPoolItem( const SfxPoolItem& rCpy )
121*b1cdbd2cSJim Jagielski 	: nRefCount( 0 ),				// wird ja ein neues Object!
122*b1cdbd2cSJim Jagielski 	  nWhich( rCpy.Which() )	// Funktion rufen wg. ChkThis()
123*b1cdbd2cSJim Jagielski 	  , nKind( 0 )
124*b1cdbd2cSJim Jagielski {
125*b1cdbd2cSJim Jagielski 	DBG_CTOR(SfxPoolItem, 0);
126*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 1
127*b1cdbd2cSJim Jagielski 	++nItemCount;
128*b1cdbd2cSJim Jagielski 	if ( pw1 && nItemCount>=10000 )
129*b1cdbd2cSJim Jagielski 	{
130*b1cdbd2cSJim Jagielski 		DBG_WARNING( pw1 );
131*b1cdbd2cSJim Jagielski 		pw1 = NULL;
132*b1cdbd2cSJim Jagielski 	}
133*b1cdbd2cSJim Jagielski 	if ( pw2 && nItemCount>=100000 )
134*b1cdbd2cSJim Jagielski 	{
135*b1cdbd2cSJim Jagielski 		DBG_WARNING( pw2 );
136*b1cdbd2cSJim Jagielski 		pw2 = NULL;
137*b1cdbd2cSJim Jagielski 	}
138*b1cdbd2cSJim Jagielski 	if ( pw3 && nItemCount>=1000000 )
139*b1cdbd2cSJim Jagielski 	{
140*b1cdbd2cSJim Jagielski 		DBG_WARNING( pw3 );
141*b1cdbd2cSJim Jagielski 		pw3 = NULL;
142*b1cdbd2cSJim Jagielski 	}
143*b1cdbd2cSJim Jagielski 	if ( pw4 && nItemCount>=5000000 )
144*b1cdbd2cSJim Jagielski 	{
145*b1cdbd2cSJim Jagielski 		DBG_WARNING( pw4 );
146*b1cdbd2cSJim Jagielski 		pw4 = NULL;
147*b1cdbd2cSJim Jagielski 	}
148*b1cdbd2cSJim Jagielski 	if ( pw5 && nItemCount>=10000000 )
149*b1cdbd2cSJim Jagielski 	{
150*b1cdbd2cSJim Jagielski 		DBG_WARNING( pw5 );
151*b1cdbd2cSJim Jagielski 		pw5 = NULL;
152*b1cdbd2cSJim Jagielski 	}
153*b1cdbd2cSJim Jagielski #endif
154*b1cdbd2cSJim Jagielski }
155*b1cdbd2cSJim Jagielski 
156*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
~SfxPoolItem()157*b1cdbd2cSJim Jagielski SfxPoolItem::~SfxPoolItem()
158*b1cdbd2cSJim Jagielski {
159*b1cdbd2cSJim Jagielski 	DBG_DTOR(SfxPoolItem, 0);
160*b1cdbd2cSJim Jagielski 	DBG_ASSERT(nRefCount == 0 || nRefCount > SFX_ITEMS_MAXREF, "destroying item in use" );
161*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 1
162*b1cdbd2cSJim Jagielski 	--nItemCount;
163*b1cdbd2cSJim Jagielski #endif
164*b1cdbd2cSJim Jagielski }
165*b1cdbd2cSJim Jagielski 
166*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
Compare(const SfxPoolItem &) const167*b1cdbd2cSJim Jagielski int SfxPoolItem::Compare( const SfxPoolItem& ) const
168*b1cdbd2cSJim Jagielski {
169*b1cdbd2cSJim Jagielski 	return 0;
170*b1cdbd2cSJim Jagielski }
171*b1cdbd2cSJim Jagielski 
172*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
Compare(const SfxPoolItem & rWith,const IntlWrapper &) const173*b1cdbd2cSJim Jagielski int SfxPoolItem::Compare( const SfxPoolItem& rWith, const IntlWrapper& ) const
174*b1cdbd2cSJim Jagielski {
175*b1cdbd2cSJim Jagielski 	return Compare( rWith );
176*b1cdbd2cSJim Jagielski }
177*b1cdbd2cSJim Jagielski 
178*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
operator ==(const SfxPoolItem & rCmp) const179*b1cdbd2cSJim Jagielski int SfxPoolItem::operator==( const SfxPoolItem& rCmp ) const
180*b1cdbd2cSJim Jagielski {
181*b1cdbd2cSJim Jagielski 	DBG_CHKTHIS(SfxPoolItem, 0);
182*b1cdbd2cSJim Jagielski 	return rCmp.Type() == Type();
183*b1cdbd2cSJim Jagielski }
184*b1cdbd2cSJim Jagielski 
185*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
186*b1cdbd2cSJim Jagielski #ifndef TF_POOLABLE
187*b1cdbd2cSJim Jagielski 
IsPoolable() const188*b1cdbd2cSJim Jagielski int SfxPoolItem::IsPoolable() const
189*b1cdbd2cSJim Jagielski {
190*b1cdbd2cSJim Jagielski 	DBG_CHKTHIS(SfxPoolItem, 0);
191*b1cdbd2cSJim Jagielski 	return sal_True;
192*b1cdbd2cSJim Jagielski }
193*b1cdbd2cSJim Jagielski #endif
194*b1cdbd2cSJim Jagielski 
195*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
Create(SvStream &,sal_uInt16) const196*b1cdbd2cSJim Jagielski SfxPoolItem* SfxPoolItem::Create(SvStream &, sal_uInt16) const
197*b1cdbd2cSJim Jagielski {
198*b1cdbd2cSJim Jagielski 	DBG_CHKTHIS(SfxPoolItem, 0);
199*b1cdbd2cSJim Jagielski 	return Clone(0);
200*b1cdbd2cSJim Jagielski }
201*b1cdbd2cSJim Jagielski 
202*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
GetVersion(sal_uInt16) const203*b1cdbd2cSJim Jagielski sal_uInt16 SfxPoolItem::GetVersion( sal_uInt16 ) const
204*b1cdbd2cSJim Jagielski {
205*b1cdbd2cSJim Jagielski 	DBG_CHKTHIS(SfxPoolItem, 0);
206*b1cdbd2cSJim Jagielski 	return 0;
207*b1cdbd2cSJim Jagielski }
208*b1cdbd2cSJim Jagielski 
209*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
Store(SvStream & rStream,sal_uInt16) const210*b1cdbd2cSJim Jagielski SvStream& SfxPoolItem::Store(SvStream &rStream, sal_uInt16 ) const
211*b1cdbd2cSJim Jagielski {
212*b1cdbd2cSJim Jagielski 	DBG_CHKTHIS(SfxPoolItem, 0);
213*b1cdbd2cSJim Jagielski 	return rStream;
214*b1cdbd2cSJim Jagielski }
215*b1cdbd2cSJim Jagielski 
216*b1cdbd2cSJim Jagielski //============================================================================
217*b1cdbd2cSJim Jagielski // static
readByteString(SvStream & rStream,UniString & rString)218*b1cdbd2cSJim Jagielski bool SfxPoolItem::readByteString(SvStream & rStream, UniString & rString)
219*b1cdbd2cSJim Jagielski {
220*b1cdbd2cSJim Jagielski 	rStream.ReadByteString(rString);
221*b1cdbd2cSJim Jagielski 	return rStream.GetError() == ERRCODE_NONE;
222*b1cdbd2cSJim Jagielski }
223*b1cdbd2cSJim Jagielski 
224*b1cdbd2cSJim Jagielski //============================================================================
225*b1cdbd2cSJim Jagielski // static
writeByteString(SvStream & rStream,UniString const & rString)226*b1cdbd2cSJim Jagielski void SfxPoolItem::writeByteString(SvStream & rStream,
227*b1cdbd2cSJim Jagielski 								  UniString const & rString)
228*b1cdbd2cSJim Jagielski {
229*b1cdbd2cSJim Jagielski 	rStream.WriteByteString(rString);
230*b1cdbd2cSJim Jagielski }
231*b1cdbd2cSJim Jagielski 
232*b1cdbd2cSJim Jagielski //============================================================================
233*b1cdbd2cSJim Jagielski // static
readUnicodeString(SvStream & rStream,UniString & rString,bool bUnicode)234*b1cdbd2cSJim Jagielski bool SfxPoolItem::readUnicodeString(SvStream & rStream, UniString & rString,
235*b1cdbd2cSJim Jagielski 									bool bUnicode)
236*b1cdbd2cSJim Jagielski {
237*b1cdbd2cSJim Jagielski 	rStream.ReadByteString(rString,
238*b1cdbd2cSJim Jagielski 						   bUnicode ? RTL_TEXTENCODING_UCS2 :
239*b1cdbd2cSJim Jagielski 						              rStream.GetStreamCharSet());
240*b1cdbd2cSJim Jagielski 	return rStream.GetError() == ERRCODE_NONE;
241*b1cdbd2cSJim Jagielski }
242*b1cdbd2cSJim Jagielski 
243*b1cdbd2cSJim Jagielski //============================================================================
244*b1cdbd2cSJim Jagielski // static
writeUnicodeString(SvStream & rStream,UniString const & rString)245*b1cdbd2cSJim Jagielski void SfxPoolItem::writeUnicodeString(SvStream & rStream,
246*b1cdbd2cSJim Jagielski 									 UniString const & rString)
247*b1cdbd2cSJim Jagielski {
248*b1cdbd2cSJim Jagielski 	rStream.WriteByteString(rString, RTL_TEXTENCODING_UCS2);
249*b1cdbd2cSJim Jagielski }
250*b1cdbd2cSJim Jagielski 
251*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
GetPresentation(SfxItemPresentation,SfxMapUnit,SfxMapUnit,XubString &,const IntlWrapper *) const252*b1cdbd2cSJim Jagielski SfxItemPresentation SfxPoolItem::GetPresentation
253*b1cdbd2cSJim Jagielski (
254*b1cdbd2cSJim Jagielski 	SfxItemPresentation	/*ePresentation*/,       // IN:  wie formatiert werden soll
255*b1cdbd2cSJim Jagielski 	SfxMapUnit			/*eCoreMetric*/,		 // IN:  Ma\seinheit des SfxPoolItems
256*b1cdbd2cSJim Jagielski 	SfxMapUnit			/*ePresentationMetric*/, // IN:  Wunsch-Ma\einheit der Darstellung
257*b1cdbd2cSJim Jagielski 	XubString&			/*rText*/,				 // OUT: textuelle Darstellung
258*b1cdbd2cSJim Jagielski     const IntlWrapper *
259*b1cdbd2cSJim Jagielski ) 	const
260*b1cdbd2cSJim Jagielski 
261*b1cdbd2cSJim Jagielski /*	[Beschreibung]
262*b1cdbd2cSJim Jagielski 
263*b1cdbd2cSJim Jagielski 	"Uber diese virtuelle Methode kann von den SfxPoolItem-Subklassen
264*b1cdbd2cSJim Jagielski 	eine textuelle Datstellung des Wertes erhalten werden. Sie sollte
265*b1cdbd2cSJim Jagielski 	von allen UI-relevanten SfxPoolItem-Subklassen "uberladen werden.
266*b1cdbd2cSJim Jagielski 
267*b1cdbd2cSJim Jagielski 	Da die Ma\seinheit des Wertes im SfxItemPool nur "uber
268*b1cdbd2cSJim Jagielski 	<SfxItemPool::GetMetric(sal_uInt16)const> erfragbar ist, und nicht etwa
269*b1cdbd2cSJim Jagielski 	in der SfxPoolItem-Instanz oder -Subklasse  verf"ugbar ist, wird die
270*b1cdbd2cSJim Jagielski 	eigene Ma\seinheit als 'eCoreMetric' "ubergeben.
271*b1cdbd2cSJim Jagielski 
272*b1cdbd2cSJim Jagielski 	Die darzustellende Ma\seinheit wird als 'ePresentationMetric'
273*b1cdbd2cSJim Jagielski 	"ubergeben.
274*b1cdbd2cSJim Jagielski 
275*b1cdbd2cSJim Jagielski 
276*b1cdbd2cSJim Jagielski 	[R"uckgabewert]
277*b1cdbd2cSJim Jagielski 
278*b1cdbd2cSJim Jagielski 	SfxItemPresentation		SFX_ITEM_PRESENTATION_NONE
279*b1cdbd2cSJim Jagielski 							es konnte keine Text-Darstellung erzeugt werden
280*b1cdbd2cSJim Jagielski 
281*b1cdbd2cSJim Jagielski 							SFX_ITEM_PRESENTATION_NAMELESS
282*b1cdbd2cSJim Jagielski 							es konnte eine Text-Darstellung (ggf. mit
283*b1cdbd2cSJim Jagielski 							Ma\seinheit) erzeugt werden, die jedoch keine
284*b1cdbd2cSJim Jagielski 							semantische Bedeutung enth"alt
285*b1cdbd2cSJim Jagielski 
286*b1cdbd2cSJim Jagielski 							SFX_ITEM_PRESENTATION_COMPLETE
287*b1cdbd2cSJim Jagielski 							es konnte eine komplette Text-Darstellung mit
288*b1cdbd2cSJim Jagielski 							semantischer Bedeutung (und ggf. Ma\seinheit)
289*b1cdbd2cSJim Jagielski 							erzeugt werden
290*b1cdbd2cSJim Jagielski 
291*b1cdbd2cSJim Jagielski 
292*b1cdbd2cSJim Jagielski 	[Beispiele]
293*b1cdbd2cSJim Jagielski 
294*b1cdbd2cSJim Jagielski 	pSvxFontItem->GetPresentation( SFX_PRESENTATION_NAMELESS, ... )
295*b1cdbd2cSJim Jagielski 		"12pt" mit return SFX_ITEM_PRESENTATION_NAMELESS
296*b1cdbd2cSJim Jagielski 
297*b1cdbd2cSJim Jagielski 	pSvxColorItem->GetPresentation( SFX_PRESENTATION_COMPLETE, ... )
298*b1cdbd2cSJim Jagielski 		"rot" mit return SFX_ITEM_PRESENTATION_NAMELESS
299*b1cdbd2cSJim Jagielski 		(das das SvxColorItem nicht wei\s, was f"ur eine Farbe es darstellt,
300*b1cdbd2cSJim Jagielski 		kann es keinen Namen angeben, was durch den Returnwert mitgeteilt wird.
301*b1cdbd2cSJim Jagielski 
302*b1cdbd2cSJim Jagielski 	pSvxBorderItem->GetPresentation( SFX_PRESENTATION_COMPLETE, ... )
303*b1cdbd2cSJim Jagielski 		"1cm oberer Rand, 2cm linker Rand, 0,2cm unterer Rand, ..."
304*b1cdbd2cSJim Jagielski */
305*b1cdbd2cSJim Jagielski 
306*b1cdbd2cSJim Jagielski {
307*b1cdbd2cSJim Jagielski 	return SFX_ITEM_PRESENTATION_NONE;
308*b1cdbd2cSJim Jagielski }
309*b1cdbd2cSJim Jagielski 
310*b1cdbd2cSJim Jagielski // SfxVoidItem ------------------------------------------------------------
SfxVoidItem(sal_uInt16 which)311*b1cdbd2cSJim Jagielski SfxVoidItem::SfxVoidItem( sal_uInt16 which ):
312*b1cdbd2cSJim Jagielski 	SfxPoolItem(which)
313*b1cdbd2cSJim Jagielski {
314*b1cdbd2cSJim Jagielski 	DBG_CTOR(SfxVoidItem, 0);
315*b1cdbd2cSJim Jagielski }
316*b1cdbd2cSJim Jagielski 
317*b1cdbd2cSJim Jagielski // SfxVoidItem ------------------------------------------------------------
SfxVoidItem(const SfxVoidItem & rCopy)318*b1cdbd2cSJim Jagielski SfxVoidItem::SfxVoidItem( const SfxVoidItem& rCopy):
319*b1cdbd2cSJim Jagielski 	SfxPoolItem(rCopy)
320*b1cdbd2cSJim Jagielski {
321*b1cdbd2cSJim Jagielski 	DBG_CTOR(SfxVoidItem, 0);
322*b1cdbd2cSJim Jagielski }
323*b1cdbd2cSJim Jagielski 
324*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
operator ==(const SfxPoolItem & rCmp) const325*b1cdbd2cSJim Jagielski int SfxVoidItem::operator==( const SfxPoolItem&
326*b1cdbd2cSJim Jagielski #ifdef DBG_UTIL
327*b1cdbd2cSJim Jagielski rCmp
328*b1cdbd2cSJim Jagielski #endif
329*b1cdbd2cSJim Jagielski ) const
330*b1cdbd2cSJim Jagielski {
331*b1cdbd2cSJim Jagielski 	DBG_CHKTHIS(SfxVoidItem, 0);
332*b1cdbd2cSJim Jagielski 	DBG_ASSERT( SfxPoolItem::operator==( rCmp ), "unequal type" );
333*b1cdbd2cSJim Jagielski 	return sal_True;
334*b1cdbd2cSJim Jagielski }
335*b1cdbd2cSJim Jagielski 
336*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
GetPresentation(SfxItemPresentation,SfxMapUnit,SfxMapUnit,XubString & rText,const IntlWrapper *) const337*b1cdbd2cSJim Jagielski SfxItemPresentation SfxVoidItem::GetPresentation
338*b1cdbd2cSJim Jagielski (
339*b1cdbd2cSJim Jagielski 	SfxItemPresentation 	/*ePresentation*/,
340*b1cdbd2cSJim Jagielski 	SfxMapUnit				/*eCoreMetric*/,
341*b1cdbd2cSJim Jagielski 	SfxMapUnit				/*ePresentationMetric*/,
342*b1cdbd2cSJim Jagielski 	XubString& 				rText,
343*b1cdbd2cSJim Jagielski     const IntlWrapper *
344*b1cdbd2cSJim Jagielski )	const
345*b1cdbd2cSJim Jagielski {
346*b1cdbd2cSJim Jagielski 	DBG_CHKTHIS(SfxVoidItem, 0);
347*b1cdbd2cSJim Jagielski 	rText.AssignAscii(RTL_CONSTASCII_STRINGPARAM("Void"));
348*b1cdbd2cSJim Jagielski 	return SFX_ITEM_PRESENTATION_NAMELESS;
349*b1cdbd2cSJim Jagielski }
350*b1cdbd2cSJim Jagielski 
351*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
Clone(SfxItemPool *) const352*b1cdbd2cSJim Jagielski SfxPoolItem* SfxVoidItem::Clone(SfxItemPool *) const
353*b1cdbd2cSJim Jagielski {
354*b1cdbd2cSJim Jagielski 	DBG_CHKTHIS(SfxVoidItem, 0);
355*b1cdbd2cSJim Jagielski 	return new SfxVoidItem(*this);
356*b1cdbd2cSJim Jagielski }
357*b1cdbd2cSJim Jagielski 
358*b1cdbd2cSJim Jagielski // SfxInvalidItem ---------------------------------------------------------
359*b1cdbd2cSJim Jagielski #if 0  /* @@@ NOT USED @@@ */
360*b1cdbd2cSJim Jagielski SfxInvalidItem::SfxInvalidItem( sal_uInt16 nWhich, const SfxPoolItem &rDefault ):
361*b1cdbd2cSJim Jagielski 	SfxPoolItem(nWhich),
362*b1cdbd2cSJim Jagielski 	pDefaultItem(&rDefault)
363*b1cdbd2cSJim Jagielski {
364*b1cdbd2cSJim Jagielski 	DBG_CTOR(SfxInvalidItem, 0);
365*b1cdbd2cSJim Jagielski }
366*b1cdbd2cSJim Jagielski 
367*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
368*b1cdbd2cSJim Jagielski SfxInvalidItem::SfxInvalidItem( const SfxInvalidItem& rCopy):
369*b1cdbd2cSJim Jagielski 	SfxPoolItem(rCopy),
370*b1cdbd2cSJim Jagielski 	pDefaultItem(rCopy.pDefaultItem)
371*b1cdbd2cSJim Jagielski {
372*b1cdbd2cSJim Jagielski 	DBG_CTOR(SfxInvalidItem, 0);
373*b1cdbd2cSJim Jagielski 	//! pDefaultItem->ReleaseRef?
374*b1cdbd2cSJim Jagielski }
375*b1cdbd2cSJim Jagielski 
376*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
377*b1cdbd2cSJim Jagielski SfxInvalidItem::~SfxInvalidItem()
378*b1cdbd2cSJim Jagielski {
379*b1cdbd2cSJim Jagielski 	DBG_DTOR(SfxInvalidItem, 0);
380*b1cdbd2cSJim Jagielski }
381*b1cdbd2cSJim Jagielski 
382*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
383*b1cdbd2cSJim Jagielski int SfxInvalidItem::operator==( const SfxPoolItem& rCmp) const
384*b1cdbd2cSJim Jagielski {
385*b1cdbd2cSJim Jagielski 	DBG_CHKTHIS(SfxInvalidItem, 0);
386*b1cdbd2cSJim Jagielski 	DBG_ASSERT( SfxPoolItem::operator==(rCmp), "unequal type" );
387*b1cdbd2cSJim Jagielski 	return *pDefaultItem == *((SfxInvalidItem&)rCmp).pDefaultItem;
388*b1cdbd2cSJim Jagielski }
389*b1cdbd2cSJim Jagielski 
390*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
391*b1cdbd2cSJim Jagielski SfxItemPresentation SfxInvalidItem::GetPresentation
392*b1cdbd2cSJim Jagielski (
393*b1cdbd2cSJim Jagielski 	SfxItemPresentation 	ePresentation,
394*b1cdbd2cSJim Jagielski 	SfxMapUnit				eCoreMetric,
395*b1cdbd2cSJim Jagielski 	SfxMapUnit				ePresentationMetric,
396*b1cdbd2cSJim Jagielski 	XubString& 				rText,
397*b1cdbd2cSJim Jagielski     const IntlWrapper *
398*b1cdbd2cSJim Jagielski )	const
399*b1cdbd2cSJim Jagielski {
400*b1cdbd2cSJim Jagielski 	DBG_CHKTHIS(SfxInvalidItem, 0);
401*b1cdbd2cSJim Jagielski 	rText.AssignAscii(RTL_CONSTASCII_STRINGPARAM("Invalid"));
402*b1cdbd2cSJim Jagielski 	return SFX_ITEM_PRESENTATION_NAMELESS;
403*b1cdbd2cSJim Jagielski }
404*b1cdbd2cSJim Jagielski 
405*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
406*b1cdbd2cSJim Jagielski SfxPoolItem* SfxInvalidItem::Clone(SfxItemPool *) const
407*b1cdbd2cSJim Jagielski {
408*b1cdbd2cSJim Jagielski 	DBG_CHKTHIS(SfxInvalidItem, 0);
409*b1cdbd2cSJim Jagielski 	return new SfxInvalidItem(*this);
410*b1cdbd2cSJim Jagielski }
411*b1cdbd2cSJim Jagielski 
412*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
413*b1cdbd2cSJim Jagielski SfxPoolItem* SfxInvalidItem::Create(SvStream &, sal_uInt16 nVersion) const
414*b1cdbd2cSJim Jagielski {
415*b1cdbd2cSJim Jagielski 	DBG_CHKTHIS(SfxInvalidItem, 0);
416*b1cdbd2cSJim Jagielski 	DBG_ERROR("SfxInvalidItem::Create() ist sinnlos");
417*b1cdbd2cSJim Jagielski 	return Clone();
418*b1cdbd2cSJim Jagielski }
419*b1cdbd2cSJim Jagielski 
420*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
421*b1cdbd2cSJim Jagielski SvStream& SfxInvalidItem::Store(SvStream &rStream, sal_uInt16 nItemVersion ) const
422*b1cdbd2cSJim Jagielski {
423*b1cdbd2cSJim Jagielski 	DBG_CHKTHIS(SfxInvalidItem, 0);
424*b1cdbd2cSJim Jagielski 	DBG_ERROR("SfxInvalidItem::Store() ist sinnlos");
425*b1cdbd2cSJim Jagielski 	return rStream;
426*b1cdbd2cSJim Jagielski }
427*b1cdbd2cSJim Jagielski #endif /* @@@ NOT USED @@@ */
428*b1cdbd2cSJim Jagielski 
429*b1cdbd2cSJim Jagielski // SfxItemHandle ----------------------------------------------------------
SfxItemHandle(SfxPoolItem & rItem)430*b1cdbd2cSJim Jagielski SfxItemHandle::SfxItemHandle(SfxPoolItem &rItem):
431*b1cdbd2cSJim Jagielski 	pRef(new sal_uInt16(1)),
432*b1cdbd2cSJim Jagielski 	pItem(rItem.Clone(0))
433*b1cdbd2cSJim Jagielski {
434*b1cdbd2cSJim Jagielski 	DBG_CTOR(SfxItemHandle, 0);
435*b1cdbd2cSJim Jagielski }
436*b1cdbd2cSJim Jagielski 
437*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
SfxItemHandle(const SfxItemHandle & rCopy)438*b1cdbd2cSJim Jagielski SfxItemHandle::SfxItemHandle(const SfxItemHandle &rCopy):
439*b1cdbd2cSJim Jagielski 	pRef(rCopy.pRef),
440*b1cdbd2cSJim Jagielski 	pItem(rCopy.pItem)
441*b1cdbd2cSJim Jagielski {
442*b1cdbd2cSJim Jagielski 	DBG_CTOR(SfxItemHandle, 0);
443*b1cdbd2cSJim Jagielski 	++(*pRef);
444*b1cdbd2cSJim Jagielski }
445*b1cdbd2cSJim Jagielski 
446*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
operator =(const SfxItemHandle & rCopy)447*b1cdbd2cSJim Jagielski const SfxItemHandle &SfxItemHandle::operator=(const SfxItemHandle &rCopy)
448*b1cdbd2cSJim Jagielski {
449*b1cdbd2cSJim Jagielski 	DBG_CHKTHIS(SfxItemHandle, 0);
450*b1cdbd2cSJim Jagielski 	if(&rCopy == this || pItem == rCopy.pItem)
451*b1cdbd2cSJim Jagielski 		return *this;
452*b1cdbd2cSJim Jagielski 	--(*pRef);
453*b1cdbd2cSJim Jagielski 	if(!(*pRef))
454*b1cdbd2cSJim Jagielski 	{
455*b1cdbd2cSJim Jagielski 		delete pItem;
456*b1cdbd2cSJim Jagielski 		pItem = 0;
457*b1cdbd2cSJim Jagielski 	}
458*b1cdbd2cSJim Jagielski 	pRef = rCopy.pRef;
459*b1cdbd2cSJim Jagielski 	++(*pRef);
460*b1cdbd2cSJim Jagielski 	pItem = rCopy.pItem;
461*b1cdbd2cSJim Jagielski 	return *this;
462*b1cdbd2cSJim Jagielski }
463*b1cdbd2cSJim Jagielski 
464*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
~SfxItemHandle()465*b1cdbd2cSJim Jagielski SfxItemHandle::~SfxItemHandle()
466*b1cdbd2cSJim Jagielski {
467*b1cdbd2cSJim Jagielski 	DBG_DTOR(SfxItemHandle, 0);
468*b1cdbd2cSJim Jagielski 	--(*pRef);
469*b1cdbd2cSJim Jagielski 	if(!(*pRef)) {
470*b1cdbd2cSJim Jagielski 		delete pRef; pRef = 0;
471*b1cdbd2cSJim Jagielski 		delete pItem; pItem = 0;
472*b1cdbd2cSJim Jagielski 	}
473*b1cdbd2cSJim Jagielski }
474*b1cdbd2cSJim Jagielski 
475*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
ScaleMetrics(long,long)476*b1cdbd2cSJim Jagielski int SfxPoolItem::ScaleMetrics( long /*lMult*/, long /*lDiv*/ )
477*b1cdbd2cSJim Jagielski {
478*b1cdbd2cSJim Jagielski 	return 0;
479*b1cdbd2cSJim Jagielski }
480*b1cdbd2cSJim Jagielski 
481*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
HasMetrics() const482*b1cdbd2cSJim Jagielski int SfxPoolItem::HasMetrics() const
483*b1cdbd2cSJim Jagielski {
484*b1cdbd2cSJim Jagielski 	return 0;
485*b1cdbd2cSJim Jagielski }
486*b1cdbd2cSJim Jagielski 
487*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
488*b1cdbd2cSJim Jagielski #if 0  /* @@@ NOT USED @@@ */
489*b1cdbd2cSJim Jagielski void SfxPoolItem::GetVersion() const
490*b1cdbd2cSJim Jagielski {
491*b1cdbd2cSJim Jagielski 	DBG_ERROR( "dummy called" );
492*b1cdbd2cSJim Jagielski }
493*b1cdbd2cSJim Jagielski 
494*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
495*b1cdbd2cSJim Jagielski void SfxPoolItem::Store(SvStream &rStream) const
496*b1cdbd2cSJim Jagielski {
497*b1cdbd2cSJim Jagielski 	DBG_ERROR( "dummy called" );
498*b1cdbd2cSJim Jagielski }
499*b1cdbd2cSJim Jagielski #endif /* @@@ NOT USED @@@ */
500*b1cdbd2cSJim Jagielski 
501*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
502*b1cdbd2cSJim Jagielski 
QueryValue(com::sun::star::uno::Any &,sal_uInt8) const503*b1cdbd2cSJim Jagielski sal_Bool SfxPoolItem::QueryValue( com::sun::star::uno::Any&, sal_uInt8 ) const
504*b1cdbd2cSJim Jagielski {
505*b1cdbd2cSJim Jagielski 	DBG_ERROR("There is no implementation for QueryValue for this item!");
506*b1cdbd2cSJim Jagielski 	return sal_False;
507*b1cdbd2cSJim Jagielski }
508*b1cdbd2cSJim Jagielski 
509*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
510*b1cdbd2cSJim Jagielski 
PutValue(const com::sun::star::uno::Any &,sal_uInt8)511*b1cdbd2cSJim Jagielski sal_Bool SfxPoolItem::PutValue( const com::sun::star::uno::Any&, sal_uInt8 )
512*b1cdbd2cSJim Jagielski {
513*b1cdbd2cSJim Jagielski 	DBG_ERROR("There is no implementation for PutValue for this item!");
514*b1cdbd2cSJim Jagielski 	return sal_False;
515*b1cdbd2cSJim Jagielski }
516*b1cdbd2cSJim Jagielski 
~SfxVoidItem()517*b1cdbd2cSJim Jagielski SfxVoidItem::~SfxVoidItem()
518*b1cdbd2cSJim Jagielski {
519*b1cdbd2cSJim Jagielski 	DBG_DTOR(SfxVoidItem, 0);
520*b1cdbd2cSJim Jagielski }
521