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 */ 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 \************************************************************************/ 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 // ----------------------------------------------------------------------- 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 // ----------------------------------------------------------------------- 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 // ----------------------------------------------------------------------- 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 543cdf0e10cSrcweir bool Svx3DWin::GetUILightState( ImageButton& aBtn ) const 544cdf0e10cSrcweir { 545cdf0e10cSrcweir return (aBtn.GetModeImage() == aImgLightOn) || (aBtn.GetModeImage() == mpImpl->maImgLightOnH); 546cdf0e10cSrcweir } 547cdf0e10cSrcweir 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 // ----------------------------------------------------------------------- 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 // ----------------------------------------------------------------------- 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 // ----------------------------------------------------------------------- 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 // ----------------------------------------------------------------------- 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 // ----------------------------------------------------------------------- 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 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 // ----------------------------------------------------------------------- 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 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 // ----------------------------------------------------------------------- 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 // ----------------------------------------------------------------------- 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 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 // ----------------------------------------------------------------------- 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 3079cdf0e10cSrcweir IMPL_LINK( Svx3DWin, ChangeLightCallbackHdl, void*, EMPTYARG ) 3080cdf0e10cSrcweir { 3081cdf0e10cSrcweir return( 0L ); 3082cdf0e10cSrcweir } 3083cdf0e10cSrcweir 3084cdf0e10cSrcweir 3085cdf0e10cSrcweir // ----------------------------------------------------------------------- 3086cdf0e10cSrcweir 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 // ----------------------------------------------------------------------- 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 // ----------------------------------------------------------------------- 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#) 3216cdf0e10cSrcweir void Svx3DWin::DocumentReload() 3217cdf0e10cSrcweir { 3218cdf0e10cSrcweir if(mpRemember2DAttributes) 3219cdf0e10cSrcweir delete mpRemember2DAttributes; 3220cdf0e10cSrcweir mpRemember2DAttributes = 0L; 3221cdf0e10cSrcweir } 3222cdf0e10cSrcweir 3223cdf0e10cSrcweir // ----------------------------------------------------------------------- 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 // ----------------------------------------------------------------------- 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 // ----------------------------------------------------------------------- 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 \************************************************************************/ 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 \************************************************************************/ 3372cdf0e10cSrcweir Svx3DCtrlItem::Svx3DCtrlItem( sal_uInt16 _nId, 3373cdf0e10cSrcweir Svx3DWin* pWin, 3374cdf0e10cSrcweir SfxBindings* _pBindings) : 3375cdf0e10cSrcweir SfxControllerItem( _nId, *_pBindings ), 3376cdf0e10cSrcweir p3DWin( pWin ) 3377cdf0e10cSrcweir { 3378cdf0e10cSrcweir } 3379cdf0e10cSrcweir 3380cdf0e10cSrcweir // ----------------------------------------------------------------------- 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 3392cdf0e10cSrcweir SvxConvertTo3DItem::SvxConvertTo3DItem(sal_uInt16 _nId, SfxBindings* _pBindings) 3393cdf0e10cSrcweir : SfxControllerItem(_nId, *_pBindings), 3394cdf0e10cSrcweir bState(sal_False) 3395cdf0e10cSrcweir { 3396cdf0e10cSrcweir } 3397cdf0e10cSrcweir 3398cdf0e10cSrcweir void SvxConvertTo3DItem::StateChanged(sal_uInt16 /*_nId*/, SfxItemState eState, const SfxPoolItem* /*pState*/) 3399cdf0e10cSrcweir { 3400cdf0e10cSrcweir sal_Bool bNewState = (eState != SFX_ITEM_DISABLED); 3401cdf0e10cSrcweir if(bNewState != bState) 3402cdf0e10cSrcweir { 3403cdf0e10cSrcweir bState = bNewState; 3404cdf0e10cSrcweir SfxDispatcher* pDispatcher = LocalGetDispatcher(&GetBindings()); 3405cdf0e10cSrcweir if (pDispatcher != NULL) 3406cdf0e10cSrcweir { 3407cdf0e10cSrcweir SfxBoolItem aItem( SID_3D_STATE, sal_True ); 3408cdf0e10cSrcweir pDispatcher->Execute( 3409cdf0e10cSrcweir SID_3D_STATE, SFX_CALLMODE_ASYNCHRON|SFX_CALLMODE_RECORD, &aItem, 0L); 3410cdf0e10cSrcweir } 3411cdf0e10cSrcweir } 3412cdf0e10cSrcweir } 3413cdf0e10cSrcweir 3414cdf0e10cSrcweir 3415