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