xref: /AOO41X/main/svx/source/engine3d/float3d.cxx (revision cdf0e10c4e3984b49a9502b011690b615761d4a3)
1*cdf0e10cSrcweir /*************************************************************************
2*cdf0e10cSrcweir  *
3*cdf0e10cSrcweir  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4*cdf0e10cSrcweir  *
5*cdf0e10cSrcweir  * Copyright 2000, 2010 Oracle and/or its affiliates.
6*cdf0e10cSrcweir  *
7*cdf0e10cSrcweir  * OpenOffice.org - a multi-platform office productivity suite
8*cdf0e10cSrcweir  *
9*cdf0e10cSrcweir  * This file is part of OpenOffice.org.
10*cdf0e10cSrcweir  *
11*cdf0e10cSrcweir  * OpenOffice.org is free software: you can redistribute it and/or modify
12*cdf0e10cSrcweir  * it under the terms of the GNU Lesser General Public License version 3
13*cdf0e10cSrcweir  * only, as published by the Free Software Foundation.
14*cdf0e10cSrcweir  *
15*cdf0e10cSrcweir  * OpenOffice.org is distributed in the hope that it will be useful,
16*cdf0e10cSrcweir  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17*cdf0e10cSrcweir  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18*cdf0e10cSrcweir  * GNU Lesser General Public License version 3 for more details
19*cdf0e10cSrcweir  * (a copy is included in the LICENSE file that accompanied this code).
20*cdf0e10cSrcweir  *
21*cdf0e10cSrcweir  * You should have received a copy of the GNU Lesser General Public License
22*cdf0e10cSrcweir  * version 3 along with OpenOffice.org.  If not, see
23*cdf0e10cSrcweir  * <http://www.openoffice.org/license.html>
24*cdf0e10cSrcweir  * for a copy of the LGPLv3 License.
25*cdf0e10cSrcweir  *
26*cdf0e10cSrcweir  ************************************************************************/
27*cdf0e10cSrcweir 
28*cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
29*cdf0e10cSrcweir #include "precompiled_svx.hxx"
30*cdf0e10cSrcweir #include <sfx2/dispatch.hxx>
31*cdf0e10cSrcweir #include <sfx2/module.hxx>
32*cdf0e10cSrcweir #include <sfx2/viewfrm.hxx>
33*cdf0e10cSrcweir #include <svl/eitem.hxx>
34*cdf0e10cSrcweir #include <svtools/colrdlg.hxx>
35*cdf0e10cSrcweir #include <vcl/msgbox.hxx>
36*cdf0e10cSrcweir #include <sfx2/viewsh.hxx>
37*cdf0e10cSrcweir #include <tools/shl.hxx>
38*cdf0e10cSrcweir #include <svx/xflclit.hxx>
39*cdf0e10cSrcweir #include <svx/svdmodel.hxx>
40*cdf0e10cSrcweir #include <svx/globl3d.hxx>
41*cdf0e10cSrcweir #include <svx/view3d.hxx>
42*cdf0e10cSrcweir #include <svx/obj3d.hxx>
43*cdf0e10cSrcweir #include <svx/sphere3d.hxx>
44*cdf0e10cSrcweir #include <svx/scene3d.hxx>
45*cdf0e10cSrcweir #include <svx/camera3d.hxx>
46*cdf0e10cSrcweir #include <svx/fmmodel.hxx>
47*cdf0e10cSrcweir #include <svx/fmpage.hxx>
48*cdf0e10cSrcweir #include <svx/polysc3d.hxx>
49*cdf0e10cSrcweir #include <editeng/eeitem.hxx>
50*cdf0e10cSrcweir #include <svl/style.hxx>
51*cdf0e10cSrcweir #include <svx/dlgutil.hxx>
52*cdf0e10cSrcweir 
53*cdf0e10cSrcweir #include <svx/dlgutil.hxx>
54*cdf0e10cSrcweir #include <svx/dialmgr.hxx>
55*cdf0e10cSrcweir #include <svx/viewpt3d.hxx> // ProjectionType
56*cdf0e10cSrcweir 
57*cdf0e10cSrcweir #include <svx/svxids.hrc>
58*cdf0e10cSrcweir #include <svx/dialogs.hrc>
59*cdf0e10cSrcweir 
60*cdf0e10cSrcweir #include <editeng/colritem.hxx>
61*cdf0e10cSrcweir #include <svx/e3ditem.hxx>
62*cdf0e10cSrcweir 
63*cdf0e10cSrcweir #include <svx/gallery.hxx>
64*cdf0e10cSrcweir #define GALLERY_THEME "3D"
65*cdf0e10cSrcweir #include <svl/whiter.hxx>
66*cdf0e10cSrcweir 
67*cdf0e10cSrcweir #include <svx/float3d.hxx>
68*cdf0e10cSrcweir #include "float3d.hrc"
69*cdf0e10cSrcweir 
70*cdf0e10cSrcweir SFX_IMPL_DOCKINGWINDOW( Svx3DChildWindow, SID_3D_WIN )
71*cdf0e10cSrcweir 
72*cdf0e10cSrcweir struct Svx3DWinImpl
73*cdf0e10cSrcweir {
74*cdf0e10cSrcweir 	SfxItemPool*		pPool;
75*cdf0e10cSrcweir 	Image				maImgLightOnH;
76*cdf0e10cSrcweir 	Image				maImgLightOffH;
77*cdf0e10cSrcweir };
78*cdf0e10cSrcweir 
79*cdf0e10cSrcweir #define SETHCIMAGE(btn,res) \
80*cdf0e10cSrcweir { \
81*cdf0e10cSrcweir 	Bitmap aBmp( SVX_RES( res ) ); \
82*cdf0e10cSrcweir 	Image aImage( aBmp, COL_LIGHTMAGENTA ); \
83*cdf0e10cSrcweir 	btn.SetModeImage( aImage, BMP_COLOR_HIGHCONTRAST ); \
84*cdf0e10cSrcweir }
85*cdf0e10cSrcweir 
86*cdf0e10cSrcweir namespace {
87*cdf0e10cSrcweir     /** Get the dispatcher from the current view frame, or, if that is not
88*cdf0e10cSrcweir         available, from the given bindings.
89*cdf0e10cSrcweir         @param pBindings
90*cdf0e10cSrcweir             May be NULL.
91*cdf0e10cSrcweir         @returns NULL when both the current view frame is NULL and the given
92*cdf0e10cSrcweir             bindings are NULL.
93*cdf0e10cSrcweir     */
94*cdf0e10cSrcweir     SfxDispatcher* LocalGetDispatcher (const SfxBindings* pBindings)
95*cdf0e10cSrcweir     {
96*cdf0e10cSrcweir         SfxDispatcher* pDispatcher = NULL;
97*cdf0e10cSrcweir 
98*cdf0e10cSrcweir         if (SfxViewFrame::Current() != NULL)
99*cdf0e10cSrcweir             pDispatcher = SfxViewFrame::Current()->GetDispatcher();
100*cdf0e10cSrcweir         else if (pBindings != NULL)
101*cdf0e10cSrcweir             pDispatcher = pBindings->GetDispatcher();
102*cdf0e10cSrcweir 
103*cdf0e10cSrcweir         return pDispatcher;
104*cdf0e10cSrcweir     }
105*cdf0e10cSrcweir }
106*cdf0e10cSrcweir 
107*cdf0e10cSrcweir 
108*cdf0e10cSrcweir /*************************************************************************
109*cdf0e10cSrcweir |*	Svx3DWin - FloatingWindow
110*cdf0e10cSrcweir \************************************************************************/
111*cdf0e10cSrcweir __EXPORT Svx3DWin::Svx3DWin( SfxBindings* pInBindings,
112*cdf0e10cSrcweir 				SfxChildWindow *pCW, Window* pParent ) :
113*cdf0e10cSrcweir 		SfxDockingWindow    ( pInBindings, pCW, pParent,
114*cdf0e10cSrcweir 									SVX_RES( RID_SVXFLOAT_3D ) ),
115*cdf0e10cSrcweir 		aBtnGeo				( this, SVX_RES( BTN_GEO ) ),
116*cdf0e10cSrcweir 		aBtnRepresentation	( this, SVX_RES( BTN_REPRESENTATION ) ),
117*cdf0e10cSrcweir 		aBtnLight			( this, SVX_RES( BTN_LIGHT ) ),
118*cdf0e10cSrcweir 		aBtnTexture			( this, SVX_RES( BTN_TEXTURE ) ),
119*cdf0e10cSrcweir 		aBtnMaterial		( this, SVX_RES( BTN_MATERIAL ) ),
120*cdf0e10cSrcweir 		aBtnUpdate			( this, SVX_RES( BTN_UPDATE ) ),
121*cdf0e10cSrcweir 		aBtnAssign			( this, SVX_RES( BTN_ASSIGN ) ),
122*cdf0e10cSrcweir         aFLGeometrie       ( this, SVX_RES( FL_GEOMETRIE ) ),
123*cdf0e10cSrcweir 
124*cdf0e10cSrcweir 		// Geometrie
125*cdf0e10cSrcweir 		aFtPercentDiagonal	( this, SVX_RES( FT_PERCENT_DIAGONAL ) ),
126*cdf0e10cSrcweir 		aMtrPercentDiagonal	( this, SVX_RES( MTR_PERCENT_DIAGONAL ) ),
127*cdf0e10cSrcweir 		aFtBackscale		( this, SVX_RES( FT_BACKSCALE ) ),
128*cdf0e10cSrcweir 		aMtrBackscale		( this, SVX_RES( MTR_BACKSCALE ) ),
129*cdf0e10cSrcweir 		aFtEndAngle			( this, SVX_RES( FT_END_ANGLE ) ),
130*cdf0e10cSrcweir 		aMtrEndAngle		( this, SVX_RES( MTR_END_ANGLE ) ),
131*cdf0e10cSrcweir 		aFtDepth			( this, SVX_RES( FT_DEPTH ) ),
132*cdf0e10cSrcweir 		aMtrDepth			( this, SVX_RES( MTR_DEPTH ) ),
133*cdf0e10cSrcweir         aFLSegments        ( this, SVX_RES( FL_SEGMENTS ) ),
134*cdf0e10cSrcweir 
135*cdf0e10cSrcweir 		aFtHorizontal		( this, SVX_RES( FT_HORIZONTAL ) ),
136*cdf0e10cSrcweir 		aNumHorizontal		( this, SVX_RES( NUM_HORIZONTAL ) ),
137*cdf0e10cSrcweir 		aFtVertical			( this, SVX_RES( FT_VERTICAL ) ),
138*cdf0e10cSrcweir 		aNumVertical		( this, SVX_RES( NUM_VERTICAL ) ),
139*cdf0e10cSrcweir 
140*cdf0e10cSrcweir         aFLNormals         ( this, SVX_RES( FL_NORMALS ) ),
141*cdf0e10cSrcweir 		aBtnNormalsObj		( this, SVX_RES( BTN_NORMALS_OBJ ) ),
142*cdf0e10cSrcweir 		aBtnNormalsFlat		( this, SVX_RES( BTN_NORMALS_FLAT ) ),
143*cdf0e10cSrcweir 		aBtnNormalsSphere	( this, SVX_RES( BTN_NORMALS_SPHERE ) ),
144*cdf0e10cSrcweir 		aBtnNormalsInvert	( this, SVX_RES( BTN_NORMALS_INVERT ) ),
145*cdf0e10cSrcweir 		aBtnTwoSidedLighting( this, SVX_RES( BTN_TWO_SIDED_LIGHTING ) ),
146*cdf0e10cSrcweir 
147*cdf0e10cSrcweir 		aBtnDoubleSided   	( this, SVX_RES( BTN_DOUBLE_SIDED ) ),
148*cdf0e10cSrcweir 
149*cdf0e10cSrcweir 		// Darstellung
150*cdf0e10cSrcweir         aFLRepresentation  ( this, SVX_RES( FL_REPRESENTATION ) ),
151*cdf0e10cSrcweir 		aFtShademode		( this, SVX_RES( FT_SHADEMODE ) ),
152*cdf0e10cSrcweir 		aLbShademode		( this, SVX_RES( LB_SHADEMODE ) ),
153*cdf0e10cSrcweir         aFLShadow          ( this, SVX_RES( FL_SHADOW ) ),
154*cdf0e10cSrcweir 		aBtnShadow3d 		( this, SVX_RES( BTN_SHADOW_3D ) ),
155*cdf0e10cSrcweir 		aFtSlant      		( this, SVX_RES( FT_SLANT ) ),
156*cdf0e10cSrcweir 		aMtrSlant     		( this, SVX_RES( MTR_SLANT ) ),
157*cdf0e10cSrcweir 		aFtDistance			( this, SVX_RES( FT_DISTANCE ) ),
158*cdf0e10cSrcweir 		aMtrDistance		( this, SVX_RES( MTR_DISTANCE ) ),
159*cdf0e10cSrcweir 		aFtFocalLeng		( this, SVX_RES( FT_FOCAL_LENGTH ) ),
160*cdf0e10cSrcweir 		aMtrFocalLength		( this, SVX_RES( MTR_FOCAL_LENGTH ) ),
161*cdf0e10cSrcweir         aFLCamera          ( this, SVX_RES( FL_CAMERA ) ),
162*cdf0e10cSrcweir 		aFLLight           ( this, SVX_RES( FL_LIGHT ) ),
163*cdf0e10cSrcweir 
164*cdf0e10cSrcweir 		// Beleuchtung
165*cdf0e10cSrcweir 		aBtnLight1			( this, SVX_RES( BTN_LIGHT_1 ) ),
166*cdf0e10cSrcweir 		aBtnLight2			( this, SVX_RES( BTN_LIGHT_2 ) ),
167*cdf0e10cSrcweir 		aBtnLight3			( this, SVX_RES( BTN_LIGHT_3 ) ),
168*cdf0e10cSrcweir 		aBtnLight4			( this, SVX_RES( BTN_LIGHT_4 ) ),
169*cdf0e10cSrcweir 		aBtnLight5			( this, SVX_RES( BTN_LIGHT_5 ) ),
170*cdf0e10cSrcweir 		aBtnLight6			( this, SVX_RES( BTN_LIGHT_6 ) ),
171*cdf0e10cSrcweir 		aBtnLight7			( this, SVX_RES( BTN_LIGHT_7 ) ),
172*cdf0e10cSrcweir 		aBtnLight8			( this, SVX_RES( BTN_LIGHT_8 ) ),
173*cdf0e10cSrcweir         aFTLightsource     ( this, SVX_RES( FT_LIGHTSOURCE ) ),
174*cdf0e10cSrcweir 		aLbLight1			( this, SVX_RES( LB_LIGHT_1 ) ),
175*cdf0e10cSrcweir 		aLbLight2   		( this, SVX_RES( LB_LIGHT_2 ) ),
176*cdf0e10cSrcweir 		aLbLight3			( this, SVX_RES( LB_LIGHT_3 ) ),
177*cdf0e10cSrcweir 		aLbLight4			( this, SVX_RES( LB_LIGHT_4 ) ),
178*cdf0e10cSrcweir 		aLbLight5			( this, SVX_RES( LB_LIGHT_5 ) ),
179*cdf0e10cSrcweir 		aLbLight6			( this, SVX_RES( LB_LIGHT_6 ) ),
180*cdf0e10cSrcweir 		aLbLight7			( this, SVX_RES( LB_LIGHT_7 ) ),
181*cdf0e10cSrcweir 		aLbLight8			( this, SVX_RES( LB_LIGHT_8 ) ),
182*cdf0e10cSrcweir 
183*cdf0e10cSrcweir 		aBtnLightColor		( this, SVX_RES( BTN_LIGHT_COLOR ) ),
184*cdf0e10cSrcweir 
185*cdf0e10cSrcweir 		// #99694# Keyboard shortcuts activate the next control, so the
186*cdf0e10cSrcweir 		// order needed to be changed here
187*cdf0e10cSrcweir         aFTAmbientlight    ( this, SVX_RES( FT_AMBIENTLIGHT ) ),	// Text label
188*cdf0e10cSrcweir 		aLbAmbientlight		( this, SVX_RES( LB_AMBIENTLIGHT ) ),	// ListBox
189*cdf0e10cSrcweir 		aBtnAmbientColor	( this, SVX_RES( BTN_AMBIENT_COLOR ) ), // color button
190*cdf0e10cSrcweir         aFLTexture         ( this, SVX_RES( FL_TEXTURE ) ),
191*cdf0e10cSrcweir 
192*cdf0e10cSrcweir 		// Texturen
193*cdf0e10cSrcweir 		aFtTexKind			( this, SVX_RES( FT_TEX_KIND ) ),
194*cdf0e10cSrcweir 		aBtnTexLuminance	( this, SVX_RES( BTN_TEX_LUMINANCE ) ),
195*cdf0e10cSrcweir 		aBtnTexColor		( this, SVX_RES( BTN_TEX_COLOR ) ),
196*cdf0e10cSrcweir 		aFtTexMode			( this, SVX_RES( FT_TEX_MODE ) ),
197*cdf0e10cSrcweir 		aBtnTexReplace		( this, SVX_RES( BTN_TEX_REPLACE ) ),
198*cdf0e10cSrcweir 		aBtnTexModulate		( this, SVX_RES( BTN_TEX_MODULATE ) ),
199*cdf0e10cSrcweir 		aBtnTexBlend		( this, SVX_RES( BTN_TEX_BLEND ) ),
200*cdf0e10cSrcweir 		aFtTexProjectionX	( this, SVX_RES( FT_TEX_PROJECTION_X ) ),
201*cdf0e10cSrcweir 		aBtnTexObjectX		( this, SVX_RES( BTN_TEX_OBJECT_X ) ),
202*cdf0e10cSrcweir 		aBtnTexParallelX	( this, SVX_RES( BTN_TEX_PARALLEL_X ) ),
203*cdf0e10cSrcweir 		aBtnTexCircleX		( this, SVX_RES( BTN_TEX_CIRCLE_X ) ),
204*cdf0e10cSrcweir 		aFtTexProjectionY	( this, SVX_RES( FT_TEX_PROJECTION_Y ) ),
205*cdf0e10cSrcweir 		aBtnTexObjectY		( this, SVX_RES( BTN_TEX_OBJECT_Y ) ),
206*cdf0e10cSrcweir 		aBtnTexParallelY	( this, SVX_RES( BTN_TEX_PARALLEL_Y ) ),
207*cdf0e10cSrcweir 		aBtnTexCircleY		( this, SVX_RES( BTN_TEX_CIRCLE_Y ) ),
208*cdf0e10cSrcweir 		aFtTexFilter		( this, SVX_RES( FT_TEX_FILTER ) ),
209*cdf0e10cSrcweir 		aBtnTexFilter		( this, SVX_RES( BTN_TEX_FILTER ) ),
210*cdf0e10cSrcweir         aFLMaterial        ( this, SVX_RES( FL_MATERIAL ) ),
211*cdf0e10cSrcweir 
212*cdf0e10cSrcweir 		// Material
213*cdf0e10cSrcweir 		aFtMatFavorites 	( this, SVX_RES( FT_MAT_FAVORITES ) ),
214*cdf0e10cSrcweir 		aLbMatFavorites 	( this, SVX_RES( LB_MAT_FAVORITES ) ),
215*cdf0e10cSrcweir 		aFtMatColor			( this, SVX_RES( FT_MAT_COLOR ) ),
216*cdf0e10cSrcweir 		aLbMatColor			( this, SVX_RES( LB_MAT_COLOR ) ),
217*cdf0e10cSrcweir 		aBtnMatColor		( this, SVX_RES( BTN_MAT_COLOR ) ),
218*cdf0e10cSrcweir 		aFtMatEmission		( this, SVX_RES( FT_MAT_EMISSION ) ),
219*cdf0e10cSrcweir 		aLbMatEmission		( this, SVX_RES( LB_MAT_EMISSION ) ),
220*cdf0e10cSrcweir 		aBtnEmissionColor	( this, SVX_RES( BTN_EMISSION_COLOR ) ),
221*cdf0e10cSrcweir         aFLMatSpecular     ( this, SVX_RES( FL_MAT_SPECULAR ) ),
222*cdf0e10cSrcweir 		aFtMatSpecular		( this, SVX_RES( FT_MAT_SPECULAR ) ),
223*cdf0e10cSrcweir 		aLbMatSpecular		( this, SVX_RES( LB_MAT_SPECULAR ) ),
224*cdf0e10cSrcweir 		aBtnSpecularColor	( this, SVX_RES( BTN_SPECULAR_COLOR ) ),
225*cdf0e10cSrcweir 		aFtMatSpecularIntensity( this, SVX_RES( FT_MAT_SPECULAR_INTENSITY ) ),
226*cdf0e10cSrcweir 		aMtrMatSpecularIntensity( this, SVX_RES( MTR_MAT_SPECULAR_INTENSITY ) ),
227*cdf0e10cSrcweir 		aCtlPreview 		( this, SVX_RES( CTL_PREVIEW ) ),
228*cdf0e10cSrcweir 		aCtlLightPreview 	( this, SVX_RES( CTL_LIGHT_PREVIEW ) ),
229*cdf0e10cSrcweir 
230*cdf0e10cSrcweir 		// Unterer Bereich
231*cdf0e10cSrcweir 		aBtnConvertTo3D		( this, SVX_RES( BTN_CHANGE_TO_3D ) ),
232*cdf0e10cSrcweir 		aBtnLatheObject		( this, SVX_RES( BTN_LATHE_OBJ ) ),
233*cdf0e10cSrcweir 		aBtnPerspective		( this, SVX_RES( BTN_PERSPECTIVE ) ),
234*cdf0e10cSrcweir 
235*cdf0e10cSrcweir 		aImgLightOn			( SVX_RES( RID_SVXIMAGE_LIGHT_ON ) ),
236*cdf0e10cSrcweir 		aImgLightOff		( SVX_RES( RID_SVXIMAGE_LIGHT_OFF ) ),
237*cdf0e10cSrcweir 
238*cdf0e10cSrcweir 		bUpdate				( sal_False ),
239*cdf0e10cSrcweir 		eViewType			( VIEWTYPE_GEO ),
240*cdf0e10cSrcweir 
241*cdf0e10cSrcweir 		pModel				( NULL ),
242*cdf0e10cSrcweir 		pFmPage				( NULL ),
243*cdf0e10cSrcweir 		pVDev	 			( NULL ),
244*cdf0e10cSrcweir 		p3DView				( NULL ),
245*cdf0e10cSrcweir 		pFavorSetList		( NULL ),
246*cdf0e10cSrcweir 		pMatFavSetList		( NULL ),
247*cdf0e10cSrcweir 
248*cdf0e10cSrcweir 		pBindings			( pInBindings ),
249*cdf0e10cSrcweir 		pControllerItem(0L),
250*cdf0e10cSrcweir 		pConvertTo3DItem(0L),
251*cdf0e10cSrcweir 		pConvertTo3DLatheItem(0L),
252*cdf0e10cSrcweir //		pPool				( NULL ),
253*cdf0e10cSrcweir 		mpImpl				( new Svx3DWinImpl() ),
254*cdf0e10cSrcweir 		mpRemember2DAttributes(NULL),
255*cdf0e10cSrcweir 		bOnly3DChanged		( sal_False )
256*cdf0e10cSrcweir {
257*cdf0e10cSrcweir 	String accname(SVX_RES(STR_COLOR_LIGHT_PRE));
258*cdf0e10cSrcweir 	aCtlLightPreview.SetAccessibleName(accname);
259*cdf0e10cSrcweir 	aCtlPreview.SetAccessibleName(accname);
260*cdf0e10cSrcweir 	aLbAmbientlight.SetAccessibleName(aFTAmbientlight.GetDisplayText());
261*cdf0e10cSrcweir 
262*cdf0e10cSrcweir 	SETHCIMAGE( aBtnGeo, BMP_GEO_H );
263*cdf0e10cSrcweir 	SETHCIMAGE( aBtnRepresentation, BMP_REPRESENTATION_H );
264*cdf0e10cSrcweir 	SETHCIMAGE( aBtnLight, BMP_3DLIGHT_H );
265*cdf0e10cSrcweir 	SETHCIMAGE( aBtnTexture, BMP_TEXTURE_H );
266*cdf0e10cSrcweir 	SETHCIMAGE( aBtnMaterial, BMP_MATERIAL_H );
267*cdf0e10cSrcweir 	SETHCIMAGE( aBtnUpdate, BMP_UPDATE_H );
268*cdf0e10cSrcweir 	SETHCIMAGE( aBtnAssign, BMP_ASSIGN_H );
269*cdf0e10cSrcweir 	SETHCIMAGE( aBtnNormalsObj, BMP_NORMALS_OBJ_H );
270*cdf0e10cSrcweir 	SETHCIMAGE( aBtnNormalsFlat, BMP_NORMALS_FLAT_H );
271*cdf0e10cSrcweir 	SETHCIMAGE( aBtnNormalsSphere, BMP_NORMALS_SPHERE_H );
272*cdf0e10cSrcweir 	SETHCIMAGE( aBtnTwoSidedLighting, BMP_TWO_SIDED_LIGHTING_H );
273*cdf0e10cSrcweir 	SETHCIMAGE( aBtnNormalsInvert, BMP_NORMALS_INVERT_H );
274*cdf0e10cSrcweir 	SETHCIMAGE( aBtnDoubleSided, BMP_DOUBLE_SIDED_H );
275*cdf0e10cSrcweir 	SETHCIMAGE( aBtnShadow3d, BMP_SHADOW_3D_H );
276*cdf0e10cSrcweir 	SETHCIMAGE( aBtnLight1, BMP_LIGHT_H );
277*cdf0e10cSrcweir 	SETHCIMAGE( aBtnLight2, BMP_LIGHT_H );
278*cdf0e10cSrcweir 	SETHCIMAGE( aBtnLight3, BMP_LIGHT_H );
279*cdf0e10cSrcweir 	SETHCIMAGE( aBtnLight4, BMP_LIGHT_H );
280*cdf0e10cSrcweir 	SETHCIMAGE( aBtnLight5, BMP_LIGHT_H );
281*cdf0e10cSrcweir 	SETHCIMAGE( aBtnLight6, BMP_LIGHT_H );
282*cdf0e10cSrcweir 	SETHCIMAGE( aBtnLight7, BMP_LIGHT_H );
283*cdf0e10cSrcweir 	SETHCIMAGE( aBtnLight8, BMP_LIGHT_H );
284*cdf0e10cSrcweir 	SETHCIMAGE( aBtnLightColor, BMP_LIGHT_COLOR_H );
285*cdf0e10cSrcweir 	SETHCIMAGE( aBtnAmbientColor, BMP_AMBIENT_COLOR_H );
286*cdf0e10cSrcweir 	SETHCIMAGE( aBtnTexLuminance, BMP_TEX_LUMINANCE_H );
287*cdf0e10cSrcweir 	SETHCIMAGE( aBtnTexColor, BMP_TEX_COLOR_H );
288*cdf0e10cSrcweir 	SETHCIMAGE( aBtnTexReplace, BMP_TEX_REPLACE_H );
289*cdf0e10cSrcweir 	SETHCIMAGE( aBtnTexModulate, BMP_TEX_MODULATE_H );
290*cdf0e10cSrcweir 	SETHCIMAGE( aBtnTexBlend, BMP_TEX_BLEND_H );
291*cdf0e10cSrcweir 	SETHCIMAGE( aBtnTexParallelX, BMP_TEX_PARALLEL_H );
292*cdf0e10cSrcweir 	SETHCIMAGE( aBtnTexCircleX, BMP_TEX_CIRCLE_H );
293*cdf0e10cSrcweir 	SETHCIMAGE( aBtnTexObjectX, BMP_TEX_OBJECT_H );
294*cdf0e10cSrcweir 	SETHCIMAGE( aBtnTexParallelY, BMP_TEX_PARALLEL_H );
295*cdf0e10cSrcweir 	SETHCIMAGE( aBtnTexCircleY, BMP_TEX_CIRCLE_H );
296*cdf0e10cSrcweir 	SETHCIMAGE( aBtnTexObjectY, BMP_TEX_OBJECT_H );
297*cdf0e10cSrcweir 	SETHCIMAGE( aBtnTexFilter, BMP_TEX_FILTER_H );
298*cdf0e10cSrcweir 	SETHCIMAGE( aBtnMatColor, BMP_COLORDLG_H );
299*cdf0e10cSrcweir 	SETHCIMAGE( aBtnEmissionColor, BMP_COLORDLG_H );
300*cdf0e10cSrcweir 	SETHCIMAGE( aBtnSpecularColor, BMP_COLORDLG_H );
301*cdf0e10cSrcweir 	SETHCIMAGE( aBtnPerspective, BMP_PERSPECTIVE_H );
302*cdf0e10cSrcweir 	SETHCIMAGE( aBtnConvertTo3D, BMP_CHANGE_TO_3D_H );
303*cdf0e10cSrcweir 	SETHCIMAGE( aBtnLatheObject, BMP_LATHE_OBJ_H );
304*cdf0e10cSrcweir 
305*cdf0e10cSrcweir 	mpImpl->pPool = NULL;
306*cdf0e10cSrcweir 	mpImpl->maImgLightOnH = Image( SVX_RES( RID_SVXIMAGE_LIGHT_ON_H ) );
307*cdf0e10cSrcweir 	mpImpl->maImgLightOffH = Image( SVX_RES( RID_SVXIMAGE_LIGHT_OFF_H ) );
308*cdf0e10cSrcweir 	FreeResource();
309*cdf0e10cSrcweir 
310*cdf0e10cSrcweir 	// Metrik einstellen
311*cdf0e10cSrcweir 	eFUnit = pInBindings->GetDispatcher()->GetModule()->GetFieldUnit();
312*cdf0e10cSrcweir 
313*cdf0e10cSrcweir 	aMtrDepth.SetUnit( eFUnit );
314*cdf0e10cSrcweir 	aMtrDistance.SetUnit( eFUnit );
315*cdf0e10cSrcweir 	aMtrFocalLength.SetUnit( eFUnit );
316*cdf0e10cSrcweir 
317*cdf0e10cSrcweir 	pControllerItem = new Svx3DCtrlItem(SID_3D_STATE, this, pBindings);
318*cdf0e10cSrcweir 	pConvertTo3DItem = new SvxConvertTo3DItem(SID_CONVERT_TO_3D, pBindings);
319*cdf0e10cSrcweir 	pConvertTo3DLatheItem = new SvxConvertTo3DItem(SID_CONVERT_TO_3D_LATHE_FAST, pBindings);
320*cdf0e10cSrcweir 
321*cdf0e10cSrcweir 	aBtnAssign.SetClickHdl( LINK( this, Svx3DWin, ClickAssignHdl ) );
322*cdf0e10cSrcweir 	aBtnUpdate.SetClickHdl( LINK( this, Svx3DWin, ClickUpdateHdl ) );
323*cdf0e10cSrcweir 
324*cdf0e10cSrcweir 	Link aLink( LINK( this, Svx3DWin, ClickViewTypeHdl ) );
325*cdf0e10cSrcweir 	aBtnGeo.SetClickHdl( aLink );
326*cdf0e10cSrcweir 	aBtnRepresentation.SetClickHdl( aLink );
327*cdf0e10cSrcweir 	aBtnLight.SetClickHdl( aLink );
328*cdf0e10cSrcweir 	aBtnTexture.SetClickHdl( aLink );
329*cdf0e10cSrcweir 	aBtnMaterial.SetClickHdl( aLink );
330*cdf0e10cSrcweir 
331*cdf0e10cSrcweir 	aLink = LINK( this, Svx3DWin, ClickHdl );
332*cdf0e10cSrcweir 	aBtnPerspective.SetClickHdl( aLink );
333*cdf0e10cSrcweir 	aBtnConvertTo3D.SetClickHdl( aLink );
334*cdf0e10cSrcweir 	aBtnLatheObject.SetClickHdl( aLink );
335*cdf0e10cSrcweir 
336*cdf0e10cSrcweir 	// Geometrie
337*cdf0e10cSrcweir 	aBtnNormalsObj.SetClickHdl( aLink );
338*cdf0e10cSrcweir 	aBtnNormalsFlat.SetClickHdl( aLink );
339*cdf0e10cSrcweir 	aBtnNormalsSphere.SetClickHdl( aLink );
340*cdf0e10cSrcweir 	aBtnTwoSidedLighting.SetClickHdl( aLink );
341*cdf0e10cSrcweir 	aBtnNormalsInvert.SetClickHdl( aLink );
342*cdf0e10cSrcweir 	aBtnDoubleSided.SetClickHdl( aLink );
343*cdf0e10cSrcweir 
344*cdf0e10cSrcweir 	// Darstellung
345*cdf0e10cSrcweir 	aBtnShadow3d.SetClickHdl( aLink );
346*cdf0e10cSrcweir 
347*cdf0e10cSrcweir 	// Beleuchtung
348*cdf0e10cSrcweir 	aBtnLight1.SetClickHdl( aLink );
349*cdf0e10cSrcweir 	aBtnLight2.SetClickHdl( aLink );
350*cdf0e10cSrcweir 	aBtnLight3.SetClickHdl( aLink );
351*cdf0e10cSrcweir 	aBtnLight4.SetClickHdl( aLink );
352*cdf0e10cSrcweir 	aBtnLight5.SetClickHdl( aLink );
353*cdf0e10cSrcweir 	aBtnLight6.SetClickHdl( aLink );
354*cdf0e10cSrcweir 	aBtnLight7.SetClickHdl( aLink );
355*cdf0e10cSrcweir 	aBtnLight8.SetClickHdl( aLink );
356*cdf0e10cSrcweir 
357*cdf0e10cSrcweir 	// Texturen
358*cdf0e10cSrcweir 	aBtnTexLuminance.SetClickHdl( aLink );
359*cdf0e10cSrcweir 	aBtnTexColor.SetClickHdl( aLink );
360*cdf0e10cSrcweir 	aBtnTexReplace.SetClickHdl( aLink );
361*cdf0e10cSrcweir 	aBtnTexModulate.SetClickHdl( aLink );
362*cdf0e10cSrcweir 	//aBtnTexBlend.SetClickHdl( aLink );
363*cdf0e10cSrcweir 	aBtnTexParallelX.SetClickHdl( aLink );
364*cdf0e10cSrcweir 	aBtnTexCircleX.SetClickHdl( aLink );
365*cdf0e10cSrcweir 	aBtnTexObjectX.SetClickHdl( aLink );
366*cdf0e10cSrcweir 	aBtnTexParallelY.SetClickHdl( aLink );
367*cdf0e10cSrcweir 	aBtnTexCircleY.SetClickHdl( aLink );
368*cdf0e10cSrcweir 	aBtnTexObjectY.SetClickHdl( aLink );
369*cdf0e10cSrcweir 	aBtnTexFilter.SetClickHdl( aLink );
370*cdf0e10cSrcweir 
371*cdf0e10cSrcweir 	// Material
372*cdf0e10cSrcweir 	aLink = LINK( this, Svx3DWin, ClickColorHdl );
373*cdf0e10cSrcweir 	aBtnLightColor.SetClickHdl( aLink );
374*cdf0e10cSrcweir 	aBtnAmbientColor.SetClickHdl( aLink );
375*cdf0e10cSrcweir 	aBtnMatColor.SetClickHdl( aLink );
376*cdf0e10cSrcweir 	aBtnEmissionColor.SetClickHdl( aLink );
377*cdf0e10cSrcweir 	aBtnSpecularColor.SetClickHdl( aLink );
378*cdf0e10cSrcweir 
379*cdf0e10cSrcweir 
380*cdf0e10cSrcweir 	aLink = LINK( this, Svx3DWin, SelectHdl );
381*cdf0e10cSrcweir 	aLbMatFavorites.SetSelectHdl( aLink );
382*cdf0e10cSrcweir 	aLbMatColor.SetSelectHdl( aLink );
383*cdf0e10cSrcweir 	aLbMatEmission.SetSelectHdl( aLink );
384*cdf0e10cSrcweir 	aLbMatSpecular.SetSelectHdl( aLink );
385*cdf0e10cSrcweir 	aLbLight1.SetSelectHdl( aLink );
386*cdf0e10cSrcweir 	aLbLight2.SetSelectHdl( aLink );
387*cdf0e10cSrcweir 	aLbLight3.SetSelectHdl( aLink );
388*cdf0e10cSrcweir 	aLbLight4.SetSelectHdl( aLink );
389*cdf0e10cSrcweir 	aLbLight5.SetSelectHdl( aLink );
390*cdf0e10cSrcweir 	aLbLight6.SetSelectHdl( aLink );
391*cdf0e10cSrcweir 	aLbLight7.SetSelectHdl( aLink );
392*cdf0e10cSrcweir 	aLbLight8.SetSelectHdl( aLink );
393*cdf0e10cSrcweir 	aLbAmbientlight.SetSelectHdl( aLink );
394*cdf0e10cSrcweir 	aLbShademode.SetSelectHdl( aLink );
395*cdf0e10cSrcweir 
396*cdf0e10cSrcweir 	aLink = LINK( this, Svx3DWin, ModifyHdl );
397*cdf0e10cSrcweir 	aMtrMatSpecularIntensity.SetModifyHdl( aLink );
398*cdf0e10cSrcweir 	aNumHorizontal.SetModifyHdl( aLink );
399*cdf0e10cSrcweir 	aNumVertical.SetModifyHdl( aLink );
400*cdf0e10cSrcweir 	aMtrSlant.SetModifyHdl( aLink );
401*cdf0e10cSrcweir 
402*cdf0e10cSrcweir 	// Preview-Callback
403*cdf0e10cSrcweir 	aLink = LINK( this, Svx3DWin, ChangeLightCallbackHdl );
404*cdf0e10cSrcweir 	aCtlLightPreview.SetUserInteractiveChangeCallback(aLink);
405*cdf0e10cSrcweir 	aLink = LINK( this, Svx3DWin, ChangeSelectionCallbackHdl );
406*cdf0e10cSrcweir 	aCtlLightPreview.SetUserSelectionChangeCallback(aLink);
407*cdf0e10cSrcweir 
408*cdf0e10cSrcweir     aSize = GetOutputSizePixel();
409*cdf0e10cSrcweir 	SetMinOutputSizePixel( aSize );
410*cdf0e10cSrcweir 
411*cdf0e10cSrcweir 	Construct();
412*cdf0e10cSrcweir 
413*cdf0e10cSrcweir 	// Initiierung der Initialisierung der ColorLBs
414*cdf0e10cSrcweir     SfxDispatcher* pDispatcher = LocalGetDispatcher(pBindings);
415*cdf0e10cSrcweir     if (pDispatcher != NULL)
416*cdf0e10cSrcweir     {
417*cdf0e10cSrcweir         SfxBoolItem aItem( SID_3D_INIT, sal_True );
418*cdf0e10cSrcweir         pDispatcher->Execute(
419*cdf0e10cSrcweir             SID_3D_INIT, SFX_CALLMODE_ASYNCHRON | SFX_CALLMODE_RECORD, &aItem, 0L );
420*cdf0e10cSrcweir     }
421*cdf0e10cSrcweir 
422*cdf0e10cSrcweir 	Reset();
423*cdf0e10cSrcweir 
424*cdf0e10cSrcweir 	aBtnNormalsObj.SetAccessibleRelationMemberOf( &aFLNormals );
425*cdf0e10cSrcweir 	aBtnNormalsFlat.SetAccessibleRelationMemberOf( &aFLNormals );
426*cdf0e10cSrcweir 	aBtnNormalsSphere.SetAccessibleRelationMemberOf( &aFLNormals );
427*cdf0e10cSrcweir 	aBtnNormalsInvert.SetAccessibleRelationMemberOf( &aFLNormals );
428*cdf0e10cSrcweir 	aBtnTwoSidedLighting.SetAccessibleRelationMemberOf( &aFLNormals );
429*cdf0e10cSrcweir 	aBtnDoubleSided.SetAccessibleRelationMemberOf( &aFLNormals );
430*cdf0e10cSrcweir 
431*cdf0e10cSrcweir 	aBtnLight1.SetAccessibleRelationMemberOf( &aFLLight );
432*cdf0e10cSrcweir 	aBtnLight2.SetAccessibleRelationMemberOf( &aFLLight );
433*cdf0e10cSrcweir 	aBtnLight3.SetAccessibleRelationMemberOf( &aFLLight );
434*cdf0e10cSrcweir 	aBtnLight4.SetAccessibleRelationMemberOf( &aFLLight );
435*cdf0e10cSrcweir 	aBtnLight5.SetAccessibleRelationMemberOf( &aFLLight );
436*cdf0e10cSrcweir 	aBtnLight6.SetAccessibleRelationMemberOf( &aFLLight );
437*cdf0e10cSrcweir 	aBtnLight7.SetAccessibleRelationMemberOf( &aFLLight );
438*cdf0e10cSrcweir 	aBtnLight8.SetAccessibleRelationMemberOf( &aFLLight );
439*cdf0e10cSrcweir 
440*cdf0e10cSrcweir 	aBtnLight1.SetAccessibleRelationLabeledBy( &aFTLightsource );
441*cdf0e10cSrcweir 	aBtnLight2.SetAccessibleRelationLabeledBy( &aFTLightsource );
442*cdf0e10cSrcweir 	aBtnLight3.SetAccessibleRelationLabeledBy( &aFTLightsource );
443*cdf0e10cSrcweir 	aBtnLight4.SetAccessibleRelationLabeledBy( &aFTLightsource );
444*cdf0e10cSrcweir 	aBtnLight5.SetAccessibleRelationLabeledBy( &aFTLightsource );
445*cdf0e10cSrcweir 	aBtnLight6.SetAccessibleRelationLabeledBy( &aFTLightsource );
446*cdf0e10cSrcweir 	aBtnLight7.SetAccessibleRelationLabeledBy( &aFTLightsource );
447*cdf0e10cSrcweir 	aBtnLight8.SetAccessibleRelationLabeledBy( &aFTLightsource );
448*cdf0e10cSrcweir 	aBtnLightColor.SetAccessibleRelationMemberOf( &aFLLight );
449*cdf0e10cSrcweir 	aBtnLightColor.SetAccessibleRelationLabeledBy( &aFTLightsource );
450*cdf0e10cSrcweir 	aBtnAmbientColor.SetAccessibleRelationMemberOf( &aFLLight );
451*cdf0e10cSrcweir 	aBtnAmbientColor.SetAccessibleRelationLabeledBy( &aFTAmbientlight );
452*cdf0e10cSrcweir 
453*cdf0e10cSrcweir 	aBtnSpecularColor.SetAccessibleRelationLabeledBy( &aFtMatSpecular );
454*cdf0e10cSrcweir 	aBtnMatColor.SetAccessibleRelationLabeledBy( &aFtMatColor );
455*cdf0e10cSrcweir 	aBtnEmissionColor.SetAccessibleRelationLabeledBy( &aFtMatEmission );
456*cdf0e10cSrcweir 	aBtnTexLuminance.SetAccessibleRelationLabeledBy( &aFtTexKind );
457*cdf0e10cSrcweir 	aBtnTexColor.SetAccessibleRelationLabeledBy( &aFtTexKind );
458*cdf0e10cSrcweir 	aBtnTexReplace.SetAccessibleRelationLabeledBy( &aFtTexMode );
459*cdf0e10cSrcweir 	aBtnTexModulate.SetAccessibleRelationLabeledBy( &aFtTexMode );
460*cdf0e10cSrcweir 	aBtnTexBlend.SetAccessibleRelationLabeledBy( &aFtTexMode );
461*cdf0e10cSrcweir 	aBtnTexObjectX.SetAccessibleRelationLabeledBy( &aFtTexProjectionX );
462*cdf0e10cSrcweir 	aBtnTexParallelX.SetAccessibleRelationLabeledBy( &aFtTexProjectionX );
463*cdf0e10cSrcweir 	aBtnTexCircleX.SetAccessibleRelationLabeledBy( &aFtTexProjectionX );
464*cdf0e10cSrcweir 	aBtnTexObjectY.SetAccessibleRelationLabeledBy( &aFtTexProjectionY );
465*cdf0e10cSrcweir 	aBtnTexParallelY.SetAccessibleRelationLabeledBy( &aFtTexProjectionY );
466*cdf0e10cSrcweir 	aBtnTexCircleY.SetAccessibleRelationLabeledBy( &aFtTexProjectionY );
467*cdf0e10cSrcweir 	aBtnTexFilter.SetAccessibleRelationLabeledBy( &aFtTexFilter );
468*cdf0e10cSrcweir 	aCtlLightPreview.SetAccessibleRelationLabeledBy( &aCtlLightPreview );
469*cdf0e10cSrcweir 	aBtnNormalsObj.SetAccessibleRelationMemberOf(&aFLNormals);
470*cdf0e10cSrcweir 	aBtnNormalsFlat.SetAccessibleRelationMemberOf(&aFLNormals);
471*cdf0e10cSrcweir 	aBtnNormalsSphere.SetAccessibleRelationMemberOf(&aFLNormals);
472*cdf0e10cSrcweir 	aBtnNormalsInvert.SetAccessibleRelationMemberOf(&aFLNormals);
473*cdf0e10cSrcweir 	aBtnTwoSidedLighting.SetAccessibleRelationMemberOf(&aFLNormals);
474*cdf0e10cSrcweir 
475*cdf0e10cSrcweir 	aBtnShadow3d.SetAccessibleRelationMemberOf(&aFLShadow);
476*cdf0e10cSrcweir 
477*cdf0e10cSrcweir 	aBtnLight1.SetAccessibleRelationMemberOf(&aFLLight);
478*cdf0e10cSrcweir 	aBtnLight2.SetAccessibleRelationMemberOf(&aFLLight);
479*cdf0e10cSrcweir 	aBtnLight3.SetAccessibleRelationMemberOf(&aFLLight);
480*cdf0e10cSrcweir 	aBtnLight4.SetAccessibleRelationMemberOf(&aFLLight);
481*cdf0e10cSrcweir 	aBtnLight5.SetAccessibleRelationMemberOf(&aFLLight);
482*cdf0e10cSrcweir 	aBtnLight6.SetAccessibleRelationMemberOf(&aFLLight);
483*cdf0e10cSrcweir 	aBtnLight7.SetAccessibleRelationMemberOf(&aFLLight);
484*cdf0e10cSrcweir 	aBtnLight8.SetAccessibleRelationMemberOf(&aFLLight);
485*cdf0e10cSrcweir 
486*cdf0e10cSrcweir 	aBtnTexLuminance.SetAccessibleRelationMemberOf(&aFLTexture);
487*cdf0e10cSrcweir 	aBtnTexColor.SetAccessibleRelationMemberOf(&aFLTexture);
488*cdf0e10cSrcweir 	aBtnTexReplace.SetAccessibleRelationMemberOf(&aFLTexture);
489*cdf0e10cSrcweir 	aBtnTexModulate.SetAccessibleRelationMemberOf(&aFLTexture);
490*cdf0e10cSrcweir 	aBtnTexBlend.SetAccessibleRelationMemberOf(&aFLTexture);
491*cdf0e10cSrcweir 	aBtnTexObjectX.SetAccessibleRelationMemberOf(&aFLTexture);
492*cdf0e10cSrcweir 	aBtnTexParallelX.SetAccessibleRelationMemberOf(&aFLTexture);
493*cdf0e10cSrcweir 	aBtnTexCircleX.SetAccessibleRelationMemberOf(&aFLTexture);
494*cdf0e10cSrcweir 	aBtnTexObjectY.SetAccessibleRelationMemberOf(&aFLTexture);
495*cdf0e10cSrcweir 	aBtnTexParallelY.SetAccessibleRelationMemberOf(&aFLTexture);
496*cdf0e10cSrcweir 	aBtnTexCircleY.SetAccessibleRelationMemberOf(&aFLTexture);
497*cdf0e10cSrcweir 	aBtnTexFilter.SetAccessibleRelationMemberOf(&aFLTexture);
498*cdf0e10cSrcweir 
499*cdf0e10cSrcweir 	aBtnMatColor.SetAccessibleRelationMemberOf(&aFLMaterial);
500*cdf0e10cSrcweir 	aBtnEmissionColor.SetAccessibleRelationMemberOf(&aFLMaterial);
501*cdf0e10cSrcweir 
502*cdf0e10cSrcweir 	aBtnSpecularColor.SetAccessibleRelationMemberOf(&aFLMatSpecular);
503*cdf0e10cSrcweir }
504*cdf0e10cSrcweir 
505*cdf0e10cSrcweir // -----------------------------------------------------------------------
506*cdf0e10cSrcweir __EXPORT Svx3DWin::~Svx3DWin()
507*cdf0e10cSrcweir {
508*cdf0e10cSrcweir 	//delete pMatFavSetList;
509*cdf0e10cSrcweir 	delete p3DView;
510*cdf0e10cSrcweir 	delete pVDev;
511*cdf0e10cSrcweir 	delete pModel;
512*cdf0e10cSrcweir 
513*cdf0e10cSrcweir 	delete pControllerItem;
514*cdf0e10cSrcweir 	delete pConvertTo3DItem;
515*cdf0e10cSrcweir 	delete pConvertTo3DLatheItem;
516*cdf0e10cSrcweir 
517*cdf0e10cSrcweir 	if(mpRemember2DAttributes)
518*cdf0e10cSrcweir 		delete mpRemember2DAttributes;
519*cdf0e10cSrcweir 
520*cdf0e10cSrcweir 	delete mpImpl;
521*cdf0e10cSrcweir }
522*cdf0e10cSrcweir 
523*cdf0e10cSrcweir // -----------------------------------------------------------------------
524*cdf0e10cSrcweir void Svx3DWin::Construct()
525*cdf0e10cSrcweir {
526*cdf0e10cSrcweir 	aBtnGeo.Check();
527*cdf0e10cSrcweir 	Link aLink( LINK( this, Svx3DWin, ClickViewTypeHdl ) );
528*cdf0e10cSrcweir 	aLink.Call( &aBtnGeo );
529*cdf0e10cSrcweir 	aCtlLightPreview.Hide();
530*cdf0e10cSrcweir }
531*cdf0e10cSrcweir 
532*cdf0e10cSrcweir // -----------------------------------------------------------------------
533*cdf0e10cSrcweir void Svx3DWin::Reset()
534*cdf0e10cSrcweir {
535*cdf0e10cSrcweir 	// Diverse Initialisierungen, default ist AllAttributes
536*cdf0e10cSrcweir 	aLbShademode.SelectEntryPos( 0 );
537*cdf0e10cSrcweir 	aMtrMatSpecularIntensity.SetValue( 50 );
538*cdf0e10cSrcweir 
539*cdf0e10cSrcweir 	aBtnLight1.Check();
540*cdf0e10cSrcweir 	ClickUpdateHdl( NULL );
541*cdf0e10cSrcweir 
542*cdf0e10cSrcweir 	// Nichts selektieren, um Fehler beim erstselektieren zu vermeiden
543*cdf0e10cSrcweir 	aCtlLightPreview.GetSvx3DLightControl().SelectLight(0);
544*cdf0e10cSrcweir }
545*cdf0e10cSrcweir 
546*cdf0e10cSrcweir bool Svx3DWin::GetUILightState( ImageButton& aBtn ) const
547*cdf0e10cSrcweir {
548*cdf0e10cSrcweir 	return (aBtn.GetModeImage() == aImgLightOn) || (aBtn.GetModeImage() == mpImpl->maImgLightOnH);
549*cdf0e10cSrcweir }
550*cdf0e10cSrcweir 
551*cdf0e10cSrcweir void Svx3DWin::SetUILightState( ImageButton& aBtn, bool bState )
552*cdf0e10cSrcweir {
553*cdf0e10cSrcweir 	aBtn.SetModeImage( bState ? aImgLightOn : aImgLightOff );
554*cdf0e10cSrcweir 	aBtn.SetModeImage( bState ? mpImpl->maImgLightOnH : mpImpl->maImgLightOffH, BMP_COLOR_HIGHCONTRAST );
555*cdf0e10cSrcweir }
556*cdf0e10cSrcweir 
557*cdf0e10cSrcweir // -----------------------------------------------------------------------
558*cdf0e10cSrcweir void Svx3DWin::Update( SfxItemSet& rAttrs )
559*cdf0e10cSrcweir {
560*cdf0e10cSrcweir 	// remember 2d attributes
561*cdf0e10cSrcweir 	if(mpRemember2DAttributes)
562*cdf0e10cSrcweir 		mpRemember2DAttributes->ClearItem();
563*cdf0e10cSrcweir 	else
564*cdf0e10cSrcweir 		mpRemember2DAttributes = new SfxItemSet(*rAttrs.GetPool(),
565*cdf0e10cSrcweir 			SDRATTR_START, SDRATTR_SHADOW_LAST,
566*cdf0e10cSrcweir 			SDRATTR_3D_FIRST, SDRATTR_3D_LAST,
567*cdf0e10cSrcweir 			0, 0);
568*cdf0e10cSrcweir 
569*cdf0e10cSrcweir 	SfxWhichIter aIter(*mpRemember2DAttributes);
570*cdf0e10cSrcweir 	sal_uInt16 nWhich(aIter.FirstWhich());
571*cdf0e10cSrcweir 
572*cdf0e10cSrcweir 	while(nWhich)
573*cdf0e10cSrcweir 	{
574*cdf0e10cSrcweir 		SfxItemState eState = rAttrs.GetItemState(nWhich, sal_False);
575*cdf0e10cSrcweir 		if(SFX_ITEM_DONTCARE == eState)
576*cdf0e10cSrcweir 			mpRemember2DAttributes->InvalidateItem(nWhich);
577*cdf0e10cSrcweir 		else if(SFX_ITEM_SET == eState)
578*cdf0e10cSrcweir 			mpRemember2DAttributes->Put(rAttrs.Get(nWhich, sal_False));
579*cdf0e10cSrcweir 
580*cdf0e10cSrcweir 		nWhich = aIter.NextWhich();
581*cdf0e10cSrcweir 	}
582*cdf0e10cSrcweir 
583*cdf0e10cSrcweir 	// construct field values
584*cdf0e10cSrcweir 	const SfxPoolItem* pItem;
585*cdf0e10cSrcweir 	//sal_Bool bUpdate = sal_False;
586*cdf0e10cSrcweir 
587*cdf0e10cSrcweir 	// evtl. PoolUnit ermitteln
588*cdf0e10cSrcweir 	if( !mpImpl->pPool )
589*cdf0e10cSrcweir 	{
590*cdf0e10cSrcweir 		mpImpl->pPool = rAttrs.GetPool();
591*cdf0e10cSrcweir 		DBG_ASSERT( mpImpl->pPool, "Wo ist der Pool?" );
592*cdf0e10cSrcweir 		ePoolUnit = mpImpl->pPool->GetMetric( SID_ATTR_LINE_WIDTH );
593*cdf0e10cSrcweir 	}
594*cdf0e10cSrcweir 	eFUnit = GetModuleFieldUnit( rAttrs );
595*cdf0e10cSrcweir 
596*cdf0e10cSrcweir 
597*cdf0e10cSrcweir // Segmentanzahl aenderbar ? und andere Stati
598*cdf0e10cSrcweir 	SfxItemState eState = rAttrs.GetItemState( SID_ATTR_3D_INTERN, sal_False, &pItem );
599*cdf0e10cSrcweir 	if( SFX_ITEM_SET == eState )
600*cdf0e10cSrcweir 	{
601*cdf0e10cSrcweir 		sal_uInt32 nState = ( ( const SfxUInt32Item* )pItem )->GetValue();
602*cdf0e10cSrcweir 		//sal_Bool bLathe   = (sal_Bool) ( nState & 1 );
603*cdf0e10cSrcweir 		sal_Bool bExtrude = (sal_Bool) ( nState & 2 );
604*cdf0e10cSrcweir 		sal_Bool bSphere  = (sal_Bool) ( nState & 4 );
605*cdf0e10cSrcweir 		sal_Bool bCube    = (sal_Bool) ( nState & 8 );
606*cdf0e10cSrcweir 
607*cdf0e10cSrcweir 		sal_Bool bChart = (sal_Bool) ( nState & 32 ); // Chart
608*cdf0e10cSrcweir 
609*cdf0e10cSrcweir 		if( !bChart )
610*cdf0e10cSrcweir 		{
611*cdf0e10cSrcweir 			// Bei Cube-Objekten werden keine Segmente eingestellt
612*cdf0e10cSrcweir 			aFtHorizontal.Enable( !bCube );
613*cdf0e10cSrcweir 			aNumHorizontal.Enable( !bCube );
614*cdf0e10cSrcweir 			aFtVertical.Enable( !bCube );
615*cdf0e10cSrcweir 			aNumVertical.Enable( !bCube );
616*cdf0e10cSrcweir             aFLSegments.Enable( !bCube );
617*cdf0e10cSrcweir 
618*cdf0e10cSrcweir 			aFtPercentDiagonal.Enable( !bCube && !bSphere );
619*cdf0e10cSrcweir 			aMtrPercentDiagonal.Enable( !bCube && !bSphere );
620*cdf0e10cSrcweir 			aFtBackscale.Enable( !bCube && !bSphere );
621*cdf0e10cSrcweir 			aMtrBackscale.Enable( !bCube && !bSphere );
622*cdf0e10cSrcweir 			aFtDepth.Enable( !bCube && !bSphere );
623*cdf0e10cSrcweir 			aMtrDepth.Enable( !bCube && !bSphere );
624*cdf0e10cSrcweir 			if( bCube )
625*cdf0e10cSrcweir 			{
626*cdf0e10cSrcweir 				aNumHorizontal.SetEmptyFieldValue();
627*cdf0e10cSrcweir 				aNumVertical.SetEmptyFieldValue();
628*cdf0e10cSrcweir 			}
629*cdf0e10cSrcweir 			if( bCube || bSphere )
630*cdf0e10cSrcweir 			{
631*cdf0e10cSrcweir 				aMtrPercentDiagonal.SetEmptyFieldValue();
632*cdf0e10cSrcweir 				aMtrBackscale.SetEmptyFieldValue();
633*cdf0e10cSrcweir 				aMtrDepth.SetEmptyFieldValue();
634*cdf0e10cSrcweir 			}
635*cdf0e10cSrcweir 
636*cdf0e10cSrcweir 			// Nur bei Lathe-Objekten gibt es einen Endwinkel
637*cdf0e10cSrcweir 			aFtEndAngle.Enable( !bExtrude && !bCube && !bSphere );
638*cdf0e10cSrcweir 			aMtrEndAngle.Enable( !bExtrude && !bCube && !bSphere );
639*cdf0e10cSrcweir 			if( bExtrude || bCube || bSphere )
640*cdf0e10cSrcweir 				aMtrEndAngle.SetEmptyFieldValue();
641*cdf0e10cSrcweir 		}
642*cdf0e10cSrcweir 		else
643*cdf0e10cSrcweir 		{
644*cdf0e10cSrcweir 			// Geometrie
645*cdf0e10cSrcweir 			aFtHorizontal.Enable( sal_False );
646*cdf0e10cSrcweir 			aNumHorizontal.Enable( sal_False );
647*cdf0e10cSrcweir 			aNumHorizontal.SetEmptyFieldValue();
648*cdf0e10cSrcweir 			aFtVertical.Enable( sal_False );
649*cdf0e10cSrcweir 			aNumVertical.Enable( sal_False );
650*cdf0e10cSrcweir 			aNumVertical.SetEmptyFieldValue();
651*cdf0e10cSrcweir             aFLSegments.Enable( sal_False );
652*cdf0e10cSrcweir 			aFtEndAngle.Enable( sal_False );
653*cdf0e10cSrcweir 			aMtrEndAngle.Enable( sal_False );
654*cdf0e10cSrcweir 			aMtrEndAngle.SetEmptyFieldValue();
655*cdf0e10cSrcweir 			aFtDepth.Enable( sal_False );
656*cdf0e10cSrcweir 			aMtrDepth.Enable( sal_False );
657*cdf0e10cSrcweir 			aMtrDepth.SetEmptyFieldValue();
658*cdf0e10cSrcweir 
659*cdf0e10cSrcweir 			// Darstellung
660*cdf0e10cSrcweir 			aBtnShadow3d.Enable( sal_False );
661*cdf0e10cSrcweir 			aFtSlant.Enable( sal_False );
662*cdf0e10cSrcweir 			aMtrSlant.Enable( sal_False );
663*cdf0e10cSrcweir             aFLShadow.Enable( sal_False );
664*cdf0e10cSrcweir 
665*cdf0e10cSrcweir 			aFtDistance.Enable( sal_False );
666*cdf0e10cSrcweir 			aMtrDistance.Enable( sal_False );
667*cdf0e10cSrcweir 			aMtrDistance.SetEmptyFieldValue();
668*cdf0e10cSrcweir 			aFtFocalLeng.Enable( sal_False );
669*cdf0e10cSrcweir 			aMtrFocalLength.Enable( sal_False );
670*cdf0e10cSrcweir 			aMtrFocalLength.SetEmptyFieldValue();
671*cdf0e10cSrcweir             aFLCamera.Enable( sal_False );
672*cdf0e10cSrcweir 
673*cdf0e10cSrcweir 			// Unterer Bereich
674*cdf0e10cSrcweir 			aBtnConvertTo3D.Enable( sal_False );
675*cdf0e10cSrcweir 			aBtnLatheObject.Enable( sal_False );
676*cdf0e10cSrcweir 		}
677*cdf0e10cSrcweir 	}
678*cdf0e10cSrcweir // Bitmapfuellung ? -> Status
679*cdf0e10cSrcweir 	sal_Bool bBitmap(sal_False);
680*cdf0e10cSrcweir 	eState = rAttrs.GetItemState(XATTR_FILLSTYLE);
681*cdf0e10cSrcweir 	if(eState != SFX_ITEM_DONTCARE)
682*cdf0e10cSrcweir 	{
683*cdf0e10cSrcweir 		XFillStyle eXFS = (XFillStyle)((const XFillStyleItem&)rAttrs.Get(XATTR_FILLSTYLE)).GetValue();
684*cdf0e10cSrcweir 		bBitmap = (eXFS == XFILL_BITMAP || eXFS == XFILL_GRADIENT || eXFS == XFILL_HATCH);
685*cdf0e10cSrcweir 	}
686*cdf0e10cSrcweir 
687*cdf0e10cSrcweir 	aFtTexKind.Enable( bBitmap );
688*cdf0e10cSrcweir 	aBtnTexLuminance.Enable( bBitmap );
689*cdf0e10cSrcweir 	aBtnTexColor.Enable( bBitmap );
690*cdf0e10cSrcweir 	aFtTexMode.Enable( bBitmap );
691*cdf0e10cSrcweir 	aBtnTexReplace.Enable( bBitmap );
692*cdf0e10cSrcweir 	aBtnTexModulate.Enable( bBitmap );
693*cdf0e10cSrcweir 	aBtnTexBlend.Enable( bBitmap );
694*cdf0e10cSrcweir 	aFtTexProjectionX.Enable( bBitmap );
695*cdf0e10cSrcweir 	aBtnTexParallelX.Enable( bBitmap );
696*cdf0e10cSrcweir 	aBtnTexCircleX.Enable( bBitmap );
697*cdf0e10cSrcweir 	aBtnTexObjectX.Enable( bBitmap );
698*cdf0e10cSrcweir 	aFtTexProjectionY.Enable( bBitmap );
699*cdf0e10cSrcweir 	aBtnTexParallelY.Enable( bBitmap );
700*cdf0e10cSrcweir 	aBtnTexCircleY.Enable( bBitmap );
701*cdf0e10cSrcweir 	aBtnTexObjectY.Enable( bBitmap );
702*cdf0e10cSrcweir 	aFtTexFilter.Enable( bBitmap );
703*cdf0e10cSrcweir 	aBtnTexFilter.Enable( bBitmap );
704*cdf0e10cSrcweir     aFLTexture.Enable( bBitmap );
705*cdf0e10cSrcweir 
706*cdf0e10cSrcweir 
707*cdf0e10cSrcweir // Geometrie
708*cdf0e10cSrcweir 	// Anzahl Segmente (horizontal)
709*cdf0e10cSrcweir 	if( aNumHorizontal.IsEnabled() )
710*cdf0e10cSrcweir 	{
711*cdf0e10cSrcweir 		eState = rAttrs.GetItemState(SDRATTR_3DOBJ_HORZ_SEGS);
712*cdf0e10cSrcweir 		if(eState != SFX_ITEM_DONTCARE)
713*cdf0e10cSrcweir 		{
714*cdf0e10cSrcweir 			sal_uInt32 nValue = ((const Svx3DHorizontalSegmentsItem&)rAttrs.Get(SDRATTR_3DOBJ_HORZ_SEGS)).GetValue();
715*cdf0e10cSrcweir 			if(nValue != (sal_uInt32 )aNumHorizontal.GetValue())
716*cdf0e10cSrcweir 			{
717*cdf0e10cSrcweir 				aNumHorizontal.SetValue( nValue );
718*cdf0e10cSrcweir 				// evtl. am Ende...
719*cdf0e10cSrcweir 				// aCtlLightPreview.GetSvx3DLightControl().SetHorizontalSegments( (sal_uInt16)nValue );
720*cdf0e10cSrcweir 				bUpdate = sal_True;
721*cdf0e10cSrcweir 			}
722*cdf0e10cSrcweir 			else if( aNumHorizontal.IsEmptyFieldValue() )
723*cdf0e10cSrcweir 				aNumHorizontal.SetValue( nValue );
724*cdf0e10cSrcweir 		}
725*cdf0e10cSrcweir 		else
726*cdf0e10cSrcweir 		{
727*cdf0e10cSrcweir 			if( !aNumHorizontal.IsEmptyFieldValue() )
728*cdf0e10cSrcweir 			{
729*cdf0e10cSrcweir 				aNumHorizontal.SetEmptyFieldValue();
730*cdf0e10cSrcweir 				bUpdate = sal_True;
731*cdf0e10cSrcweir 			}
732*cdf0e10cSrcweir 		}
733*cdf0e10cSrcweir 	}
734*cdf0e10cSrcweir 
735*cdf0e10cSrcweir 	// Anzahl Segmente (vertikal)
736*cdf0e10cSrcweir 	if( aNumVertical.IsEnabled() )
737*cdf0e10cSrcweir 	{
738*cdf0e10cSrcweir 		eState = rAttrs.GetItemState(SDRATTR_3DOBJ_VERT_SEGS);
739*cdf0e10cSrcweir 		if( eState != SFX_ITEM_DONTCARE )
740*cdf0e10cSrcweir 		{
741*cdf0e10cSrcweir 			sal_uInt32 nValue = ((const Svx3DVerticalSegmentsItem&)rAttrs.Get(SDRATTR_3DOBJ_VERT_SEGS)).GetValue();
742*cdf0e10cSrcweir 			if( nValue != (sal_uInt32) aNumVertical.GetValue() )
743*cdf0e10cSrcweir 			{
744*cdf0e10cSrcweir 				aNumVertical.SetValue( nValue );
745*cdf0e10cSrcweir 				// evtl. am Ende...
746*cdf0e10cSrcweir 				//aCtlLightPreview.GetSvx3DLightControl().SetVerticalSegments( (sal_uInt16)nValue );
747*cdf0e10cSrcweir 				bUpdate = sal_True;
748*cdf0e10cSrcweir 			}
749*cdf0e10cSrcweir 			else if( aNumVertical.IsEmptyFieldValue() )
750*cdf0e10cSrcweir 				aNumVertical.SetValue( nValue );
751*cdf0e10cSrcweir 		}
752*cdf0e10cSrcweir 		else
753*cdf0e10cSrcweir 		{
754*cdf0e10cSrcweir 			if( !aNumVertical.IsEmptyFieldValue() )
755*cdf0e10cSrcweir 			{
756*cdf0e10cSrcweir 				aNumVertical.SetEmptyFieldValue();
757*cdf0e10cSrcweir 				bUpdate = sal_True;
758*cdf0e10cSrcweir 			}
759*cdf0e10cSrcweir 		}
760*cdf0e10cSrcweir 	}
761*cdf0e10cSrcweir 
762*cdf0e10cSrcweir 	// Tiefe
763*cdf0e10cSrcweir 	if( aMtrDepth.IsEnabled() )
764*cdf0e10cSrcweir 	{
765*cdf0e10cSrcweir 		eState = rAttrs.GetItemState(SDRATTR_3DOBJ_DEPTH);
766*cdf0e10cSrcweir 		if( eState != SFX_ITEM_DONTCARE )
767*cdf0e10cSrcweir 		{
768*cdf0e10cSrcweir 			sal_uInt32 nValue = ((const Svx3DDepthItem&)rAttrs.Get(SDRATTR_3DOBJ_DEPTH)).GetValue();
769*cdf0e10cSrcweir 			sal_uInt32 nValue2 = GetCoreValue( aMtrDepth, ePoolUnit );
770*cdf0e10cSrcweir 			if( nValue != nValue2 )
771*cdf0e10cSrcweir 			{
772*cdf0e10cSrcweir 				if( eFUnit != aMtrDepth.GetUnit() )
773*cdf0e10cSrcweir 					SetFieldUnit( aMtrDepth, eFUnit );
774*cdf0e10cSrcweir 
775*cdf0e10cSrcweir 				SetMetricValue( aMtrDepth, nValue, ePoolUnit );
776*cdf0e10cSrcweir 				bUpdate = sal_True;
777*cdf0e10cSrcweir 			}
778*cdf0e10cSrcweir 			else if( aMtrDepth.IsEmptyFieldValue() )
779*cdf0e10cSrcweir 				aMtrDepth.SetValue( aMtrDepth.GetValue() );
780*cdf0e10cSrcweir 		}
781*cdf0e10cSrcweir 		else
782*cdf0e10cSrcweir 		{
783*cdf0e10cSrcweir 			if( !aMtrDepth.IsEmptyFieldValue() )
784*cdf0e10cSrcweir 			{
785*cdf0e10cSrcweir 				aMtrDepth.SetEmptyFieldValue();
786*cdf0e10cSrcweir 				bUpdate = sal_True;
787*cdf0e10cSrcweir 			}
788*cdf0e10cSrcweir 		}
789*cdf0e10cSrcweir 	}
790*cdf0e10cSrcweir 
791*cdf0e10cSrcweir 	// Doppelwandig/-seitig
792*cdf0e10cSrcweir 	eState = rAttrs.GetItemState(SDRATTR_3DOBJ_DOUBLE_SIDED);
793*cdf0e10cSrcweir 	if( eState != SFX_ITEM_DONTCARE )
794*cdf0e10cSrcweir 	{
795*cdf0e10cSrcweir 		sal_Bool bValue = ((const Svx3DDoubleSidedItem&)rAttrs.Get(SDRATTR_3DOBJ_DOUBLE_SIDED)).GetValue();
796*cdf0e10cSrcweir 		if( bValue != aBtnDoubleSided.IsChecked() )
797*cdf0e10cSrcweir 		{
798*cdf0e10cSrcweir 			aBtnDoubleSided.Check( bValue );
799*cdf0e10cSrcweir 			bUpdate = sal_True;
800*cdf0e10cSrcweir 		}
801*cdf0e10cSrcweir 		else if( aBtnDoubleSided.GetState() == STATE_DONTKNOW )
802*cdf0e10cSrcweir 			aBtnDoubleSided.Check( bValue );
803*cdf0e10cSrcweir 	}
804*cdf0e10cSrcweir 	else
805*cdf0e10cSrcweir 	{
806*cdf0e10cSrcweir 		if( aBtnDoubleSided.GetState() != STATE_DONTKNOW )
807*cdf0e10cSrcweir 		{
808*cdf0e10cSrcweir 			aBtnDoubleSided.SetState( STATE_DONTKNOW );
809*cdf0e10cSrcweir 			bUpdate = sal_True;
810*cdf0e10cSrcweir 		}
811*cdf0e10cSrcweir 	}
812*cdf0e10cSrcweir 
813*cdf0e10cSrcweir 	// Kantenrundung
814*cdf0e10cSrcweir 	if( aMtrPercentDiagonal.IsEnabled() )
815*cdf0e10cSrcweir 	{
816*cdf0e10cSrcweir 		eState = rAttrs.GetItemState(SDRATTR_3DOBJ_PERCENT_DIAGONAL);
817*cdf0e10cSrcweir 		if( eState != SFX_ITEM_DONTCARE )
818*cdf0e10cSrcweir 		{
819*cdf0e10cSrcweir 			sal_uInt16 nValue = ((const Svx3DPercentDiagonalItem&)rAttrs.Get(SDRATTR_3DOBJ_PERCENT_DIAGONAL)).GetValue();
820*cdf0e10cSrcweir 			if( nValue != aMtrPercentDiagonal.GetValue() )
821*cdf0e10cSrcweir 			{
822*cdf0e10cSrcweir 				aMtrPercentDiagonal.SetValue( nValue );
823*cdf0e10cSrcweir 				bUpdate = sal_True;
824*cdf0e10cSrcweir 			}
825*cdf0e10cSrcweir 			else if( aMtrPercentDiagonal.IsEmptyFieldValue() )
826*cdf0e10cSrcweir 				aMtrPercentDiagonal.SetValue( nValue );
827*cdf0e10cSrcweir 		}
828*cdf0e10cSrcweir 		else
829*cdf0e10cSrcweir 		{
830*cdf0e10cSrcweir 			if( !aMtrPercentDiagonal.IsEmptyFieldValue() )
831*cdf0e10cSrcweir 			{
832*cdf0e10cSrcweir 				aMtrPercentDiagonal.SetEmptyFieldValue();
833*cdf0e10cSrcweir 				bUpdate = sal_True;
834*cdf0e10cSrcweir 			}
835*cdf0e10cSrcweir 		}
836*cdf0e10cSrcweir 	}
837*cdf0e10cSrcweir 
838*cdf0e10cSrcweir 	// Tiefenskalierung
839*cdf0e10cSrcweir 	if( aMtrBackscale.IsEnabled() )
840*cdf0e10cSrcweir 	{
841*cdf0e10cSrcweir 		eState = rAttrs.GetItemState(SDRATTR_3DOBJ_BACKSCALE);
842*cdf0e10cSrcweir 		if( eState != SFX_ITEM_DONTCARE )
843*cdf0e10cSrcweir 		{
844*cdf0e10cSrcweir 			sal_uInt16 nValue = ((const Svx3DBackscaleItem&)rAttrs.Get(SDRATTR_3DOBJ_BACKSCALE)).GetValue();
845*cdf0e10cSrcweir 			if( nValue != aMtrBackscale.GetValue() )
846*cdf0e10cSrcweir 			{
847*cdf0e10cSrcweir 				aMtrBackscale.SetValue( nValue );
848*cdf0e10cSrcweir 				bUpdate = sal_True;
849*cdf0e10cSrcweir 			}
850*cdf0e10cSrcweir 			else if( aMtrBackscale.IsEmptyFieldValue() )
851*cdf0e10cSrcweir 				aMtrBackscale.SetValue( nValue );
852*cdf0e10cSrcweir 		}
853*cdf0e10cSrcweir 		else
854*cdf0e10cSrcweir 		{
855*cdf0e10cSrcweir 			if( !aMtrBackscale.IsEmptyFieldValue() )
856*cdf0e10cSrcweir 			{
857*cdf0e10cSrcweir 				aMtrBackscale.SetEmptyFieldValue();
858*cdf0e10cSrcweir 				bUpdate = sal_True;
859*cdf0e10cSrcweir 			}
860*cdf0e10cSrcweir 		}
861*cdf0e10cSrcweir 	}
862*cdf0e10cSrcweir 
863*cdf0e10cSrcweir 	// Endwinkel
864*cdf0e10cSrcweir 	if( aMtrEndAngle.IsEnabled() )
865*cdf0e10cSrcweir 	{
866*cdf0e10cSrcweir 		eState = rAttrs.GetItemState(SDRATTR_3DOBJ_END_ANGLE);
867*cdf0e10cSrcweir 		if( eState != SFX_ITEM_DONTCARE )
868*cdf0e10cSrcweir 		{
869*cdf0e10cSrcweir 			sal_Int32 nValue = ((const Svx3DEndAngleItem&)rAttrs.Get(SDRATTR_3DOBJ_END_ANGLE)).GetValue();
870*cdf0e10cSrcweir 			if( nValue != aMtrEndAngle.GetValue() )
871*cdf0e10cSrcweir 			{
872*cdf0e10cSrcweir 				aMtrEndAngle.SetValue( nValue );
873*cdf0e10cSrcweir 				bUpdate = sal_True;
874*cdf0e10cSrcweir 			}
875*cdf0e10cSrcweir 		}
876*cdf0e10cSrcweir 		else
877*cdf0e10cSrcweir 		{
878*cdf0e10cSrcweir 			if( !aMtrEndAngle.IsEmptyFieldValue() )
879*cdf0e10cSrcweir 			{
880*cdf0e10cSrcweir 				aMtrEndAngle.SetEmptyFieldValue();
881*cdf0e10cSrcweir 				bUpdate = sal_True;
882*cdf0e10cSrcweir 			}
883*cdf0e10cSrcweir 		}
884*cdf0e10cSrcweir 	}
885*cdf0e10cSrcweir 
886*cdf0e10cSrcweir 	// Normalentyp
887*cdf0e10cSrcweir 	eState = rAttrs.GetItemState(SDRATTR_3DOBJ_NORMALS_KIND);
888*cdf0e10cSrcweir 	if( eState != SFX_ITEM_DONTCARE )
889*cdf0e10cSrcweir 	{
890*cdf0e10cSrcweir 		sal_uInt16 nValue = ((const Svx3DNormalsKindItem&)rAttrs.Get(SDRATTR_3DOBJ_NORMALS_KIND)).GetValue();
891*cdf0e10cSrcweir 
892*cdf0e10cSrcweir 		if( ( !aBtnNormalsObj.IsChecked() && nValue == 0 ) ||
893*cdf0e10cSrcweir 			( !aBtnNormalsFlat.IsChecked() && nValue == 1 ) ||
894*cdf0e10cSrcweir 			( !aBtnNormalsSphere.IsChecked() && nValue == 2 ) )
895*cdf0e10cSrcweir 		{
896*cdf0e10cSrcweir 			aBtnNormalsObj.Check( nValue == 0 );
897*cdf0e10cSrcweir 			aBtnNormalsFlat.Check( nValue == 1 );
898*cdf0e10cSrcweir 			aBtnNormalsSphere.Check( nValue == 2 );
899*cdf0e10cSrcweir 			bUpdate = sal_True;
900*cdf0e10cSrcweir 		}
901*cdf0e10cSrcweir 	}
902*cdf0e10cSrcweir 	else
903*cdf0e10cSrcweir 	{
904*cdf0e10cSrcweir 		if( aBtnNormalsObj.IsChecked() ||
905*cdf0e10cSrcweir 			aBtnNormalsFlat.IsChecked() ||
906*cdf0e10cSrcweir 			aBtnNormalsSphere.IsChecked() )
907*cdf0e10cSrcweir 		{
908*cdf0e10cSrcweir 			aBtnNormalsObj.Check( sal_False );
909*cdf0e10cSrcweir 			aBtnNormalsFlat.Check( sal_False );
910*cdf0e10cSrcweir 			aBtnNormalsSphere.Check( sal_False );
911*cdf0e10cSrcweir 			bUpdate = sal_True;
912*cdf0e10cSrcweir 		}
913*cdf0e10cSrcweir 	}
914*cdf0e10cSrcweir 
915*cdf0e10cSrcweir 	// Normalen invertieren
916*cdf0e10cSrcweir 	eState = rAttrs.GetItemState(SDRATTR_3DOBJ_NORMALS_INVERT);
917*cdf0e10cSrcweir 	if( eState != SFX_ITEM_DONTCARE )
918*cdf0e10cSrcweir 	{
919*cdf0e10cSrcweir 		sal_Bool bValue = ((const Svx3DNormalsInvertItem&)rAttrs.Get(SDRATTR_3DOBJ_NORMALS_INVERT)).GetValue();
920*cdf0e10cSrcweir 		if( bValue != aBtnNormalsInvert.IsChecked() )
921*cdf0e10cSrcweir 		{
922*cdf0e10cSrcweir 			aBtnNormalsInvert.Check( bValue );
923*cdf0e10cSrcweir 			bUpdate = sal_True;
924*cdf0e10cSrcweir 		}
925*cdf0e10cSrcweir 		else if( aBtnNormalsInvert.GetState() == STATE_DONTKNOW )
926*cdf0e10cSrcweir 			aBtnNormalsInvert.Check( bValue );
927*cdf0e10cSrcweir 	}
928*cdf0e10cSrcweir 	else
929*cdf0e10cSrcweir 	{
930*cdf0e10cSrcweir 		if( aBtnNormalsInvert.GetState() != STATE_DONTKNOW )
931*cdf0e10cSrcweir 		{
932*cdf0e10cSrcweir 			aBtnNormalsInvert.SetState( STATE_DONTKNOW );
933*cdf0e10cSrcweir 			bUpdate = sal_True;
934*cdf0e10cSrcweir 		}
935*cdf0e10cSrcweir 	}
936*cdf0e10cSrcweir 
937*cdf0e10cSrcweir 	// 2-seitige Beleuchtung
938*cdf0e10cSrcweir 	eState = rAttrs.GetItemState(SDRATTR_3DSCENE_TWO_SIDED_LIGHTING);
939*cdf0e10cSrcweir 	if( eState != SFX_ITEM_DONTCARE )
940*cdf0e10cSrcweir 	{
941*cdf0e10cSrcweir 		sal_Bool bValue = ((const Svx3DTwoSidedLightingItem&)rAttrs.Get(SDRATTR_3DSCENE_TWO_SIDED_LIGHTING)).GetValue();
942*cdf0e10cSrcweir 		if( bValue != aBtnTwoSidedLighting.IsChecked() )
943*cdf0e10cSrcweir 		{
944*cdf0e10cSrcweir 			aBtnTwoSidedLighting.Check( bValue );
945*cdf0e10cSrcweir 			bUpdate = sal_True;
946*cdf0e10cSrcweir 		}
947*cdf0e10cSrcweir 		else if( aBtnTwoSidedLighting.GetState() == STATE_DONTKNOW )
948*cdf0e10cSrcweir 			aBtnTwoSidedLighting.Check( bValue );
949*cdf0e10cSrcweir 	}
950*cdf0e10cSrcweir 	else
951*cdf0e10cSrcweir 	{
952*cdf0e10cSrcweir 		if( aBtnTwoSidedLighting.GetState() != STATE_DONTKNOW )
953*cdf0e10cSrcweir 		{
954*cdf0e10cSrcweir 			aBtnTwoSidedLighting.SetState( STATE_DONTKNOW );
955*cdf0e10cSrcweir 			bUpdate = sal_True;
956*cdf0e10cSrcweir 		}
957*cdf0e10cSrcweir 	}
958*cdf0e10cSrcweir 
959*cdf0e10cSrcweir // Darstellung
960*cdf0e10cSrcweir 	// Shademode
961*cdf0e10cSrcweir 	eState = rAttrs.GetItemState(SDRATTR_3DSCENE_SHADE_MODE);
962*cdf0e10cSrcweir 	if( eState != SFX_ITEM_DONTCARE )
963*cdf0e10cSrcweir 	{
964*cdf0e10cSrcweir 		sal_uInt16 nValue = ((const Svx3DShadeModeItem&)rAttrs.Get(SDRATTR_3DSCENE_SHADE_MODE)).GetValue();
965*cdf0e10cSrcweir 		if( nValue != aLbShademode.GetSelectEntryPos() )
966*cdf0e10cSrcweir 		{
967*cdf0e10cSrcweir 			aLbShademode.SelectEntryPos( nValue );
968*cdf0e10cSrcweir 			bUpdate = sal_True;
969*cdf0e10cSrcweir 		}
970*cdf0e10cSrcweir 	}
971*cdf0e10cSrcweir 	else
972*cdf0e10cSrcweir 	{
973*cdf0e10cSrcweir 		if( aLbShademode.GetSelectEntryCount() != 0 )
974*cdf0e10cSrcweir 		{
975*cdf0e10cSrcweir 			aLbShademode.SetNoSelection();
976*cdf0e10cSrcweir 			bUpdate = sal_True;
977*cdf0e10cSrcweir 		}
978*cdf0e10cSrcweir 	}
979*cdf0e10cSrcweir 
980*cdf0e10cSrcweir 	// 3D-Shatten
981*cdf0e10cSrcweir 	eState = rAttrs.GetItemState(SDRATTR_3DOBJ_SHADOW_3D);
982*cdf0e10cSrcweir 	if( eState != SFX_ITEM_DONTCARE )
983*cdf0e10cSrcweir 	{
984*cdf0e10cSrcweir 		sal_Bool bValue = ((const Svx3DShadow3DItem&)rAttrs.Get(SDRATTR_3DOBJ_SHADOW_3D)).GetValue();
985*cdf0e10cSrcweir 		if( bValue != aBtnShadow3d.IsChecked() )
986*cdf0e10cSrcweir 		{
987*cdf0e10cSrcweir 			aBtnShadow3d.Check( bValue );
988*cdf0e10cSrcweir 			aFtSlant.Enable( bValue );
989*cdf0e10cSrcweir 			aMtrSlant.Enable( bValue );
990*cdf0e10cSrcweir 			bUpdate = sal_True;
991*cdf0e10cSrcweir 		}
992*cdf0e10cSrcweir 		else if( aBtnShadow3d.GetState() == STATE_DONTKNOW )
993*cdf0e10cSrcweir 			aBtnShadow3d.Check( bValue );
994*cdf0e10cSrcweir 	}
995*cdf0e10cSrcweir 	else
996*cdf0e10cSrcweir 	{
997*cdf0e10cSrcweir 		if( aBtnShadow3d.GetState() != STATE_DONTKNOW )
998*cdf0e10cSrcweir 		{
999*cdf0e10cSrcweir 			aBtnShadow3d.SetState( STATE_DONTKNOW );
1000*cdf0e10cSrcweir 			bUpdate = sal_True;
1001*cdf0e10cSrcweir 		}
1002*cdf0e10cSrcweir 	}
1003*cdf0e10cSrcweir 
1004*cdf0e10cSrcweir 	// Neigung (Schatten)
1005*cdf0e10cSrcweir 	eState = rAttrs.GetItemState(SDRATTR_3DSCENE_SHADOW_SLANT);
1006*cdf0e10cSrcweir 	if( eState != SFX_ITEM_DONTCARE )
1007*cdf0e10cSrcweir 	{
1008*cdf0e10cSrcweir 		sal_uInt16 nValue = ((const Svx3DShadowSlantItem&)rAttrs.Get(SDRATTR_3DSCENE_SHADOW_SLANT)).GetValue();
1009*cdf0e10cSrcweir 		if( nValue != aMtrSlant.GetValue() )
1010*cdf0e10cSrcweir 		{
1011*cdf0e10cSrcweir 			aMtrSlant.SetValue( nValue );
1012*cdf0e10cSrcweir 			bUpdate = sal_True;
1013*cdf0e10cSrcweir 		}
1014*cdf0e10cSrcweir 	}
1015*cdf0e10cSrcweir 	else
1016*cdf0e10cSrcweir 	{
1017*cdf0e10cSrcweir 		if( !aMtrSlant.IsEmptyFieldValue() )
1018*cdf0e10cSrcweir 		{
1019*cdf0e10cSrcweir 			aMtrSlant.SetEmptyFieldValue();
1020*cdf0e10cSrcweir 			bUpdate = sal_True;
1021*cdf0e10cSrcweir 		}
1022*cdf0e10cSrcweir 	}
1023*cdf0e10cSrcweir 
1024*cdf0e10cSrcweir 	// Distanz
1025*cdf0e10cSrcweir 	eState = rAttrs.GetItemState(SDRATTR_3DSCENE_DISTANCE);
1026*cdf0e10cSrcweir 	if( eState != SFX_ITEM_DONTCARE )
1027*cdf0e10cSrcweir 	{
1028*cdf0e10cSrcweir 		sal_uInt32 nValue = ((const Svx3DDistanceItem&)rAttrs.Get(SDRATTR_3DSCENE_DISTANCE)).GetValue();
1029*cdf0e10cSrcweir 		sal_uInt32 nValue2 = GetCoreValue( aMtrDistance, ePoolUnit );
1030*cdf0e10cSrcweir 		if( nValue != nValue2 )
1031*cdf0e10cSrcweir 		{
1032*cdf0e10cSrcweir 			if( eFUnit != aMtrDistance.GetUnit() )
1033*cdf0e10cSrcweir 				SetFieldUnit( aMtrDistance, eFUnit );
1034*cdf0e10cSrcweir 
1035*cdf0e10cSrcweir 			SetMetricValue( aMtrDistance, nValue, ePoolUnit );
1036*cdf0e10cSrcweir 			bUpdate = sal_True;
1037*cdf0e10cSrcweir 		}
1038*cdf0e10cSrcweir 	}
1039*cdf0e10cSrcweir 	else
1040*cdf0e10cSrcweir 	{
1041*cdf0e10cSrcweir 		if( !aMtrDepth.IsEmptyFieldValue() )
1042*cdf0e10cSrcweir 		{
1043*cdf0e10cSrcweir 			aMtrDepth.SetEmptyFieldValue();
1044*cdf0e10cSrcweir 			bUpdate = sal_True;
1045*cdf0e10cSrcweir 		}
1046*cdf0e10cSrcweir 	}
1047*cdf0e10cSrcweir 
1048*cdf0e10cSrcweir 	// Brennweite
1049*cdf0e10cSrcweir 	eState = rAttrs.GetItemState(SDRATTR_3DSCENE_FOCAL_LENGTH);
1050*cdf0e10cSrcweir 	if( eState != SFX_ITEM_DONTCARE )
1051*cdf0e10cSrcweir 	{
1052*cdf0e10cSrcweir 		sal_uInt32 nValue = ((const Svx3DFocalLengthItem&)rAttrs.Get(SDRATTR_3DSCENE_FOCAL_LENGTH)).GetValue();
1053*cdf0e10cSrcweir 		sal_uInt32 nValue2 = GetCoreValue( aMtrFocalLength, ePoolUnit );
1054*cdf0e10cSrcweir 		if( nValue != nValue2 )
1055*cdf0e10cSrcweir 		{
1056*cdf0e10cSrcweir 			if( eFUnit != aMtrFocalLength.GetUnit() )
1057*cdf0e10cSrcweir 				SetFieldUnit( aMtrFocalLength, eFUnit );
1058*cdf0e10cSrcweir 
1059*cdf0e10cSrcweir 			SetMetricValue( aMtrFocalLength, nValue, ePoolUnit );
1060*cdf0e10cSrcweir 			bUpdate = sal_True;
1061*cdf0e10cSrcweir 		}
1062*cdf0e10cSrcweir 	}
1063*cdf0e10cSrcweir 	else
1064*cdf0e10cSrcweir 	{
1065*cdf0e10cSrcweir 		if( !aMtrFocalLength.IsEmptyFieldValue() )
1066*cdf0e10cSrcweir 		{
1067*cdf0e10cSrcweir 			aMtrFocalLength.SetEmptyFieldValue();
1068*cdf0e10cSrcweir 			bUpdate = sal_True;
1069*cdf0e10cSrcweir 		}
1070*cdf0e10cSrcweir 	}
1071*cdf0e10cSrcweir 
1072*cdf0e10cSrcweir // Beleuchtung
1073*cdf0e10cSrcweir 	Color aColor;
1074*cdf0e10cSrcweir 	basegfx::B3DVector aVector;
1075*cdf0e10cSrcweir 	// Licht 1 (Farbe)
1076*cdf0e10cSrcweir 	eState = rAttrs.GetItemState(SDRATTR_3DSCENE_LIGHTCOLOR_1);
1077*cdf0e10cSrcweir 	if( eState != SFX_ITEM_DONTCARE )
1078*cdf0e10cSrcweir 	{
1079*cdf0e10cSrcweir 		aColor = ((const Svx3DLightcolor1Item&)rAttrs.Get(SDRATTR_3DSCENE_LIGHTCOLOR_1)).GetValue();
1080*cdf0e10cSrcweir 		ColorLB* pLb = &aLbLight1;
1081*cdf0e10cSrcweir 		if( aColor != pLb->GetSelectEntryColor() )
1082*cdf0e10cSrcweir 		{
1083*cdf0e10cSrcweir 			LBSelectColor( pLb, aColor );
1084*cdf0e10cSrcweir 			bUpdate = sal_True;
1085*cdf0e10cSrcweir 		}
1086*cdf0e10cSrcweir 	}
1087*cdf0e10cSrcweir 	else
1088*cdf0e10cSrcweir 	{
1089*cdf0e10cSrcweir 		if( aLbLight1.GetSelectEntryCount() != 0 )
1090*cdf0e10cSrcweir 		{
1091*cdf0e10cSrcweir 			aLbLight1.SetNoSelection();
1092*cdf0e10cSrcweir 			bUpdate = sal_True;
1093*cdf0e10cSrcweir 		}
1094*cdf0e10cSrcweir 	}
1095*cdf0e10cSrcweir 	// Licht 1 (an/aus)
1096*cdf0e10cSrcweir 	eState = rAttrs.GetItemState(SDRATTR_3DSCENE_LIGHTON_1);
1097*cdf0e10cSrcweir 	if( eState != SFX_ITEM_DONTCARE )
1098*cdf0e10cSrcweir 	{
1099*cdf0e10cSrcweir 		bool bOn = ((const Svx3DLightOnOff1Item&)rAttrs.Get(SDRATTR_3DSCENE_LIGHTON_1)).GetValue() != 0;
1100*cdf0e10cSrcweir 		if( ( bOn && !GetUILightState( aBtnLight1 )) ||
1101*cdf0e10cSrcweir 			( !bOn && GetUILightState( aBtnLight1 )) )
1102*cdf0e10cSrcweir 		{
1103*cdf0e10cSrcweir 			SetUILightState( aBtnLight1, bOn );
1104*cdf0e10cSrcweir 			bUpdate = sal_True;
1105*cdf0e10cSrcweir 		}
1106*cdf0e10cSrcweir 		if( aBtnLight1.GetState() == STATE_DONTKNOW )
1107*cdf0e10cSrcweir 			aBtnLight1.Check( aBtnLight1.IsChecked() );
1108*cdf0e10cSrcweir 	}
1109*cdf0e10cSrcweir 	else
1110*cdf0e10cSrcweir 	{
1111*cdf0e10cSrcweir 		if( aBtnLight1.GetState() != STATE_DONTKNOW )
1112*cdf0e10cSrcweir 		{
1113*cdf0e10cSrcweir 			aBtnLight1.SetState( STATE_DONTKNOW );
1114*cdf0e10cSrcweir 			bUpdate = sal_True;
1115*cdf0e10cSrcweir 		}
1116*cdf0e10cSrcweir 	}
1117*cdf0e10cSrcweir 	// Licht 1 (Richtung)
1118*cdf0e10cSrcweir 	eState = rAttrs.GetItemState(SDRATTR_3DSCENE_LIGHTDIRECTION_1);
1119*cdf0e10cSrcweir 	if( eState != SFX_ITEM_DONTCARE )
1120*cdf0e10cSrcweir 	{
1121*cdf0e10cSrcweir 		bUpdate = sal_True;
1122*cdf0e10cSrcweir 	}
1123*cdf0e10cSrcweir 
1124*cdf0e10cSrcweir 	// Licht 2 (Farbe)
1125*cdf0e10cSrcweir 	eState = rAttrs.GetItemState(SDRATTR_3DSCENE_LIGHTCOLOR_2);
1126*cdf0e10cSrcweir 	if( eState != SFX_ITEM_DONTCARE )
1127*cdf0e10cSrcweir 	{
1128*cdf0e10cSrcweir 		aColor = ((const Svx3DLightcolor2Item&)rAttrs.Get(SDRATTR_3DSCENE_LIGHTCOLOR_2)).GetValue();
1129*cdf0e10cSrcweir 		ColorLB* pLb = &aLbLight2;
1130*cdf0e10cSrcweir 		if( aColor != pLb->GetSelectEntryColor() )
1131*cdf0e10cSrcweir 		{
1132*cdf0e10cSrcweir 			LBSelectColor( pLb, aColor );
1133*cdf0e10cSrcweir 			bUpdate = sal_True;
1134*cdf0e10cSrcweir 		}
1135*cdf0e10cSrcweir 	}
1136*cdf0e10cSrcweir 	else
1137*cdf0e10cSrcweir 	{
1138*cdf0e10cSrcweir 		if( aLbLight2.GetSelectEntryCount() != 0 )
1139*cdf0e10cSrcweir 		{
1140*cdf0e10cSrcweir 			aLbLight2.SetNoSelection();
1141*cdf0e10cSrcweir 			bUpdate = sal_True;
1142*cdf0e10cSrcweir 		}
1143*cdf0e10cSrcweir 	}
1144*cdf0e10cSrcweir 	// Licht 2 (an/aus)
1145*cdf0e10cSrcweir 	eState = rAttrs.GetItemState(SDRATTR_3DSCENE_LIGHTON_2);
1146*cdf0e10cSrcweir 	if( eState != SFX_ITEM_DONTCARE )
1147*cdf0e10cSrcweir 	{
1148*cdf0e10cSrcweir 		bool bOn = ((const Svx3DLightOnOff2Item&)rAttrs.Get(SDRATTR_3DSCENE_LIGHTON_2)).GetValue() != 0;
1149*cdf0e10cSrcweir 		if( ( bOn && !GetUILightState( aBtnLight2 )) ||
1150*cdf0e10cSrcweir 			( !bOn && GetUILightState( aBtnLight2 )) )
1151*cdf0e10cSrcweir 		{
1152*cdf0e10cSrcweir 			SetUILightState( aBtnLight2, bOn );
1153*cdf0e10cSrcweir 			bUpdate = sal_True;
1154*cdf0e10cSrcweir 		}
1155*cdf0e10cSrcweir 		if( aBtnLight2.GetState() == STATE_DONTKNOW )
1156*cdf0e10cSrcweir 			aBtnLight2.Check( aBtnLight2.IsChecked() );
1157*cdf0e10cSrcweir 	}
1158*cdf0e10cSrcweir 	else
1159*cdf0e10cSrcweir 	{
1160*cdf0e10cSrcweir 		if( aBtnLight2.GetState() != STATE_DONTKNOW )
1161*cdf0e10cSrcweir 		{
1162*cdf0e10cSrcweir 			aBtnLight2.SetState( STATE_DONTKNOW );
1163*cdf0e10cSrcweir 			bUpdate = sal_True;
1164*cdf0e10cSrcweir 		}
1165*cdf0e10cSrcweir 	}
1166*cdf0e10cSrcweir 	// Licht 2 (Richtung)
1167*cdf0e10cSrcweir 	eState = rAttrs.GetItemState(SDRATTR_3DSCENE_LIGHTDIRECTION_2);
1168*cdf0e10cSrcweir 	if( eState != SFX_ITEM_DONTCARE )
1169*cdf0e10cSrcweir 	{
1170*cdf0e10cSrcweir 		bUpdate = sal_True;
1171*cdf0e10cSrcweir 	}
1172*cdf0e10cSrcweir 
1173*cdf0e10cSrcweir 	// Licht 3 (Farbe)
1174*cdf0e10cSrcweir 	eState = rAttrs.GetItemState(SDRATTR_3DSCENE_LIGHTCOLOR_3);
1175*cdf0e10cSrcweir 	if( eState != SFX_ITEM_DONTCARE )
1176*cdf0e10cSrcweir 	{
1177*cdf0e10cSrcweir 		aColor = ((const Svx3DLightcolor3Item&)rAttrs.Get(SDRATTR_3DSCENE_LIGHTCOLOR_3)).GetValue();
1178*cdf0e10cSrcweir 		ColorLB* pLb = &aLbLight3;
1179*cdf0e10cSrcweir 		if( aColor != pLb->GetSelectEntryColor() )
1180*cdf0e10cSrcweir 		{
1181*cdf0e10cSrcweir 			LBSelectColor( pLb, aColor );
1182*cdf0e10cSrcweir 			bUpdate = sal_True;
1183*cdf0e10cSrcweir 		}
1184*cdf0e10cSrcweir 	}
1185*cdf0e10cSrcweir 	else
1186*cdf0e10cSrcweir 	{
1187*cdf0e10cSrcweir 		if( aLbLight3.GetSelectEntryCount() != 0 )
1188*cdf0e10cSrcweir 		{
1189*cdf0e10cSrcweir 			aLbLight3.SetNoSelection();
1190*cdf0e10cSrcweir 			bUpdate = sal_True;
1191*cdf0e10cSrcweir 		}
1192*cdf0e10cSrcweir 	}
1193*cdf0e10cSrcweir 	// Licht 3 (an/aus)
1194*cdf0e10cSrcweir 	eState = rAttrs.GetItemState(SDRATTR_3DSCENE_LIGHTON_3);
1195*cdf0e10cSrcweir 	if( eState != SFX_ITEM_DONTCARE )
1196*cdf0e10cSrcweir 	{
1197*cdf0e10cSrcweir 		bool bOn = ((const Svx3DLightOnOff3Item&)rAttrs.Get(SDRATTR_3DSCENE_LIGHTON_3)).GetValue() != 0;
1198*cdf0e10cSrcweir 		if( ( bOn && !GetUILightState( aBtnLight3)) ||
1199*cdf0e10cSrcweir 			( !bOn && GetUILightState( aBtnLight3)) )
1200*cdf0e10cSrcweir 		{
1201*cdf0e10cSrcweir 			SetUILightState( aBtnLight3, bOn );
1202*cdf0e10cSrcweir 			bUpdate = sal_True;
1203*cdf0e10cSrcweir 		}
1204*cdf0e10cSrcweir 		if( aBtnLight3.GetState() == STATE_DONTKNOW )
1205*cdf0e10cSrcweir 			aBtnLight3.Check( aBtnLight3.IsChecked() );
1206*cdf0e10cSrcweir 	}
1207*cdf0e10cSrcweir 	else
1208*cdf0e10cSrcweir 	{
1209*cdf0e10cSrcweir 		if( aBtnLight3.GetState() != STATE_DONTKNOW )
1210*cdf0e10cSrcweir 		{
1211*cdf0e10cSrcweir 			aBtnLight3.SetState( STATE_DONTKNOW );
1212*cdf0e10cSrcweir 			bUpdate = sal_True;
1213*cdf0e10cSrcweir 		}
1214*cdf0e10cSrcweir 	}
1215*cdf0e10cSrcweir 	// Licht 3 (Richtung)
1216*cdf0e10cSrcweir 	eState = rAttrs.GetItemState(SDRATTR_3DSCENE_LIGHTDIRECTION_3);
1217*cdf0e10cSrcweir 	if( eState != SFX_ITEM_DONTCARE )
1218*cdf0e10cSrcweir 	{
1219*cdf0e10cSrcweir 		bUpdate = sal_True;
1220*cdf0e10cSrcweir 	}
1221*cdf0e10cSrcweir 
1222*cdf0e10cSrcweir 	// Licht 4 (Farbe)
1223*cdf0e10cSrcweir 	eState = rAttrs.GetItemState(SDRATTR_3DSCENE_LIGHTCOLOR_4);
1224*cdf0e10cSrcweir 	if( eState != SFX_ITEM_DONTCARE )
1225*cdf0e10cSrcweir 	{
1226*cdf0e10cSrcweir 		aColor = ((const Svx3DLightcolor4Item&)rAttrs.Get(SDRATTR_3DSCENE_LIGHTCOLOR_4)).GetValue();
1227*cdf0e10cSrcweir 		ColorLB* pLb = &aLbLight4;
1228*cdf0e10cSrcweir 		if( aColor != pLb->GetSelectEntryColor() )
1229*cdf0e10cSrcweir 		{
1230*cdf0e10cSrcweir 			LBSelectColor( pLb, aColor );
1231*cdf0e10cSrcweir 			bUpdate = sal_True;
1232*cdf0e10cSrcweir 		}
1233*cdf0e10cSrcweir 	}
1234*cdf0e10cSrcweir 	else
1235*cdf0e10cSrcweir 	{
1236*cdf0e10cSrcweir 		if( aLbLight4.GetSelectEntryCount() != 0 )
1237*cdf0e10cSrcweir 		{
1238*cdf0e10cSrcweir 			aLbLight4.SetNoSelection();
1239*cdf0e10cSrcweir 			bUpdate = sal_True;
1240*cdf0e10cSrcweir 		}
1241*cdf0e10cSrcweir 	}
1242*cdf0e10cSrcweir 	// Licht 4 (an/aus)
1243*cdf0e10cSrcweir 	eState = rAttrs.GetItemState(SDRATTR_3DSCENE_LIGHTON_4);
1244*cdf0e10cSrcweir 	if( eState != SFX_ITEM_DONTCARE )
1245*cdf0e10cSrcweir 	{
1246*cdf0e10cSrcweir 		bool bOn = ((const Svx3DLightOnOff4Item&)rAttrs.Get(SDRATTR_3DSCENE_LIGHTON_4)).GetValue() != 0;
1247*cdf0e10cSrcweir 		if( ( bOn && !GetUILightState( aBtnLight4 )) ||
1248*cdf0e10cSrcweir 			( !bOn && GetUILightState( aBtnLight4 )) )
1249*cdf0e10cSrcweir 		{
1250*cdf0e10cSrcweir 			SetUILightState( aBtnLight4, bOn );
1251*cdf0e10cSrcweir 			bUpdate = sal_True;
1252*cdf0e10cSrcweir 		}
1253*cdf0e10cSrcweir 		if( aBtnLight4.GetState() == STATE_DONTKNOW )
1254*cdf0e10cSrcweir 			aBtnLight4.Check( aBtnLight4.IsChecked() );
1255*cdf0e10cSrcweir 	}
1256*cdf0e10cSrcweir 	else
1257*cdf0e10cSrcweir 	{
1258*cdf0e10cSrcweir 		if( aBtnLight4.GetState() != STATE_DONTKNOW )
1259*cdf0e10cSrcweir 		{
1260*cdf0e10cSrcweir 			aBtnLight4.SetState( STATE_DONTKNOW );
1261*cdf0e10cSrcweir 			bUpdate = sal_True;
1262*cdf0e10cSrcweir 		}
1263*cdf0e10cSrcweir 	}
1264*cdf0e10cSrcweir 	// Licht 4 (Richtung)
1265*cdf0e10cSrcweir 	eState = rAttrs.GetItemState(SDRATTR_3DSCENE_LIGHTDIRECTION_4);
1266*cdf0e10cSrcweir 	if( eState != SFX_ITEM_DONTCARE )
1267*cdf0e10cSrcweir 	{
1268*cdf0e10cSrcweir 		bUpdate = sal_True;
1269*cdf0e10cSrcweir 	}
1270*cdf0e10cSrcweir 
1271*cdf0e10cSrcweir 	// Licht 5 (Farbe)
1272*cdf0e10cSrcweir 	eState = rAttrs.GetItemState(SDRATTR_3DSCENE_LIGHTCOLOR_5);
1273*cdf0e10cSrcweir 	if( eState != SFX_ITEM_DONTCARE )
1274*cdf0e10cSrcweir 	{
1275*cdf0e10cSrcweir 		aColor = ((const Svx3DLightcolor5Item&)rAttrs.Get(SDRATTR_3DSCENE_LIGHTCOLOR_5)).GetValue();
1276*cdf0e10cSrcweir 		ColorLB* pLb = &aLbLight5;
1277*cdf0e10cSrcweir 		if( aColor != pLb->GetSelectEntryColor() )
1278*cdf0e10cSrcweir 		{
1279*cdf0e10cSrcweir 			LBSelectColor( pLb, aColor );
1280*cdf0e10cSrcweir 			bUpdate = sal_True;
1281*cdf0e10cSrcweir 		}
1282*cdf0e10cSrcweir 	}
1283*cdf0e10cSrcweir 	else
1284*cdf0e10cSrcweir 	{
1285*cdf0e10cSrcweir 		if( aLbLight5.GetSelectEntryCount() != 0 )
1286*cdf0e10cSrcweir 		{
1287*cdf0e10cSrcweir 			aLbLight5.SetNoSelection();
1288*cdf0e10cSrcweir 			bUpdate = sal_True;
1289*cdf0e10cSrcweir 		}
1290*cdf0e10cSrcweir 	}
1291*cdf0e10cSrcweir 	// Licht 5 (an/aus)
1292*cdf0e10cSrcweir 	eState = rAttrs.GetItemState(SDRATTR_3DSCENE_LIGHTON_5);
1293*cdf0e10cSrcweir 	if( eState != SFX_ITEM_DONTCARE )
1294*cdf0e10cSrcweir 	{
1295*cdf0e10cSrcweir 		bool bOn = ((const Svx3DLightOnOff5Item&)rAttrs.Get(SDRATTR_3DSCENE_LIGHTON_5)).GetValue() != 0;
1296*cdf0e10cSrcweir 		if( ( bOn && !GetUILightState( aBtnLight5 )) ||
1297*cdf0e10cSrcweir 			( !bOn && GetUILightState( aBtnLight5 )) )
1298*cdf0e10cSrcweir 		{
1299*cdf0e10cSrcweir 			SetUILightState( aBtnLight5, bOn );
1300*cdf0e10cSrcweir 			bUpdate = sal_True;
1301*cdf0e10cSrcweir 		}
1302*cdf0e10cSrcweir 		if( aBtnLight5.GetState() == STATE_DONTKNOW )
1303*cdf0e10cSrcweir 			aBtnLight5.Check( aBtnLight5.IsChecked() );
1304*cdf0e10cSrcweir 	}
1305*cdf0e10cSrcweir 	else
1306*cdf0e10cSrcweir 	{
1307*cdf0e10cSrcweir 		if( aBtnLight5.GetState() != STATE_DONTKNOW )
1308*cdf0e10cSrcweir 		{
1309*cdf0e10cSrcweir 			aBtnLight5.SetState( STATE_DONTKNOW );
1310*cdf0e10cSrcweir 			bUpdate = sal_True;
1311*cdf0e10cSrcweir 		}
1312*cdf0e10cSrcweir 	}
1313*cdf0e10cSrcweir 	// Licht 5 (Richtung)
1314*cdf0e10cSrcweir 	eState = rAttrs.GetItemState(SDRATTR_3DSCENE_LIGHTDIRECTION_5);
1315*cdf0e10cSrcweir 	if( eState != SFX_ITEM_DONTCARE )
1316*cdf0e10cSrcweir 	{
1317*cdf0e10cSrcweir 		bUpdate = sal_True;
1318*cdf0e10cSrcweir 	}
1319*cdf0e10cSrcweir 
1320*cdf0e10cSrcweir 	// Licht 6 (Farbe)
1321*cdf0e10cSrcweir 	eState = rAttrs.GetItemState(SDRATTR_3DSCENE_LIGHTCOLOR_6);
1322*cdf0e10cSrcweir 	if( eState != SFX_ITEM_DONTCARE )
1323*cdf0e10cSrcweir 	{
1324*cdf0e10cSrcweir 		aColor = ((const Svx3DLightcolor6Item&)rAttrs.Get(SDRATTR_3DSCENE_LIGHTCOLOR_6)).GetValue();
1325*cdf0e10cSrcweir 		ColorLB* pLb = &aLbLight6;
1326*cdf0e10cSrcweir 		if( aColor != pLb->GetSelectEntryColor() )
1327*cdf0e10cSrcweir 		{
1328*cdf0e10cSrcweir 			LBSelectColor( pLb, aColor );
1329*cdf0e10cSrcweir 			bUpdate = sal_True;
1330*cdf0e10cSrcweir 		}
1331*cdf0e10cSrcweir 	}
1332*cdf0e10cSrcweir 	else
1333*cdf0e10cSrcweir 	{
1334*cdf0e10cSrcweir 		if( aLbLight6.GetSelectEntryCount() != 0 )
1335*cdf0e10cSrcweir 		{
1336*cdf0e10cSrcweir 			aLbLight6.SetNoSelection();
1337*cdf0e10cSrcweir 			bUpdate = sal_True;
1338*cdf0e10cSrcweir 		}
1339*cdf0e10cSrcweir 	}
1340*cdf0e10cSrcweir 	// Licht 6 (an/aus)
1341*cdf0e10cSrcweir 	eState = rAttrs.GetItemState(SDRATTR_3DSCENE_LIGHTON_6);
1342*cdf0e10cSrcweir 	if( eState != SFX_ITEM_DONTCARE )
1343*cdf0e10cSrcweir 	{
1344*cdf0e10cSrcweir 		bool bOn = ((const Svx3DLightOnOff6Item&)rAttrs.Get(SDRATTR_3DSCENE_LIGHTON_6)).GetValue() != 0;
1345*cdf0e10cSrcweir 		if( ( bOn && !GetUILightState( aBtnLight6 )) ||
1346*cdf0e10cSrcweir 			( !bOn && GetUILightState( aBtnLight6 )) )
1347*cdf0e10cSrcweir 		{
1348*cdf0e10cSrcweir 			SetUILightState( aBtnLight6, bOn );
1349*cdf0e10cSrcweir 			bUpdate = sal_True;
1350*cdf0e10cSrcweir 		}
1351*cdf0e10cSrcweir 		if( aBtnLight6.GetState() == STATE_DONTKNOW )
1352*cdf0e10cSrcweir 			aBtnLight6.Check( aBtnLight6.IsChecked() );
1353*cdf0e10cSrcweir 	}
1354*cdf0e10cSrcweir 	else
1355*cdf0e10cSrcweir 	{
1356*cdf0e10cSrcweir 		if( aBtnLight6.GetState() != STATE_DONTKNOW )
1357*cdf0e10cSrcweir 		{
1358*cdf0e10cSrcweir 			aBtnLight6.SetState( STATE_DONTKNOW );
1359*cdf0e10cSrcweir 			bUpdate = sal_True;
1360*cdf0e10cSrcweir 		}
1361*cdf0e10cSrcweir 	}
1362*cdf0e10cSrcweir 	// Licht 6 (Richtung)
1363*cdf0e10cSrcweir 	eState = rAttrs.GetItemState(SDRATTR_3DSCENE_LIGHTDIRECTION_6);
1364*cdf0e10cSrcweir 	if( eState != SFX_ITEM_DONTCARE )
1365*cdf0e10cSrcweir 	{
1366*cdf0e10cSrcweir 		bUpdate = sal_True;
1367*cdf0e10cSrcweir 	}
1368*cdf0e10cSrcweir 
1369*cdf0e10cSrcweir 	// Licht 7 (Farbe)
1370*cdf0e10cSrcweir 	eState = rAttrs.GetItemState(SDRATTR_3DSCENE_LIGHTCOLOR_7);
1371*cdf0e10cSrcweir 	if( eState != SFX_ITEM_DONTCARE )
1372*cdf0e10cSrcweir 	{
1373*cdf0e10cSrcweir 		aColor = ((const Svx3DLightcolor7Item&)rAttrs.Get(SDRATTR_3DSCENE_LIGHTCOLOR_7)).GetValue();
1374*cdf0e10cSrcweir 		ColorLB* pLb = &aLbLight7;
1375*cdf0e10cSrcweir 		if( aColor != pLb->GetSelectEntryColor() )
1376*cdf0e10cSrcweir 		{
1377*cdf0e10cSrcweir 			LBSelectColor( pLb, aColor );
1378*cdf0e10cSrcweir 			bUpdate = sal_True;
1379*cdf0e10cSrcweir 		}
1380*cdf0e10cSrcweir 	}
1381*cdf0e10cSrcweir 	else
1382*cdf0e10cSrcweir 	{
1383*cdf0e10cSrcweir 		if( aLbLight7.GetSelectEntryCount() != 0 )
1384*cdf0e10cSrcweir 		{
1385*cdf0e10cSrcweir 			aLbLight7.SetNoSelection();
1386*cdf0e10cSrcweir 			bUpdate = sal_True;
1387*cdf0e10cSrcweir 		}
1388*cdf0e10cSrcweir 	}
1389*cdf0e10cSrcweir 	// Licht 7 (an/aus)
1390*cdf0e10cSrcweir 	eState = rAttrs.GetItemState(SDRATTR_3DSCENE_LIGHTON_7);
1391*cdf0e10cSrcweir 	if( eState != SFX_ITEM_DONTCARE )
1392*cdf0e10cSrcweir 	{
1393*cdf0e10cSrcweir 		bool bOn = ((const Svx3DLightOnOff7Item&)rAttrs.Get(SDRATTR_3DSCENE_LIGHTON_7)).GetValue() != 0;
1394*cdf0e10cSrcweir 		if( ( bOn && !GetUILightState( aBtnLight7 )) ||
1395*cdf0e10cSrcweir 			( !bOn && GetUILightState( aBtnLight7 )) )
1396*cdf0e10cSrcweir 		{
1397*cdf0e10cSrcweir 			SetUILightState( aBtnLight7	, bOn );
1398*cdf0e10cSrcweir 			bUpdate = sal_True;
1399*cdf0e10cSrcweir 		}
1400*cdf0e10cSrcweir 		if( aBtnLight7.GetState() == STATE_DONTKNOW )
1401*cdf0e10cSrcweir 			aBtnLight7.Check( aBtnLight7.IsChecked() );
1402*cdf0e10cSrcweir 	}
1403*cdf0e10cSrcweir 	else
1404*cdf0e10cSrcweir 	{
1405*cdf0e10cSrcweir 		if( aBtnLight7.GetState() != STATE_DONTKNOW )
1406*cdf0e10cSrcweir 		{
1407*cdf0e10cSrcweir 			aBtnLight7.SetState( STATE_DONTKNOW );
1408*cdf0e10cSrcweir 			bUpdate = sal_True;
1409*cdf0e10cSrcweir 		}
1410*cdf0e10cSrcweir 	}
1411*cdf0e10cSrcweir 	// Licht 7 (Richtung)
1412*cdf0e10cSrcweir 	eState = rAttrs.GetItemState(SDRATTR_3DSCENE_LIGHTDIRECTION_7);
1413*cdf0e10cSrcweir 	if( eState != SFX_ITEM_DONTCARE )
1414*cdf0e10cSrcweir 	{
1415*cdf0e10cSrcweir 		bUpdate = sal_True;
1416*cdf0e10cSrcweir 	}
1417*cdf0e10cSrcweir 
1418*cdf0e10cSrcweir 	// Licht 8 (Farbe)
1419*cdf0e10cSrcweir 	eState = rAttrs.GetItemState(SDRATTR_3DSCENE_LIGHTCOLOR_8);
1420*cdf0e10cSrcweir 	if( eState != SFX_ITEM_DONTCARE )
1421*cdf0e10cSrcweir 	{
1422*cdf0e10cSrcweir 		aColor = ((const Svx3DLightcolor8Item&)rAttrs.Get(SDRATTR_3DSCENE_LIGHTCOLOR_8)).GetValue();
1423*cdf0e10cSrcweir 		ColorLB* pLb = &aLbLight8;
1424*cdf0e10cSrcweir 		if( aColor != pLb->GetSelectEntryColor() )
1425*cdf0e10cSrcweir 		{
1426*cdf0e10cSrcweir 			LBSelectColor( pLb, aColor );
1427*cdf0e10cSrcweir 			bUpdate = sal_True;
1428*cdf0e10cSrcweir 		}
1429*cdf0e10cSrcweir 	}
1430*cdf0e10cSrcweir 	else
1431*cdf0e10cSrcweir 	{
1432*cdf0e10cSrcweir 		if( aLbLight8.GetSelectEntryCount() != 0 )
1433*cdf0e10cSrcweir 		{
1434*cdf0e10cSrcweir 			aLbLight8.SetNoSelection();
1435*cdf0e10cSrcweir 			bUpdate = sal_True;
1436*cdf0e10cSrcweir 		}
1437*cdf0e10cSrcweir 	}
1438*cdf0e10cSrcweir 	// Licht 8 (an/aus)
1439*cdf0e10cSrcweir 	eState = rAttrs.GetItemState(SDRATTR_3DSCENE_LIGHTON_8);
1440*cdf0e10cSrcweir 	if( eState != SFX_ITEM_DONTCARE )
1441*cdf0e10cSrcweir 	{
1442*cdf0e10cSrcweir 		bool bOn = ((const Svx3DLightOnOff8Item&)rAttrs.Get(SDRATTR_3DSCENE_LIGHTON_8)).GetValue() != 0;
1443*cdf0e10cSrcweir 		if( ( bOn && !GetUILightState( aBtnLight8 )) ||
1444*cdf0e10cSrcweir 			( !bOn && GetUILightState( aBtnLight8 )) )
1445*cdf0e10cSrcweir 		{
1446*cdf0e10cSrcweir 			SetUILightState( aBtnLight8, bOn );
1447*cdf0e10cSrcweir 			bUpdate = sal_True;
1448*cdf0e10cSrcweir 		}
1449*cdf0e10cSrcweir 		if( aBtnLight8.GetState() == STATE_DONTKNOW )
1450*cdf0e10cSrcweir 			aBtnLight8.Check( aBtnLight8.IsChecked() );
1451*cdf0e10cSrcweir 	}
1452*cdf0e10cSrcweir 	else
1453*cdf0e10cSrcweir 	{
1454*cdf0e10cSrcweir 		if( aBtnLight8.GetState() != STATE_DONTKNOW )
1455*cdf0e10cSrcweir 		{
1456*cdf0e10cSrcweir 			aBtnLight8.SetState( STATE_DONTKNOW );
1457*cdf0e10cSrcweir 			bUpdate = sal_True;
1458*cdf0e10cSrcweir 		}
1459*cdf0e10cSrcweir 	}
1460*cdf0e10cSrcweir 	// Licht 8 (Richtung)
1461*cdf0e10cSrcweir 	eState = rAttrs.GetItemState(SDRATTR_3DSCENE_LIGHTDIRECTION_8);
1462*cdf0e10cSrcweir 	if( eState != SFX_ITEM_DONTCARE )
1463*cdf0e10cSrcweir 	{
1464*cdf0e10cSrcweir 		bUpdate = sal_True;
1465*cdf0e10cSrcweir 	}
1466*cdf0e10cSrcweir 
1467*cdf0e10cSrcweir 	// Umgebungslicht
1468*cdf0e10cSrcweir 	eState = rAttrs.GetItemState(SDRATTR_3DSCENE_AMBIENTCOLOR);
1469*cdf0e10cSrcweir 	if( eState != SFX_ITEM_DONTCARE )
1470*cdf0e10cSrcweir 	{
1471*cdf0e10cSrcweir 		aColor = ((const Svx3DAmbientcolorItem&)rAttrs.Get(SDRATTR_3DSCENE_AMBIENTCOLOR)).GetValue();
1472*cdf0e10cSrcweir 		ColorLB* pLb = &aLbAmbientlight;
1473*cdf0e10cSrcweir 		if( aColor != pLb->GetSelectEntryColor() )
1474*cdf0e10cSrcweir 		{
1475*cdf0e10cSrcweir 			LBSelectColor( pLb, aColor );
1476*cdf0e10cSrcweir 			bUpdate = sal_True;
1477*cdf0e10cSrcweir 		}
1478*cdf0e10cSrcweir 	}
1479*cdf0e10cSrcweir 	else
1480*cdf0e10cSrcweir 	{
1481*cdf0e10cSrcweir 		if( aLbAmbientlight.GetSelectEntryCount() != 0 )
1482*cdf0e10cSrcweir 		{
1483*cdf0e10cSrcweir 			aLbAmbientlight.SetNoSelection();
1484*cdf0e10cSrcweir 			bUpdate = sal_True;
1485*cdf0e10cSrcweir 		}
1486*cdf0e10cSrcweir 	}
1487*cdf0e10cSrcweir 
1488*cdf0e10cSrcweir 
1489*cdf0e10cSrcweir // Texturen
1490*cdf0e10cSrcweir 	// Art
1491*cdf0e10cSrcweir 	if( bBitmap )
1492*cdf0e10cSrcweir 	{
1493*cdf0e10cSrcweir 		eState = rAttrs.GetItemState(SDRATTR_3DOBJ_TEXTURE_KIND);
1494*cdf0e10cSrcweir 		if( eState != SFX_ITEM_DONTCARE )
1495*cdf0e10cSrcweir 		{
1496*cdf0e10cSrcweir 			sal_uInt16 nValue = ((const Svx3DTextureKindItem&)rAttrs.Get(SDRATTR_3DOBJ_TEXTURE_KIND)).GetValue();
1497*cdf0e10cSrcweir 
1498*cdf0e10cSrcweir 			if( ( !aBtnTexLuminance.IsChecked() && nValue == 1 ) ||
1499*cdf0e10cSrcweir 				( !aBtnTexColor.IsChecked() && nValue == 3 ) )
1500*cdf0e10cSrcweir 			{
1501*cdf0e10cSrcweir 				aBtnTexLuminance.Check( nValue == 1 );
1502*cdf0e10cSrcweir 				aBtnTexColor.Check( nValue == 3 );
1503*cdf0e10cSrcweir 				bUpdate = sal_True;
1504*cdf0e10cSrcweir 			}
1505*cdf0e10cSrcweir 		}
1506*cdf0e10cSrcweir 		else
1507*cdf0e10cSrcweir 		{
1508*cdf0e10cSrcweir 			if( aBtnTexLuminance.IsChecked() ||
1509*cdf0e10cSrcweir 				aBtnTexColor.IsChecked() )
1510*cdf0e10cSrcweir 			{
1511*cdf0e10cSrcweir 				aBtnTexLuminance.Check( sal_False );
1512*cdf0e10cSrcweir 				aBtnTexColor.Check( sal_False );
1513*cdf0e10cSrcweir 				bUpdate = sal_True;
1514*cdf0e10cSrcweir 			}
1515*cdf0e10cSrcweir 		}
1516*cdf0e10cSrcweir 
1517*cdf0e10cSrcweir 		// Modus
1518*cdf0e10cSrcweir 		eState = rAttrs.GetItemState(SDRATTR_3DOBJ_TEXTURE_MODE);
1519*cdf0e10cSrcweir 		if( eState != SFX_ITEM_DONTCARE )
1520*cdf0e10cSrcweir 		{
1521*cdf0e10cSrcweir 			sal_uInt16 nValue = ((const Svx3DTextureModeItem&)rAttrs.Get(SDRATTR_3DOBJ_TEXTURE_MODE)).GetValue();
1522*cdf0e10cSrcweir 
1523*cdf0e10cSrcweir 			if( ( !aBtnTexReplace.IsChecked() && nValue == 1 ) ||
1524*cdf0e10cSrcweir 				( !aBtnTexModulate.IsChecked() && nValue == 2 ) )
1525*cdf0e10cSrcweir 			{
1526*cdf0e10cSrcweir 				aBtnTexReplace.Check( nValue == 1 );
1527*cdf0e10cSrcweir 				aBtnTexModulate.Check( nValue == 2 );
1528*cdf0e10cSrcweir 				//aBtnTexBlend.Check( nValue == 2 );
1529*cdf0e10cSrcweir 				bUpdate = sal_True;
1530*cdf0e10cSrcweir 			}
1531*cdf0e10cSrcweir 		}
1532*cdf0e10cSrcweir 		else
1533*cdf0e10cSrcweir 		{
1534*cdf0e10cSrcweir 			if( aBtnTexReplace.IsChecked() ||
1535*cdf0e10cSrcweir 				aBtnTexModulate.IsChecked() )
1536*cdf0e10cSrcweir 			{
1537*cdf0e10cSrcweir 				aBtnTexReplace.Check( sal_False );
1538*cdf0e10cSrcweir 				aBtnTexModulate.Check( sal_False );
1539*cdf0e10cSrcweir 				//aBtnTexBlend.Check( sal_False );
1540*cdf0e10cSrcweir 				bUpdate = sal_True;
1541*cdf0e10cSrcweir 			}
1542*cdf0e10cSrcweir 		}
1543*cdf0e10cSrcweir 
1544*cdf0e10cSrcweir 		// Projektion X
1545*cdf0e10cSrcweir 		eState = rAttrs.GetItemState(SDRATTR_3DOBJ_TEXTURE_PROJ_X);
1546*cdf0e10cSrcweir 		if( eState != SFX_ITEM_DONTCARE )
1547*cdf0e10cSrcweir 		{
1548*cdf0e10cSrcweir 			sal_uInt16 nValue = ((const Svx3DTextureProjectionXItem&)rAttrs.Get(SDRATTR_3DOBJ_TEXTURE_PROJ_X)).GetValue();
1549*cdf0e10cSrcweir 
1550*cdf0e10cSrcweir 			if( ( !aBtnTexObjectX.IsChecked() && nValue == 0 ) ||
1551*cdf0e10cSrcweir 				( !aBtnTexParallelX.IsChecked() && nValue == 1 ) ||
1552*cdf0e10cSrcweir 				( !aBtnTexCircleX.IsChecked() && nValue == 2 ) )
1553*cdf0e10cSrcweir 			{
1554*cdf0e10cSrcweir 				aBtnTexObjectX.Check( nValue == 0 );
1555*cdf0e10cSrcweir 				aBtnTexParallelX.Check( nValue == 1 );
1556*cdf0e10cSrcweir 				aBtnTexCircleX.Check( nValue == 2 );
1557*cdf0e10cSrcweir 				bUpdate = sal_True;
1558*cdf0e10cSrcweir 			}
1559*cdf0e10cSrcweir 		}
1560*cdf0e10cSrcweir 		else
1561*cdf0e10cSrcweir 		{
1562*cdf0e10cSrcweir 			if( aBtnTexObjectX.IsChecked() ||
1563*cdf0e10cSrcweir 				aBtnTexParallelX.IsChecked() ||
1564*cdf0e10cSrcweir 				aBtnTexCircleX.IsChecked() )
1565*cdf0e10cSrcweir 			{
1566*cdf0e10cSrcweir 				aBtnTexObjectX.Check( sal_False );
1567*cdf0e10cSrcweir 				aBtnTexParallelX.Check( sal_False );
1568*cdf0e10cSrcweir 				aBtnTexCircleX.Check( sal_False );
1569*cdf0e10cSrcweir 				bUpdate = sal_True;
1570*cdf0e10cSrcweir 			}
1571*cdf0e10cSrcweir 		}
1572*cdf0e10cSrcweir 
1573*cdf0e10cSrcweir 		// Projektion Y
1574*cdf0e10cSrcweir 		eState = rAttrs.GetItemState(SDRATTR_3DOBJ_TEXTURE_PROJ_Y);
1575*cdf0e10cSrcweir 		if( eState != SFX_ITEM_DONTCARE )
1576*cdf0e10cSrcweir 		{
1577*cdf0e10cSrcweir 			sal_uInt16 nValue = ((const Svx3DTextureProjectionYItem&)rAttrs.Get(SDRATTR_3DOBJ_TEXTURE_PROJ_Y)).GetValue();
1578*cdf0e10cSrcweir 
1579*cdf0e10cSrcweir 			if( ( !aBtnTexObjectY.IsChecked() && nValue == 0 ) ||
1580*cdf0e10cSrcweir 				( !aBtnTexParallelY.IsChecked() && nValue == 1 ) ||
1581*cdf0e10cSrcweir 				( !aBtnTexCircleY.IsChecked() && nValue == 2 ) )
1582*cdf0e10cSrcweir 			{
1583*cdf0e10cSrcweir 				aBtnTexObjectY.Check( nValue == 0 );
1584*cdf0e10cSrcweir 				aBtnTexParallelY.Check( nValue == 1 );
1585*cdf0e10cSrcweir 				aBtnTexCircleY.Check( nValue == 2 );
1586*cdf0e10cSrcweir 				bUpdate = sal_True;
1587*cdf0e10cSrcweir 			}
1588*cdf0e10cSrcweir 		}
1589*cdf0e10cSrcweir 		else
1590*cdf0e10cSrcweir 		{
1591*cdf0e10cSrcweir 			if( aBtnTexObjectY.IsChecked() ||
1592*cdf0e10cSrcweir 				aBtnTexParallelY.IsChecked() ||
1593*cdf0e10cSrcweir 				aBtnTexCircleY.IsChecked() )
1594*cdf0e10cSrcweir 			{
1595*cdf0e10cSrcweir 				aBtnTexObjectY.Check( sal_False );
1596*cdf0e10cSrcweir 				aBtnTexParallelY.Check( sal_False );
1597*cdf0e10cSrcweir 				aBtnTexCircleY.Check( sal_False );
1598*cdf0e10cSrcweir 				bUpdate = sal_True;
1599*cdf0e10cSrcweir 			}
1600*cdf0e10cSrcweir 		}
1601*cdf0e10cSrcweir 
1602*cdf0e10cSrcweir 		// Filter
1603*cdf0e10cSrcweir 		eState = rAttrs.GetItemState(SDRATTR_3DOBJ_TEXTURE_FILTER);
1604*cdf0e10cSrcweir 		if( eState != SFX_ITEM_DONTCARE )
1605*cdf0e10cSrcweir 		{
1606*cdf0e10cSrcweir 			sal_Bool bValue = ((const Svx3DTextureFilterItem&)rAttrs.Get(SDRATTR_3DOBJ_TEXTURE_FILTER)).GetValue();
1607*cdf0e10cSrcweir 			if( bValue != aBtnTexFilter.IsChecked() )
1608*cdf0e10cSrcweir 			{
1609*cdf0e10cSrcweir 				aBtnTexFilter.Check( bValue );
1610*cdf0e10cSrcweir 				bUpdate = sal_True;
1611*cdf0e10cSrcweir 			}
1612*cdf0e10cSrcweir 			if( aBtnTexFilter.GetState() == STATE_DONTKNOW )
1613*cdf0e10cSrcweir 				aBtnTexFilter.Check( bValue );
1614*cdf0e10cSrcweir 		}
1615*cdf0e10cSrcweir 		else
1616*cdf0e10cSrcweir 		{
1617*cdf0e10cSrcweir 			if( aBtnTexFilter.GetState() != STATE_DONTKNOW )
1618*cdf0e10cSrcweir 			{
1619*cdf0e10cSrcweir 				aBtnTexFilter.SetState( STATE_DONTKNOW );
1620*cdf0e10cSrcweir 				bUpdate = sal_True;
1621*cdf0e10cSrcweir 			}
1622*cdf0e10cSrcweir 		}
1623*cdf0e10cSrcweir 	}
1624*cdf0e10cSrcweir 
1625*cdf0e10cSrcweir 
1626*cdf0e10cSrcweir 	// Material Favoriten
1627*cdf0e10cSrcweir 	aLbMatFavorites.SelectEntryPos( 0 );
1628*cdf0e10cSrcweir 
1629*cdf0e10cSrcweir 	// Objektfarbe
1630*cdf0e10cSrcweir 	eState = rAttrs.GetItemState(XATTR_FILLCOLOR);
1631*cdf0e10cSrcweir 	if( eState != SFX_ITEM_DONTCARE )
1632*cdf0e10cSrcweir 	{
1633*cdf0e10cSrcweir 		aColor = ((const XFillColorItem&)rAttrs.Get(XATTR_FILLCOLOR)).GetColorValue();
1634*cdf0e10cSrcweir 		ColorLB* pLb = &aLbMatColor;
1635*cdf0e10cSrcweir 		if( aColor != pLb->GetSelectEntryColor() )
1636*cdf0e10cSrcweir 		{
1637*cdf0e10cSrcweir 			LBSelectColor( pLb, aColor );
1638*cdf0e10cSrcweir 			bUpdate = sal_True;
1639*cdf0e10cSrcweir 		}
1640*cdf0e10cSrcweir 	}
1641*cdf0e10cSrcweir 	else
1642*cdf0e10cSrcweir 	{
1643*cdf0e10cSrcweir 		if( aLbMatColor.GetSelectEntryCount() != 0 )
1644*cdf0e10cSrcweir 		{
1645*cdf0e10cSrcweir 			aLbMatColor.SetNoSelection();
1646*cdf0e10cSrcweir 			bUpdate = sal_True;
1647*cdf0e10cSrcweir 		}
1648*cdf0e10cSrcweir 	}
1649*cdf0e10cSrcweir 
1650*cdf0e10cSrcweir 	// Slebstleuchtfarbe
1651*cdf0e10cSrcweir 	eState = rAttrs.GetItemState(SDRATTR_3DOBJ_MAT_EMISSION);
1652*cdf0e10cSrcweir 	if( eState != SFX_ITEM_DONTCARE )
1653*cdf0e10cSrcweir 	{
1654*cdf0e10cSrcweir 		aColor = ((const Svx3DMaterialEmissionItem&)rAttrs.Get(SDRATTR_3DOBJ_MAT_EMISSION)).GetValue();
1655*cdf0e10cSrcweir 		ColorLB* pLb = &aLbMatEmission;
1656*cdf0e10cSrcweir 		if( aColor != pLb->GetSelectEntryColor() )
1657*cdf0e10cSrcweir 		{
1658*cdf0e10cSrcweir 			LBSelectColor( pLb, aColor );
1659*cdf0e10cSrcweir 			bUpdate = sal_True;
1660*cdf0e10cSrcweir 		}
1661*cdf0e10cSrcweir 	}
1662*cdf0e10cSrcweir 	else
1663*cdf0e10cSrcweir 	{
1664*cdf0e10cSrcweir 		if( aLbMatEmission.GetSelectEntryCount() != 0 )
1665*cdf0e10cSrcweir 		{
1666*cdf0e10cSrcweir 			aLbMatEmission.SetNoSelection();
1667*cdf0e10cSrcweir 			bUpdate = sal_True;
1668*cdf0e10cSrcweir 		}
1669*cdf0e10cSrcweir 	}
1670*cdf0e10cSrcweir 
1671*cdf0e10cSrcweir 	// Glanzpunkt
1672*cdf0e10cSrcweir 	eState = rAttrs.GetItemState(SDRATTR_3DOBJ_MAT_SPECULAR);
1673*cdf0e10cSrcweir 	if( eState != SFX_ITEM_DONTCARE )
1674*cdf0e10cSrcweir 	{
1675*cdf0e10cSrcweir 		aColor = ((const Svx3DMaterialSpecularItem&)rAttrs.Get(SDRATTR_3DOBJ_MAT_SPECULAR)).GetValue();
1676*cdf0e10cSrcweir 		ColorLB* pLb = &aLbMatSpecular;
1677*cdf0e10cSrcweir 		if( aColor != pLb->GetSelectEntryColor() )
1678*cdf0e10cSrcweir 		{
1679*cdf0e10cSrcweir 			LBSelectColor( pLb, aColor );
1680*cdf0e10cSrcweir 			bUpdate = sal_True;
1681*cdf0e10cSrcweir 		}
1682*cdf0e10cSrcweir 	}
1683*cdf0e10cSrcweir 	else
1684*cdf0e10cSrcweir 	{
1685*cdf0e10cSrcweir 		if( aLbMatSpecular.GetSelectEntryCount() != 0 )
1686*cdf0e10cSrcweir 		{
1687*cdf0e10cSrcweir 			aLbMatSpecular.SetNoSelection();
1688*cdf0e10cSrcweir 			bUpdate = sal_True;
1689*cdf0e10cSrcweir 		}
1690*cdf0e10cSrcweir 	}
1691*cdf0e10cSrcweir 
1692*cdf0e10cSrcweir 	// Glanzpunkt Intensitaet
1693*cdf0e10cSrcweir 	eState = rAttrs.GetItemState(SDRATTR_3DOBJ_MAT_SPECULAR_INTENSITY);
1694*cdf0e10cSrcweir 	if( eState != SFX_ITEM_DONTCARE )
1695*cdf0e10cSrcweir 	{
1696*cdf0e10cSrcweir 		sal_uInt16 nValue = ((const Svx3DMaterialSpecularIntensityItem&)rAttrs.Get(SDRATTR_3DOBJ_MAT_SPECULAR_INTENSITY)).GetValue();
1697*cdf0e10cSrcweir 		if( nValue != aMtrMatSpecularIntensity.GetValue() )
1698*cdf0e10cSrcweir 		{
1699*cdf0e10cSrcweir 			aMtrMatSpecularIntensity.SetValue( nValue );
1700*cdf0e10cSrcweir 			bUpdate = sal_True;
1701*cdf0e10cSrcweir 		}
1702*cdf0e10cSrcweir 	}
1703*cdf0e10cSrcweir 	else
1704*cdf0e10cSrcweir 	{
1705*cdf0e10cSrcweir 		if( !aMtrMatSpecularIntensity.IsEmptyFieldValue() )
1706*cdf0e10cSrcweir 		{
1707*cdf0e10cSrcweir 			aMtrMatSpecularIntensity.SetEmptyFieldValue();
1708*cdf0e10cSrcweir 			bUpdate = sal_True;
1709*cdf0e10cSrcweir 		}
1710*cdf0e10cSrcweir 	}
1711*cdf0e10cSrcweir 
1712*cdf0e10cSrcweir 
1713*cdf0e10cSrcweir // Sonstige
1714*cdf0e10cSrcweir 	// Perspektive
1715*cdf0e10cSrcweir 	eState = rAttrs.GetItemState(SDRATTR_3DSCENE_PERSPECTIVE);
1716*cdf0e10cSrcweir 	if( eState != SFX_ITEM_DONTCARE )
1717*cdf0e10cSrcweir 	{
1718*cdf0e10cSrcweir 		ProjectionType ePT = (ProjectionType)((const Svx3DPerspectiveItem&)rAttrs.Get(SDRATTR_3DSCENE_PERSPECTIVE)).GetValue();
1719*cdf0e10cSrcweir 		if( ( !aBtnPerspective.IsChecked() && ePT == PR_PERSPECTIVE ) ||
1720*cdf0e10cSrcweir 			( aBtnPerspective.IsChecked() && ePT == PR_PARALLEL ) )
1721*cdf0e10cSrcweir 		{
1722*cdf0e10cSrcweir 			aBtnPerspective.Check( ePT == PR_PERSPECTIVE );
1723*cdf0e10cSrcweir 			bUpdate = sal_True;
1724*cdf0e10cSrcweir 		}
1725*cdf0e10cSrcweir 		if( aBtnPerspective.GetState() == STATE_DONTKNOW )
1726*cdf0e10cSrcweir 			aBtnPerspective.Check( ePT == PR_PERSPECTIVE );
1727*cdf0e10cSrcweir 	}
1728*cdf0e10cSrcweir 	else
1729*cdf0e10cSrcweir 	{
1730*cdf0e10cSrcweir 		if( aBtnPerspective.GetState() != STATE_DONTKNOW )
1731*cdf0e10cSrcweir 		{
1732*cdf0e10cSrcweir 			aBtnPerspective.SetState( STATE_DONTKNOW );
1733*cdf0e10cSrcweir 			bUpdate = sal_True;
1734*cdf0e10cSrcweir 		}
1735*cdf0e10cSrcweir 	}
1736*cdf0e10cSrcweir 
1737*cdf0e10cSrcweir 	if( !bUpdate && !bOnly3DChanged )
1738*cdf0e10cSrcweir 	{
1739*cdf0e10cSrcweir 		// Eventuell sind aber die 2D-Attribute unterschiedlich. Vergleiche
1740*cdf0e10cSrcweir 		// diese und entscheide
1741*cdf0e10cSrcweir 
1742*cdf0e10cSrcweir 
1743*cdf0e10cSrcweir 		bUpdate = sal_True;
1744*cdf0e10cSrcweir 	}
1745*cdf0e10cSrcweir 
1746*cdf0e10cSrcweir 	if( bUpdate || bOnly3DChanged )
1747*cdf0e10cSrcweir 	{
1748*cdf0e10cSrcweir 		// Preview updaten
1749*cdf0e10cSrcweir 		SfxItemSet aSet(rAttrs);
1750*cdf0e10cSrcweir 
1751*cdf0e10cSrcweir 		// set LineStyle hard to XLINE_NONE when it's not set so that
1752*cdf0e10cSrcweir 		// the default (XLINE_SOLID) is not used for 3d preview
1753*cdf0e10cSrcweir 		if(SFX_ITEM_SET != aSet.GetItemState(XATTR_LINESTYLE, sal_False))
1754*cdf0e10cSrcweir 			aSet.Put(XLineStyleItem(XLINE_NONE));
1755*cdf0e10cSrcweir 
1756*cdf0e10cSrcweir 		// set FillColor hard to WHITE when it's SFX_ITEM_DONTCARE so that
1757*cdf0e10cSrcweir 		// the default (Blue7) is not used for 3d preview
1758*cdf0e10cSrcweir 		if(SFX_ITEM_DONTCARE == aSet.GetItemState(XATTR_FILLCOLOR, sal_False))
1759*cdf0e10cSrcweir 			aSet.Put(XFillColorItem(String(), Color(COL_WHITE)));
1760*cdf0e10cSrcweir 
1761*cdf0e10cSrcweir 		aCtlPreview.Set3DAttributes(aSet);
1762*cdf0e10cSrcweir 		aCtlLightPreview.GetSvx3DLightControl().Set3DAttributes(aSet);
1763*cdf0e10cSrcweir 
1764*cdf0e10cSrcweir         // try to select light corresponding to active button
1765*cdf0e10cSrcweir         sal_uInt32 nNumber(0xffffffff);
1766*cdf0e10cSrcweir 
1767*cdf0e10cSrcweir         if(aBtnLight1.IsChecked())
1768*cdf0e10cSrcweir             nNumber = 0;
1769*cdf0e10cSrcweir         else if(aBtnLight2.IsChecked())
1770*cdf0e10cSrcweir             nNumber = 1;
1771*cdf0e10cSrcweir         else if(aBtnLight3.IsChecked())
1772*cdf0e10cSrcweir             nNumber = 2;
1773*cdf0e10cSrcweir         else if(aBtnLight4.IsChecked())
1774*cdf0e10cSrcweir             nNumber = 3;
1775*cdf0e10cSrcweir         else if(aBtnLight5.IsChecked())
1776*cdf0e10cSrcweir             nNumber = 4;
1777*cdf0e10cSrcweir         else if(aBtnLight6.IsChecked())
1778*cdf0e10cSrcweir             nNumber = 5;
1779*cdf0e10cSrcweir         else if(aBtnLight7.IsChecked())
1780*cdf0e10cSrcweir             nNumber = 6;
1781*cdf0e10cSrcweir         else if(aBtnLight8.IsChecked())
1782*cdf0e10cSrcweir             nNumber = 7;
1783*cdf0e10cSrcweir 
1784*cdf0e10cSrcweir         if(nNumber != 0xffffffff)
1785*cdf0e10cSrcweir         {
1786*cdf0e10cSrcweir     		aCtlLightPreview.GetSvx3DLightControl().SelectLight(nNumber);
1787*cdf0e10cSrcweir         }
1788*cdf0e10cSrcweir 	}
1789*cdf0e10cSrcweir 
1790*cdf0e10cSrcweir 	// handle state of converts possible
1791*cdf0e10cSrcweir 	aBtnConvertTo3D.Enable(pConvertTo3DItem->GetState());
1792*cdf0e10cSrcweir 	aBtnLatheObject.Enable(pConvertTo3DLatheItem->GetState());
1793*cdf0e10cSrcweir }
1794*cdf0e10cSrcweir 
1795*cdf0e10cSrcweir // -----------------------------------------------------------------------
1796*cdf0e10cSrcweir void Svx3DWin::GetAttr( SfxItemSet& rAttrs )
1797*cdf0e10cSrcweir {
1798*cdf0e10cSrcweir 	// get remembered 2d attributes from the dialog
1799*cdf0e10cSrcweir 	if(mpRemember2DAttributes)
1800*cdf0e10cSrcweir 	{
1801*cdf0e10cSrcweir 		SfxWhichIter aIter(*mpRemember2DAttributes);
1802*cdf0e10cSrcweir 		sal_uInt16 nWhich(aIter.FirstWhich());
1803*cdf0e10cSrcweir 
1804*cdf0e10cSrcweir 		while(nWhich)
1805*cdf0e10cSrcweir 		{
1806*cdf0e10cSrcweir 			SfxItemState eState = mpRemember2DAttributes->GetItemState(nWhich, sal_False);
1807*cdf0e10cSrcweir 			if(SFX_ITEM_DONTCARE == eState)
1808*cdf0e10cSrcweir 				rAttrs.InvalidateItem(nWhich);
1809*cdf0e10cSrcweir 			else if(SFX_ITEM_SET == eState)
1810*cdf0e10cSrcweir 				rAttrs.Put(mpRemember2DAttributes->Get(nWhich, sal_False));
1811*cdf0e10cSrcweir 
1812*cdf0e10cSrcweir 			nWhich = aIter.NextWhich();
1813*cdf0e10cSrcweir 		}
1814*cdf0e10cSrcweir 	}
1815*cdf0e10cSrcweir 
1816*cdf0e10cSrcweir // Sonstige, muss vorne stehen da auf allen Seiten
1817*cdf0e10cSrcweir 	// Perspektive
1818*cdf0e10cSrcweir 	if( aBtnPerspective.GetState() != STATE_DONTKNOW )
1819*cdf0e10cSrcweir 	{
1820*cdf0e10cSrcweir 		sal_uInt16 nValue;
1821*cdf0e10cSrcweir 		if( aBtnPerspective.IsChecked() )
1822*cdf0e10cSrcweir 			nValue = PR_PERSPECTIVE;
1823*cdf0e10cSrcweir 		else
1824*cdf0e10cSrcweir 			nValue = PR_PARALLEL;
1825*cdf0e10cSrcweir 		rAttrs.Put(Svx3DPerspectiveItem(nValue));
1826*cdf0e10cSrcweir 	}
1827*cdf0e10cSrcweir 	else
1828*cdf0e10cSrcweir 		rAttrs.InvalidateItem(SDRATTR_3DSCENE_PERSPECTIVE);
1829*cdf0e10cSrcweir 
1830*cdf0e10cSrcweir // Geometrie
1831*cdf0e10cSrcweir 	// evtl. PoolUnit ermitteln (Falls dies in Update() nicht passiert ist)
1832*cdf0e10cSrcweir 	if( !mpImpl->pPool )
1833*cdf0e10cSrcweir 	{
1834*cdf0e10cSrcweir 		DBG_ERROR( "Kein Pool in GetAttr()! Evtl. inkompatibel zu drviewsi.cxx ?" );
1835*cdf0e10cSrcweir 		mpImpl->pPool = rAttrs.GetPool();
1836*cdf0e10cSrcweir 		DBG_ASSERT( mpImpl->pPool, "Wo ist der Pool?" );
1837*cdf0e10cSrcweir 		ePoolUnit = mpImpl->pPool->GetMetric( SID_ATTR_LINE_WIDTH );
1838*cdf0e10cSrcweir 
1839*cdf0e10cSrcweir 		eFUnit = GetModuleFieldUnit( rAttrs );
1840*cdf0e10cSrcweir 	}
1841*cdf0e10cSrcweir 
1842*cdf0e10cSrcweir 	// Anzahl Segmente (horizontal)
1843*cdf0e10cSrcweir 	if( !aNumHorizontal.IsEmptyFieldValue() )
1844*cdf0e10cSrcweir 	{
1845*cdf0e10cSrcweir 		sal_uInt32 nValue = static_cast<sal_uInt32>(aNumHorizontal.GetValue());
1846*cdf0e10cSrcweir 		rAttrs.Put(Svx3DHorizontalSegmentsItem(nValue));
1847*cdf0e10cSrcweir 	}
1848*cdf0e10cSrcweir 	else
1849*cdf0e10cSrcweir 		rAttrs.InvalidateItem(SDRATTR_3DOBJ_HORZ_SEGS);
1850*cdf0e10cSrcweir 
1851*cdf0e10cSrcweir 	// Anzahl Segmente (vertikal)
1852*cdf0e10cSrcweir 	if( !aNumVertical.IsEmptyFieldValue() )
1853*cdf0e10cSrcweir 	{
1854*cdf0e10cSrcweir 		sal_uInt32 nValue = static_cast<sal_uInt32>(aNumVertical.GetValue());
1855*cdf0e10cSrcweir 		rAttrs.Put(Svx3DVerticalSegmentsItem(nValue));
1856*cdf0e10cSrcweir 	}
1857*cdf0e10cSrcweir 	else
1858*cdf0e10cSrcweir 		rAttrs.InvalidateItem(SDRATTR_3DOBJ_VERT_SEGS);
1859*cdf0e10cSrcweir 
1860*cdf0e10cSrcweir 	// Tiefe
1861*cdf0e10cSrcweir 	if( !aMtrDepth.IsEmptyFieldValue() )
1862*cdf0e10cSrcweir 	{
1863*cdf0e10cSrcweir 		sal_uInt32 nValue = GetCoreValue( aMtrDepth, ePoolUnit );
1864*cdf0e10cSrcweir 		rAttrs.Put(Svx3DDepthItem(nValue));
1865*cdf0e10cSrcweir 	}
1866*cdf0e10cSrcweir 	else
1867*cdf0e10cSrcweir 		rAttrs.InvalidateItem(SDRATTR_3DOBJ_DEPTH);
1868*cdf0e10cSrcweir 
1869*cdf0e10cSrcweir 	// Doppelseitig
1870*cdf0e10cSrcweir 	TriState eState = aBtnDoubleSided.GetState();
1871*cdf0e10cSrcweir 	if( eState != STATE_DONTKNOW )
1872*cdf0e10cSrcweir 	{
1873*cdf0e10cSrcweir 		sal_Bool bValue = STATE_CHECK == eState;
1874*cdf0e10cSrcweir 		rAttrs.Put(Svx3DDoubleSidedItem(bValue));
1875*cdf0e10cSrcweir 	}
1876*cdf0e10cSrcweir 	else
1877*cdf0e10cSrcweir 		rAttrs.InvalidateItem(SDRATTR_3DOBJ_DOUBLE_SIDED);
1878*cdf0e10cSrcweir 
1879*cdf0e10cSrcweir 	// Kantenrundung
1880*cdf0e10cSrcweir 	if( !aMtrPercentDiagonal.IsEmptyFieldValue() )
1881*cdf0e10cSrcweir 	{
1882*cdf0e10cSrcweir 		sal_uInt16 nValue = (sal_uInt16) aMtrPercentDiagonal.GetValue();
1883*cdf0e10cSrcweir 		rAttrs.Put(Svx3DPercentDiagonalItem(nValue));
1884*cdf0e10cSrcweir 	}
1885*cdf0e10cSrcweir 	else
1886*cdf0e10cSrcweir 		rAttrs.InvalidateItem(SDRATTR_3DOBJ_PERCENT_DIAGONAL);
1887*cdf0e10cSrcweir 
1888*cdf0e10cSrcweir 	// Tiefenskalierung
1889*cdf0e10cSrcweir 	if( !aMtrBackscale.IsEmptyFieldValue() )
1890*cdf0e10cSrcweir 	{
1891*cdf0e10cSrcweir 		sal_uInt16 nValue = (sal_uInt16)aMtrBackscale.GetValue();
1892*cdf0e10cSrcweir 		rAttrs.Put(Svx3DBackscaleItem(nValue));
1893*cdf0e10cSrcweir 	}
1894*cdf0e10cSrcweir 	else
1895*cdf0e10cSrcweir 		rAttrs.InvalidateItem(SDRATTR_3DOBJ_BACKSCALE);
1896*cdf0e10cSrcweir 
1897*cdf0e10cSrcweir 	// Endwinkel
1898*cdf0e10cSrcweir 	if( !aMtrEndAngle.IsEmptyFieldValue() )
1899*cdf0e10cSrcweir 	{
1900*cdf0e10cSrcweir 		sal_uInt16 nValue = (sal_uInt16)aMtrEndAngle.GetValue();
1901*cdf0e10cSrcweir 		rAttrs.Put(Svx3DEndAngleItem(nValue));
1902*cdf0e10cSrcweir 	}
1903*cdf0e10cSrcweir 	else
1904*cdf0e10cSrcweir 		rAttrs.InvalidateItem(SDRATTR_3DOBJ_END_ANGLE);
1905*cdf0e10cSrcweir 
1906*cdf0e10cSrcweir 	// Normalentyp
1907*cdf0e10cSrcweir 	sal_uInt16 nValue = 99;
1908*cdf0e10cSrcweir 	if( aBtnNormalsObj.IsChecked() )
1909*cdf0e10cSrcweir 		nValue = 0;
1910*cdf0e10cSrcweir 	else if( aBtnNormalsFlat.IsChecked() )
1911*cdf0e10cSrcweir 		nValue = 1;
1912*cdf0e10cSrcweir 	else if( aBtnNormalsSphere.IsChecked() )
1913*cdf0e10cSrcweir 		nValue = 2;
1914*cdf0e10cSrcweir 
1915*cdf0e10cSrcweir 	if( nValue <= 2 )
1916*cdf0e10cSrcweir 		rAttrs.Put(Svx3DNormalsKindItem(nValue));
1917*cdf0e10cSrcweir 	else
1918*cdf0e10cSrcweir 		rAttrs.InvalidateItem(SDRATTR_3DOBJ_NORMALS_KIND);
1919*cdf0e10cSrcweir 
1920*cdf0e10cSrcweir 	// Normalen invertieren
1921*cdf0e10cSrcweir 	eState = aBtnNormalsInvert.GetState();
1922*cdf0e10cSrcweir 	if( eState != STATE_DONTKNOW )
1923*cdf0e10cSrcweir 	{
1924*cdf0e10cSrcweir 		sal_Bool bValue = STATE_CHECK == eState;
1925*cdf0e10cSrcweir 		rAttrs.Put(Svx3DNormalsInvertItem(bValue));
1926*cdf0e10cSrcweir 	}
1927*cdf0e10cSrcweir 	else
1928*cdf0e10cSrcweir 		rAttrs.InvalidateItem(SDRATTR_3DOBJ_NORMALS_INVERT);
1929*cdf0e10cSrcweir 
1930*cdf0e10cSrcweir 	// 2-seitige Beleuchtung
1931*cdf0e10cSrcweir 	eState = aBtnTwoSidedLighting.GetState();
1932*cdf0e10cSrcweir 	if( eState != STATE_DONTKNOW )
1933*cdf0e10cSrcweir 	{
1934*cdf0e10cSrcweir 		sal_Bool bValue = STATE_CHECK == eState;
1935*cdf0e10cSrcweir 		rAttrs.Put(Svx3DTwoSidedLightingItem(bValue));
1936*cdf0e10cSrcweir 	}
1937*cdf0e10cSrcweir 	else
1938*cdf0e10cSrcweir 		rAttrs.InvalidateItem(SDRATTR_3DSCENE_TWO_SIDED_LIGHTING);
1939*cdf0e10cSrcweir 
1940*cdf0e10cSrcweir // Darstellung
1941*cdf0e10cSrcweir 	// Shademode
1942*cdf0e10cSrcweir 	if( aLbShademode.GetSelectEntryCount() )
1943*cdf0e10cSrcweir 	{
1944*cdf0e10cSrcweir 		nValue = aLbShademode.GetSelectEntryPos();
1945*cdf0e10cSrcweir 		rAttrs.Put(Svx3DShadeModeItem(nValue));
1946*cdf0e10cSrcweir 	}
1947*cdf0e10cSrcweir 	else
1948*cdf0e10cSrcweir 		rAttrs.InvalidateItem(SDRATTR_3DSCENE_SHADE_MODE);
1949*cdf0e10cSrcweir 
1950*cdf0e10cSrcweir 	// 3D-Shatten
1951*cdf0e10cSrcweir 	eState = aBtnShadow3d.GetState();
1952*cdf0e10cSrcweir 	if( eState != STATE_DONTKNOW )
1953*cdf0e10cSrcweir 	{
1954*cdf0e10cSrcweir 		sal_Bool bValue = STATE_CHECK == eState;
1955*cdf0e10cSrcweir 		rAttrs.Put(Svx3DShadow3DItem(bValue));
1956*cdf0e10cSrcweir 		rAttrs.Put(SdrShadowItem(bValue));
1957*cdf0e10cSrcweir 	}
1958*cdf0e10cSrcweir 	else
1959*cdf0e10cSrcweir 	{
1960*cdf0e10cSrcweir 		rAttrs.InvalidateItem(SDRATTR_3DOBJ_SHADOW_3D);
1961*cdf0e10cSrcweir 		rAttrs.InvalidateItem(SDRATTR_SHADOW);
1962*cdf0e10cSrcweir 	}
1963*cdf0e10cSrcweir 
1964*cdf0e10cSrcweir 	// Neigung (Schatten)
1965*cdf0e10cSrcweir 	if( !aMtrSlant.IsEmptyFieldValue() )
1966*cdf0e10cSrcweir 	{
1967*cdf0e10cSrcweir 		sal_uInt16 nValue2 = (sal_uInt16) aMtrSlant.GetValue();
1968*cdf0e10cSrcweir 		rAttrs.Put(Svx3DShadowSlantItem(nValue2));
1969*cdf0e10cSrcweir 	}
1970*cdf0e10cSrcweir 	else
1971*cdf0e10cSrcweir 		rAttrs.InvalidateItem(SDRATTR_3DSCENE_SHADOW_SLANT);
1972*cdf0e10cSrcweir 
1973*cdf0e10cSrcweir 	// Distanz
1974*cdf0e10cSrcweir 	if( !aMtrDistance.IsEmptyFieldValue() )
1975*cdf0e10cSrcweir 	{
1976*cdf0e10cSrcweir 		sal_uInt32 nValue2 = GetCoreValue( aMtrDistance, ePoolUnit );
1977*cdf0e10cSrcweir 		rAttrs.Put(Svx3DDistanceItem(nValue2));
1978*cdf0e10cSrcweir 	}
1979*cdf0e10cSrcweir 	else
1980*cdf0e10cSrcweir 		rAttrs.InvalidateItem(SDRATTR_3DSCENE_DISTANCE);
1981*cdf0e10cSrcweir 
1982*cdf0e10cSrcweir 	// Brennweite
1983*cdf0e10cSrcweir 	if( !aMtrFocalLength.IsEmptyFieldValue() )
1984*cdf0e10cSrcweir 	{
1985*cdf0e10cSrcweir 		sal_uInt32 nValue2 = GetCoreValue( aMtrFocalLength, ePoolUnit );
1986*cdf0e10cSrcweir 		rAttrs.Put(Svx3DFocalLengthItem(nValue2));
1987*cdf0e10cSrcweir 	}
1988*cdf0e10cSrcweir 	else
1989*cdf0e10cSrcweir 		rAttrs.InvalidateItem(SDRATTR_3DSCENE_FOCAL_LENGTH);
1990*cdf0e10cSrcweir 
1991*cdf0e10cSrcweir // Beleuchtung
1992*cdf0e10cSrcweir 	Image aImg;
1993*cdf0e10cSrcweir 	basegfx::B3DVector aVector;
1994*cdf0e10cSrcweir 	Color aColor;
1995*cdf0e10cSrcweir     const SfxItemSet aLightItemSet(aCtlLightPreview.GetSvx3DLightControl().Get3DAttributes());
1996*cdf0e10cSrcweir 
1997*cdf0e10cSrcweir     // Licht 1 Farbe
1998*cdf0e10cSrcweir 	if( aLbLight1.GetSelectEntryCount() )
1999*cdf0e10cSrcweir 	{
2000*cdf0e10cSrcweir 		aColor = aLbLight1.GetSelectEntryColor();
2001*cdf0e10cSrcweir 		rAttrs.Put(Svx3DLightcolor1Item(aColor));
2002*cdf0e10cSrcweir 	}
2003*cdf0e10cSrcweir 	else
2004*cdf0e10cSrcweir 		rAttrs.InvalidateItem(SDRATTR_3DSCENE_LIGHTCOLOR_1);
2005*cdf0e10cSrcweir 	// Licht 1 (an/aus)
2006*cdf0e10cSrcweir 	eState = aBtnLight1.GetState();
2007*cdf0e10cSrcweir 	if( eState != STATE_DONTKNOW )
2008*cdf0e10cSrcweir 	{
2009*cdf0e10cSrcweir 		sal_Bool bValue = GetUILightState( aBtnLight1 );
2010*cdf0e10cSrcweir 		rAttrs.Put(Svx3DLightOnOff1Item(bValue));
2011*cdf0e10cSrcweir 
2012*cdf0e10cSrcweir 		// Licht 1 (Richtung)
2013*cdf0e10cSrcweir 		if( bValue )
2014*cdf0e10cSrcweir 		{
2015*cdf0e10cSrcweir             rAttrs.Put(aLightItemSet.Get(SDRATTR_3DSCENE_LIGHTDIRECTION_1));
2016*cdf0e10cSrcweir 		}
2017*cdf0e10cSrcweir 	}
2018*cdf0e10cSrcweir 	else
2019*cdf0e10cSrcweir 		rAttrs.InvalidateItem(SDRATTR_3DSCENE_LIGHTON_1);
2020*cdf0e10cSrcweir 
2021*cdf0e10cSrcweir 
2022*cdf0e10cSrcweir 	// Licht 2 Farbe
2023*cdf0e10cSrcweir 	if( aLbLight2.GetSelectEntryCount() )
2024*cdf0e10cSrcweir 	{
2025*cdf0e10cSrcweir 		aColor = aLbLight2.GetSelectEntryColor();
2026*cdf0e10cSrcweir 		rAttrs.Put(Svx3DLightcolor2Item(aColor));
2027*cdf0e10cSrcweir 	}
2028*cdf0e10cSrcweir 	else
2029*cdf0e10cSrcweir 		rAttrs.InvalidateItem(SDRATTR_3DSCENE_LIGHTCOLOR_2);
2030*cdf0e10cSrcweir 	// Licht 2 (an/aus)
2031*cdf0e10cSrcweir 	eState = aBtnLight2.GetState();
2032*cdf0e10cSrcweir 	if( eState != STATE_DONTKNOW )
2033*cdf0e10cSrcweir 	{
2034*cdf0e10cSrcweir 		sal_Bool bValue = GetUILightState( aBtnLight2 );
2035*cdf0e10cSrcweir 		rAttrs.Put(Svx3DLightOnOff2Item(bValue));
2036*cdf0e10cSrcweir 
2037*cdf0e10cSrcweir 		// Licht 2 (Richtung)
2038*cdf0e10cSrcweir 		if( bValue )
2039*cdf0e10cSrcweir 		{
2040*cdf0e10cSrcweir             rAttrs.Put(aLightItemSet.Get(SDRATTR_3DSCENE_LIGHTDIRECTION_2));
2041*cdf0e10cSrcweir 		}
2042*cdf0e10cSrcweir 	}
2043*cdf0e10cSrcweir 	else
2044*cdf0e10cSrcweir 		rAttrs.InvalidateItem(SDRATTR_3DSCENE_LIGHTON_2);
2045*cdf0e10cSrcweir 
2046*cdf0e10cSrcweir 	// Licht 3 Farbe
2047*cdf0e10cSrcweir 	if( aLbLight3.GetSelectEntryCount() )
2048*cdf0e10cSrcweir 	{
2049*cdf0e10cSrcweir 		aColor = aLbLight3.GetSelectEntryColor();
2050*cdf0e10cSrcweir 		rAttrs.Put(Svx3DLightcolor3Item(aColor));
2051*cdf0e10cSrcweir 	}
2052*cdf0e10cSrcweir 	else
2053*cdf0e10cSrcweir 		rAttrs.InvalidateItem(SDRATTR_3DSCENE_LIGHTCOLOR_3);
2054*cdf0e10cSrcweir 	// Licht 3 (an/aus)
2055*cdf0e10cSrcweir 	eState = aBtnLight3.GetState();
2056*cdf0e10cSrcweir 	if( eState != STATE_DONTKNOW )
2057*cdf0e10cSrcweir 	{
2058*cdf0e10cSrcweir 		sal_Bool bValue = GetUILightState( aBtnLight3 );
2059*cdf0e10cSrcweir 		rAttrs.Put(Svx3DLightOnOff3Item(bValue));
2060*cdf0e10cSrcweir 
2061*cdf0e10cSrcweir 		// Licht 3 (Richtung)
2062*cdf0e10cSrcweir 		if( bValue )
2063*cdf0e10cSrcweir 		{
2064*cdf0e10cSrcweir             rAttrs.Put(aLightItemSet.Get(SDRATTR_3DSCENE_LIGHTDIRECTION_3));
2065*cdf0e10cSrcweir 		}
2066*cdf0e10cSrcweir 	}
2067*cdf0e10cSrcweir 	else
2068*cdf0e10cSrcweir 		rAttrs.InvalidateItem(SDRATTR_3DSCENE_LIGHTON_3);
2069*cdf0e10cSrcweir 
2070*cdf0e10cSrcweir 	// Licht 4 Farbe
2071*cdf0e10cSrcweir 	if( aLbLight4.GetSelectEntryCount() )
2072*cdf0e10cSrcweir 	{
2073*cdf0e10cSrcweir 		aColor = aLbLight4.GetSelectEntryColor();
2074*cdf0e10cSrcweir 		rAttrs.Put(Svx3DLightcolor4Item(aColor));
2075*cdf0e10cSrcweir 	}
2076*cdf0e10cSrcweir 	else
2077*cdf0e10cSrcweir 		rAttrs.InvalidateItem(SDRATTR_3DSCENE_LIGHTCOLOR_4);
2078*cdf0e10cSrcweir 	// Licht 4 (an/aus)
2079*cdf0e10cSrcweir 	eState = aBtnLight4.GetState();
2080*cdf0e10cSrcweir 	if( eState != STATE_DONTKNOW )
2081*cdf0e10cSrcweir 	{
2082*cdf0e10cSrcweir 		sal_Bool bValue = GetUILightState( aBtnLight4 );
2083*cdf0e10cSrcweir 		rAttrs.Put(Svx3DLightOnOff4Item(bValue));
2084*cdf0e10cSrcweir 
2085*cdf0e10cSrcweir 		// Licht 4 (Richtung)
2086*cdf0e10cSrcweir 		if( bValue )
2087*cdf0e10cSrcweir 		{
2088*cdf0e10cSrcweir             rAttrs.Put(aLightItemSet.Get(SDRATTR_3DSCENE_LIGHTDIRECTION_4));
2089*cdf0e10cSrcweir 		}
2090*cdf0e10cSrcweir 	}
2091*cdf0e10cSrcweir 	else
2092*cdf0e10cSrcweir 		rAttrs.InvalidateItem(SDRATTR_3DSCENE_LIGHTON_4);
2093*cdf0e10cSrcweir 
2094*cdf0e10cSrcweir 	// Licht 5 Farbe
2095*cdf0e10cSrcweir 	if( aLbLight5.GetSelectEntryCount() )
2096*cdf0e10cSrcweir 	{
2097*cdf0e10cSrcweir 		aColor = aLbLight5.GetSelectEntryColor();
2098*cdf0e10cSrcweir 		rAttrs.Put(Svx3DLightcolor5Item(aColor));
2099*cdf0e10cSrcweir 	}
2100*cdf0e10cSrcweir 	else
2101*cdf0e10cSrcweir 		rAttrs.InvalidateItem(SDRATTR_3DSCENE_LIGHTCOLOR_5);
2102*cdf0e10cSrcweir 	// Licht 5 (an/aus)
2103*cdf0e10cSrcweir 	eState = aBtnLight5.GetState();
2104*cdf0e10cSrcweir 	if( eState != STATE_DONTKNOW )
2105*cdf0e10cSrcweir 	{
2106*cdf0e10cSrcweir 		sal_Bool bValue = GetUILightState( aBtnLight5 );
2107*cdf0e10cSrcweir 		rAttrs.Put(Svx3DLightOnOff5Item(bValue));
2108*cdf0e10cSrcweir 
2109*cdf0e10cSrcweir 		// Licht 5 (Richtung)
2110*cdf0e10cSrcweir 		if( bValue )
2111*cdf0e10cSrcweir 		{
2112*cdf0e10cSrcweir             rAttrs.Put(aLightItemSet.Get(SDRATTR_3DSCENE_LIGHTDIRECTION_5));
2113*cdf0e10cSrcweir 		}
2114*cdf0e10cSrcweir 	}
2115*cdf0e10cSrcweir 	else
2116*cdf0e10cSrcweir 		rAttrs.InvalidateItem(SDRATTR_3DSCENE_LIGHTON_5);
2117*cdf0e10cSrcweir 
2118*cdf0e10cSrcweir 	// Licht 6 Farbe
2119*cdf0e10cSrcweir 	if( aLbLight6.GetSelectEntryCount() )
2120*cdf0e10cSrcweir 	{
2121*cdf0e10cSrcweir 		aColor = aLbLight6.GetSelectEntryColor();
2122*cdf0e10cSrcweir 		rAttrs.Put(Svx3DLightcolor6Item(aColor));
2123*cdf0e10cSrcweir 	}
2124*cdf0e10cSrcweir 	else
2125*cdf0e10cSrcweir 		rAttrs.InvalidateItem(SDRATTR_3DSCENE_LIGHTCOLOR_6);
2126*cdf0e10cSrcweir 	// Licht 6 (an/aus)
2127*cdf0e10cSrcweir 	eState = aBtnLight6.GetState();
2128*cdf0e10cSrcweir 	if( eState != STATE_DONTKNOW )
2129*cdf0e10cSrcweir 	{
2130*cdf0e10cSrcweir 		sal_Bool bValue = GetUILightState( aBtnLight6 );
2131*cdf0e10cSrcweir 		rAttrs.Put(Svx3DLightOnOff6Item(bValue));
2132*cdf0e10cSrcweir 
2133*cdf0e10cSrcweir 		// Licht 6 (Richtung)
2134*cdf0e10cSrcweir 		if( bValue )
2135*cdf0e10cSrcweir 		{
2136*cdf0e10cSrcweir             rAttrs.Put(aLightItemSet.Get(SDRATTR_3DSCENE_LIGHTDIRECTION_6));
2137*cdf0e10cSrcweir 		}
2138*cdf0e10cSrcweir 	}
2139*cdf0e10cSrcweir 	else
2140*cdf0e10cSrcweir 		rAttrs.InvalidateItem(SDRATTR_3DSCENE_LIGHTON_6);
2141*cdf0e10cSrcweir 
2142*cdf0e10cSrcweir 	// Licht 7 Farbe
2143*cdf0e10cSrcweir 	if( aLbLight7.GetSelectEntryCount() )
2144*cdf0e10cSrcweir 	{
2145*cdf0e10cSrcweir 		aColor = aLbLight7.GetSelectEntryColor();
2146*cdf0e10cSrcweir 		rAttrs.Put(Svx3DLightcolor7Item(aColor));
2147*cdf0e10cSrcweir 	}
2148*cdf0e10cSrcweir 	else
2149*cdf0e10cSrcweir 		rAttrs.InvalidateItem(SDRATTR_3DSCENE_LIGHTCOLOR_7);
2150*cdf0e10cSrcweir 	// Licht 7 (an/aus)
2151*cdf0e10cSrcweir 	eState = aBtnLight7.GetState();
2152*cdf0e10cSrcweir 	if( eState != STATE_DONTKNOW )
2153*cdf0e10cSrcweir 	{
2154*cdf0e10cSrcweir 		sal_Bool bValue = GetUILightState( aBtnLight7 );
2155*cdf0e10cSrcweir 		rAttrs.Put(Svx3DLightOnOff7Item(bValue));
2156*cdf0e10cSrcweir 
2157*cdf0e10cSrcweir 		// Licht 7 (Richtung)
2158*cdf0e10cSrcweir 		if( bValue )
2159*cdf0e10cSrcweir 		{
2160*cdf0e10cSrcweir             rAttrs.Put(aLightItemSet.Get(SDRATTR_3DSCENE_LIGHTDIRECTION_7));
2161*cdf0e10cSrcweir 		}
2162*cdf0e10cSrcweir 	}
2163*cdf0e10cSrcweir 	else
2164*cdf0e10cSrcweir 		rAttrs.InvalidateItem(SDRATTR_3DSCENE_LIGHTON_7);
2165*cdf0e10cSrcweir 
2166*cdf0e10cSrcweir 	// Licht 8 Farbe
2167*cdf0e10cSrcweir 	if( aLbLight8.GetSelectEntryCount() )
2168*cdf0e10cSrcweir 	{
2169*cdf0e10cSrcweir 		aColor = aLbLight8.GetSelectEntryColor();
2170*cdf0e10cSrcweir 		rAttrs.Put(Svx3DLightcolor8Item(aColor));
2171*cdf0e10cSrcweir 	}
2172*cdf0e10cSrcweir 	else
2173*cdf0e10cSrcweir 		rAttrs.InvalidateItem(SDRATTR_3DSCENE_LIGHTCOLOR_8);
2174*cdf0e10cSrcweir 	// Licht 8 (an/aus)
2175*cdf0e10cSrcweir 	eState = aBtnLight8.GetState();
2176*cdf0e10cSrcweir 	if( eState != STATE_DONTKNOW )
2177*cdf0e10cSrcweir 	{
2178*cdf0e10cSrcweir 		sal_Bool bValue = GetUILightState( aBtnLight8 );
2179*cdf0e10cSrcweir 		rAttrs.Put(Svx3DLightOnOff8Item(bValue));
2180*cdf0e10cSrcweir 
2181*cdf0e10cSrcweir 		// Licht 8 (Richtung)
2182*cdf0e10cSrcweir 		if( bValue )
2183*cdf0e10cSrcweir 		{
2184*cdf0e10cSrcweir             rAttrs.Put(aLightItemSet.Get(SDRATTR_3DSCENE_LIGHTDIRECTION_8));
2185*cdf0e10cSrcweir 		}
2186*cdf0e10cSrcweir 	}
2187*cdf0e10cSrcweir 	else
2188*cdf0e10cSrcweir 		rAttrs.InvalidateItem(SDRATTR_3DSCENE_LIGHTON_8);
2189*cdf0e10cSrcweir 
2190*cdf0e10cSrcweir 	// Umgebungslicht
2191*cdf0e10cSrcweir 	if( aLbAmbientlight.GetSelectEntryCount() )
2192*cdf0e10cSrcweir 	{
2193*cdf0e10cSrcweir 		aColor = aLbAmbientlight.GetSelectEntryColor();
2194*cdf0e10cSrcweir 		rAttrs.Put(Svx3DAmbientcolorItem(aColor));
2195*cdf0e10cSrcweir 	}
2196*cdf0e10cSrcweir 	else
2197*cdf0e10cSrcweir 		rAttrs.InvalidateItem(SDRATTR_3DSCENE_AMBIENTCOLOR);
2198*cdf0e10cSrcweir 
2199*cdf0e10cSrcweir // Texturen
2200*cdf0e10cSrcweir 	// Art
2201*cdf0e10cSrcweir 	nValue = 3;
2202*cdf0e10cSrcweir 	if( aBtnTexLuminance.IsChecked() )
2203*cdf0e10cSrcweir 		nValue = 1;
2204*cdf0e10cSrcweir 	else if( aBtnTexColor.IsChecked() )
2205*cdf0e10cSrcweir 		nValue = 3;
2206*cdf0e10cSrcweir 
2207*cdf0e10cSrcweir 	if( nValue == 1 || nValue == 3 )
2208*cdf0e10cSrcweir 		rAttrs.Put(Svx3DTextureKindItem(nValue));
2209*cdf0e10cSrcweir 	else
2210*cdf0e10cSrcweir 		rAttrs.InvalidateItem(SDRATTR_3DOBJ_TEXTURE_KIND);
2211*cdf0e10cSrcweir 
2212*cdf0e10cSrcweir 
2213*cdf0e10cSrcweir 	// Modus
2214*cdf0e10cSrcweir 	nValue = 99;
2215*cdf0e10cSrcweir 	if( aBtnTexReplace.IsChecked() )
2216*cdf0e10cSrcweir 		nValue = 1;
2217*cdf0e10cSrcweir 	else if( aBtnTexModulate.IsChecked() )
2218*cdf0e10cSrcweir 		nValue = 2;
2219*cdf0e10cSrcweir 	//else if( aBtnTexBlend.IsChecked() )
2220*cdf0e10cSrcweir 	//	nValue = 2;
2221*cdf0e10cSrcweir 
2222*cdf0e10cSrcweir 	if( nValue == 1 || nValue == 2 )
2223*cdf0e10cSrcweir 		rAttrs.Put(Svx3DTextureModeItem(nValue));
2224*cdf0e10cSrcweir 	else
2225*cdf0e10cSrcweir 		rAttrs.InvalidateItem(SDRATTR_3DOBJ_TEXTURE_MODE);
2226*cdf0e10cSrcweir 
2227*cdf0e10cSrcweir 	// Projektion X
2228*cdf0e10cSrcweir 	nValue = 99;
2229*cdf0e10cSrcweir 	if( aBtnTexObjectX.IsChecked() )
2230*cdf0e10cSrcweir 		nValue = 0;
2231*cdf0e10cSrcweir 	else if( aBtnTexParallelX.IsChecked() )
2232*cdf0e10cSrcweir 		nValue = 1;
2233*cdf0e10cSrcweir 	else if( aBtnTexCircleX.IsChecked() )
2234*cdf0e10cSrcweir 		nValue = 2;
2235*cdf0e10cSrcweir 
2236*cdf0e10cSrcweir 	if( nValue <= 2 )
2237*cdf0e10cSrcweir 		rAttrs.Put(Svx3DTextureProjectionXItem(nValue));
2238*cdf0e10cSrcweir 	else
2239*cdf0e10cSrcweir 		rAttrs.InvalidateItem(SDRATTR_3DOBJ_TEXTURE_PROJ_X);
2240*cdf0e10cSrcweir 
2241*cdf0e10cSrcweir 	// Projektion Y
2242*cdf0e10cSrcweir 	nValue = 99;
2243*cdf0e10cSrcweir 	if( aBtnTexObjectY.IsChecked() )
2244*cdf0e10cSrcweir 		nValue = 0;
2245*cdf0e10cSrcweir 	else if( aBtnTexParallelY.IsChecked() )
2246*cdf0e10cSrcweir 		nValue = 1;
2247*cdf0e10cSrcweir 	else if( aBtnTexCircleY.IsChecked() )
2248*cdf0e10cSrcweir 		nValue = 2;
2249*cdf0e10cSrcweir 
2250*cdf0e10cSrcweir 	if( nValue <= 2 )
2251*cdf0e10cSrcweir 		rAttrs.Put(Svx3DTextureProjectionYItem(nValue));
2252*cdf0e10cSrcweir 	else
2253*cdf0e10cSrcweir 		rAttrs.InvalidateItem(SDRATTR_3DOBJ_TEXTURE_PROJ_Y);
2254*cdf0e10cSrcweir 
2255*cdf0e10cSrcweir 
2256*cdf0e10cSrcweir 	// Filter
2257*cdf0e10cSrcweir 	eState = aBtnTexFilter.GetState();
2258*cdf0e10cSrcweir 	if( eState != STATE_DONTKNOW )
2259*cdf0e10cSrcweir 	{
2260*cdf0e10cSrcweir 		sal_Bool bValue = STATE_CHECK == eState;
2261*cdf0e10cSrcweir 		rAttrs.Put(Svx3DTextureFilterItem(bValue));
2262*cdf0e10cSrcweir 	}
2263*cdf0e10cSrcweir 	else
2264*cdf0e10cSrcweir 		rAttrs.InvalidateItem(SDRATTR_3DOBJ_TEXTURE_FILTER);
2265*cdf0e10cSrcweir 
2266*cdf0e10cSrcweir 
2267*cdf0e10cSrcweir // Material
2268*cdf0e10cSrcweir 	// Objektfarbe
2269*cdf0e10cSrcweir 	if( aLbMatColor.GetSelectEntryCount() )
2270*cdf0e10cSrcweir 	{
2271*cdf0e10cSrcweir 		aColor = aLbMatColor.GetSelectEntryColor();
2272*cdf0e10cSrcweir 		rAttrs.Put( XFillColorItem( String(), aColor) );
2273*cdf0e10cSrcweir 	}
2274*cdf0e10cSrcweir 	else
2275*cdf0e10cSrcweir 	{
2276*cdf0e10cSrcweir 		rAttrs.InvalidateItem( XATTR_FILLCOLOR );
2277*cdf0e10cSrcweir 	}
2278*cdf0e10cSrcweir 
2279*cdf0e10cSrcweir 	// Slebstleuchtfarbe
2280*cdf0e10cSrcweir 	if( aLbMatEmission.GetSelectEntryCount() )
2281*cdf0e10cSrcweir 	{
2282*cdf0e10cSrcweir 		aColor = aLbMatEmission.GetSelectEntryColor();
2283*cdf0e10cSrcweir 		rAttrs.Put(Svx3DMaterialEmissionItem(aColor));
2284*cdf0e10cSrcweir 	}
2285*cdf0e10cSrcweir 	else
2286*cdf0e10cSrcweir 		rAttrs.InvalidateItem(SDRATTR_3DOBJ_MAT_EMISSION);
2287*cdf0e10cSrcweir 
2288*cdf0e10cSrcweir 	// Glanzpunkt
2289*cdf0e10cSrcweir 	if( aLbMatSpecular.GetSelectEntryCount() )
2290*cdf0e10cSrcweir 	{
2291*cdf0e10cSrcweir 		aColor = aLbMatSpecular.GetSelectEntryColor();
2292*cdf0e10cSrcweir 		rAttrs.Put(Svx3DMaterialSpecularItem(aColor));
2293*cdf0e10cSrcweir 	}
2294*cdf0e10cSrcweir 	else
2295*cdf0e10cSrcweir 		rAttrs.InvalidateItem(SDRATTR_3DOBJ_MAT_SPECULAR);
2296*cdf0e10cSrcweir 
2297*cdf0e10cSrcweir 	// Glanzpunkt Intensitaet
2298*cdf0e10cSrcweir 	if( !aMtrMatSpecularIntensity.IsEmptyFieldValue() )
2299*cdf0e10cSrcweir 	{
2300*cdf0e10cSrcweir 		sal_uInt16 nValue2 = (sal_uInt16) aMtrMatSpecularIntensity.GetValue();
2301*cdf0e10cSrcweir 		rAttrs.Put(Svx3DMaterialSpecularIntensityItem(nValue2));
2302*cdf0e10cSrcweir 	}
2303*cdf0e10cSrcweir 	else
2304*cdf0e10cSrcweir 		rAttrs.InvalidateItem(SDRATTR_3DOBJ_MAT_SPECULAR_INTENSITY);
2305*cdf0e10cSrcweir }
2306*cdf0e10cSrcweir 
2307*cdf0e10cSrcweir // -----------------------------------------------------------------------
2308*cdf0e10cSrcweir void __EXPORT Svx3DWin::Resize()
2309*cdf0e10cSrcweir {
2310*cdf0e10cSrcweir 	if ( !IsFloatingMode() ||
2311*cdf0e10cSrcweir 		 !GetFloatingWindow()->IsRollUp() )
2312*cdf0e10cSrcweir 	{
2313*cdf0e10cSrcweir 		Size aWinSize( GetOutputSizePixel() ); // vorher rSize im Resizing()
2314*cdf0e10cSrcweir 
2315*cdf0e10cSrcweir 		if( aWinSize.Height() >= GetMinOutputSizePixel().Height() &&
2316*cdf0e10cSrcweir 			aWinSize.Width() >= GetMinOutputSizePixel().Width() )
2317*cdf0e10cSrcweir 		{
2318*cdf0e10cSrcweir 			Size aDiffSize;
2319*cdf0e10cSrcweir 			aDiffSize.Width() = aWinSize.Width() - aSize.Width();
2320*cdf0e10cSrcweir 			aDiffSize.Height() = aWinSize.Height() - aSize.Height();
2321*cdf0e10cSrcweir 
2322*cdf0e10cSrcweir 			Point aXPt;
2323*cdf0e10cSrcweir 			Point aYPt;
2324*cdf0e10cSrcweir 			aXPt.X() = aDiffSize.Width();
2325*cdf0e10cSrcweir 			aYPt.Y() = aDiffSize.Height();
2326*cdf0e10cSrcweir 
2327*cdf0e10cSrcweir 			Size aObjSize;
2328*cdf0e10cSrcweir 
2329*cdf0e10cSrcweir 			// Hide
2330*cdf0e10cSrcweir 			aBtnUpdate.Hide();
2331*cdf0e10cSrcweir 			aBtnAssign.Hide();
2332*cdf0e10cSrcweir 
2333*cdf0e10cSrcweir 			aBtnConvertTo3D.Hide();
2334*cdf0e10cSrcweir 			aBtnLatheObject.Hide();
2335*cdf0e10cSrcweir 			aBtnPerspective.Hide();
2336*cdf0e10cSrcweir 
2337*cdf0e10cSrcweir 			aCtlPreview.Hide();
2338*cdf0e10cSrcweir 			aCtlLightPreview.Hide();
2339*cdf0e10cSrcweir 
2340*cdf0e10cSrcweir             aFLGeometrie.Hide();
2341*cdf0e10cSrcweir             aFLRepresentation.Hide();
2342*cdf0e10cSrcweir             aFLLight.Hide();
2343*cdf0e10cSrcweir             aFLTexture.Hide();
2344*cdf0e10cSrcweir             aFLMaterial.Hide();
2345*cdf0e10cSrcweir 
2346*cdf0e10cSrcweir 			// Verschieben / Resizen
2347*cdf0e10cSrcweir 			aBtnUpdate.SetPosPixel( aBtnUpdate.GetPosPixel() + aXPt );
2348*cdf0e10cSrcweir 			aBtnAssign.SetPosPixel( aBtnAssign.GetPosPixel() + aXPt );
2349*cdf0e10cSrcweir 
2350*cdf0e10cSrcweir 				// Preview-Controls
2351*cdf0e10cSrcweir 			aObjSize = aCtlPreview.GetOutputSizePixel();
2352*cdf0e10cSrcweir 			aObjSize.Width() += aDiffSize.Width();
2353*cdf0e10cSrcweir 			aObjSize.Height() += aDiffSize.Height();
2354*cdf0e10cSrcweir 			aCtlPreview.SetOutputSizePixel( aObjSize );
2355*cdf0e10cSrcweir 			aCtlLightPreview.SetOutputSizePixel( aObjSize );
2356*cdf0e10cSrcweir 
2357*cdf0e10cSrcweir             // Groups
2358*cdf0e10cSrcweir             aObjSize = aFLGeometrie.GetOutputSizePixel();
2359*cdf0e10cSrcweir 			aObjSize.Width() += aDiffSize.Width();
2360*cdf0e10cSrcweir             aFLGeometrie.SetOutputSizePixel( aObjSize );
2361*cdf0e10cSrcweir             aFLSegments.SetOutputSizePixel( aObjSize );
2362*cdf0e10cSrcweir             aFLShadow.SetOutputSizePixel( aObjSize );
2363*cdf0e10cSrcweir             aFLCamera.SetOutputSizePixel( aObjSize );
2364*cdf0e10cSrcweir             aFLRepresentation.SetOutputSizePixel( aObjSize );
2365*cdf0e10cSrcweir             aFLLight.SetOutputSizePixel( aObjSize );
2366*cdf0e10cSrcweir             aFLTexture.SetOutputSizePixel( aObjSize );
2367*cdf0e10cSrcweir             aFLMaterial.SetOutputSizePixel( aObjSize );
2368*cdf0e10cSrcweir 
2369*cdf0e10cSrcweir 				// Y-Position der unteren Buttons
2370*cdf0e10cSrcweir 			aBtnConvertTo3D.SetPosPixel( aBtnConvertTo3D.GetPosPixel() + aYPt );
2371*cdf0e10cSrcweir 			aBtnLatheObject.SetPosPixel( aBtnLatheObject.GetPosPixel() + aYPt );
2372*cdf0e10cSrcweir 			aBtnPerspective.SetPosPixel( aBtnPerspective.GetPosPixel() + aYPt );
2373*cdf0e10cSrcweir 
2374*cdf0e10cSrcweir 			// Show
2375*cdf0e10cSrcweir 			aBtnUpdate.Show();
2376*cdf0e10cSrcweir 			aBtnAssign.Show();
2377*cdf0e10cSrcweir 
2378*cdf0e10cSrcweir 			aBtnConvertTo3D.Show();
2379*cdf0e10cSrcweir 			aBtnLatheObject.Show();
2380*cdf0e10cSrcweir 			aBtnPerspective.Show();
2381*cdf0e10cSrcweir 
2382*cdf0e10cSrcweir 			if( aBtnGeo.IsChecked() )
2383*cdf0e10cSrcweir 				ClickViewTypeHdl( &aBtnGeo );
2384*cdf0e10cSrcweir 			if( aBtnRepresentation.IsChecked() )
2385*cdf0e10cSrcweir 				ClickViewTypeHdl( &aBtnRepresentation );
2386*cdf0e10cSrcweir 			if( aBtnLight.IsChecked() )
2387*cdf0e10cSrcweir 				ClickViewTypeHdl( &aBtnLight );
2388*cdf0e10cSrcweir 			if( aBtnTexture.IsChecked() )
2389*cdf0e10cSrcweir 				ClickViewTypeHdl( &aBtnTexture );
2390*cdf0e10cSrcweir 			if( aBtnMaterial.IsChecked() )
2391*cdf0e10cSrcweir 				ClickViewTypeHdl( &aBtnMaterial );
2392*cdf0e10cSrcweir 
2393*cdf0e10cSrcweir 			aSize = aWinSize;
2394*cdf0e10cSrcweir 		}
2395*cdf0e10cSrcweir 	}
2396*cdf0e10cSrcweir 
2397*cdf0e10cSrcweir 	SfxDockingWindow::Resize();
2398*cdf0e10cSrcweir }
2399*cdf0e10cSrcweir 
2400*cdf0e10cSrcweir // -----------------------------------------------------------------------
2401*cdf0e10cSrcweir IMPL_LINK( Svx3DWin, ClickUpdateHdl, void *, EMPTYARG )
2402*cdf0e10cSrcweir {
2403*cdf0e10cSrcweir 	bUpdate = !aBtnUpdate.IsChecked();
2404*cdf0e10cSrcweir 	aBtnUpdate.Check( bUpdate );
2405*cdf0e10cSrcweir 
2406*cdf0e10cSrcweir 	if( bUpdate )
2407*cdf0e10cSrcweir 	{
2408*cdf0e10cSrcweir         SfxDispatcher* pDispatcher = LocalGetDispatcher(pBindings);
2409*cdf0e10cSrcweir         if (pDispatcher != NULL)
2410*cdf0e10cSrcweir         {
2411*cdf0e10cSrcweir             SfxBoolItem aItem( SID_3D_STATE, sal_True );
2412*cdf0e10cSrcweir             pDispatcher->Execute(
2413*cdf0e10cSrcweir                 SID_3D_STATE, SFX_CALLMODE_ASYNCHRON | SFX_CALLMODE_RECORD, &aItem, 0L );
2414*cdf0e10cSrcweir         }
2415*cdf0e10cSrcweir 	}
2416*cdf0e10cSrcweir 	else
2417*cdf0e10cSrcweir 	{
2418*cdf0e10cSrcweir 		// Controls koennen u.U. disabled sein
2419*cdf0e10cSrcweir 	}
2420*cdf0e10cSrcweir 
2421*cdf0e10cSrcweir 	return( 0L );
2422*cdf0e10cSrcweir }
2423*cdf0e10cSrcweir 
2424*cdf0e10cSrcweir // -----------------------------------------------------------------------
2425*cdf0e10cSrcweir IMPL_LINK( Svx3DWin, ClickAssignHdl, void *, EMPTYARG )
2426*cdf0e10cSrcweir {
2427*cdf0e10cSrcweir     SfxDispatcher* pDispatcher = LocalGetDispatcher(pBindings);
2428*cdf0e10cSrcweir     if (pDispatcher != NULL)
2429*cdf0e10cSrcweir     {
2430*cdf0e10cSrcweir         SfxBoolItem aItem( SID_3D_ASSIGN, sal_True );
2431*cdf0e10cSrcweir         pDispatcher->Execute(
2432*cdf0e10cSrcweir             SID_3D_ASSIGN, SFX_CALLMODE_ASYNCHRON | SFX_CALLMODE_RECORD, &aItem, 0L );
2433*cdf0e10cSrcweir     }
2434*cdf0e10cSrcweir 
2435*cdf0e10cSrcweir 	return( 0L );
2436*cdf0e10cSrcweir }
2437*cdf0e10cSrcweir 
2438*cdf0e10cSrcweir // -----------------------------------------------------------------------
2439*cdf0e10cSrcweir 
2440*cdf0e10cSrcweir IMPL_LINK( Svx3DWin, ClickViewTypeHdl, void *, pBtn )
2441*cdf0e10cSrcweir {
2442*cdf0e10cSrcweir 
2443*cdf0e10cSrcweir 	if( pBtn )
2444*cdf0e10cSrcweir 	{
2445*cdf0e10cSrcweir 		// Da das permanente Updaten der Preview zu teuer waere
2446*cdf0e10cSrcweir 		sal_Bool bUpdatePreview = aBtnLight.IsChecked();
2447*cdf0e10cSrcweir 
2448*cdf0e10cSrcweir 		aBtnGeo.Check( &aBtnGeo	== pBtn );
2449*cdf0e10cSrcweir 		aBtnRepresentation.Check( &aBtnRepresentation == pBtn );
2450*cdf0e10cSrcweir 		aBtnLight.Check( &aBtnLight	== pBtn );
2451*cdf0e10cSrcweir 		aBtnTexture.Check( &aBtnTexture	== pBtn );
2452*cdf0e10cSrcweir 		aBtnMaterial.Check( &aBtnMaterial == pBtn );
2453*cdf0e10cSrcweir 
2454*cdf0e10cSrcweir 		if( aBtnGeo.IsChecked() )
2455*cdf0e10cSrcweir 			eViewType = VIEWTYPE_GEO;
2456*cdf0e10cSrcweir 		if( aBtnRepresentation.IsChecked() )
2457*cdf0e10cSrcweir 			eViewType = VIEWTYPE_REPRESENTATION;
2458*cdf0e10cSrcweir 		if( aBtnLight.IsChecked() )
2459*cdf0e10cSrcweir 			eViewType = VIEWTYPE_LIGHT;
2460*cdf0e10cSrcweir 		if( aBtnTexture.IsChecked() )
2461*cdf0e10cSrcweir 			eViewType = VIEWTYPE_TEXTURE;
2462*cdf0e10cSrcweir 		if( aBtnMaterial.IsChecked() )
2463*cdf0e10cSrcweir 			eViewType = VIEWTYPE_MATERIAL;
2464*cdf0e10cSrcweir 
2465*cdf0e10cSrcweir 		// Geometrie
2466*cdf0e10cSrcweir 		if( eViewType == VIEWTYPE_GEO )
2467*cdf0e10cSrcweir 		{
2468*cdf0e10cSrcweir 			aFtHorizontal.Show();
2469*cdf0e10cSrcweir 			aNumHorizontal.Show();
2470*cdf0e10cSrcweir 			aFtVertical.Show();
2471*cdf0e10cSrcweir 			aNumVertical.Show();
2472*cdf0e10cSrcweir             aFLSegments.Show();
2473*cdf0e10cSrcweir 			aFtPercentDiagonal.Show();
2474*cdf0e10cSrcweir 			aMtrPercentDiagonal.Show();
2475*cdf0e10cSrcweir 			aFtBackscale.Show();
2476*cdf0e10cSrcweir 			aMtrBackscale.Show();
2477*cdf0e10cSrcweir 			aFtEndAngle.Show();
2478*cdf0e10cSrcweir 			aMtrEndAngle.Show();
2479*cdf0e10cSrcweir 			aFtDepth.Show();
2480*cdf0e10cSrcweir 			aMtrDepth.Show();
2481*cdf0e10cSrcweir             aFLGeometrie.Show();
2482*cdf0e10cSrcweir 
2483*cdf0e10cSrcweir 			aBtnNormalsObj.Show();
2484*cdf0e10cSrcweir 			aBtnNormalsFlat.Show();
2485*cdf0e10cSrcweir 			aBtnNormalsSphere.Show();
2486*cdf0e10cSrcweir 			aBtnTwoSidedLighting.Show();
2487*cdf0e10cSrcweir 			aBtnNormalsInvert.Show();
2488*cdf0e10cSrcweir             aFLNormals.Show();
2489*cdf0e10cSrcweir 			aBtnDoubleSided.Show();
2490*cdf0e10cSrcweir 		}
2491*cdf0e10cSrcweir 		else
2492*cdf0e10cSrcweir 		{
2493*cdf0e10cSrcweir 			aFtHorizontal.Hide();
2494*cdf0e10cSrcweir 			aNumHorizontal.Hide();
2495*cdf0e10cSrcweir 			aFtVertical.Hide();
2496*cdf0e10cSrcweir 			aNumVertical.Hide();
2497*cdf0e10cSrcweir             aFLSegments.Hide();
2498*cdf0e10cSrcweir 			aFtPercentDiagonal.Hide();
2499*cdf0e10cSrcweir 			aMtrPercentDiagonal.Hide();
2500*cdf0e10cSrcweir 			aFtBackscale.Hide();
2501*cdf0e10cSrcweir 			aMtrBackscale.Hide();
2502*cdf0e10cSrcweir 			aFtEndAngle.Hide();
2503*cdf0e10cSrcweir 			aMtrEndAngle.Hide();
2504*cdf0e10cSrcweir 			aFtDepth.Hide();
2505*cdf0e10cSrcweir 			aMtrDepth.Hide();
2506*cdf0e10cSrcweir             aFLGeometrie.Hide();
2507*cdf0e10cSrcweir 
2508*cdf0e10cSrcweir 			aBtnNormalsObj.Hide();
2509*cdf0e10cSrcweir 			aBtnNormalsFlat.Hide();
2510*cdf0e10cSrcweir 			aBtnNormalsSphere.Hide();
2511*cdf0e10cSrcweir 			aBtnTwoSidedLighting.Hide();
2512*cdf0e10cSrcweir 			aBtnNormalsInvert.Hide();
2513*cdf0e10cSrcweir             aFLNormals.Hide();
2514*cdf0e10cSrcweir 			aBtnDoubleSided.Hide();
2515*cdf0e10cSrcweir 		}
2516*cdf0e10cSrcweir 
2517*cdf0e10cSrcweir 		// Darstellung
2518*cdf0e10cSrcweir 		if( eViewType == VIEWTYPE_REPRESENTATION )
2519*cdf0e10cSrcweir 		{
2520*cdf0e10cSrcweir 			aFtShademode.Show();
2521*cdf0e10cSrcweir 			aLbShademode.Show();
2522*cdf0e10cSrcweir 			aBtnShadow3d.Show();
2523*cdf0e10cSrcweir 			aFtSlant.Show();
2524*cdf0e10cSrcweir 			aMtrSlant.Show();
2525*cdf0e10cSrcweir             aFLShadow.Show();
2526*cdf0e10cSrcweir 			aFtDistance.Show();
2527*cdf0e10cSrcweir 			aMtrDistance.Show();
2528*cdf0e10cSrcweir 			aFtFocalLeng.Show();
2529*cdf0e10cSrcweir 			aMtrFocalLength.Show();
2530*cdf0e10cSrcweir             aFLCamera.Show();
2531*cdf0e10cSrcweir             aFLRepresentation.Show();
2532*cdf0e10cSrcweir 		}
2533*cdf0e10cSrcweir 		else
2534*cdf0e10cSrcweir 		{
2535*cdf0e10cSrcweir 			aFtShademode.Hide();
2536*cdf0e10cSrcweir 			aLbShademode.Hide();
2537*cdf0e10cSrcweir 			aBtnShadow3d.Hide();
2538*cdf0e10cSrcweir 			aFtSlant.Hide();
2539*cdf0e10cSrcweir 			aMtrSlant.Hide();
2540*cdf0e10cSrcweir             aFLShadow.Hide();
2541*cdf0e10cSrcweir 			aFtDistance.Hide();
2542*cdf0e10cSrcweir 			aMtrDistance.Hide();
2543*cdf0e10cSrcweir 			aFtFocalLeng.Hide();
2544*cdf0e10cSrcweir 			aMtrFocalLength.Hide();
2545*cdf0e10cSrcweir             aFLCamera.Hide();
2546*cdf0e10cSrcweir             aFLRepresentation.Hide();
2547*cdf0e10cSrcweir 		}
2548*cdf0e10cSrcweir 
2549*cdf0e10cSrcweir 		// Beleuchtung
2550*cdf0e10cSrcweir 		if( eViewType == VIEWTYPE_LIGHT )
2551*cdf0e10cSrcweir 		{
2552*cdf0e10cSrcweir 			aBtnLight1.Show();
2553*cdf0e10cSrcweir 			aBtnLight2.Show();
2554*cdf0e10cSrcweir 			aBtnLight3.Show();
2555*cdf0e10cSrcweir 			aBtnLight4.Show();
2556*cdf0e10cSrcweir 			aBtnLight5.Show();
2557*cdf0e10cSrcweir 			aBtnLight6.Show();
2558*cdf0e10cSrcweir 			aBtnLight7.Show();
2559*cdf0e10cSrcweir 			aBtnLight8.Show();
2560*cdf0e10cSrcweir 			//aLbLight1.Show();
2561*cdf0e10cSrcweir 			aBtnLightColor.Show();
2562*cdf0e10cSrcweir             aFTLightsource.Show();
2563*cdf0e10cSrcweir 			aLbAmbientlight.Show();
2564*cdf0e10cSrcweir 			aBtnAmbientColor.Show();
2565*cdf0e10cSrcweir             aFTAmbientlight.Show();
2566*cdf0e10cSrcweir             aFLLight.Show();
2567*cdf0e10cSrcweir 			//aFtLightX.Show();
2568*cdf0e10cSrcweir 			//aFtLightY.Show();
2569*cdf0e10cSrcweir 			//aFtLightZ.Show();
2570*cdf0e10cSrcweir 			//aGrpLightInfo.Show();
2571*cdf0e10cSrcweir 
2572*cdf0e10cSrcweir 			ColorLB* pLb = GetLbByButton();
2573*cdf0e10cSrcweir 			if( pLb )
2574*cdf0e10cSrcweir 				pLb->Show();
2575*cdf0e10cSrcweir 
2576*cdf0e10cSrcweir 			aCtlLightPreview.Show();
2577*cdf0e10cSrcweir 			aCtlPreview.Hide();
2578*cdf0e10cSrcweir 		}
2579*cdf0e10cSrcweir 		else
2580*cdf0e10cSrcweir 		{
2581*cdf0e10cSrcweir 			aBtnLight1.Hide();
2582*cdf0e10cSrcweir 			aBtnLight2.Hide();
2583*cdf0e10cSrcweir 			aBtnLight3.Hide();
2584*cdf0e10cSrcweir 			aBtnLight4.Hide();
2585*cdf0e10cSrcweir 			aBtnLight5.Hide();
2586*cdf0e10cSrcweir 			aBtnLight6.Hide();
2587*cdf0e10cSrcweir 			aBtnLight7.Hide();
2588*cdf0e10cSrcweir 			aBtnLight8.Hide();
2589*cdf0e10cSrcweir 			aLbLight1.Hide();
2590*cdf0e10cSrcweir 			aLbLight2.Hide();
2591*cdf0e10cSrcweir 			aLbLight3.Hide();
2592*cdf0e10cSrcweir 			aLbLight4.Hide();
2593*cdf0e10cSrcweir 			aLbLight5.Hide();
2594*cdf0e10cSrcweir 			aLbLight6.Hide();
2595*cdf0e10cSrcweir 			aLbLight7.Hide();
2596*cdf0e10cSrcweir 			aLbLight8.Hide();
2597*cdf0e10cSrcweir 			aBtnLightColor.Hide();
2598*cdf0e10cSrcweir             aFTLightsource.Hide();
2599*cdf0e10cSrcweir 			aLbAmbientlight.Hide();
2600*cdf0e10cSrcweir 			aBtnAmbientColor.Hide();
2601*cdf0e10cSrcweir             aFTAmbientlight.Hide();
2602*cdf0e10cSrcweir             aFLLight.Hide();
2603*cdf0e10cSrcweir 
2604*cdf0e10cSrcweir 			if( !aCtlPreview.IsVisible() )
2605*cdf0e10cSrcweir 			{
2606*cdf0e10cSrcweir 				aCtlPreview.Show();
2607*cdf0e10cSrcweir 				aCtlLightPreview.Hide();
2608*cdf0e10cSrcweir 			}
2609*cdf0e10cSrcweir 		}
2610*cdf0e10cSrcweir 
2611*cdf0e10cSrcweir 		// Texturen
2612*cdf0e10cSrcweir 		if( eViewType == VIEWTYPE_TEXTURE )
2613*cdf0e10cSrcweir 		{
2614*cdf0e10cSrcweir 			aFtTexKind.Show();
2615*cdf0e10cSrcweir 			aBtnTexLuminance.Show();
2616*cdf0e10cSrcweir 			aBtnTexColor.Show();
2617*cdf0e10cSrcweir 			aFtTexMode.Show();
2618*cdf0e10cSrcweir 			aBtnTexReplace.Show();
2619*cdf0e10cSrcweir 			aBtnTexModulate.Show();
2620*cdf0e10cSrcweir 			//aBtnTexBlend.Show();
2621*cdf0e10cSrcweir 			aFtTexProjectionX.Show();
2622*cdf0e10cSrcweir 			aBtnTexParallelX.Show();
2623*cdf0e10cSrcweir 			aBtnTexCircleX.Show();
2624*cdf0e10cSrcweir 			aBtnTexObjectX.Show();
2625*cdf0e10cSrcweir 			aFtTexProjectionY.Show();
2626*cdf0e10cSrcweir 			aBtnTexParallelY.Show();
2627*cdf0e10cSrcweir 			aBtnTexCircleY.Show();
2628*cdf0e10cSrcweir 			aBtnTexObjectY.Show();
2629*cdf0e10cSrcweir 			aFtTexFilter.Show();
2630*cdf0e10cSrcweir 			aBtnTexFilter.Show();
2631*cdf0e10cSrcweir             aFLTexture.Show();
2632*cdf0e10cSrcweir 		}
2633*cdf0e10cSrcweir 		else
2634*cdf0e10cSrcweir 		{
2635*cdf0e10cSrcweir 			aFtTexKind.Hide();
2636*cdf0e10cSrcweir 			aBtnTexLuminance.Hide();
2637*cdf0e10cSrcweir 			aBtnTexColor.Hide();
2638*cdf0e10cSrcweir 			aFtTexMode.Hide();
2639*cdf0e10cSrcweir 			aBtnTexReplace.Hide();
2640*cdf0e10cSrcweir 			aBtnTexModulate.Hide();
2641*cdf0e10cSrcweir 			aBtnTexBlend.Hide();
2642*cdf0e10cSrcweir 			aFtTexProjectionX.Hide();
2643*cdf0e10cSrcweir 			aBtnTexParallelX.Hide();
2644*cdf0e10cSrcweir 			aBtnTexCircleX.Hide();
2645*cdf0e10cSrcweir 			aBtnTexObjectX.Hide();
2646*cdf0e10cSrcweir 			aFtTexProjectionY.Hide();
2647*cdf0e10cSrcweir 			aBtnTexParallelY.Hide();
2648*cdf0e10cSrcweir 			aBtnTexCircleY.Hide();
2649*cdf0e10cSrcweir 			aBtnTexObjectY.Hide();
2650*cdf0e10cSrcweir 			aFtTexFilter.Hide();
2651*cdf0e10cSrcweir 			aBtnTexFilter.Hide();
2652*cdf0e10cSrcweir             aFLTexture.Hide();
2653*cdf0e10cSrcweir 		}
2654*cdf0e10cSrcweir 
2655*cdf0e10cSrcweir 		// Material
2656*cdf0e10cSrcweir 		if( eViewType == VIEWTYPE_MATERIAL )
2657*cdf0e10cSrcweir 		{
2658*cdf0e10cSrcweir 			aFtMatFavorites.Show();
2659*cdf0e10cSrcweir 			aLbMatFavorites.Show();
2660*cdf0e10cSrcweir 			aFtMatColor.Show();
2661*cdf0e10cSrcweir 			aLbMatColor.Show();
2662*cdf0e10cSrcweir 			aBtnMatColor.Show();
2663*cdf0e10cSrcweir 			aFtMatEmission.Show();
2664*cdf0e10cSrcweir 			aLbMatEmission.Show();
2665*cdf0e10cSrcweir 			aBtnEmissionColor.Show();
2666*cdf0e10cSrcweir 			aFtMatSpecular.Show();
2667*cdf0e10cSrcweir 			aLbMatSpecular.Show();
2668*cdf0e10cSrcweir 			aBtnSpecularColor.Show();
2669*cdf0e10cSrcweir 			aFtMatSpecularIntensity.Show();
2670*cdf0e10cSrcweir 			aMtrMatSpecularIntensity.Show();
2671*cdf0e10cSrcweir             aFLMatSpecular.Show();
2672*cdf0e10cSrcweir             aFLMaterial.Show();
2673*cdf0e10cSrcweir 		}
2674*cdf0e10cSrcweir 		else
2675*cdf0e10cSrcweir 		{
2676*cdf0e10cSrcweir 			aFtMatFavorites.Hide();
2677*cdf0e10cSrcweir 			aLbMatFavorites.Hide();
2678*cdf0e10cSrcweir 			aFtMatColor.Hide();
2679*cdf0e10cSrcweir 			aLbMatColor.Hide();
2680*cdf0e10cSrcweir 			aBtnMatColor.Hide();
2681*cdf0e10cSrcweir 			aFtMatEmission.Hide();
2682*cdf0e10cSrcweir 			aLbMatEmission.Hide();
2683*cdf0e10cSrcweir 			aBtnEmissionColor.Hide();
2684*cdf0e10cSrcweir 			aFtMatSpecular.Hide();
2685*cdf0e10cSrcweir 			aLbMatSpecular.Hide();
2686*cdf0e10cSrcweir 			aBtnSpecularColor.Hide();
2687*cdf0e10cSrcweir 			aFtMatSpecularIntensity.Hide();
2688*cdf0e10cSrcweir 			aMtrMatSpecularIntensity.Hide();
2689*cdf0e10cSrcweir             aFLMatSpecular.Hide();
2690*cdf0e10cSrcweir             aFLMaterial.Hide();
2691*cdf0e10cSrcweir 		}
2692*cdf0e10cSrcweir 		if( bUpdatePreview && !aBtnLight.IsChecked() )
2693*cdf0e10cSrcweir 			UpdatePreview();
2694*cdf0e10cSrcweir 
2695*cdf0e10cSrcweir 	}
2696*cdf0e10cSrcweir 	else
2697*cdf0e10cSrcweir 	{
2698*cdf0e10cSrcweir 		aBtnGeo.Check( eViewType == VIEWTYPE_GEO );
2699*cdf0e10cSrcweir 		aBtnRepresentation.Check( eViewType == VIEWTYPE_REPRESENTATION );
2700*cdf0e10cSrcweir 		aBtnLight.Check( eViewType == VIEWTYPE_LIGHT );
2701*cdf0e10cSrcweir 		aBtnTexture.Check( eViewType == VIEWTYPE_TEXTURE );
2702*cdf0e10cSrcweir 		aBtnMaterial.Check( eViewType == VIEWTYPE_MATERIAL );
2703*cdf0e10cSrcweir 	}
2704*cdf0e10cSrcweir 	return( 0L );
2705*cdf0e10cSrcweir }
2706*cdf0e10cSrcweir 
2707*cdf0e10cSrcweir // -----------------------------------------------------------------------
2708*cdf0e10cSrcweir IMPL_LINK( Svx3DWin, ClickHdl, PushButton *, pBtn )
2709*cdf0e10cSrcweir {
2710*cdf0e10cSrcweir 	sal_Bool bUpdatePreview = sal_False;
2711*cdf0e10cSrcweir 
2712*cdf0e10cSrcweir 	if( pBtn )
2713*cdf0e10cSrcweir 	{
2714*cdf0e10cSrcweir 		sal_uInt16 nSId = 0;
2715*cdf0e10cSrcweir 
2716*cdf0e10cSrcweir 		if( pBtn == &aBtnConvertTo3D )
2717*cdf0e10cSrcweir 		{
2718*cdf0e10cSrcweir 			nSId = SID_CONVERT_TO_3D;
2719*cdf0e10cSrcweir 		}
2720*cdf0e10cSrcweir 		else if( pBtn == &aBtnLatheObject )
2721*cdf0e10cSrcweir 		{
2722*cdf0e10cSrcweir 			nSId = SID_CONVERT_TO_3D_LATHE_FAST;
2723*cdf0e10cSrcweir 		}
2724*cdf0e10cSrcweir 		// Geometrie
2725*cdf0e10cSrcweir 		else if( pBtn == &aBtnNormalsObj ||
2726*cdf0e10cSrcweir 				 pBtn == &aBtnNormalsFlat ||
2727*cdf0e10cSrcweir 				 pBtn == &aBtnNormalsSphere )
2728*cdf0e10cSrcweir 		{
2729*cdf0e10cSrcweir 			aBtnNormalsObj.Check( pBtn == &aBtnNormalsObj );
2730*cdf0e10cSrcweir 			aBtnNormalsFlat.Check( pBtn == &aBtnNormalsFlat );
2731*cdf0e10cSrcweir 			aBtnNormalsSphere.Check( pBtn == &aBtnNormalsSphere );
2732*cdf0e10cSrcweir 			bUpdatePreview = sal_True;
2733*cdf0e10cSrcweir 		}
2734*cdf0e10cSrcweir 		else if( pBtn == &aBtnLight1 ||
2735*cdf0e10cSrcweir 				 pBtn == &aBtnLight2 ||
2736*cdf0e10cSrcweir 				 pBtn == &aBtnLight3 ||
2737*cdf0e10cSrcweir 				 pBtn == &aBtnLight4 ||
2738*cdf0e10cSrcweir 				 pBtn == &aBtnLight5 ||
2739*cdf0e10cSrcweir 				 pBtn == &aBtnLight6 ||
2740*cdf0e10cSrcweir 				 pBtn == &aBtnLight7 ||
2741*cdf0e10cSrcweir 				 pBtn == &aBtnLight8 )
2742*cdf0e10cSrcweir 		{
2743*cdf0e10cSrcweir 			// Beleuchtung
2744*cdf0e10cSrcweir 			ColorLB* pLb = GetLbByButton( pBtn );
2745*cdf0e10cSrcweir 			pLb->Show();
2746*cdf0e10cSrcweir 
2747*cdf0e10cSrcweir 			if( pBtn->IsChecked() )
2748*cdf0e10cSrcweir 			{
2749*cdf0e10cSrcweir 				SetUILightState( *(ImageButton*)pBtn, !GetUILightState( *(ImageButton*)pBtn ) );
2750*cdf0e10cSrcweir 			}
2751*cdf0e10cSrcweir 			else
2752*cdf0e10cSrcweir 			{
2753*cdf0e10cSrcweir 				pBtn->Check();
2754*cdf0e10cSrcweir 
2755*cdf0e10cSrcweir 				if( pBtn != &aBtnLight1 && aBtnLight1.IsChecked() )
2756*cdf0e10cSrcweir 				{
2757*cdf0e10cSrcweir 					aBtnLight1.Check( sal_False );
2758*cdf0e10cSrcweir 					aLbLight1.Hide();
2759*cdf0e10cSrcweir 				}
2760*cdf0e10cSrcweir 				if( pBtn != &aBtnLight2 && aBtnLight2.IsChecked() )
2761*cdf0e10cSrcweir 				{
2762*cdf0e10cSrcweir 					aBtnLight2.Check( sal_False );
2763*cdf0e10cSrcweir 					aLbLight2.Hide();
2764*cdf0e10cSrcweir 				}
2765*cdf0e10cSrcweir 				if( pBtn != &aBtnLight3 && aBtnLight3.IsChecked() )
2766*cdf0e10cSrcweir 				{
2767*cdf0e10cSrcweir 					aBtnLight3.Check( sal_False );
2768*cdf0e10cSrcweir 					aLbLight3.Hide();
2769*cdf0e10cSrcweir 				}
2770*cdf0e10cSrcweir 				if( pBtn != &aBtnLight4 && aBtnLight4.IsChecked() )
2771*cdf0e10cSrcweir 				{
2772*cdf0e10cSrcweir 					aBtnLight4.Check( sal_False );
2773*cdf0e10cSrcweir 					aLbLight4.Hide();
2774*cdf0e10cSrcweir 				}
2775*cdf0e10cSrcweir 				if( pBtn != &aBtnLight5 && aBtnLight5.IsChecked() )
2776*cdf0e10cSrcweir 				{
2777*cdf0e10cSrcweir 					aBtnLight5.Check( sal_False );
2778*cdf0e10cSrcweir 					aLbLight5.Hide();
2779*cdf0e10cSrcweir 				}
2780*cdf0e10cSrcweir 				if( pBtn != &aBtnLight6 && aBtnLight6.IsChecked() )
2781*cdf0e10cSrcweir 				{
2782*cdf0e10cSrcweir 					aBtnLight6.Check( sal_False );
2783*cdf0e10cSrcweir 					aLbLight6.Hide();
2784*cdf0e10cSrcweir 				}
2785*cdf0e10cSrcweir 				if( pBtn != &aBtnLight7 && aBtnLight7.IsChecked() )
2786*cdf0e10cSrcweir 				{
2787*cdf0e10cSrcweir 					aBtnLight7.Check( sal_False );
2788*cdf0e10cSrcweir 					aLbLight7.Hide();
2789*cdf0e10cSrcweir 				}
2790*cdf0e10cSrcweir 				if( pBtn != &aBtnLight8 && aBtnLight8.IsChecked() )
2791*cdf0e10cSrcweir 				{
2792*cdf0e10cSrcweir 					aBtnLight8.Check( sal_False );
2793*cdf0e10cSrcweir 					aLbLight8.Hide();
2794*cdf0e10cSrcweir 				}
2795*cdf0e10cSrcweir 			}
2796*cdf0e10cSrcweir 			sal_Bool bEnable = GetUILightState( *(ImageButton*)pBtn );
2797*cdf0e10cSrcweir 			aBtnLightColor.Enable( bEnable );
2798*cdf0e10cSrcweir 			pLb->Enable( bEnable );
2799*cdf0e10cSrcweir 
2800*cdf0e10cSrcweir 			ClickLightHdl( pBtn );
2801*cdf0e10cSrcweir 			bUpdatePreview = sal_True;
2802*cdf0e10cSrcweir 		}
2803*cdf0e10cSrcweir 		// Texturen
2804*cdf0e10cSrcweir 		else if( pBtn == &aBtnTexLuminance ||
2805*cdf0e10cSrcweir 				 pBtn == &aBtnTexColor )
2806*cdf0e10cSrcweir 		{
2807*cdf0e10cSrcweir 			aBtnTexLuminance.Check( pBtn == &aBtnTexLuminance );
2808*cdf0e10cSrcweir 			aBtnTexColor.Check( pBtn == &aBtnTexColor );
2809*cdf0e10cSrcweir 			bUpdatePreview = sal_True;
2810*cdf0e10cSrcweir 		}
2811*cdf0e10cSrcweir 		else if( pBtn == &aBtnTexReplace ||
2812*cdf0e10cSrcweir 				 pBtn == &aBtnTexModulate )// ||
2813*cdf0e10cSrcweir 				 //pBtn == &aBtnTexBlend )
2814*cdf0e10cSrcweir 		{
2815*cdf0e10cSrcweir 			aBtnTexReplace.Check( pBtn == &aBtnTexReplace );
2816*cdf0e10cSrcweir 			aBtnTexModulate.Check( pBtn == &aBtnTexModulate );
2817*cdf0e10cSrcweir 			//aBtnTexBlend.Check( pBtn == &aBtnTexBlend );
2818*cdf0e10cSrcweir 			bUpdatePreview = sal_True;
2819*cdf0e10cSrcweir 		}
2820*cdf0e10cSrcweir 		else if( pBtn == &aBtnTexParallelX ||
2821*cdf0e10cSrcweir 				 pBtn == &aBtnTexCircleX ||
2822*cdf0e10cSrcweir 				 pBtn == &aBtnTexObjectX )
2823*cdf0e10cSrcweir 		{
2824*cdf0e10cSrcweir 			aBtnTexParallelX.Check( pBtn == &aBtnTexParallelX );
2825*cdf0e10cSrcweir 			aBtnTexCircleX.Check( pBtn == &aBtnTexCircleX );
2826*cdf0e10cSrcweir 			aBtnTexObjectX.Check( pBtn == &aBtnTexObjectX );
2827*cdf0e10cSrcweir 			bUpdatePreview = sal_True;
2828*cdf0e10cSrcweir 		}
2829*cdf0e10cSrcweir 		else if( pBtn == &aBtnTexParallelY ||
2830*cdf0e10cSrcweir 				 pBtn == &aBtnTexCircleY ||
2831*cdf0e10cSrcweir 				 pBtn == &aBtnTexObjectY )
2832*cdf0e10cSrcweir 		{
2833*cdf0e10cSrcweir 			aBtnTexParallelY.Check( pBtn == &aBtnTexParallelY );
2834*cdf0e10cSrcweir 			aBtnTexCircleY.Check( pBtn == &aBtnTexCircleY );
2835*cdf0e10cSrcweir 			aBtnTexObjectY.Check( pBtn == &aBtnTexObjectY );
2836*cdf0e10cSrcweir 			bUpdatePreview = sal_True;
2837*cdf0e10cSrcweir 		}
2838*cdf0e10cSrcweir 		else if( pBtn == &aBtnShadow3d  )
2839*cdf0e10cSrcweir 		{
2840*cdf0e10cSrcweir 			pBtn->Check( !pBtn->IsChecked() );
2841*cdf0e10cSrcweir 			aFtSlant.Enable( pBtn->IsChecked() );
2842*cdf0e10cSrcweir 			aMtrSlant.Enable( pBtn->IsChecked() );
2843*cdf0e10cSrcweir 			bUpdatePreview = sal_True;
2844*cdf0e10cSrcweir 		}
2845*cdf0e10cSrcweir 		// Sonstige (keine Gruppen)
2846*cdf0e10cSrcweir 		else if( pBtn != NULL )
2847*cdf0e10cSrcweir 		{
2848*cdf0e10cSrcweir 			pBtn->Check( !pBtn->IsChecked() );
2849*cdf0e10cSrcweir 			bUpdatePreview = sal_True;
2850*cdf0e10cSrcweir 		}
2851*cdf0e10cSrcweir 
2852*cdf0e10cSrcweir 		if( nSId > 0 )
2853*cdf0e10cSrcweir 		{
2854*cdf0e10cSrcweir             SfxDispatcher* pDispatcher = LocalGetDispatcher(pBindings);
2855*cdf0e10cSrcweir             if (pDispatcher != NULL)
2856*cdf0e10cSrcweir             {
2857*cdf0e10cSrcweir                 SfxBoolItem aItem( nSId, sal_True );
2858*cdf0e10cSrcweir                 pDispatcher->Execute(
2859*cdf0e10cSrcweir                     nSId, SFX_CALLMODE_ASYNCHRON | SFX_CALLMODE_RECORD, &aItem, 0L );
2860*cdf0e10cSrcweir             }
2861*cdf0e10cSrcweir 		}
2862*cdf0e10cSrcweir 		else if( bUpdatePreview == sal_True )
2863*cdf0e10cSrcweir 			UpdatePreview();
2864*cdf0e10cSrcweir 	}
2865*cdf0e10cSrcweir 	return( 0L );
2866*cdf0e10cSrcweir }
2867*cdf0e10cSrcweir 
2868*cdf0e10cSrcweir //------------------------------------------------------------------------
2869*cdf0e10cSrcweir 
2870*cdf0e10cSrcweir IMPL_LINK( Svx3DWin, ClickColorHdl, PushButton *, pBtn )
2871*cdf0e10cSrcweir {
2872*cdf0e10cSrcweir 	SvColorDialog aColorDlg( this );
2873*cdf0e10cSrcweir 	ColorLB* pLb;
2874*cdf0e10cSrcweir 
2875*cdf0e10cSrcweir 	if( pBtn == &aBtnLightColor )
2876*cdf0e10cSrcweir 		pLb = GetLbByButton();
2877*cdf0e10cSrcweir 	else if( pBtn == &aBtnAmbientColor )
2878*cdf0e10cSrcweir 		pLb = &aLbAmbientlight;
2879*cdf0e10cSrcweir 	else if( pBtn == &aBtnMatColor )
2880*cdf0e10cSrcweir 		pLb = &aLbMatColor;
2881*cdf0e10cSrcweir 	else if( pBtn == &aBtnEmissionColor )
2882*cdf0e10cSrcweir 		pLb = &aLbMatEmission;
2883*cdf0e10cSrcweir 	else // if( pBtn == &aBtnSpecularColor )
2884*cdf0e10cSrcweir 		pLb = &aLbMatSpecular;
2885*cdf0e10cSrcweir 
2886*cdf0e10cSrcweir 	Color aColor = pLb->GetSelectEntryColor();
2887*cdf0e10cSrcweir 
2888*cdf0e10cSrcweir 	aColorDlg.SetColor( aColor );
2889*cdf0e10cSrcweir 	if( aColorDlg.Execute() == RET_OK )
2890*cdf0e10cSrcweir 	{
2891*cdf0e10cSrcweir 		aColor = aColorDlg.GetColor();
2892*cdf0e10cSrcweir 		if( LBSelectColor( pLb, aColor ) )
2893*cdf0e10cSrcweir 			SelectHdl( pLb );
2894*cdf0e10cSrcweir 	}
2895*cdf0e10cSrcweir 	return( 0L );
2896*cdf0e10cSrcweir }
2897*cdf0e10cSrcweir 
2898*cdf0e10cSrcweir // -----------------------------------------------------------------------
2899*cdf0e10cSrcweir IMPL_LINK( Svx3DWin, SelectHdl, void *, p )
2900*cdf0e10cSrcweir {
2901*cdf0e10cSrcweir 	if( p )
2902*cdf0e10cSrcweir 	{
2903*cdf0e10cSrcweir 		Color aColor;
2904*cdf0e10cSrcweir 		sal_Bool bUpdatePreview = sal_False;
2905*cdf0e10cSrcweir 
2906*cdf0e10cSrcweir 		// Material
2907*cdf0e10cSrcweir 		if( p == &aLbMatFavorites )
2908*cdf0e10cSrcweir 		{
2909*cdf0e10cSrcweir 			Color aColObj( COL_WHITE );
2910*cdf0e10cSrcweir 			Color aColEmis( COL_BLACK );
2911*cdf0e10cSrcweir 			Color aColSpec( COL_WHITE );
2912*cdf0e10cSrcweir 			sal_uInt16 nSpecIntens = 20;
2913*cdf0e10cSrcweir 
2914*cdf0e10cSrcweir 			sal_uInt16 nPos = aLbMatFavorites.GetSelectEntryPos();
2915*cdf0e10cSrcweir 			switch( nPos )
2916*cdf0e10cSrcweir 			{
2917*cdf0e10cSrcweir 				case 1: // Metall
2918*cdf0e10cSrcweir 				{
2919*cdf0e10cSrcweir 					aColObj = Color(230,230,255);
2920*cdf0e10cSrcweir 					aColEmis = Color(10,10,30);
2921*cdf0e10cSrcweir 					aColSpec = Color(200,200,200);
2922*cdf0e10cSrcweir 					nSpecIntens = 20;
2923*cdf0e10cSrcweir 				}
2924*cdf0e10cSrcweir 				break;
2925*cdf0e10cSrcweir 
2926*cdf0e10cSrcweir 				case 2: // Gold
2927*cdf0e10cSrcweir 				{
2928*cdf0e10cSrcweir 					aColObj = Color(230,255,0);
2929*cdf0e10cSrcweir 					aColEmis = Color(51,0,0);
2930*cdf0e10cSrcweir 					aColSpec = Color(255,255,240);
2931*cdf0e10cSrcweir 					nSpecIntens = 20;
2932*cdf0e10cSrcweir 				}
2933*cdf0e10cSrcweir 				break;
2934*cdf0e10cSrcweir 
2935*cdf0e10cSrcweir 				case 3: // Chrom
2936*cdf0e10cSrcweir 				{
2937*cdf0e10cSrcweir 					aColObj = Color(36,117,153);
2938*cdf0e10cSrcweir 					aColEmis = Color(18,30,51);
2939*cdf0e10cSrcweir 					aColSpec = Color(230,230,255);
2940*cdf0e10cSrcweir 					nSpecIntens = 2;
2941*cdf0e10cSrcweir 				}
2942*cdf0e10cSrcweir 				break;
2943*cdf0e10cSrcweir 
2944*cdf0e10cSrcweir 				case 4: // Plastik
2945*cdf0e10cSrcweir 				{
2946*cdf0e10cSrcweir 					aColObj = Color(255,48,57);
2947*cdf0e10cSrcweir 					aColEmis = Color(35,0,0);
2948*cdf0e10cSrcweir 					aColSpec = Color(179,202,204);
2949*cdf0e10cSrcweir 					nSpecIntens = 60;
2950*cdf0e10cSrcweir 				}
2951*cdf0e10cSrcweir 				break;
2952*cdf0e10cSrcweir 
2953*cdf0e10cSrcweir 				case 5: // Holz
2954*cdf0e10cSrcweir 				{
2955*cdf0e10cSrcweir 					aColObj = Color(153,71,1);
2956*cdf0e10cSrcweir 					aColEmis = Color(21,22,0);
2957*cdf0e10cSrcweir 					aColSpec = Color(255,255,153);
2958*cdf0e10cSrcweir 					nSpecIntens = 75;
2959*cdf0e10cSrcweir 				}
2960*cdf0e10cSrcweir 				break;
2961*cdf0e10cSrcweir 			}
2962*cdf0e10cSrcweir 			LBSelectColor( &aLbMatColor, aColObj );
2963*cdf0e10cSrcweir 			LBSelectColor( &aLbMatEmission, aColEmis );
2964*cdf0e10cSrcweir 			LBSelectColor( &aLbMatSpecular, aColSpec );
2965*cdf0e10cSrcweir 			aMtrMatSpecularIntensity.SetValue( nSpecIntens );
2966*cdf0e10cSrcweir 
2967*cdf0e10cSrcweir 			bUpdatePreview = sal_True;
2968*cdf0e10cSrcweir 		}
2969*cdf0e10cSrcweir 		else if( p == &aLbMatColor ||
2970*cdf0e10cSrcweir 				 p == &aLbMatEmission ||
2971*cdf0e10cSrcweir 				 p == &aLbMatSpecular )
2972*cdf0e10cSrcweir 		{
2973*cdf0e10cSrcweir 			aLbMatFavorites.SelectEntryPos( 0 );
2974*cdf0e10cSrcweir 			bUpdatePreview = sal_True;
2975*cdf0e10cSrcweir 		}
2976*cdf0e10cSrcweir 		// Beleuchtung
2977*cdf0e10cSrcweir 		else if( p == &aLbAmbientlight )
2978*cdf0e10cSrcweir 		{
2979*cdf0e10cSrcweir 			bUpdatePreview = sal_True;
2980*cdf0e10cSrcweir 		}
2981*cdf0e10cSrcweir 		else if( p == &aLbLight1 ||
2982*cdf0e10cSrcweir 				 p == &aLbLight2 ||
2983*cdf0e10cSrcweir 				 p == &aLbLight3 ||
2984*cdf0e10cSrcweir 				 p == &aLbLight4 ||
2985*cdf0e10cSrcweir 				 p == &aLbLight5 ||
2986*cdf0e10cSrcweir 				 p == &aLbLight6 ||
2987*cdf0e10cSrcweir 				 p == &aLbLight7 ||
2988*cdf0e10cSrcweir 				 p == &aLbLight8 )
2989*cdf0e10cSrcweir 		{
2990*cdf0e10cSrcweir 			bUpdatePreview = sal_True;
2991*cdf0e10cSrcweir 		}
2992*cdf0e10cSrcweir 		else if( p == &aLbShademode )
2993*cdf0e10cSrcweir 			bUpdatePreview = sal_True;
2994*cdf0e10cSrcweir 
2995*cdf0e10cSrcweir 		if( bUpdatePreview == sal_True )
2996*cdf0e10cSrcweir 			UpdatePreview();
2997*cdf0e10cSrcweir 	}
2998*cdf0e10cSrcweir 	return( 0L );
2999*cdf0e10cSrcweir }
3000*cdf0e10cSrcweir 
3001*cdf0e10cSrcweir // -----------------------------------------------------------------------
3002*cdf0e10cSrcweir IMPL_LINK( Svx3DWin, ModifyHdl, void*, pField )
3003*cdf0e10cSrcweir {
3004*cdf0e10cSrcweir 	if( pField )
3005*cdf0e10cSrcweir 	{
3006*cdf0e10cSrcweir 		sal_Bool bUpdatePreview = sal_False;
3007*cdf0e10cSrcweir 
3008*cdf0e10cSrcweir 		// Material
3009*cdf0e10cSrcweir 		if( pField == &aMtrMatSpecularIntensity )
3010*cdf0e10cSrcweir 		{
3011*cdf0e10cSrcweir 			bUpdatePreview = sal_True;
3012*cdf0e10cSrcweir 		}
3013*cdf0e10cSrcweir 		else if( pField == &aNumHorizontal )
3014*cdf0e10cSrcweir 		{
3015*cdf0e10cSrcweir 			bUpdatePreview = sal_True;
3016*cdf0e10cSrcweir 		}
3017*cdf0e10cSrcweir 		else if( pField == &aNumVertical )
3018*cdf0e10cSrcweir 		{
3019*cdf0e10cSrcweir 			bUpdatePreview = sal_True;
3020*cdf0e10cSrcweir 		}
3021*cdf0e10cSrcweir 		else if( pField == &aMtrSlant )
3022*cdf0e10cSrcweir 		{
3023*cdf0e10cSrcweir 			bUpdatePreview = sal_True;
3024*cdf0e10cSrcweir 		}
3025*cdf0e10cSrcweir 
3026*cdf0e10cSrcweir 		if( bUpdatePreview == sal_True )
3027*cdf0e10cSrcweir 			UpdatePreview();
3028*cdf0e10cSrcweir 	}
3029*cdf0e10cSrcweir 	return( 0L );
3030*cdf0e10cSrcweir }
3031*cdf0e10cSrcweir 
3032*cdf0e10cSrcweir // -----------------------------------------------------------------------
3033*cdf0e10cSrcweir 
3034*cdf0e10cSrcweir IMPL_LINK( Svx3DWin, ClickLightHdl, PushButton*, pBtn )
3035*cdf0e10cSrcweir {
3036*cdf0e10cSrcweir 
3037*cdf0e10cSrcweir 	if( pBtn )
3038*cdf0e10cSrcweir 	{
3039*cdf0e10cSrcweir 		sal_uInt16 nLightSource = GetLightSource( pBtn );
3040*cdf0e10cSrcweir 		ColorLB* pLb = GetLbByButton( pBtn );
3041*cdf0e10cSrcweir 		Color aColor( pLb->GetSelectEntryColor() );
3042*cdf0e10cSrcweir         SfxItemSet aLightItemSet(aCtlLightPreview.GetSvx3DLightControl().Get3DAttributes());
3043*cdf0e10cSrcweir         const bool bOnOff(GetUILightState( *(ImageButton*)pBtn ));
3044*cdf0e10cSrcweir 
3045*cdf0e10cSrcweir         switch(nLightSource)
3046*cdf0e10cSrcweir         {
3047*cdf0e10cSrcweir             case 0: aLightItemSet.Put(Svx3DLightcolor1Item(aColor)); aLightItemSet.Put(Svx3DLightOnOff1Item(bOnOff)); break;
3048*cdf0e10cSrcweir             case 1: aLightItemSet.Put(Svx3DLightcolor2Item(aColor)); aLightItemSet.Put(Svx3DLightOnOff2Item(bOnOff)); break;
3049*cdf0e10cSrcweir             case 2: aLightItemSet.Put(Svx3DLightcolor3Item(aColor)); aLightItemSet.Put(Svx3DLightOnOff3Item(bOnOff)); break;
3050*cdf0e10cSrcweir             case 3: aLightItemSet.Put(Svx3DLightcolor4Item(aColor)); aLightItemSet.Put(Svx3DLightOnOff4Item(bOnOff)); break;
3051*cdf0e10cSrcweir             case 4: aLightItemSet.Put(Svx3DLightcolor5Item(aColor)); aLightItemSet.Put(Svx3DLightOnOff5Item(bOnOff)); break;
3052*cdf0e10cSrcweir             case 5: aLightItemSet.Put(Svx3DLightcolor6Item(aColor)); aLightItemSet.Put(Svx3DLightOnOff6Item(bOnOff)); break;
3053*cdf0e10cSrcweir             case 6: aLightItemSet.Put(Svx3DLightcolor7Item(aColor)); aLightItemSet.Put(Svx3DLightOnOff7Item(bOnOff)); break;
3054*cdf0e10cSrcweir             default:
3055*cdf0e10cSrcweir             case 7: aLightItemSet.Put(Svx3DLightcolor8Item(aColor)); aLightItemSet.Put(Svx3DLightOnOff8Item(bOnOff)); break;
3056*cdf0e10cSrcweir         }
3057*cdf0e10cSrcweir 
3058*cdf0e10cSrcweir         aCtlLightPreview.GetSvx3DLightControl().Set3DAttributes(aLightItemSet);
3059*cdf0e10cSrcweir 		aCtlLightPreview.GetSvx3DLightControl().SelectLight(nLightSource);
3060*cdf0e10cSrcweir 		aCtlLightPreview.CheckSelection();
3061*cdf0e10cSrcweir 	}
3062*cdf0e10cSrcweir 	return( 0L );
3063*cdf0e10cSrcweir }
3064*cdf0e10cSrcweir 
3065*cdf0e10cSrcweir 
3066*cdf0e10cSrcweir // -----------------------------------------------------------------------
3067*cdf0e10cSrcweir IMPL_LINK( Svx3DWin, DoubleClickHdl, void*, EMPTYARG )
3068*cdf0e10cSrcweir {
3069*cdf0e10cSrcweir 	//sal_uInt16 nItemId = aCtlFavorites.GetSelectItemId();
3070*cdf0e10cSrcweir 
3071*cdf0e10cSrcweir 	//SfxItemSet* pSet = (SfxItemSet*) pFavorSetList->GetObject( nItemId - 1 );
3072*cdf0e10cSrcweir 	//Update( *pSet );
3073*cdf0e10cSrcweir 
3074*cdf0e10cSrcweir 	// und zuweisen
3075*cdf0e10cSrcweir 	ClickAssignHdl( NULL );
3076*cdf0e10cSrcweir 
3077*cdf0e10cSrcweir 	return( 0L );
3078*cdf0e10cSrcweir }
3079*cdf0e10cSrcweir 
3080*cdf0e10cSrcweir // -----------------------------------------------------------------------
3081*cdf0e10cSrcweir 
3082*cdf0e10cSrcweir IMPL_LINK( Svx3DWin, ChangeLightCallbackHdl, void*, EMPTYARG )
3083*cdf0e10cSrcweir {
3084*cdf0e10cSrcweir 	return( 0L );
3085*cdf0e10cSrcweir }
3086*cdf0e10cSrcweir 
3087*cdf0e10cSrcweir 
3088*cdf0e10cSrcweir // -----------------------------------------------------------------------
3089*cdf0e10cSrcweir 
3090*cdf0e10cSrcweir IMPL_LINK( Svx3DWin, ChangeSelectionCallbackHdl, void*, EMPTYARG )
3091*cdf0e10cSrcweir {
3092*cdf0e10cSrcweir 	const sal_uInt32 nLight(aCtlLightPreview.GetSvx3DLightControl().GetSelectedLight());
3093*cdf0e10cSrcweir 	PushButton* pBtn = 0;
3094*cdf0e10cSrcweir 
3095*cdf0e10cSrcweir 	switch( nLight )
3096*cdf0e10cSrcweir 	{
3097*cdf0e10cSrcweir 		case 0: pBtn = &aBtnLight1; break;
3098*cdf0e10cSrcweir 		case 1: pBtn = &aBtnLight2; break;
3099*cdf0e10cSrcweir 		case 2: pBtn = &aBtnLight3; break;
3100*cdf0e10cSrcweir 		case 3: pBtn = &aBtnLight4; break;
3101*cdf0e10cSrcweir 		case 4: pBtn = &aBtnLight5; break;
3102*cdf0e10cSrcweir 		case 5: pBtn = &aBtnLight6; break;
3103*cdf0e10cSrcweir 		case 6: pBtn = &aBtnLight7; break;
3104*cdf0e10cSrcweir 		case 7: pBtn = &aBtnLight8; break;
3105*cdf0e10cSrcweir 		default: break;
3106*cdf0e10cSrcweir 	}
3107*cdf0e10cSrcweir 
3108*cdf0e10cSrcweir 	if( pBtn )
3109*cdf0e10cSrcweir 		ClickHdl( pBtn );
3110*cdf0e10cSrcweir 	else
3111*cdf0e10cSrcweir 	{
3112*cdf0e10cSrcweir 		// Zustand: Keine Lampe selektiert
3113*cdf0e10cSrcweir 		if( aBtnLight1.IsChecked() )
3114*cdf0e10cSrcweir 		{
3115*cdf0e10cSrcweir 			aBtnLight1.Check( sal_False );
3116*cdf0e10cSrcweir 			aLbLight1.Enable( sal_False );
3117*cdf0e10cSrcweir 		}
3118*cdf0e10cSrcweir 		else if( aBtnLight2.IsChecked() )
3119*cdf0e10cSrcweir 		{
3120*cdf0e10cSrcweir 			aBtnLight2.Check( sal_False );
3121*cdf0e10cSrcweir 			aLbLight2.Enable( sal_False );
3122*cdf0e10cSrcweir 		}
3123*cdf0e10cSrcweir 		else if( aBtnLight3.IsChecked() )
3124*cdf0e10cSrcweir 		{
3125*cdf0e10cSrcweir 			aBtnLight3.Check( sal_False );
3126*cdf0e10cSrcweir 			aLbLight3.Enable( sal_False );
3127*cdf0e10cSrcweir 		}
3128*cdf0e10cSrcweir 		else if( aBtnLight4.IsChecked() )
3129*cdf0e10cSrcweir 		{
3130*cdf0e10cSrcweir 			aBtnLight4.Check( sal_False );
3131*cdf0e10cSrcweir 			aLbLight4.Enable( sal_False );
3132*cdf0e10cSrcweir 		}
3133*cdf0e10cSrcweir 		else if( aBtnLight5.IsChecked() )
3134*cdf0e10cSrcweir 		{
3135*cdf0e10cSrcweir 			aBtnLight5.Check( sal_False );
3136*cdf0e10cSrcweir 			aLbLight5.Enable( sal_False );
3137*cdf0e10cSrcweir 		}
3138*cdf0e10cSrcweir 		else if( aBtnLight6.IsChecked() )
3139*cdf0e10cSrcweir 		{
3140*cdf0e10cSrcweir 			aBtnLight6.Check( sal_False );
3141*cdf0e10cSrcweir 			aLbLight6.Enable( sal_False );
3142*cdf0e10cSrcweir 		}
3143*cdf0e10cSrcweir 		else if( aBtnLight7.IsChecked() )
3144*cdf0e10cSrcweir 		{
3145*cdf0e10cSrcweir 			aBtnLight7.Check( sal_False );
3146*cdf0e10cSrcweir 			aLbLight7.Enable( sal_False );
3147*cdf0e10cSrcweir 		}
3148*cdf0e10cSrcweir 		else if( aBtnLight8.IsChecked() )
3149*cdf0e10cSrcweir 		{
3150*cdf0e10cSrcweir 			aBtnLight8.Check( sal_False );
3151*cdf0e10cSrcweir 			aLbLight8.Enable( sal_False );
3152*cdf0e10cSrcweir 		}
3153*cdf0e10cSrcweir 		aBtnLightColor.Enable( sal_False );
3154*cdf0e10cSrcweir 	}
3155*cdf0e10cSrcweir 
3156*cdf0e10cSrcweir 	return( 0L );
3157*cdf0e10cSrcweir }
3158*cdf0e10cSrcweir 
3159*cdf0e10cSrcweir // -----------------------------------------------------------------------
3160*cdf0e10cSrcweir // Methode um sicherzustellen, dass die LB auch mit einer Farbe gesetzt ist
3161*cdf0e10cSrcweir // Liefert sal_True zurueck, falls Farbe hinzugefuegt wurde
3162*cdf0e10cSrcweir // -----------------------------------------------------------------------
3163*cdf0e10cSrcweir sal_Bool Svx3DWin::LBSelectColor( ColorLB* pLb, const Color& rColor )
3164*cdf0e10cSrcweir {
3165*cdf0e10cSrcweir 	sal_Bool bRet = sal_False;
3166*cdf0e10cSrcweir 
3167*cdf0e10cSrcweir 	pLb->SetNoSelection();
3168*cdf0e10cSrcweir 	pLb->SelectEntry( rColor );
3169*cdf0e10cSrcweir 	if( pLb->GetSelectEntryCount() == 0 )
3170*cdf0e10cSrcweir 	{
3171*cdf0e10cSrcweir 		String aStr(SVX_RES(RID_SVXFLOAT3D_FIX_R));
3172*cdf0e10cSrcweir 
3173*cdf0e10cSrcweir 		aStr += String::CreateFromInt32((sal_Int32)rColor.GetRed());
3174*cdf0e10cSrcweir 		aStr += sal_Unicode(' ');
3175*cdf0e10cSrcweir 		aStr += String(SVX_RES(RID_SVXFLOAT3D_FIX_G));
3176*cdf0e10cSrcweir 		aStr += String::CreateFromInt32((sal_Int32)rColor.GetGreen());
3177*cdf0e10cSrcweir 		aStr += sal_Unicode(' ');
3178*cdf0e10cSrcweir 		aStr += String(SVX_RES(RID_SVXFLOAT3D_FIX_B));
3179*cdf0e10cSrcweir 		aStr += String::CreateFromInt32((sal_Int32)rColor.GetBlue());
3180*cdf0e10cSrcweir 
3181*cdf0e10cSrcweir 		sal_uInt16 nPos = pLb->InsertEntry( rColor, aStr );
3182*cdf0e10cSrcweir 		pLb->SelectEntryPos( nPos );
3183*cdf0e10cSrcweir 		bRet = sal_True;
3184*cdf0e10cSrcweir 	}
3185*cdf0e10cSrcweir 	return( bRet );
3186*cdf0e10cSrcweir }
3187*cdf0e10cSrcweir 
3188*cdf0e10cSrcweir // -----------------------------------------------------------------------
3189*cdf0e10cSrcweir void Svx3DWin::UpdatePreview()
3190*cdf0e10cSrcweir {
3191*cdf0e10cSrcweir 	if( pModel == NULL )
3192*cdf0e10cSrcweir 		pModel = new FmFormModel();
3193*cdf0e10cSrcweir 
3194*cdf0e10cSrcweir 	if(bOnly3DChanged)
3195*cdf0e10cSrcweir 	{
3196*cdf0e10cSrcweir 		// slot executen
3197*cdf0e10cSrcweir         SfxDispatcher* pDispatcher = LocalGetDispatcher(pBindings);
3198*cdf0e10cSrcweir         if (pDispatcher != NULL)
3199*cdf0e10cSrcweir         {
3200*cdf0e10cSrcweir             SfxBoolItem aItem( SID_3D_STATE, sal_True );
3201*cdf0e10cSrcweir             pDispatcher->Execute(
3202*cdf0e10cSrcweir                 SID_3D_STATE, SFX_CALLMODE_SYNCHRON | SFX_CALLMODE_RECORD, &aItem, 0L );
3203*cdf0e10cSrcweir         }
3204*cdf0e10cSrcweir 		// Flag zuruecksetzen
3205*cdf0e10cSrcweir 		bOnly3DChanged = sal_False;
3206*cdf0e10cSrcweir 	}
3207*cdf0e10cSrcweir 
3208*cdf0e10cSrcweir 	// ItemSet besorgen
3209*cdf0e10cSrcweir 	SfxItemSet aSet( pModel->GetItemPool(), SDRATTR_START, SDRATTR_END);
3210*cdf0e10cSrcweir 
3211*cdf0e10cSrcweir 	// Attribute holen und im Preview setzen
3212*cdf0e10cSrcweir 	GetAttr( aSet );
3213*cdf0e10cSrcweir 	aCtlPreview.Set3DAttributes( aSet );
3214*cdf0e10cSrcweir 	aCtlLightPreview.GetSvx3DLightControl().Set3DAttributes( aSet );
3215*cdf0e10cSrcweir }
3216*cdf0e10cSrcweir 
3217*cdf0e10cSrcweir //////////////////////////////////////////////////////////////////////////////
3218*cdf0e10cSrcweir // document is to be reloaded, destroy remembered ItemSet (#83951#)
3219*cdf0e10cSrcweir void Svx3DWin::DocumentReload()
3220*cdf0e10cSrcweir {
3221*cdf0e10cSrcweir 	if(mpRemember2DAttributes)
3222*cdf0e10cSrcweir 		delete mpRemember2DAttributes;
3223*cdf0e10cSrcweir 	mpRemember2DAttributes = 0L;
3224*cdf0e10cSrcweir }
3225*cdf0e10cSrcweir 
3226*cdf0e10cSrcweir // -----------------------------------------------------------------------
3227*cdf0e10cSrcweir void Svx3DWin::InitColorLB( const SdrModel* pDoc )
3228*cdf0e10cSrcweir {
3229*cdf0e10cSrcweir 	aLbLight1.Fill( pDoc->GetColorTable() );
3230*cdf0e10cSrcweir 	aLbLight2.CopyEntries( aLbLight1 );
3231*cdf0e10cSrcweir 	aLbLight3.CopyEntries( aLbLight1 );
3232*cdf0e10cSrcweir 	aLbLight4.CopyEntries( aLbLight1 );
3233*cdf0e10cSrcweir 	aLbLight5.CopyEntries( aLbLight1 );
3234*cdf0e10cSrcweir 	aLbLight6.CopyEntries( aLbLight1 );
3235*cdf0e10cSrcweir 	aLbLight7.CopyEntries( aLbLight1 );
3236*cdf0e10cSrcweir 	aLbLight8.CopyEntries( aLbLight1 );
3237*cdf0e10cSrcweir 	aLbAmbientlight.CopyEntries( aLbLight1 );
3238*cdf0e10cSrcweir 	aLbMatColor.CopyEntries( aLbLight1 );
3239*cdf0e10cSrcweir 	aLbMatEmission.CopyEntries( aLbLight1 );
3240*cdf0e10cSrcweir 	aLbMatSpecular.CopyEntries( aLbLight1 );
3241*cdf0e10cSrcweir 
3242*cdf0e10cSrcweir 	// Erstmal...
3243*cdf0e10cSrcweir 	Color aColWhite( COL_WHITE );
3244*cdf0e10cSrcweir 	Color aColBlack( COL_BLACK );
3245*cdf0e10cSrcweir 	aLbLight1.SelectEntry( aColWhite );
3246*cdf0e10cSrcweir 	aLbLight2.SelectEntry( aColWhite );
3247*cdf0e10cSrcweir 	aLbLight3.SelectEntry( aColWhite );
3248*cdf0e10cSrcweir 	aLbLight4.SelectEntry( aColWhite );
3249*cdf0e10cSrcweir 	aLbLight5.SelectEntry( aColWhite );
3250*cdf0e10cSrcweir 	aLbLight6.SelectEntry( aColWhite );
3251*cdf0e10cSrcweir 	aLbLight7.SelectEntry( aColWhite );
3252*cdf0e10cSrcweir 	aLbLight8.SelectEntry( aColWhite );
3253*cdf0e10cSrcweir 	aLbAmbientlight.SelectEntry( aColBlack );
3254*cdf0e10cSrcweir 	aLbMatColor.SelectEntry( aColWhite );
3255*cdf0e10cSrcweir 	aLbMatEmission.SelectEntry( aColBlack );
3256*cdf0e10cSrcweir 	aLbMatSpecular.SelectEntry( aColWhite );
3257*cdf0e10cSrcweir }
3258*cdf0e10cSrcweir 
3259*cdf0e10cSrcweir // -----------------------------------------------------------------------
3260*cdf0e10cSrcweir sal_uInt16 Svx3DWin::GetLightSource( const PushButton* pBtn )
3261*cdf0e10cSrcweir {
3262*cdf0e10cSrcweir 	sal_uInt16 nLight = 8;
3263*cdf0e10cSrcweir 
3264*cdf0e10cSrcweir 	if( pBtn == NULL )
3265*cdf0e10cSrcweir 	{
3266*cdf0e10cSrcweir 		if( aBtnLight1.IsChecked() )
3267*cdf0e10cSrcweir 			nLight = 0;
3268*cdf0e10cSrcweir 		else if( aBtnLight2.IsChecked() )
3269*cdf0e10cSrcweir 			nLight = 1;
3270*cdf0e10cSrcweir 		else if( aBtnLight3.IsChecked() )
3271*cdf0e10cSrcweir 			nLight = 2;
3272*cdf0e10cSrcweir 		else if( aBtnLight4.IsChecked() )
3273*cdf0e10cSrcweir 			nLight = 3;
3274*cdf0e10cSrcweir 		else if( aBtnLight5.IsChecked() )
3275*cdf0e10cSrcweir 			nLight = 4;
3276*cdf0e10cSrcweir 		else if( aBtnLight6.IsChecked() )
3277*cdf0e10cSrcweir 			nLight = 5;
3278*cdf0e10cSrcweir 		else if( aBtnLight7.IsChecked() )
3279*cdf0e10cSrcweir 			nLight = 6;
3280*cdf0e10cSrcweir 		else if( aBtnLight8.IsChecked() )
3281*cdf0e10cSrcweir 			nLight = 7;
3282*cdf0e10cSrcweir 	}
3283*cdf0e10cSrcweir 	else
3284*cdf0e10cSrcweir 	{
3285*cdf0e10cSrcweir 		if( pBtn == &aBtnLight1 )
3286*cdf0e10cSrcweir 			nLight = 0;
3287*cdf0e10cSrcweir 		else if( pBtn == &aBtnLight2 )
3288*cdf0e10cSrcweir 			nLight = 1;
3289*cdf0e10cSrcweir 		else if( pBtn == &aBtnLight3 )
3290*cdf0e10cSrcweir 			nLight = 2;
3291*cdf0e10cSrcweir 		else if( pBtn == &aBtnLight4 )
3292*cdf0e10cSrcweir 			nLight = 3;
3293*cdf0e10cSrcweir 		else if( pBtn == &aBtnLight5 )
3294*cdf0e10cSrcweir 			nLight = 4;
3295*cdf0e10cSrcweir 		else if( pBtn == &aBtnLight6 )
3296*cdf0e10cSrcweir 			nLight = 5;
3297*cdf0e10cSrcweir 		else if( pBtn == &aBtnLight7 )
3298*cdf0e10cSrcweir 			nLight = 6;
3299*cdf0e10cSrcweir 		else if( pBtn == &aBtnLight8 )
3300*cdf0e10cSrcweir 			nLight = 7;
3301*cdf0e10cSrcweir 	}
3302*cdf0e10cSrcweir 	return( nLight );
3303*cdf0e10cSrcweir };
3304*cdf0e10cSrcweir 
3305*cdf0e10cSrcweir // -----------------------------------------------------------------------
3306*cdf0e10cSrcweir ColorLB* Svx3DWin::GetLbByButton( const PushButton* pBtn )
3307*cdf0e10cSrcweir {
3308*cdf0e10cSrcweir 	ColorLB* pLb = NULL;
3309*cdf0e10cSrcweir 
3310*cdf0e10cSrcweir 	if( pBtn == NULL )
3311*cdf0e10cSrcweir 	{
3312*cdf0e10cSrcweir 		if( aBtnLight1.IsChecked() )
3313*cdf0e10cSrcweir 			pLb = &aLbLight1;
3314*cdf0e10cSrcweir 		else if( aBtnLight2.IsChecked() )
3315*cdf0e10cSrcweir 			pLb = &aLbLight2;
3316*cdf0e10cSrcweir 		else if( aBtnLight3.IsChecked() )
3317*cdf0e10cSrcweir 			pLb = &aLbLight3;
3318*cdf0e10cSrcweir 		else if( aBtnLight4.IsChecked() )
3319*cdf0e10cSrcweir 			pLb = &aLbLight4;
3320*cdf0e10cSrcweir 		else if( aBtnLight5.IsChecked() )
3321*cdf0e10cSrcweir 			pLb = &aLbLight5;
3322*cdf0e10cSrcweir 		else if( aBtnLight6.IsChecked() )
3323*cdf0e10cSrcweir 			pLb = &aLbLight6;
3324*cdf0e10cSrcweir 		else if( aBtnLight7.IsChecked() )
3325*cdf0e10cSrcweir 			pLb = &aLbLight7;
3326*cdf0e10cSrcweir 		else if( aBtnLight8.IsChecked() )
3327*cdf0e10cSrcweir 			pLb = &aLbLight8;
3328*cdf0e10cSrcweir 	}
3329*cdf0e10cSrcweir 	else
3330*cdf0e10cSrcweir 	{
3331*cdf0e10cSrcweir 		if( pBtn == &aBtnLight1 )
3332*cdf0e10cSrcweir 			pLb = &aLbLight1;
3333*cdf0e10cSrcweir 		else if( pBtn == &aBtnLight2 )
3334*cdf0e10cSrcweir 			pLb = &aLbLight2;
3335*cdf0e10cSrcweir 		else if( pBtn == &aBtnLight3 )
3336*cdf0e10cSrcweir 			pLb = &aLbLight3;
3337*cdf0e10cSrcweir 		else if( pBtn == &aBtnLight4 )
3338*cdf0e10cSrcweir 			pLb = &aLbLight4;
3339*cdf0e10cSrcweir 		else if( pBtn == &aBtnLight5 )
3340*cdf0e10cSrcweir 			pLb = &aLbLight5;
3341*cdf0e10cSrcweir 		else if( pBtn == &aBtnLight6 )
3342*cdf0e10cSrcweir 			pLb = &aLbLight6;
3343*cdf0e10cSrcweir 		else if( pBtn == &aBtnLight7 )
3344*cdf0e10cSrcweir 			pLb = &aLbLight7;
3345*cdf0e10cSrcweir 		else if( pBtn == &aBtnLight8 )
3346*cdf0e10cSrcweir 			pLb = &aLbLight8;
3347*cdf0e10cSrcweir 	}
3348*cdf0e10cSrcweir 	return( pLb );
3349*cdf0e10cSrcweir };
3350*cdf0e10cSrcweir 
3351*cdf0e10cSrcweir /*************************************************************************
3352*cdf0e10cSrcweir |*
3353*cdf0e10cSrcweir |* Ableitung vom SfxChildWindow als "Behaelter" fuer Effekte
3354*cdf0e10cSrcweir |*
3355*cdf0e10cSrcweir \************************************************************************/
3356*cdf0e10cSrcweir __EXPORT Svx3DChildWindow::Svx3DChildWindow( Window* _pParent,
3357*cdf0e10cSrcweir 														 sal_uInt16 nId,
3358*cdf0e10cSrcweir 														 SfxBindings* pBindings,
3359*cdf0e10cSrcweir 														 SfxChildWinInfo* pInfo ) :
3360*cdf0e10cSrcweir 	SfxChildWindow( _pParent, nId )
3361*cdf0e10cSrcweir {
3362*cdf0e10cSrcweir 	Svx3DWin* pWin = new Svx3DWin( pBindings, this, _pParent );
3363*cdf0e10cSrcweir 	pWindow = pWin;
3364*cdf0e10cSrcweir 
3365*cdf0e10cSrcweir 	eChildAlignment = SFX_ALIGN_NOALIGNMENT;
3366*cdf0e10cSrcweir 
3367*cdf0e10cSrcweir 	pWin->Initialize( pInfo );
3368*cdf0e10cSrcweir }
3369*cdf0e10cSrcweir 
3370*cdf0e10cSrcweir /*************************************************************************
3371*cdf0e10cSrcweir |*
3372*cdf0e10cSrcweir |* ControllerItem fuer 3DStatus
3373*cdf0e10cSrcweir |*
3374*cdf0e10cSrcweir \************************************************************************/
3375*cdf0e10cSrcweir Svx3DCtrlItem::Svx3DCtrlItem( sal_uInt16 _nId,
3376*cdf0e10cSrcweir 								Svx3DWin* pWin,
3377*cdf0e10cSrcweir 								SfxBindings* _pBindings) :
3378*cdf0e10cSrcweir 	SfxControllerItem( _nId, *_pBindings ),
3379*cdf0e10cSrcweir 	p3DWin( pWin )
3380*cdf0e10cSrcweir {
3381*cdf0e10cSrcweir }
3382*cdf0e10cSrcweir 
3383*cdf0e10cSrcweir // -----------------------------------------------------------------------
3384*cdf0e10cSrcweir void __EXPORT Svx3DCtrlItem::StateChanged( sal_uInt16 /*nSId*/,
3385*cdf0e10cSrcweir 						SfxItemState /*eState*/, const SfxPoolItem* /*pItem*/ )
3386*cdf0e10cSrcweir {
3387*cdf0e10cSrcweir }
3388*cdf0e10cSrcweir 
3389*cdf0e10cSrcweir /*************************************************************************
3390*cdf0e10cSrcweir |*
3391*cdf0e10cSrcweir |* ControllerItem fuer Status Slot SID_CONVERT_TO_3D
3392*cdf0e10cSrcweir |*
3393*cdf0e10cSrcweir \************************************************************************/
3394*cdf0e10cSrcweir 
3395*cdf0e10cSrcweir SvxConvertTo3DItem::SvxConvertTo3DItem(sal_uInt16 _nId, SfxBindings* _pBindings)
3396*cdf0e10cSrcweir :	SfxControllerItem(_nId, *_pBindings),
3397*cdf0e10cSrcweir 	bState(sal_False)
3398*cdf0e10cSrcweir {
3399*cdf0e10cSrcweir }
3400*cdf0e10cSrcweir 
3401*cdf0e10cSrcweir void SvxConvertTo3DItem::StateChanged(sal_uInt16 /*_nId*/, SfxItemState eState, const SfxPoolItem* /*pState*/)
3402*cdf0e10cSrcweir {
3403*cdf0e10cSrcweir 	sal_Bool bNewState = (eState != SFX_ITEM_DISABLED);
3404*cdf0e10cSrcweir 	if(bNewState != bState)
3405*cdf0e10cSrcweir 	{
3406*cdf0e10cSrcweir 		bState = bNewState;
3407*cdf0e10cSrcweir         SfxDispatcher* pDispatcher = LocalGetDispatcher(&GetBindings());
3408*cdf0e10cSrcweir         if (pDispatcher != NULL)
3409*cdf0e10cSrcweir         {
3410*cdf0e10cSrcweir             SfxBoolItem aItem( SID_3D_STATE, sal_True );
3411*cdf0e10cSrcweir             pDispatcher->Execute(
3412*cdf0e10cSrcweir                 SID_3D_STATE, SFX_CALLMODE_ASYNCHRON|SFX_CALLMODE_RECORD, &aItem, 0L);
3413*cdf0e10cSrcweir         }
3414*cdf0e10cSrcweir 	}
3415*cdf0e10cSrcweir }
3416*cdf0e10cSrcweir 
3417*cdf0e10cSrcweir 
3418