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