xref: /trunk/main/svx/source/engine3d/float3d.cxx (revision cf6516809c57e1bb0a940545cca99cdad54d4ce2)
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
10cdf0e10cSrcweir  *
11f6e50924SAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12cdf0e10cSrcweir  *
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.
19cdf0e10cSrcweir  *
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 }
3413