746 lines
27 KiB
C++
746 lines
27 KiB
C++
|
|
/*************************************************************************
|
||
|
|
*
|
||
|
|
* $RCSfile: deflt3d.cxx,v $
|
||
|
|
*
|
||
|
|
* $Revision: 1.1.1.1 $
|
||
|
|
*
|
||
|
|
* last change: $Author: hr $ $Date: 2000-09-18 17:01:15 $
|
||
|
|
*
|
||
|
|
* The Contents of this file are made available subject to the terms of
|
||
|
|
* either of the following licenses
|
||
|
|
*
|
||
|
|
* - GNU Lesser General Public License Version 2.1
|
||
|
|
* - Sun Industry Standards Source License Version 1.1
|
||
|
|
*
|
||
|
|
* Sun Microsystems Inc., October, 2000
|
||
|
|
*
|
||
|
|
* GNU Lesser General Public License Version 2.1
|
||
|
|
* =============================================
|
||
|
|
* Copyright 2000 by Sun Microsystems, Inc.
|
||
|
|
* 901 San Antonio Road, Palo Alto, CA 94303, USA
|
||
|
|
*
|
||
|
|
* This library is free software; you can redistribute it and/or
|
||
|
|
* modify it under the terms of the GNU Lesser General Public
|
||
|
|
* License version 2.1, as published by the Free Software Foundation.
|
||
|
|
*
|
||
|
|
* This library is distributed in the hope that it will be useful,
|
||
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||
|
|
* Lesser General Public License for more details.
|
||
|
|
*
|
||
|
|
* You should have received a copy of the GNU Lesser General Public
|
||
|
|
* License along with this library; if not, write to the Free Software
|
||
|
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
||
|
|
* MA 02111-1307 USA
|
||
|
|
*
|
||
|
|
*
|
||
|
|
* Sun Industry Standards Source License Version 1.1
|
||
|
|
* =================================================
|
||
|
|
* The contents of this file are subject to the Sun Industry Standards
|
||
|
|
* Source License Version 1.1 (the "License"); You may not use this file
|
||
|
|
* except in compliance with the License. You may obtain a copy of the
|
||
|
|
* License at http://www.openoffice.org/license.html.
|
||
|
|
*
|
||
|
|
* Software provided under this License is provided on an "AS IS" basis,
|
||
|
|
* WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
|
||
|
|
* WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
|
||
|
|
* MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
|
||
|
|
* See the License for the specific provisions governing your rights and
|
||
|
|
* obligations concerning the Software.
|
||
|
|
*
|
||
|
|
* The Initial Developer of the Original Code is: Sun Microsystems, Inc.
|
||
|
|
*
|
||
|
|
* Copyright: 2000 by Sun Microsystems, Inc.
|
||
|
|
*
|
||
|
|
* All Rights Reserved.
|
||
|
|
*
|
||
|
|
* Contributor(s): _______________________________________
|
||
|
|
*
|
||
|
|
*
|
||
|
|
************************************************************************/
|
||
|
|
|
||
|
|
#define ITEMID_COLOR SID_ATTR_3D_LIGHTCOLOR
|
||
|
|
|
||
|
|
#ifndef _E3D_DEFLT3D_HXX
|
||
|
|
#include "deflt3d.hxx"
|
||
|
|
#endif
|
||
|
|
|
||
|
|
#ifndef _E3D_CUBE3D_HXX
|
||
|
|
#include "cube3d.hxx"
|
||
|
|
#endif
|
||
|
|
|
||
|
|
#ifndef _SVX_SVXIDS_HRC
|
||
|
|
#include "svxids.hrc"
|
||
|
|
#endif
|
||
|
|
|
||
|
|
#ifndef _SVX_COLRITEM_HXX
|
||
|
|
#include "colritem.hxx"
|
||
|
|
#endif
|
||
|
|
|
||
|
|
#ifndef _SVXE3DITEM_HXX
|
||
|
|
#include "e3ditem.hxx"
|
||
|
|
#endif
|
||
|
|
|
||
|
|
/*************************************************************************
|
||
|
|
|*
|
||
|
|
|* Klasse zum verwalten der 3D-Default Attribute
|
||
|
|
|*
|
||
|
|
\************************************************************************/
|
||
|
|
|
||
|
|
// Konstruktor
|
||
|
|
E3dDefaultAttributes::E3dDefaultAttributes()
|
||
|
|
{
|
||
|
|
Reset();
|
||
|
|
}
|
||
|
|
|
||
|
|
void E3dDefaultAttributes::Reset()
|
||
|
|
{
|
||
|
|
// Compound-Objekt
|
||
|
|
// aDefaultFrontMaterial;
|
||
|
|
// aDefaultBackMaterial;
|
||
|
|
eDefaultTextureKind = Base3DTextureColor;
|
||
|
|
eDefaultTextureMode = Base3DTextureModulate;
|
||
|
|
bDefaultDoubleSided = FALSE;
|
||
|
|
bDefaultCreateNormals = TRUE;
|
||
|
|
bDefaultCreateTexture = TRUE;
|
||
|
|
bDefaultUseStdNormals = FALSE;
|
||
|
|
bDefaultUseStdNormalsUseSphere = FALSE;
|
||
|
|
bDefaultInvertNormals = FALSE;
|
||
|
|
bDefaultUseStdTextureX = FALSE;
|
||
|
|
bDefaultUseStdTextureXUseSphere = FALSE;
|
||
|
|
bDefaultUseStdTextureY = FALSE;
|
||
|
|
bDefaultUseStdTextureYUseSphere = FALSE;
|
||
|
|
bDefaultShadow3D = FALSE;
|
||
|
|
bDefaultFilterTexture = FALSE;
|
||
|
|
bDefaultUseDifferentBackMaterial = FALSE;
|
||
|
|
|
||
|
|
// Cube-Objekt
|
||
|
|
aDefaultCubePos = Vector3D(-500.0, -500.0, -500.0);
|
||
|
|
aDefaultCubeSize = Vector3D(1000.0, 1000.0, 1000.0);
|
||
|
|
nDefaultCubeSideFlags = CUBE_FULL;
|
||
|
|
bDefaultCubePosIsCenter = FALSE;
|
||
|
|
|
||
|
|
// Sphere-Objekt
|
||
|
|
nDefaultHSegments = 24;
|
||
|
|
nDefaultVSegments = 24;
|
||
|
|
aDefaultSphereCenter = Vector3D(0.0, 0.0, 0.0);
|
||
|
|
aDefaultSphereSize = Vector3D(1000.0, 1000.0, 1000.0);
|
||
|
|
|
||
|
|
// Lathe-Objekt
|
||
|
|
nDefaultLatheEndAngle = 3600;
|
||
|
|
fDefaultLatheScale = 1.0;
|
||
|
|
fDefaultBackScale = 1.0;
|
||
|
|
fDefaultPercentDiag = 0.05;
|
||
|
|
bDefaultLatheSmoothed = TRUE;
|
||
|
|
bDefaultLatheSmoothFrontBack = FALSE;
|
||
|
|
bDefaultLatheCharacterMode = FALSE;
|
||
|
|
bDefaultLatheCloseFront = TRUE;
|
||
|
|
bDefaultLatheCloseBack = TRUE;
|
||
|
|
|
||
|
|
// Extrude-Objekt
|
||
|
|
fDefaultExtrudeScale = 1.0;
|
||
|
|
fDefaultExtrudeDepth = 1000.0;
|
||
|
|
bDefaultExtrudeSmoothed = TRUE;
|
||
|
|
bDefaultExtrudeSmoothFrontBack = FALSE;
|
||
|
|
bDefaultExtrudeCharacterMode = FALSE;
|
||
|
|
bDefaultExtrudeCloseFront = TRUE;
|
||
|
|
bDefaultExtrudeCloseBack = TRUE;
|
||
|
|
|
||
|
|
// Scene-Objekt
|
||
|
|
// aDefaultLightGroup;
|
||
|
|
aDefaultShadowPlaneDirection = Vector3D(0.0, 0.0, 1.0);
|
||
|
|
eDefaultShadeModel = Base3DSmooth;
|
||
|
|
bDefaultDither = TRUE;
|
||
|
|
bDefaultForceDraftShadeModel = FALSE;
|
||
|
|
}
|
||
|
|
|
||
|
|
/*************************************************************************
|
||
|
|
|*
|
||
|
|
|* Default-Attribute setzen/lesen
|
||
|
|
|*
|
||
|
|
\************************************************************************/
|
||
|
|
|
||
|
|
void E3dDefaultAttributes::SetDefaultValues(const SfxItemSet& rAttr)
|
||
|
|
{
|
||
|
|
const SfxPoolItem* pPoolItem = NULL;
|
||
|
|
B3dMaterial aNewMat = GetDefaultFrontMaterial();
|
||
|
|
BOOL bNewMatUsed = FALSE;
|
||
|
|
|
||
|
|
if( SFX_ITEM_SET == rAttr.GetItemState( SID_ATTR_3D_DOUBLE_SIDED, TRUE, &pPoolItem ) )
|
||
|
|
{
|
||
|
|
BOOL bNew = ((const SfxBoolItem*)pPoolItem)->GetValue();
|
||
|
|
SetDefaultDoubleSided(bNew);
|
||
|
|
}
|
||
|
|
if( SFX_ITEM_SET == rAttr.GetItemState( SID_ATTR_3D_NORMALS_KIND, TRUE, &pPoolItem ) )
|
||
|
|
{
|
||
|
|
UINT16 nNew = ( ( const SfxUInt16Item* ) pPoolItem )->GetValue();
|
||
|
|
if(nNew == 0)
|
||
|
|
{
|
||
|
|
SetDefaultUseStdNormals(FALSE);
|
||
|
|
SetDefaultUseStdNormalsUseSphere(FALSE);
|
||
|
|
}
|
||
|
|
else if(nNew == 1)
|
||
|
|
{
|
||
|
|
SetDefaultUseStdNormals(TRUE);
|
||
|
|
SetDefaultUseStdNormalsUseSphere(FALSE);
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
SetDefaultUseStdNormals(TRUE);
|
||
|
|
SetDefaultUseStdNormalsUseSphere(TRUE);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if( SFX_ITEM_SET == rAttr.GetItemState( SID_ATTR_3D_NORMALS_INVERT, TRUE, &pPoolItem ) )
|
||
|
|
{
|
||
|
|
BOOL bNew = ( ( const SfxBoolItem* ) pPoolItem )->GetValue();
|
||
|
|
SetDefaultInvertNormals(bNew);
|
||
|
|
}
|
||
|
|
if( SFX_ITEM_SET == rAttr.GetItemState( SID_ATTR_3D_TEXTURE_PROJ_X, TRUE, &pPoolItem ) )
|
||
|
|
{
|
||
|
|
UINT16 nNew = ( ( const SfxUInt16Item* ) pPoolItem )->GetValue();
|
||
|
|
if(nNew == 0)
|
||
|
|
{
|
||
|
|
SetDefaultUseStdTextureX(FALSE);
|
||
|
|
SetDefaultUseStdTextureXUseSphere(FALSE);
|
||
|
|
}
|
||
|
|
else if(nNew == 1)
|
||
|
|
{
|
||
|
|
SetDefaultUseStdTextureX(TRUE);
|
||
|
|
SetDefaultUseStdTextureXUseSphere(FALSE);
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
SetDefaultUseStdTextureX(TRUE);
|
||
|
|
SetDefaultUseStdTextureXUseSphere(TRUE);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if( SFX_ITEM_SET == rAttr.GetItemState( SID_ATTR_3D_TEXTURE_PROJ_Y, TRUE, &pPoolItem ) )
|
||
|
|
{
|
||
|
|
UINT16 nNew = ( ( const SfxUInt16Item* ) pPoolItem )->GetValue();
|
||
|
|
if(nNew == 0)
|
||
|
|
{
|
||
|
|
SetDefaultUseStdTextureY(FALSE);
|
||
|
|
SetDefaultUseStdTextureYUseSphere(FALSE);
|
||
|
|
}
|
||
|
|
else if(nNew == 1)
|
||
|
|
{
|
||
|
|
SetDefaultUseStdTextureY(TRUE);
|
||
|
|
SetDefaultUseStdTextureYUseSphere(FALSE);
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
SetDefaultUseStdTextureY(TRUE);
|
||
|
|
SetDefaultUseStdTextureYUseSphere(TRUE);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if( SFX_ITEM_SET == rAttr.GetItemState( SID_ATTR_3D_SHADOW_3D, TRUE, &pPoolItem ) )
|
||
|
|
{
|
||
|
|
BOOL bNew = ( ( const SfxBoolItem* ) pPoolItem )->GetValue();
|
||
|
|
SetDefaultShadow3D(bNew);
|
||
|
|
}
|
||
|
|
if( SFX_ITEM_SET == rAttr.GetItemState( SID_ATTR_3D_MAT_COLOR, TRUE, &pPoolItem ) )
|
||
|
|
{
|
||
|
|
Color aNew = ( ( const SvxColorItem* ) pPoolItem )->GetValue();
|
||
|
|
aNewMat.SetMaterial(aNew, Base3DMaterialDiffuse);
|
||
|
|
bNewMatUsed = TRUE;
|
||
|
|
}
|
||
|
|
if( SFX_ITEM_SET == rAttr.GetItemState( SID_ATTR_3D_MAT_EMISSION, TRUE, &pPoolItem ) )
|
||
|
|
{
|
||
|
|
Color aNew = ( ( const SvxColorItem* ) pPoolItem )->GetValue();
|
||
|
|
aNewMat.SetMaterial(aNew, Base3DMaterialEmission);
|
||
|
|
bNewMatUsed = TRUE;
|
||
|
|
}
|
||
|
|
if( SFX_ITEM_SET == rAttr.GetItemState( SID_ATTR_3D_MAT_SPECULAR, TRUE, &pPoolItem ) )
|
||
|
|
{
|
||
|
|
Color aNew = ( ( const SvxColorItem* ) pPoolItem )->GetValue();
|
||
|
|
aNewMat.SetMaterial(aNew, Base3DMaterialSpecular);
|
||
|
|
bNewMatUsed = TRUE;
|
||
|
|
}
|
||
|
|
if( SFX_ITEM_SET == rAttr.GetItemState( SID_ATTR_3D_MAT_SPECULAR_INTENSITY, TRUE, &pPoolItem ) )
|
||
|
|
{
|
||
|
|
UINT16 nNew = ( ( const SfxUInt16Item* ) pPoolItem )->GetValue();
|
||
|
|
aNewMat.SetShininess(nNew);
|
||
|
|
bNewMatUsed = TRUE;
|
||
|
|
}
|
||
|
|
if(bNewMatUsed)
|
||
|
|
SetDefaultFrontMaterial(aNewMat);
|
||
|
|
|
||
|
|
if( SFX_ITEM_SET == rAttr.GetItemState( SID_ATTR_3D_TEXTURE_KIND, TRUE, &pPoolItem ) )
|
||
|
|
{
|
||
|
|
UINT16 nNew = ( ( const SfxUInt16Item* ) pPoolItem )->GetValue();
|
||
|
|
if(nNew == 0)
|
||
|
|
{
|
||
|
|
SetDefaultTextureKind(Base3DTextureLuminance);
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
SetDefaultTextureKind(Base3DTextureColor);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if( SFX_ITEM_SET == rAttr.GetItemState( SID_ATTR_3D_TEXTURE_MODE, TRUE, &pPoolItem ) )
|
||
|
|
{
|
||
|
|
UINT16 nNew = ( ( const SfxUInt16Item* ) pPoolItem )->GetValue();
|
||
|
|
if(nNew == 0)
|
||
|
|
{
|
||
|
|
SetDefaultTextureMode(Base3DTextureReplace);
|
||
|
|
}
|
||
|
|
else if(nNew == 1)
|
||
|
|
{
|
||
|
|
SetDefaultTextureMode(Base3DTextureModulate);
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
SetDefaultTextureMode(Base3DTextureBlend);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if( SFX_ITEM_SET == rAttr.GetItemState( SID_ATTR_3D_TEXTURE_FILTER, TRUE, &pPoolItem ) )
|
||
|
|
{
|
||
|
|
BOOL bNew = ( ( const SfxBoolItem* ) pPoolItem )->GetValue();
|
||
|
|
SetDefaultFilterTexture(bNew);
|
||
|
|
}
|
||
|
|
if( SFX_ITEM_SET == rAttr.GetItemState( SID_ATTR_3D_HORZ_SEGS, TRUE, &pPoolItem ) )
|
||
|
|
{
|
||
|
|
UINT32 nNew = ( ( const SfxUInt32Item* ) pPoolItem )->GetValue();
|
||
|
|
SetDefaultHSegments(nNew);
|
||
|
|
}
|
||
|
|
if( SFX_ITEM_SET == rAttr.GetItemState( SID_ATTR_3D_VERT_SEGS, TRUE, &pPoolItem ) )
|
||
|
|
{
|
||
|
|
UINT32 nNew = ( ( const SfxUInt32Item* ) pPoolItem )->GetValue();
|
||
|
|
SetDefaultVSegments(nNew);
|
||
|
|
}
|
||
|
|
if( SFX_ITEM_SET == rAttr.GetItemState( SID_ATTR_3D_PERCENT_DIAGONAL, TRUE, &pPoolItem ) )
|
||
|
|
{
|
||
|
|
UINT16 nNew = ((const SfxUInt16Item*)pPoolItem)->GetValue();
|
||
|
|
SetDefaultPercentDiag(((double)(nNew)) / 200.0);
|
||
|
|
}
|
||
|
|
if( SFX_ITEM_SET == rAttr.GetItemState( SID_ATTR_3D_BACKSCALE, TRUE, &pPoolItem ) )
|
||
|
|
{
|
||
|
|
UINT16 nNew = ((const SfxUInt16Item*)pPoolItem)->GetValue();
|
||
|
|
SetDefaultBackScale(((double)(nNew)) / 100.0);
|
||
|
|
}
|
||
|
|
if( SFX_ITEM_SET == rAttr.GetItemState( SID_ATTR_3D_END_ANGLE, TRUE, &pPoolItem ) )
|
||
|
|
{
|
||
|
|
UINT16 nNew = ((const SfxUInt16Item*)pPoolItem)->GetValue();
|
||
|
|
SetDefaultLatheEndAngle((long)nNew);
|
||
|
|
}
|
||
|
|
if( SFX_ITEM_SET == rAttr.GetItemState( SID_ATTR_3D_DEPTH, TRUE, &pPoolItem ) )
|
||
|
|
{
|
||
|
|
UINT32 nNew = ((const SfxUInt32Item*)pPoolItem)->GetValue();
|
||
|
|
SetDefaultExtrudeDepth((double)nNew);
|
||
|
|
}
|
||
|
|
|
||
|
|
// Szene
|
||
|
|
B3dLightGroup aLightGroup = GetDefaultLightGroup();
|
||
|
|
|
||
|
|
// TwoSidedLighting
|
||
|
|
if( SFX_ITEM_SET == rAttr.GetItemState(SID_ATTR_3D_TWO_SIDED_LIGHTING, FALSE, &pPoolItem))
|
||
|
|
{
|
||
|
|
BOOL bNew = ((const SfxBoolItem*)pPoolItem)->GetValue();
|
||
|
|
aLightGroup.SetModelTwoSide( bNew );
|
||
|
|
}
|
||
|
|
|
||
|
|
// LightColors
|
||
|
|
if( SFX_ITEM_SET == rAttr.GetItemState(SID_ATTR_3D_LIGHTCOLOR_1, FALSE, &pPoolItem))
|
||
|
|
{
|
||
|
|
Color aNew = ((const SvxColorItem*)pPoolItem)->GetValue();
|
||
|
|
aLightGroup.SetIntensity( aNew, Base3DMaterialDiffuse, Base3DLight0);
|
||
|
|
}
|
||
|
|
if( SFX_ITEM_SET == rAttr.GetItemState(SID_ATTR_3D_LIGHTCOLOR_2, FALSE, &pPoolItem))
|
||
|
|
{
|
||
|
|
Color aNew = ((const SvxColorItem*)pPoolItem)->GetValue();
|
||
|
|
aLightGroup.SetIntensity( aNew, Base3DMaterialDiffuse, Base3DLight1);
|
||
|
|
}
|
||
|
|
if( SFX_ITEM_SET == rAttr.GetItemState(SID_ATTR_3D_LIGHTCOLOR_3, FALSE, &pPoolItem))
|
||
|
|
{
|
||
|
|
Color aNew = ((const SvxColorItem*)pPoolItem)->GetValue();
|
||
|
|
aLightGroup.SetIntensity( aNew, Base3DMaterialDiffuse, Base3DLight2);
|
||
|
|
}
|
||
|
|
if( SFX_ITEM_SET == rAttr.GetItemState(SID_ATTR_3D_LIGHTCOLOR_4, FALSE, &pPoolItem))
|
||
|
|
{
|
||
|
|
Color aNew = ((const SvxColorItem*)pPoolItem)->GetValue();
|
||
|
|
aLightGroup.SetIntensity( aNew, Base3DMaterialDiffuse, Base3DLight3);
|
||
|
|
}
|
||
|
|
if( SFX_ITEM_SET == rAttr.GetItemState(SID_ATTR_3D_LIGHTCOLOR_5, FALSE, &pPoolItem))
|
||
|
|
{
|
||
|
|
Color aNew = ((const SvxColorItem*)pPoolItem)->GetValue();
|
||
|
|
aLightGroup.SetIntensity( aNew, Base3DMaterialDiffuse, Base3DLight4);
|
||
|
|
}
|
||
|
|
if( SFX_ITEM_SET == rAttr.GetItemState(SID_ATTR_3D_LIGHTCOLOR_6, FALSE, &pPoolItem))
|
||
|
|
{
|
||
|
|
Color aNew = ((const SvxColorItem*)pPoolItem)->GetValue();
|
||
|
|
aLightGroup.SetIntensity( aNew, Base3DMaterialDiffuse, Base3DLight5);
|
||
|
|
}
|
||
|
|
if( SFX_ITEM_SET == rAttr.GetItemState(SID_ATTR_3D_LIGHTCOLOR_7, FALSE, &pPoolItem))
|
||
|
|
{
|
||
|
|
Color aNew = ((const SvxColorItem*)pPoolItem)->GetValue();
|
||
|
|
aLightGroup.SetIntensity( aNew, Base3DMaterialDiffuse, Base3DLight6);
|
||
|
|
}
|
||
|
|
if( SFX_ITEM_SET == rAttr.GetItemState(SID_ATTR_3D_LIGHTCOLOR_8, FALSE, &pPoolItem))
|
||
|
|
{
|
||
|
|
Color aNew = ((const SvxColorItem*)pPoolItem)->GetValue();
|
||
|
|
aLightGroup.SetIntensity( aNew, Base3DMaterialDiffuse, Base3DLight7);
|
||
|
|
}
|
||
|
|
|
||
|
|
// AmbientColor
|
||
|
|
if( SFX_ITEM_SET == rAttr.GetItemState(SID_ATTR_3D_AMBIENTCOLOR, FALSE, &pPoolItem))
|
||
|
|
{
|
||
|
|
Color aNew = ((const SvxColorItem*)pPoolItem)->GetValue();
|
||
|
|
aLightGroup.SetGlobalAmbientLight( aNew );
|
||
|
|
}
|
||
|
|
|
||
|
|
// LightOn
|
||
|
|
if( SFX_ITEM_SET == rAttr.GetItemState(SID_ATTR_3D_LIGHTON_1, FALSE, &pPoolItem))
|
||
|
|
{
|
||
|
|
BOOL bNew = ((const SfxBoolItem*)pPoolItem)->GetValue();
|
||
|
|
aLightGroup.Enable( bNew, Base3DLight0);
|
||
|
|
}
|
||
|
|
if( SFX_ITEM_SET == rAttr.GetItemState(SID_ATTR_3D_LIGHTON_2, FALSE, &pPoolItem))
|
||
|
|
{
|
||
|
|
BOOL bNew = ((const SfxBoolItem*)pPoolItem)->GetValue();
|
||
|
|
aLightGroup.Enable( bNew, Base3DLight1);
|
||
|
|
}
|
||
|
|
if( SFX_ITEM_SET == rAttr.GetItemState(SID_ATTR_3D_LIGHTON_3, FALSE, &pPoolItem))
|
||
|
|
{
|
||
|
|
BOOL bNew = ((const SfxBoolItem*)pPoolItem)->GetValue();
|
||
|
|
aLightGroup.Enable( bNew, Base3DLight2);
|
||
|
|
}
|
||
|
|
if( SFX_ITEM_SET == rAttr.GetItemState(SID_ATTR_3D_LIGHTON_4, FALSE, &pPoolItem))
|
||
|
|
{
|
||
|
|
BOOL bNew = ((const SfxBoolItem*)pPoolItem)->GetValue();
|
||
|
|
aLightGroup.Enable( bNew, Base3DLight3);
|
||
|
|
}
|
||
|
|
if( SFX_ITEM_SET == rAttr.GetItemState(SID_ATTR_3D_LIGHTON_5, FALSE, &pPoolItem))
|
||
|
|
{
|
||
|
|
BOOL bNew = ((const SfxBoolItem*)pPoolItem)->GetValue();
|
||
|
|
aLightGroup.Enable( bNew, Base3DLight4);
|
||
|
|
}
|
||
|
|
if( SFX_ITEM_SET == rAttr.GetItemState(SID_ATTR_3D_LIGHTON_6, FALSE, &pPoolItem))
|
||
|
|
{
|
||
|
|
BOOL bNew = ((const SfxBoolItem*)pPoolItem)->GetValue();
|
||
|
|
aLightGroup.Enable( bNew, Base3DLight5);
|
||
|
|
}
|
||
|
|
if( SFX_ITEM_SET == rAttr.GetItemState(SID_ATTR_3D_LIGHTON_7, FALSE, &pPoolItem))
|
||
|
|
{
|
||
|
|
BOOL bNew = ((const SfxBoolItem*)pPoolItem)->GetValue();
|
||
|
|
aLightGroup.Enable( bNew, Base3DLight6);
|
||
|
|
}
|
||
|
|
if( SFX_ITEM_SET == rAttr.GetItemState(SID_ATTR_3D_LIGHTON_8, FALSE, &pPoolItem))
|
||
|
|
{
|
||
|
|
BOOL bNew = ((const SfxBoolItem*)pPoolItem)->GetValue();
|
||
|
|
aLightGroup.Enable( bNew, Base3DLight7);
|
||
|
|
}
|
||
|
|
|
||
|
|
// LightDirection
|
||
|
|
if( SFX_ITEM_SET == rAttr.GetItemState(SID_ATTR_3D_LIGHTDIRECTION_1, FALSE, &pPoolItem))
|
||
|
|
{
|
||
|
|
Vector3D aNew = ((const SvxVector3DItem*)pPoolItem)->GetValue();
|
||
|
|
aLightGroup.SetDirection( aNew, Base3DLight0);
|
||
|
|
}
|
||
|
|
if( SFX_ITEM_SET == rAttr.GetItemState(SID_ATTR_3D_LIGHTDIRECTION_2, FALSE, &pPoolItem))
|
||
|
|
{
|
||
|
|
Vector3D aNew = ((const SvxVector3DItem*)pPoolItem)->GetValue();
|
||
|
|
aLightGroup.SetDirection( aNew, Base3DLight1);
|
||
|
|
}
|
||
|
|
if( SFX_ITEM_SET == rAttr.GetItemState(SID_ATTR_3D_LIGHTDIRECTION_3, FALSE, &pPoolItem))
|
||
|
|
{
|
||
|
|
Vector3D aNew = ((const SvxVector3DItem*)pPoolItem)->GetValue();
|
||
|
|
aLightGroup.SetDirection( aNew, Base3DLight2);
|
||
|
|
}
|
||
|
|
if( SFX_ITEM_SET == rAttr.GetItemState(SID_ATTR_3D_LIGHTDIRECTION_4, FALSE, &pPoolItem))
|
||
|
|
{
|
||
|
|
Vector3D aNew = ((const SvxVector3DItem*)pPoolItem)->GetValue();
|
||
|
|
aLightGroup.SetDirection( aNew, Base3DLight3);
|
||
|
|
}
|
||
|
|
if( SFX_ITEM_SET == rAttr.GetItemState(SID_ATTR_3D_LIGHTDIRECTION_5, FALSE, &pPoolItem))
|
||
|
|
{
|
||
|
|
Vector3D aNew = ((const SvxVector3DItem*)pPoolItem)->GetValue();
|
||
|
|
aLightGroup.SetDirection( aNew, Base3DLight4);
|
||
|
|
}
|
||
|
|
if( SFX_ITEM_SET == rAttr.GetItemState(SID_ATTR_3D_LIGHTDIRECTION_6, FALSE, &pPoolItem))
|
||
|
|
{
|
||
|
|
Vector3D aNew = ((const SvxVector3DItem*)pPoolItem)->GetValue();
|
||
|
|
aLightGroup.SetDirection( aNew, Base3DLight5);
|
||
|
|
}
|
||
|
|
if( SFX_ITEM_SET == rAttr.GetItemState(SID_ATTR_3D_LIGHTDIRECTION_7, FALSE, &pPoolItem))
|
||
|
|
{
|
||
|
|
Vector3D aNew = ((const SvxVector3DItem*)pPoolItem)->GetValue();
|
||
|
|
aLightGroup.SetDirection( aNew, Base3DLight6);
|
||
|
|
}
|
||
|
|
if( SFX_ITEM_SET == rAttr.GetItemState(SID_ATTR_3D_LIGHTDIRECTION_8, FALSE, &pPoolItem))
|
||
|
|
{
|
||
|
|
Vector3D aNew = ((const SvxVector3DItem*)pPoolItem)->GetValue();
|
||
|
|
aLightGroup.SetDirection( aNew, Base3DLight7);
|
||
|
|
}
|
||
|
|
|
||
|
|
// ShadowSlant
|
||
|
|
if( SFX_ITEM_SET == rAttr.GetItemState(SID_ATTR_3D_SHADOW_SLANT, FALSE, &pPoolItem))
|
||
|
|
{
|
||
|
|
UINT16 nNew = ((const SfxUInt16Item*)pPoolItem)->GetValue();
|
||
|
|
double fWink = (double)nNew * F_PI180;
|
||
|
|
Vector3D aVec(0.0, sin(fWink), cos(fWink));
|
||
|
|
aVec.Normalize();
|
||
|
|
SetDefaultShadowPlaneDirection(aVec);
|
||
|
|
}
|
||
|
|
|
||
|
|
// ShadeMode
|
||
|
|
if( SFX_ITEM_SET == rAttr.GetItemState(SID_ATTR_3D_SHADE_MODE, FALSE, &pPoolItem))
|
||
|
|
{
|
||
|
|
UINT16 nNew = ((const SfxUInt16Item*)pPoolItem)->GetValue();
|
||
|
|
if(nNew == 3)
|
||
|
|
{
|
||
|
|
SetDefaultForceDraftShadeModel(TRUE);
|
||
|
|
SetDefaultShadeModel(Base3DSmooth);
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
SetDefaultForceDraftShadeModel(FALSE);
|
||
|
|
if(nNew == 0)
|
||
|
|
{
|
||
|
|
SetDefaultShadeModel(Base3DFlat);
|
||
|
|
}
|
||
|
|
else if(nNew == 1)
|
||
|
|
{
|
||
|
|
SetDefaultShadeModel(Base3DPhong);
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
// Gouraud
|
||
|
|
SetDefaultShadeModel(Base3DSmooth);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
// Nachbehandlung
|
||
|
|
SetDefaultLightGroup(aLightGroup);
|
||
|
|
}
|
||
|
|
|
||
|
|
void E3dDefaultAttributes::TakeDefaultValues(SfxItemSet& rAttr)
|
||
|
|
{
|
||
|
|
// DoubleSided
|
||
|
|
rAttr.Put(SfxBoolItem(SID_ATTR_3D_DOUBLE_SIDED, GetDefaultDoubleSided()));
|
||
|
|
|
||
|
|
// NormalsKind
|
||
|
|
UINT16 nObjNormalsKind;
|
||
|
|
if(!GetDefaultUseStdNormals())
|
||
|
|
{
|
||
|
|
nObjNormalsKind = 0;
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
if(GetDefaultUseStdNormalsUseSphere())
|
||
|
|
{
|
||
|
|
nObjNormalsKind = 2;
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
nObjNormalsKind = 1;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
rAttr.Put(SfxUInt16Item(SID_ATTR_3D_NORMALS_KIND, nObjNormalsKind));
|
||
|
|
|
||
|
|
// NormalsInvert
|
||
|
|
rAttr.Put(SfxBoolItem(SID_ATTR_3D_NORMALS_INVERT, GetDefaultInvertNormals()));
|
||
|
|
|
||
|
|
// TextureProjectionX
|
||
|
|
UINT16 nObjTextureProjX;
|
||
|
|
if(!GetDefaultUseStdTextureX())
|
||
|
|
{
|
||
|
|
nObjTextureProjX = 0;
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
if(GetDefaultUseStdTextureXUseSphere())
|
||
|
|
{
|
||
|
|
nObjTextureProjX = 2;
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
nObjTextureProjX = 1;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
rAttr.Put(SfxUInt16Item(SID_ATTR_3D_TEXTURE_PROJ_X, nObjTextureProjX));
|
||
|
|
|
||
|
|
// TextureProjectionY
|
||
|
|
UINT16 nObjTextureProjY;
|
||
|
|
if(!GetDefaultUseStdTextureY())
|
||
|
|
{
|
||
|
|
nObjTextureProjY = 0;
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
if(GetDefaultUseStdTextureYUseSphere())
|
||
|
|
{
|
||
|
|
nObjTextureProjY = 2;
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
nObjTextureProjY = 1;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
rAttr.Put(SfxUInt16Item(SID_ATTR_3D_TEXTURE_PROJ_Y, nObjTextureProjY));
|
||
|
|
|
||
|
|
// Shadow3D UND Shadow2D
|
||
|
|
rAttr.Put(SfxBoolItem(SID_ATTR_3D_SHADOW_3D, GetDefaultShadow3D()));
|
||
|
|
rAttr.Put(SdrShadowItem( GetDefaultShadow3D() ));
|
||
|
|
|
||
|
|
// Material
|
||
|
|
const B3dMaterial& rMat = GetDefaultFrontMaterial();
|
||
|
|
Color aObjMaterialColor = rMat.GetMaterial(Base3DMaterialDiffuse);
|
||
|
|
Color aObjMaterialEmission = rMat.GetMaterial(Base3DMaterialEmission);
|
||
|
|
Color aObjMaterialSpecular = rMat.GetMaterial(Base3DMaterialSpecular);
|
||
|
|
UINT16 nObjMaterialIntensity = rMat.GetShininess();
|
||
|
|
rAttr.Put(SvxColorItem(aObjMaterialColor, SID_ATTR_3D_MAT_COLOR));
|
||
|
|
rAttr.Put(SvxColorItem(aObjMaterialEmission, SID_ATTR_3D_MAT_EMISSION));
|
||
|
|
rAttr.Put(SvxColorItem(aObjMaterialSpecular, SID_ATTR_3D_MAT_SPECULAR));
|
||
|
|
rAttr.Put(SfxUInt16Item(SID_ATTR_3D_MAT_SPECULAR_INTENSITY, nObjMaterialIntensity));
|
||
|
|
|
||
|
|
// TextureKind
|
||
|
|
UINT16 nObjTextureKind;
|
||
|
|
if(GetDefaultTextureKind() == Base3DTextureColor)
|
||
|
|
{
|
||
|
|
nObjTextureKind = 1;
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
nObjTextureKind = 0;
|
||
|
|
}
|
||
|
|
rAttr.Put(SfxUInt16Item(SID_ATTR_3D_TEXTURE_KIND, nObjTextureKind));
|
||
|
|
|
||
|
|
// TextureMode
|
||
|
|
UINT16 nObjTextureMode;
|
||
|
|
if(GetDefaultTextureMode() == Base3DTextureReplace)
|
||
|
|
{
|
||
|
|
nObjTextureMode = 0;
|
||
|
|
}
|
||
|
|
else if(GetDefaultTextureMode() == Base3DTextureModulate)
|
||
|
|
{
|
||
|
|
nObjTextureMode = 1;
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
nObjTextureMode = 2;
|
||
|
|
}
|
||
|
|
rAttr.Put(SfxUInt16Item(SID_ATTR_3D_TEXTURE_MODE, nObjTextureMode));
|
||
|
|
|
||
|
|
// TextureFilter
|
||
|
|
rAttr.Put(SfxBoolItem(SID_ATTR_3D_TEXTURE_FILTER, GetDefaultFilterTexture()));
|
||
|
|
|
||
|
|
// HorizSegs
|
||
|
|
rAttr.Put(SfxUInt32Item(SID_ATTR_3D_HORZ_SEGS, (UINT32)GetDefaultHSegments()));
|
||
|
|
|
||
|
|
// VertSegs
|
||
|
|
rAttr.Put(SfxUInt32Item(SID_ATTR_3D_VERT_SEGS, (UINT32)GetDefaultVSegments()));
|
||
|
|
|
||
|
|
// PercentDiagonal
|
||
|
|
UINT16 nObjPercentDiagonal = (UINT16)((GetDefaultPercentDiag() * 200.0) + 0.5);
|
||
|
|
rAttr.Put(SfxUInt16Item(SID_ATTR_3D_PERCENT_DIAGONAL, nObjPercentDiagonal));
|
||
|
|
|
||
|
|
// BackScale
|
||
|
|
UINT16 nObjBackScale = (UINT16)((GetDefaultBackScale() * 100.0) + 0.5);
|
||
|
|
rAttr.Put(SfxUInt16Item(SID_ATTR_3D_BACKSCALE, nObjBackScale));
|
||
|
|
|
||
|
|
// EndAngle
|
||
|
|
UINT16 nObjEndAngle = (UINT16)(GetDefaultLatheEndAngle() + 0.5);
|
||
|
|
rAttr.Put(SfxUInt16Item(SID_ATTR_3D_END_ANGLE, nObjEndAngle));
|
||
|
|
|
||
|
|
// ExtrudeDepth
|
||
|
|
UINT32 nObjDeepth = (UINT32)(GetDefaultExtrudeDepth() + 0.5);
|
||
|
|
rAttr.Put(SfxUInt32Item(SID_ATTR_3D_DEPTH, nObjDeepth));
|
||
|
|
|
||
|
|
// Szenenparameter
|
||
|
|
B3dLightGroup& rLightGroup = (B3dLightGroup&)GetDefaultLightGroup();
|
||
|
|
BOOL bSceneTwoSidedLighting = rLightGroup.GetModelTwoSide();
|
||
|
|
Color aSceneLightColor1 = rLightGroup.GetIntensity(Base3DMaterialDiffuse, Base3DLight0);
|
||
|
|
Color aSceneLightColor2 = rLightGroup.GetIntensity(Base3DMaterialDiffuse, Base3DLight1);
|
||
|
|
Color aSceneLightColor3 = rLightGroup.GetIntensity(Base3DMaterialDiffuse, Base3DLight2);
|
||
|
|
Color aSceneLightColor4 = rLightGroup.GetIntensity(Base3DMaterialDiffuse, Base3DLight3);
|
||
|
|
Color aSceneLightColor5 = rLightGroup.GetIntensity(Base3DMaterialDiffuse, Base3DLight4);
|
||
|
|
Color aSceneLightColor6 = rLightGroup.GetIntensity(Base3DMaterialDiffuse, Base3DLight5);
|
||
|
|
Color aSceneLightColor7 = rLightGroup.GetIntensity(Base3DMaterialDiffuse, Base3DLight6);
|
||
|
|
Color aSceneLightColor8 = rLightGroup.GetIntensity(Base3DMaterialDiffuse, Base3DLight7);
|
||
|
|
Color aSceneAmbientColor = rLightGroup.GetGlobalAmbientLight();
|
||
|
|
BOOL bSceneLightOn1 = rLightGroup.IsEnabled(Base3DLight0);
|
||
|
|
BOOL bSceneLightOn2 = rLightGroup.IsEnabled(Base3DLight1);
|
||
|
|
BOOL bSceneLightOn3 = rLightGroup.IsEnabled(Base3DLight2);
|
||
|
|
BOOL bSceneLightOn4 = rLightGroup.IsEnabled(Base3DLight3);
|
||
|
|
BOOL bSceneLightOn5 = rLightGroup.IsEnabled(Base3DLight4);
|
||
|
|
BOOL bSceneLightOn6 = rLightGroup.IsEnabled(Base3DLight5);
|
||
|
|
BOOL bSceneLightOn7 = rLightGroup.IsEnabled(Base3DLight6);
|
||
|
|
BOOL bSceneLightOn8 = rLightGroup.IsEnabled(Base3DLight7);
|
||
|
|
Vector3D aSceneLightDirection1 = rLightGroup.GetDirection( Base3DLight0 );
|
||
|
|
Vector3D aSceneLightDirection2 = rLightGroup.GetDirection( Base3DLight1 );
|
||
|
|
Vector3D aSceneLightDirection3 = rLightGroup.GetDirection( Base3DLight2 );
|
||
|
|
Vector3D aSceneLightDirection4 = rLightGroup.GetDirection( Base3DLight3 );
|
||
|
|
Vector3D aSceneLightDirection5 = rLightGroup.GetDirection( Base3DLight4 );
|
||
|
|
Vector3D aSceneLightDirection6 = rLightGroup.GetDirection( Base3DLight5 );
|
||
|
|
Vector3D aSceneLightDirection7 = rLightGroup.GetDirection( Base3DLight6 );
|
||
|
|
Vector3D aSceneLightDirection8 = rLightGroup.GetDirection( Base3DLight7 );
|
||
|
|
UINT16 nSceneShadeMode;
|
||
|
|
const Vector3D& rShadowVec = GetDefaultShadowPlaneDirection();
|
||
|
|
UINT16 nSceneShadowSlant = (UINT16)((atan2(rShadowVec.Y(), rShadowVec.Z()) / F_PI180) + 0.5);
|
||
|
|
|
||
|
|
if(GetDefaultForceDraftShadeModel())
|
||
|
|
{
|
||
|
|
nSceneShadeMode = 3; // Draft-Modus
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
if(GetDefaultShadeModel() == Base3DSmooth)
|
||
|
|
{
|
||
|
|
nSceneShadeMode = 2; // Gouraud
|
||
|
|
}
|
||
|
|
else if(GetDefaultShadeModel() == Base3DFlat)
|
||
|
|
{
|
||
|
|
nSceneShadeMode = 0; // Flat
|
||
|
|
}
|
||
|
|
else // Base3DPhong
|
||
|
|
{
|
||
|
|
nSceneShadeMode = 1; // Phong
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
// TwoSidedLighting
|
||
|
|
rAttr.Put(SfxBoolItem(SID_ATTR_3D_TWO_SIDED_LIGHTING, bSceneTwoSidedLighting));
|
||
|
|
|
||
|
|
// LightColors
|
||
|
|
rAttr.Put(SvxColorItem(aSceneLightColor1, SID_ATTR_3D_LIGHTCOLOR_1));
|
||
|
|
rAttr.Put(SvxColorItem(aSceneLightColor2, SID_ATTR_3D_LIGHTCOLOR_2));
|
||
|
|
rAttr.Put(SvxColorItem(aSceneLightColor3, SID_ATTR_3D_LIGHTCOLOR_3));
|
||
|
|
rAttr.Put(SvxColorItem(aSceneLightColor4, SID_ATTR_3D_LIGHTCOLOR_4));
|
||
|
|
rAttr.Put(SvxColorItem(aSceneLightColor5, SID_ATTR_3D_LIGHTCOLOR_5));
|
||
|
|
rAttr.Put(SvxColorItem(aSceneLightColor6, SID_ATTR_3D_LIGHTCOLOR_6));
|
||
|
|
rAttr.Put(SvxColorItem(aSceneLightColor7, SID_ATTR_3D_LIGHTCOLOR_7));
|
||
|
|
rAttr.Put(SvxColorItem(aSceneLightColor8, SID_ATTR_3D_LIGHTCOLOR_8));
|
||
|
|
|
||
|
|
// AmbientColor
|
||
|
|
rAttr.Put(SvxColorItem(aSceneAmbientColor, SID_ATTR_3D_AMBIENTCOLOR));
|
||
|
|
|
||
|
|
// LightOn
|
||
|
|
rAttr.Put(SfxBoolItem(SID_ATTR_3D_LIGHTON_1, bSceneLightOn1));
|
||
|
|
rAttr.Put(SfxBoolItem(SID_ATTR_3D_LIGHTON_2, bSceneLightOn2));
|
||
|
|
rAttr.Put(SfxBoolItem(SID_ATTR_3D_LIGHTON_3, bSceneLightOn3));
|
||
|
|
rAttr.Put(SfxBoolItem(SID_ATTR_3D_LIGHTON_4, bSceneLightOn4));
|
||
|
|
rAttr.Put(SfxBoolItem(SID_ATTR_3D_LIGHTON_5, bSceneLightOn5));
|
||
|
|
rAttr.Put(SfxBoolItem(SID_ATTR_3D_LIGHTON_6, bSceneLightOn6));
|
||
|
|
rAttr.Put(SfxBoolItem(SID_ATTR_3D_LIGHTON_7, bSceneLightOn7));
|
||
|
|
rAttr.Put(SfxBoolItem(SID_ATTR_3D_LIGHTON_8, bSceneLightOn8));
|
||
|
|
|
||
|
|
// LightDirection
|
||
|
|
rAttr.Put(SvxVector3DItem(SID_ATTR_3D_LIGHTDIRECTION_1, aSceneLightDirection1));
|
||
|
|
rAttr.Put(SvxVector3DItem(SID_ATTR_3D_LIGHTDIRECTION_2, aSceneLightDirection2));
|
||
|
|
rAttr.Put(SvxVector3DItem(SID_ATTR_3D_LIGHTDIRECTION_3, aSceneLightDirection3));
|
||
|
|
rAttr.Put(SvxVector3DItem(SID_ATTR_3D_LIGHTDIRECTION_4, aSceneLightDirection4));
|
||
|
|
rAttr.Put(SvxVector3DItem(SID_ATTR_3D_LIGHTDIRECTION_5, aSceneLightDirection5));
|
||
|
|
rAttr.Put(SvxVector3DItem(SID_ATTR_3D_LIGHTDIRECTION_6, aSceneLightDirection6));
|
||
|
|
rAttr.Put(SvxVector3DItem(SID_ATTR_3D_LIGHTDIRECTION_7, aSceneLightDirection7));
|
||
|
|
rAttr.Put(SvxVector3DItem(SID_ATTR_3D_LIGHTDIRECTION_8, aSceneLightDirection8));
|
||
|
|
|
||
|
|
// ShadowSlant
|
||
|
|
rAttr.Put(SfxUInt16Item(SID_ATTR_3D_SHADOW_SLANT, nSceneShadowSlant));
|
||
|
|
|
||
|
|
// ShadeMode
|
||
|
|
rAttr.Put(SfxUInt16Item(SID_ATTR_3D_SHADE_MODE, nSceneShadeMode));
|
||
|
|
}
|
||
|
|
|
||
|
|
|