xref: /aoo4110/main/sw/source/core/graphic/grfatr.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_sw.hxx"
26*b1cdbd2cSJim Jagielski 
27*b1cdbd2cSJim Jagielski 
28*b1cdbd2cSJim Jagielski #include <com/sun/star/text/RelOrientation.hpp>
29*b1cdbd2cSJim Jagielski #include <com/sun/star/text/VertOrientation.hpp>
30*b1cdbd2cSJim Jagielski #include <com/sun/star/text/HorizontalAdjust.hpp>
31*b1cdbd2cSJim Jagielski #include <com/sun/star/text/DocumentStatistic.hpp>
32*b1cdbd2cSJim Jagielski #include <com/sun/star/text/HoriOrientation.hpp>
33*b1cdbd2cSJim Jagielski #include <com/sun/star/text/HoriOrientationFormat.hpp>
34*b1cdbd2cSJim Jagielski #include <com/sun/star/text/NotePrintMode.hpp>
35*b1cdbd2cSJim Jagielski #include <com/sun/star/text/SizeType.hpp>
36*b1cdbd2cSJim Jagielski #include <com/sun/star/text/VertOrientationFormat.hpp>
37*b1cdbd2cSJim Jagielski #include <com/sun/star/text/WrapTextMode.hpp>
38*b1cdbd2cSJim Jagielski #include <com/sun/star/text/GraphicCrop.hpp>
39*b1cdbd2cSJim Jagielski #include <com/sun/star/text/XTextGraphicObjectsSupplier.hpp>
40*b1cdbd2cSJim Jagielski #include <com/sun/star/drawing/ColorMode.hpp>
41*b1cdbd2cSJim Jagielski #include <svtools/grfmgr.hxx>
42*b1cdbd2cSJim Jagielski #include <swtypes.hxx>
43*b1cdbd2cSJim Jagielski #include <grfatr.hxx>
44*b1cdbd2cSJim Jagielski #include <swunohelper.hxx>
45*b1cdbd2cSJim Jagielski 
46*b1cdbd2cSJim Jagielski #ifndef _CMDID_H
47*b1cdbd2cSJim Jagielski #include <cmdid.h>
48*b1cdbd2cSJim Jagielski #endif
49*b1cdbd2cSJim Jagielski #ifndef _UNOMID_H
50*b1cdbd2cSJim Jagielski #include <unomid.h>
51*b1cdbd2cSJim Jagielski #endif
52*b1cdbd2cSJim Jagielski 
53*b1cdbd2cSJim Jagielski using namespace ::com::sun::star;
54*b1cdbd2cSJim Jagielski 
TYPEINIT1_AUTOFACTORY(SwCropGrf,SfxPoolItem)55*b1cdbd2cSJim Jagielski TYPEINIT1_AUTOFACTORY(SwCropGrf, SfxPoolItem)
56*b1cdbd2cSJim Jagielski TYPEINIT1_AUTOFACTORY(SwGammaGrf, SfxPoolItem)
57*b1cdbd2cSJim Jagielski 
58*b1cdbd2cSJim Jagielski /******************************************************************************
59*b1cdbd2cSJim Jagielski  *	Implementierung		class SwMirrorGrf
60*b1cdbd2cSJim Jagielski  ******************************************************************************/
61*b1cdbd2cSJim Jagielski 
62*b1cdbd2cSJim Jagielski SfxPoolItem* SwMirrorGrf::Clone( SfxItemPool* ) const
63*b1cdbd2cSJim Jagielski {
64*b1cdbd2cSJim Jagielski 	return new SwMirrorGrf( *this );
65*b1cdbd2cSJim Jagielski }
66*b1cdbd2cSJim Jagielski 
GetValueCount() const67*b1cdbd2cSJim Jagielski sal_uInt16 SwMirrorGrf::GetValueCount() const
68*b1cdbd2cSJim Jagielski {
69*b1cdbd2cSJim Jagielski     return RES_MIRROR_GRAPH_END - RES_MIRROR_GRAPH_BEGIN;
70*b1cdbd2cSJim Jagielski }
71*b1cdbd2cSJim Jagielski 
operator ==(const SfxPoolItem & rItem) const72*b1cdbd2cSJim Jagielski int SwMirrorGrf::operator==( const SfxPoolItem& rItem) const
73*b1cdbd2cSJim Jagielski {
74*b1cdbd2cSJim Jagielski 	return SfxEnumItem::operator==(rItem) &&
75*b1cdbd2cSJim Jagielski 			((SwMirrorGrf&)rItem).IsGrfToggle() == IsGrfToggle();
76*b1cdbd2cSJim Jagielski }
77*b1cdbd2cSJim Jagielski 
lcl_IsHoriOnEvenPages(int nEnum,sal_Bool bToggle)78*b1cdbd2cSJim Jagielski sal_Bool lcl_IsHoriOnEvenPages(int nEnum, sal_Bool bToggle)
79*b1cdbd2cSJim Jagielski {
80*b1cdbd2cSJim Jagielski     sal_Bool bEnum = nEnum == RES_MIRROR_GRAPH_VERT ||
81*b1cdbd2cSJim Jagielski                    nEnum == RES_MIRROR_GRAPH_BOTH;
82*b1cdbd2cSJim Jagielski 			return bEnum != bToggle;
83*b1cdbd2cSJim Jagielski }
lcl_IsHoriOnOddPages(int nEnum)84*b1cdbd2cSJim Jagielski sal_Bool lcl_IsHoriOnOddPages(int nEnum)
85*b1cdbd2cSJim Jagielski {
86*b1cdbd2cSJim Jagielski     sal_Bool bEnum = nEnum == RES_MIRROR_GRAPH_VERT ||
87*b1cdbd2cSJim Jagielski                    nEnum == RES_MIRROR_GRAPH_BOTH;
88*b1cdbd2cSJim Jagielski 			return bEnum;
89*b1cdbd2cSJim Jagielski }
QueryValue(uno::Any & rVal,sal_uInt8 nMemberId) const90*b1cdbd2cSJim Jagielski sal_Bool SwMirrorGrf::QueryValue( uno::Any& rVal, sal_uInt8 nMemberId ) const
91*b1cdbd2cSJim Jagielski {
92*b1cdbd2cSJim Jagielski 	sal_Bool bRet = sal_True,
93*b1cdbd2cSJim Jagielski 		 bVal;
94*b1cdbd2cSJim Jagielski 	// Vertikal und Horizontal sind mal getauscht worden!
95*b1cdbd2cSJim Jagielski     nMemberId &= ~CONVERT_TWIPS;
96*b1cdbd2cSJim Jagielski 	switch ( nMemberId )
97*b1cdbd2cSJim Jagielski 	{
98*b1cdbd2cSJim Jagielski 		case MID_MIRROR_HORZ_EVEN_PAGES:
99*b1cdbd2cSJim Jagielski 			bVal = lcl_IsHoriOnEvenPages(GetValue(), IsGrfToggle());
100*b1cdbd2cSJim Jagielski 		break;
101*b1cdbd2cSJim Jagielski 		case MID_MIRROR_HORZ_ODD_PAGES:
102*b1cdbd2cSJim Jagielski 			bVal = lcl_IsHoriOnOddPages(GetValue());
103*b1cdbd2cSJim Jagielski 		break;
104*b1cdbd2cSJim Jagielski 		case MID_MIRROR_VERT:
105*b1cdbd2cSJim Jagielski             bVal = GetValue() == RES_MIRROR_GRAPH_HOR ||
106*b1cdbd2cSJim Jagielski                    GetValue() == RES_MIRROR_GRAPH_BOTH;
107*b1cdbd2cSJim Jagielski 			break;
108*b1cdbd2cSJim Jagielski 		default:
109*b1cdbd2cSJim Jagielski 			ASSERT( !this, "unknown MemberId" );
110*b1cdbd2cSJim Jagielski 			bRet = sal_False;
111*b1cdbd2cSJim Jagielski 	}
112*b1cdbd2cSJim Jagielski 	rVal.setValue( &bVal, ::getBooleanCppuType() );
113*b1cdbd2cSJim Jagielski 	return bRet;
114*b1cdbd2cSJim Jagielski }
115*b1cdbd2cSJim Jagielski 
PutValue(const uno::Any & rVal,sal_uInt8 nMemberId)116*b1cdbd2cSJim Jagielski sal_Bool SwMirrorGrf::PutValue( const uno::Any& rVal, sal_uInt8 nMemberId )
117*b1cdbd2cSJim Jagielski {
118*b1cdbd2cSJim Jagielski 	sal_Bool bRet = sal_True;
119*b1cdbd2cSJim Jagielski 	sal_Bool bVal = *(sal_Bool*)rVal.getValue();
120*b1cdbd2cSJim Jagielski 	// Vertikal und Horizontal sind mal getauscht worden!
121*b1cdbd2cSJim Jagielski     nMemberId &= ~CONVERT_TWIPS;
122*b1cdbd2cSJim Jagielski 	switch ( nMemberId )
123*b1cdbd2cSJim Jagielski 	{
124*b1cdbd2cSJim Jagielski 		case MID_MIRROR_HORZ_EVEN_PAGES:
125*b1cdbd2cSJim Jagielski 		case MID_MIRROR_HORZ_ODD_PAGES:
126*b1cdbd2cSJim Jagielski 		{
127*b1cdbd2cSJim Jagielski             sal_Bool bIsVert = GetValue() == RES_MIRROR_GRAPH_HOR ||
128*b1cdbd2cSJim Jagielski                                 GetValue() == RES_MIRROR_GRAPH_BOTH;
129*b1cdbd2cSJim Jagielski 			sal_Bool bOnOddPages = nMemberId == MID_MIRROR_HORZ_EVEN_PAGES ?
130*b1cdbd2cSJim Jagielski 									lcl_IsHoriOnOddPages(GetValue()) : bVal;
131*b1cdbd2cSJim Jagielski 			sal_Bool bOnEvenPages = nMemberId == MID_MIRROR_HORZ_ODD_PAGES ?
132*b1cdbd2cSJim Jagielski 									   lcl_IsHoriOnEvenPages(GetValue(), IsGrfToggle()) : bVal;
133*b1cdbd2cSJim Jagielski             MirrorGraph nEnum = bOnOddPages ?
134*b1cdbd2cSJim Jagielski                     bIsVert ? RES_MIRROR_GRAPH_BOTH : RES_MIRROR_GRAPH_VERT :
135*b1cdbd2cSJim Jagielski                         bIsVert ? RES_MIRROR_GRAPH_HOR : RES_MIRROR_GRAPH_DONT;
136*b1cdbd2cSJim Jagielski 			sal_Bool bToggle = bOnOddPages != bOnEvenPages;
137*b1cdbd2cSJim Jagielski 			SetValue(static_cast<sal_uInt16>(nEnum));
138*b1cdbd2cSJim Jagielski 			SetGrfToggle( bToggle );
139*b1cdbd2cSJim Jagielski 		}
140*b1cdbd2cSJim Jagielski 		break;
141*b1cdbd2cSJim Jagielski 		case MID_MIRROR_VERT:
142*b1cdbd2cSJim Jagielski 			if ( bVal )
143*b1cdbd2cSJim Jagielski 			{
144*b1cdbd2cSJim Jagielski                 if ( GetValue() == RES_MIRROR_GRAPH_VERT )
145*b1cdbd2cSJim Jagielski                     SetValue( RES_MIRROR_GRAPH_BOTH );
146*b1cdbd2cSJim Jagielski                 else if ( GetValue() != RES_MIRROR_GRAPH_BOTH )
147*b1cdbd2cSJim Jagielski                     SetValue( RES_MIRROR_GRAPH_HOR );
148*b1cdbd2cSJim Jagielski 			}
149*b1cdbd2cSJim Jagielski 			else
150*b1cdbd2cSJim Jagielski 			{
151*b1cdbd2cSJim Jagielski                 if ( GetValue() == RES_MIRROR_GRAPH_BOTH )
152*b1cdbd2cSJim Jagielski                     SetValue( RES_MIRROR_GRAPH_VERT );
153*b1cdbd2cSJim Jagielski                 else if ( GetValue() == RES_MIRROR_GRAPH_HOR )
154*b1cdbd2cSJim Jagielski                     SetValue( RES_MIRROR_GRAPH_DONT );
155*b1cdbd2cSJim Jagielski 			}
156*b1cdbd2cSJim Jagielski 			break;
157*b1cdbd2cSJim Jagielski 		default:
158*b1cdbd2cSJim Jagielski 			ASSERT( !this, "unknown MemberId" );
159*b1cdbd2cSJim Jagielski 			bRet = sal_False;
160*b1cdbd2cSJim Jagielski 	}
161*b1cdbd2cSJim Jagielski 	return bRet;
162*b1cdbd2cSJim Jagielski }
163*b1cdbd2cSJim Jagielski 
164*b1cdbd2cSJim Jagielski 
165*b1cdbd2cSJim Jagielski /******************************************************************************
166*b1cdbd2cSJim Jagielski  *	Implementierung		class SwCropGrf
167*b1cdbd2cSJim Jagielski  ******************************************************************************/
168*b1cdbd2cSJim Jagielski 
SwCropGrf()169*b1cdbd2cSJim Jagielski SwCropGrf::SwCropGrf()
170*b1cdbd2cSJim Jagielski 	: SvxGrfCrop( RES_GRFATR_CROPGRF )
171*b1cdbd2cSJim Jagielski {}
172*b1cdbd2cSJim Jagielski 
SwCropGrf(sal_Int32 nL,sal_Int32 nR,sal_Int32 nT,sal_Int32 nB)173*b1cdbd2cSJim Jagielski SwCropGrf::SwCropGrf(sal_Int32 nL, sal_Int32 nR, sal_Int32 nT, sal_Int32 nB )
174*b1cdbd2cSJim Jagielski 	: SvxGrfCrop( nL, nR, nT, nB, RES_GRFATR_CROPGRF )
175*b1cdbd2cSJim Jagielski {}
176*b1cdbd2cSJim Jagielski 
Clone(SfxItemPool *) const177*b1cdbd2cSJim Jagielski SfxPoolItem* SwCropGrf::Clone( SfxItemPool* ) const
178*b1cdbd2cSJim Jagielski {
179*b1cdbd2cSJim Jagielski 	return new SwCropGrf( *this );
180*b1cdbd2cSJim Jagielski }
181*b1cdbd2cSJim Jagielski 
182*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------
183*b1cdbd2cSJim Jagielski 
Clone(SfxItemPool *) const184*b1cdbd2cSJim Jagielski SfxPoolItem* SwRotationGrf::Clone( SfxItemPool * ) const
185*b1cdbd2cSJim Jagielski {
186*b1cdbd2cSJim Jagielski 	return new SwRotationGrf( GetValue(), aUnrotatedSize );
187*b1cdbd2cSJim Jagielski }
188*b1cdbd2cSJim Jagielski 
189*b1cdbd2cSJim Jagielski 
operator ==(const SfxPoolItem & rCmp) const190*b1cdbd2cSJim Jagielski int	SwRotationGrf::operator==( const SfxPoolItem& rCmp ) const
191*b1cdbd2cSJim Jagielski {
192*b1cdbd2cSJim Jagielski 	return SfxUInt16Item::operator==( rCmp ) &&
193*b1cdbd2cSJim Jagielski 		GetUnrotatedSize() == ((SwRotationGrf&)rCmp).GetUnrotatedSize();
194*b1cdbd2cSJim Jagielski }
195*b1cdbd2cSJim Jagielski 
196*b1cdbd2cSJim Jagielski 
QueryValue(uno::Any & rVal,sal_uInt8) const197*b1cdbd2cSJim Jagielski sal_Bool SwRotationGrf::QueryValue( uno::Any& rVal, sal_uInt8 ) const
198*b1cdbd2cSJim Jagielski {
199*b1cdbd2cSJim Jagielski     // SfxUInt16Item::QueryValue returns sal_Int32 in Any now... (srx642w)
200*b1cdbd2cSJim Jagielski     // where we still want this to be a sal_Int16
201*b1cdbd2cSJim Jagielski     rVal <<= (sal_Int16)GetValue();
202*b1cdbd2cSJim Jagielski     return sal_True;
203*b1cdbd2cSJim Jagielski }
204*b1cdbd2cSJim Jagielski 
PutValue(const uno::Any & rVal,sal_uInt8)205*b1cdbd2cSJim Jagielski sal_Bool SwRotationGrf::PutValue( const uno::Any& rVal, sal_uInt8 )
206*b1cdbd2cSJim Jagielski {
207*b1cdbd2cSJim Jagielski     // SfxUInt16Item::QueryValue returns sal_Int32 in Any now... (srx642w)
208*b1cdbd2cSJim Jagielski     // where we still want this to be a sal_Int16
209*b1cdbd2cSJim Jagielski     sal_Int16 nValue = 0;
210*b1cdbd2cSJim Jagielski 	if (rVal >>= nValue)
211*b1cdbd2cSJim Jagielski 	{
212*b1cdbd2cSJim Jagielski         // sal_uInt16 argument needed
213*b1cdbd2cSJim Jagielski         SetValue( (sal_uInt16) nValue );
214*b1cdbd2cSJim Jagielski 		return sal_True;
215*b1cdbd2cSJim Jagielski 	}
216*b1cdbd2cSJim Jagielski 
217*b1cdbd2cSJim Jagielski     DBG_ERROR( "SwRotationGrf::PutValue - Wrong type!" );
218*b1cdbd2cSJim Jagielski 	return sal_False;
219*b1cdbd2cSJim Jagielski }
220*b1cdbd2cSJim Jagielski 
221*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------
222*b1cdbd2cSJim Jagielski 
Clone(SfxItemPool *) const223*b1cdbd2cSJim Jagielski SfxPoolItem* SwLuminanceGrf::Clone( SfxItemPool * ) const
224*b1cdbd2cSJim Jagielski {
225*b1cdbd2cSJim Jagielski 	return new SwLuminanceGrf( *this );
226*b1cdbd2cSJim Jagielski }
227*b1cdbd2cSJim Jagielski 
228*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------
229*b1cdbd2cSJim Jagielski 
Clone(SfxItemPool *) const230*b1cdbd2cSJim Jagielski SfxPoolItem* SwContrastGrf::Clone( SfxItemPool * ) const
231*b1cdbd2cSJim Jagielski {
232*b1cdbd2cSJim Jagielski 	return new SwContrastGrf( *this );
233*b1cdbd2cSJim Jagielski }
234*b1cdbd2cSJim Jagielski 
235*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------
236*b1cdbd2cSJim Jagielski 
Clone(SfxItemPool *) const237*b1cdbd2cSJim Jagielski SfxPoolItem* SwChannelRGrf::Clone( SfxItemPool * ) const
238*b1cdbd2cSJim Jagielski {
239*b1cdbd2cSJim Jagielski 	return new SwChannelRGrf( *this );
240*b1cdbd2cSJim Jagielski }
241*b1cdbd2cSJim Jagielski 
242*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------
243*b1cdbd2cSJim Jagielski 
Clone(SfxItemPool *) const244*b1cdbd2cSJim Jagielski SfxPoolItem* SwChannelGGrf::Clone( SfxItemPool * ) const
245*b1cdbd2cSJim Jagielski {
246*b1cdbd2cSJim Jagielski 	return new SwChannelGGrf( *this );
247*b1cdbd2cSJim Jagielski }
248*b1cdbd2cSJim Jagielski 
249*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------
250*b1cdbd2cSJim Jagielski 
Clone(SfxItemPool *) const251*b1cdbd2cSJim Jagielski SfxPoolItem* SwChannelBGrf::Clone( SfxItemPool * ) const
252*b1cdbd2cSJim Jagielski {
253*b1cdbd2cSJim Jagielski 	return new SwChannelBGrf( *this );
254*b1cdbd2cSJim Jagielski }
255*b1cdbd2cSJim Jagielski 
256*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------
257*b1cdbd2cSJim Jagielski 
Clone(SfxItemPool *) const258*b1cdbd2cSJim Jagielski SfxPoolItem* SwGammaGrf::Clone( SfxItemPool * ) const
259*b1cdbd2cSJim Jagielski {
260*b1cdbd2cSJim Jagielski 	return new SwGammaGrf( *this );
261*b1cdbd2cSJim Jagielski }
262*b1cdbd2cSJim Jagielski 
operator ==(const SfxPoolItem & rCmp) const263*b1cdbd2cSJim Jagielski int	SwGammaGrf::operator==( const SfxPoolItem& rCmp ) const
264*b1cdbd2cSJim Jagielski {
265*b1cdbd2cSJim Jagielski 	return SfxPoolItem::operator==( rCmp ) &&
266*b1cdbd2cSJim Jagielski 		nValue == ((SwGammaGrf&)rCmp).GetValue();
267*b1cdbd2cSJim Jagielski }
268*b1cdbd2cSJim Jagielski 
QueryValue(uno::Any & rVal,sal_uInt8) const269*b1cdbd2cSJim Jagielski sal_Bool SwGammaGrf::QueryValue( uno::Any& rVal, sal_uInt8 ) const
270*b1cdbd2cSJim Jagielski {
271*b1cdbd2cSJim Jagielski 	rVal <<= nValue;
272*b1cdbd2cSJim Jagielski 	return sal_True;
273*b1cdbd2cSJim Jagielski }
274*b1cdbd2cSJim Jagielski 
PutValue(const uno::Any & rVal,sal_uInt8)275*b1cdbd2cSJim Jagielski sal_Bool SwGammaGrf::PutValue( const uno::Any& rVal, sal_uInt8 )
276*b1cdbd2cSJim Jagielski {
277*b1cdbd2cSJim Jagielski 	return rVal >>= nValue;
278*b1cdbd2cSJim Jagielski }
279*b1cdbd2cSJim Jagielski 
280*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------
281*b1cdbd2cSJim Jagielski 
Clone(SfxItemPool *) const282*b1cdbd2cSJim Jagielski SfxPoolItem* SwInvertGrf::Clone( SfxItemPool * ) const
283*b1cdbd2cSJim Jagielski {
284*b1cdbd2cSJim Jagielski 	return new SwInvertGrf( *this );
285*b1cdbd2cSJim Jagielski }
286*b1cdbd2cSJim Jagielski 
287*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------
288*b1cdbd2cSJim Jagielski 
Clone(SfxItemPool *) const289*b1cdbd2cSJim Jagielski SfxPoolItem* SwTransparencyGrf::Clone( SfxItemPool * ) const
290*b1cdbd2cSJim Jagielski {
291*b1cdbd2cSJim Jagielski 	return new SwTransparencyGrf( *this );
292*b1cdbd2cSJim Jagielski }
293*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------
QueryValue(uno::Any & rVal,sal_uInt8) const294*b1cdbd2cSJim Jagielski sal_Bool SwTransparencyGrf::QueryValue( uno::Any& rVal,
295*b1cdbd2cSJim Jagielski 										sal_uInt8 ) const
296*b1cdbd2cSJim Jagielski {
297*b1cdbd2cSJim Jagielski 	DBG_ASSERT(ISA(SfxByteItem),"Put/QueryValue should be removed!");
298*b1cdbd2cSJim Jagielski 	sal_Int16 nRet = GetValue();
299*b1cdbd2cSJim Jagielski     DBG_ASSERT( 0 <= nRet && nRet <= 100, "value out of range" );
300*b1cdbd2cSJim Jagielski     rVal <<= nRet;
301*b1cdbd2cSJim Jagielski 	return sal_True;
302*b1cdbd2cSJim Jagielski }
303*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------
PutValue(const uno::Any & rVal,sal_uInt8)304*b1cdbd2cSJim Jagielski sal_Bool SwTransparencyGrf::PutValue( const uno::Any& rVal,
305*b1cdbd2cSJim Jagielski 										sal_uInt8 )
306*b1cdbd2cSJim Jagielski {
307*b1cdbd2cSJim Jagielski 	//temporary conversion until this is a SfxInt16Item!
308*b1cdbd2cSJim Jagielski 	DBG_ASSERT(ISA(SfxByteItem),"Put/QueryValue should be removed!");
309*b1cdbd2cSJim Jagielski 	sal_Int16 nVal = 0;
310*b1cdbd2cSJim Jagielski 	if(!(rVal >>= nVal) || nVal < -100 || nVal > 100)
311*b1cdbd2cSJim Jagielski 		return sal_False;
312*b1cdbd2cSJim Jagielski     if(nVal < 0)
313*b1cdbd2cSJim Jagielski     {
314*b1cdbd2cSJim Jagielski         // for compatibility with old documents
315*b1cdbd2cSJim Jagielski         // OD 05.11.2002 #104308# - introduce rounding as for SO 6.0 PP2
316*b1cdbd2cSJim Jagielski         // introduced by fix of #104293#.
317*b1cdbd2cSJim Jagielski         nVal = ( ( nVal * 128 ) - (99/2) ) / 100;
318*b1cdbd2cSJim Jagielski         nVal += 128;
319*b1cdbd2cSJim Jagielski     }
320*b1cdbd2cSJim Jagielski     DBG_ASSERT( 0 <= nVal && nVal <= 100, "value out of range" );
321*b1cdbd2cSJim Jagielski 	SetValue(static_cast<sal_uInt8>(nVal));
322*b1cdbd2cSJim Jagielski 	return sal_True;
323*b1cdbd2cSJim Jagielski }
324*b1cdbd2cSJim Jagielski 
325*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------
326*b1cdbd2cSJim Jagielski 
Clone(SfxItemPool *) const327*b1cdbd2cSJim Jagielski SfxPoolItem* SwDrawModeGrf::Clone( SfxItemPool * ) const
328*b1cdbd2cSJim Jagielski {
329*b1cdbd2cSJim Jagielski 	return new SwDrawModeGrf( *this );
330*b1cdbd2cSJim Jagielski }
331*b1cdbd2cSJim Jagielski 
GetValueCount() const332*b1cdbd2cSJim Jagielski sal_uInt16 SwDrawModeGrf::GetValueCount() const
333*b1cdbd2cSJim Jagielski {
334*b1cdbd2cSJim Jagielski 	// GRAPHICDRAWMODE_STANDARD = 0,
335*b1cdbd2cSJim Jagielski 	// GRAPHICDRAWMODE_GREYS = 1,
336*b1cdbd2cSJim Jagielski 	// GRAPHICDRAWMODE_MONO = 2,
337*b1cdbd2cSJim Jagielski 	// GRAPHICDRAWMODE_WATERMARK = 3
338*b1cdbd2cSJim Jagielski 	return GRAPHICDRAWMODE_WATERMARK + 1;
339*b1cdbd2cSJim Jagielski }
340*b1cdbd2cSJim Jagielski 
QueryValue(uno::Any & rVal,sal_uInt8) const341*b1cdbd2cSJim Jagielski sal_Bool SwDrawModeGrf::QueryValue( uno::Any& rVal,
342*b1cdbd2cSJim Jagielski 								sal_uInt8 ) const
343*b1cdbd2cSJim Jagielski {
344*b1cdbd2cSJim Jagielski 	drawing::ColorMode eRet = (drawing::ColorMode)GetEnumValue();
345*b1cdbd2cSJim Jagielski 	rVal <<= eRet;
346*b1cdbd2cSJim Jagielski 	return sal_True;
347*b1cdbd2cSJim Jagielski }
348*b1cdbd2cSJim Jagielski 
PutValue(const uno::Any & rVal,sal_uInt8)349*b1cdbd2cSJim Jagielski sal_Bool SwDrawModeGrf::PutValue( const uno::Any& rVal,
350*b1cdbd2cSJim Jagielski 								sal_uInt8 )
351*b1cdbd2cSJim Jagielski {
352*b1cdbd2cSJim Jagielski 	sal_Int32 eVal = SWUnoHelper::GetEnumAsInt32( rVal );
353*b1cdbd2cSJim Jagielski 	if(eVal >= 0 && eVal <= GRAPHICDRAWMODE_WATERMARK)
354*b1cdbd2cSJim Jagielski 	{
355*b1cdbd2cSJim Jagielski 		SetEnumValue((sal_uInt16)eVal);
356*b1cdbd2cSJim Jagielski 		return sal_True;
357*b1cdbd2cSJim Jagielski 	}
358*b1cdbd2cSJim Jagielski 	return sal_False;
359*b1cdbd2cSJim Jagielski }
360*b1cdbd2cSJim Jagielski 
361*b1cdbd2cSJim Jagielski 
362*b1cdbd2cSJim Jagielski 
363