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