/**************************************************************
 * 
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 * 
 *************************************************************/



// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_svx.hxx"
#include <svx/svx3ditems.hxx>
#include <com/sun/star/drawing/NormalsKind.hpp>
#include <com/sun/star/drawing/TextureProjectionMode.hpp>
#include <com/sun/star/drawing/TextureKind.hpp>
#include <com/sun/star/drawing/TextureMode.hpp>
#include <com/sun/star/drawing/ProjectionMode.hpp>
#include <com/sun/star/drawing/ShadeMode.hpp>


//////////////////////////////////////////////////////////////////////////////

using namespace ::rtl;
using namespace ::com::sun::star;

//////////////////////////////////////////////////////////////////////////////
Svx3DPercentDiagonalItem::Svx3DPercentDiagonalItem(sal_uInt16 nVal) 
:	SfxUInt16Item(SDRATTR_3DOBJ_PERCENT_DIAGONAL, nVal) 
{}

Svx3DBackscaleItem::Svx3DBackscaleItem(sal_uInt16 nVal) 
:	SfxUInt16Item(SDRATTR_3DOBJ_BACKSCALE, nVal) 
{}

Svx3DDepthItem::Svx3DDepthItem(sal_uInt32 nVal) 
:	SfxUInt32Item(SDRATTR_3DOBJ_DEPTH, nVal) 
{}

Svx3DHorizontalSegmentsItem::Svx3DHorizontalSegmentsItem(sal_uInt32 nVal) 
:	SfxUInt32Item(SDRATTR_3DOBJ_HORZ_SEGS, nVal) 
{}

Svx3DVerticalSegmentsItem::Svx3DVerticalSegmentsItem(sal_uInt32 nVal) 
:	SfxUInt32Item(SDRATTR_3DOBJ_VERT_SEGS, nVal) 
{}

Svx3DEndAngleItem::Svx3DEndAngleItem(sal_uInt32 nVal) 
:	SfxUInt32Item(SDRATTR_3DOBJ_END_ANGLE, nVal) 
{}

Svx3DDoubleSidedItem::Svx3DDoubleSidedItem(sal_Bool bVal) 
:	SfxBoolItem(SDRATTR_3DOBJ_DOUBLE_SIDED, bVal) 
{}

//////////////////////////////////////////////////////////////////////////////
// #i28528#
// Added extra Item (Bool) for chart2 to be able to show reduced line geometry

Svx3DReducedLineGeometryItem::Svx3DReducedLineGeometryItem(sal_Bool bVal) 
:	SfxBoolItem(SDRATTR_3DOBJ_REDUCED_LINE_GEOMETRY, bVal) 
{}

sal_uInt16 Svx3DReducedLineGeometryItem::GetVersion(sal_uInt16 /*nFileFormatVersion*/) const
{
	return 1;
}

SfxPoolItem* Svx3DReducedLineGeometryItem::Create(SvStream& rIn, sal_uInt16 nItemVersion) const
{
	SfxBoolItem* pRetval = new Svx3DReducedLineGeometryItem();

	if(nItemVersion > 0)
	{
		SfxBoolItem aBoolItem(Which(), rIn);
		pRetval->SetValue(aBoolItem.GetValue());
	}

	return pRetval;
}

//////////////////////////////////////////////////////////////////////////////

Svx3DNormalsKindItem::Svx3DNormalsKindItem(sal_uInt16 nVal) 
:	SfxUInt16Item(SDRATTR_3DOBJ_NORMALS_KIND, nVal) 
{}

Svx3DNormalsInvertItem::Svx3DNormalsInvertItem(sal_Bool bVal) 
:	SfxBoolItem(SDRATTR_3DOBJ_NORMALS_INVERT, bVal) 
{}

Svx3DTextureProjectionXItem::Svx3DTextureProjectionXItem(sal_uInt16 nVal) 
:	SfxUInt16Item(SDRATTR_3DOBJ_TEXTURE_PROJ_X, nVal) 
{}

Svx3DTextureProjectionYItem::Svx3DTextureProjectionYItem(sal_uInt16 nVal) 
:	SfxUInt16Item(SDRATTR_3DOBJ_TEXTURE_PROJ_Y, nVal) 
{}

Svx3DShadow3DItem::Svx3DShadow3DItem(sal_Bool bVal) 
:	SfxBoolItem(SDRATTR_3DOBJ_SHADOW_3D, bVal) 
{}

Svx3DMaterialColorItem::Svx3DMaterialColorItem(const Color& rCol) 
:	SvxColorItem(rCol, SDRATTR_3DOBJ_MAT_COLOR) 
{}

Svx3DMaterialEmissionItem::Svx3DMaterialEmissionItem(const Color& rCol) 
:	SvxColorItem(rCol, SDRATTR_3DOBJ_MAT_EMISSION) 
{}

Svx3DMaterialSpecularItem::Svx3DMaterialSpecularItem(const Color& rCol) 
:	SvxColorItem(rCol, SDRATTR_3DOBJ_MAT_SPECULAR) 
{}

Svx3DMaterialSpecularIntensityItem::Svx3DMaterialSpecularIntensityItem(sal_uInt16 nVal) 
:	SfxUInt16Item(SDRATTR_3DOBJ_MAT_SPECULAR_INTENSITY, nVal) 
{}

Svx3DTextureKindItem::Svx3DTextureKindItem(sal_uInt16 nVal) 
:	SfxUInt16Item(SDRATTR_3DOBJ_TEXTURE_KIND, nVal) 
{}

Svx3DTextureModeItem::Svx3DTextureModeItem(sal_uInt16 nVal) 
:	SfxUInt16Item(SDRATTR_3DOBJ_TEXTURE_MODE, nVal) 
{}

Svx3DTextureFilterItem::Svx3DTextureFilterItem(sal_Bool bVal) 
:	SfxBoolItem(SDRATTR_3DOBJ_TEXTURE_FILTER, bVal) 
{}

Svx3DPerspectiveItem::Svx3DPerspectiveItem(sal_uInt16 nVal) 
:	SfxUInt16Item(SDRATTR_3DSCENE_PERSPECTIVE, nVal) 
{}

Svx3DDistanceItem::Svx3DDistanceItem(sal_uInt32 nVal) 
:	SfxUInt32Item(SDRATTR_3DSCENE_DISTANCE, nVal) 
{}

Svx3DFocalLengthItem::Svx3DFocalLengthItem(sal_uInt32 nVal) 
:	SfxUInt32Item(SDRATTR_3DSCENE_FOCAL_LENGTH, nVal) 
{}

Svx3DTwoSidedLightingItem::Svx3DTwoSidedLightingItem(sal_Bool bVal) 
:	SfxBoolItem(SDRATTR_3DSCENE_TWO_SIDED_LIGHTING, bVal) 
{}

Svx3DLightcolor1Item::Svx3DLightcolor1Item(const Color& rCol) 
:	SvxColorItem(rCol, SDRATTR_3DSCENE_LIGHTCOLOR_1) 
{}

Svx3DLightcolor2Item::Svx3DLightcolor2Item(const Color& rCol) 
:	SvxColorItem(rCol, SDRATTR_3DSCENE_LIGHTCOLOR_2) 
{}

Svx3DLightcolor3Item::Svx3DLightcolor3Item(const Color& rCol) 
:	SvxColorItem(rCol, SDRATTR_3DSCENE_LIGHTCOLOR_3) 
{}

Svx3DLightcolor4Item::Svx3DLightcolor4Item(const Color& rCol) 
:	SvxColorItem(rCol, SDRATTR_3DSCENE_LIGHTCOLOR_4) 
{}

Svx3DLightcolor5Item::Svx3DLightcolor5Item(const Color& rCol) 
:	SvxColorItem(rCol, SDRATTR_3DSCENE_LIGHTCOLOR_5) 
{}

Svx3DLightcolor6Item::Svx3DLightcolor6Item(const Color& rCol) 
:	SvxColorItem(rCol, SDRATTR_3DSCENE_LIGHTCOLOR_6) 
{}

Svx3DLightcolor7Item::Svx3DLightcolor7Item(const Color& rCol) 
:	SvxColorItem(rCol, SDRATTR_3DSCENE_LIGHTCOLOR_7) 
{}

Svx3DLightcolor8Item::Svx3DLightcolor8Item(const Color& rCol) 
:	SvxColorItem(rCol, SDRATTR_3DSCENE_LIGHTCOLOR_8) 
{}

Svx3DAmbientcolorItem::Svx3DAmbientcolorItem(const Color& rCol) 
:	SvxColorItem(rCol, SDRATTR_3DSCENE_AMBIENTCOLOR) 
{}

Svx3DLightOnOff1Item::Svx3DLightOnOff1Item(sal_Bool bVal) 
:	SfxBoolItem(SDRATTR_3DSCENE_LIGHTON_1, bVal) 
{}

Svx3DLightOnOff2Item::Svx3DLightOnOff2Item(sal_Bool bVal) 
:	SfxBoolItem(SDRATTR_3DSCENE_LIGHTON_2, bVal) 
{}

Svx3DLightOnOff3Item::Svx3DLightOnOff3Item(sal_Bool bVal) 
:	SfxBoolItem(SDRATTR_3DSCENE_LIGHTON_3, bVal) 
{}

Svx3DLightOnOff4Item::Svx3DLightOnOff4Item(sal_Bool bVal) 
:	SfxBoolItem(SDRATTR_3DSCENE_LIGHTON_4, bVal) 
{}

Svx3DLightOnOff5Item::Svx3DLightOnOff5Item(sal_Bool bVal) 
:	SfxBoolItem(SDRATTR_3DSCENE_LIGHTON_5, bVal) 
{}

Svx3DLightOnOff6Item::Svx3DLightOnOff6Item(sal_Bool bVal) 
:	SfxBoolItem(SDRATTR_3DSCENE_LIGHTON_6, bVal) 
{}

Svx3DLightOnOff7Item::Svx3DLightOnOff7Item(sal_Bool bVal) 
:	SfxBoolItem(SDRATTR_3DSCENE_LIGHTON_7, bVal) 
{}

Svx3DLightOnOff8Item::Svx3DLightOnOff8Item(sal_Bool bVal) 
:	SfxBoolItem(SDRATTR_3DSCENE_LIGHTON_8, bVal) 
{}

Svx3DLightDirection1Item::Svx3DLightDirection1Item(const basegfx::B3DVector& rVec) 
:	SvxB3DVectorItem(SDRATTR_3DSCENE_LIGHTDIRECTION_1, rVec) 
{}

Svx3DLightDirection2Item::Svx3DLightDirection2Item(const basegfx::B3DVector& rVec) 
:	SvxB3DVectorItem(SDRATTR_3DSCENE_LIGHTDIRECTION_2, rVec) 
{}

Svx3DLightDirection3Item::Svx3DLightDirection3Item(const basegfx::B3DVector& rVec) 
:	SvxB3DVectorItem(SDRATTR_3DSCENE_LIGHTDIRECTION_3, rVec) 
{}

Svx3DLightDirection4Item::Svx3DLightDirection4Item(const basegfx::B3DVector& rVec) 
:	SvxB3DVectorItem(SDRATTR_3DSCENE_LIGHTDIRECTION_4, rVec) 
{}

Svx3DLightDirection5Item::Svx3DLightDirection5Item(const basegfx::B3DVector& rVec) 
:	SvxB3DVectorItem(SDRATTR_3DSCENE_LIGHTDIRECTION_5, rVec) 
{}

Svx3DLightDirection6Item::Svx3DLightDirection6Item(const basegfx::B3DVector& rVec) 
:	SvxB3DVectorItem(SDRATTR_3DSCENE_LIGHTDIRECTION_6, rVec) 
{}

Svx3DLightDirection7Item::Svx3DLightDirection7Item(const basegfx::B3DVector& rVec) 
:	SvxB3DVectorItem(SDRATTR_3DSCENE_LIGHTDIRECTION_7, rVec) 
{}

Svx3DLightDirection8Item::Svx3DLightDirection8Item(const basegfx::B3DVector& rVec) 
:	SvxB3DVectorItem(SDRATTR_3DSCENE_LIGHTDIRECTION_8, rVec) 
{}

Svx3DShadowSlantItem::Svx3DShadowSlantItem(sal_uInt16 nVal) 
:	SfxUInt16Item(SDRATTR_3DSCENE_SHADOW_SLANT, nVal) 
{}

Svx3DShadeModeItem::Svx3DShadeModeItem(sal_uInt16 nVal) 
:	SfxUInt16Item(SDRATTR_3DSCENE_SHADE_MODE, nVal) 
{}

//////////////////////////////////////////////////////////////////////////////
// #107245#

Svx3DSmoothNormalsItem::Svx3DSmoothNormalsItem(sal_Bool bVal) 
:	SfxBoolItem(SDRATTR_3DOBJ_SMOOTH_NORMALS, bVal) 
{}

sal_uInt16 Svx3DSmoothNormalsItem::GetVersion(sal_uInt16 /*nFileFormatVersion*/) const
{
	return 1;
}

SfxPoolItem* Svx3DSmoothNormalsItem::Create(SvStream& rIn, sal_uInt16 nItemVersion) const
{
	SfxBoolItem* pRetval = new Svx3DSmoothNormalsItem();

	if(nItemVersion > 0)
	{
		SfxBoolItem aBoolItem(Which(), rIn);
		pRetval->SetValue(aBoolItem.GetValue());
	}

	return pRetval;
}

//////////////////////////////////////////////////////////////////////////////
// #107245#

Svx3DSmoothLidsItem::Svx3DSmoothLidsItem(sal_Bool bVal) 
:	SfxBoolItem(SDRATTR_3DOBJ_SMOOTH_LIDS, bVal) 
{}

sal_uInt16 Svx3DSmoothLidsItem::GetVersion(sal_uInt16 /*nFileFormatVersion*/) const
{
	return 1;
}

SfxPoolItem* Svx3DSmoothLidsItem::Create(SvStream& rIn, sal_uInt16 nItemVersion) const
{
	SfxBoolItem* pRetval = new Svx3DSmoothLidsItem();

	if(nItemVersion > 0)
	{
		SfxBoolItem aBoolItem(Which(), rIn);
		pRetval->SetValue(aBoolItem.GetValue());
	}

	return pRetval;
}

//////////////////////////////////////////////////////////////////////////////
// #107245#

Svx3DCharacterModeItem::Svx3DCharacterModeItem(sal_Bool bVal) 
:	SfxBoolItem(SDRATTR_3DOBJ_CHARACTER_MODE, bVal) 
{}

sal_uInt16 Svx3DCharacterModeItem::GetVersion(sal_uInt16 /*nFileFormatVersion*/) const
{
	return 1;
}

SfxPoolItem* Svx3DCharacterModeItem::Create(SvStream& rIn, sal_uInt16 nItemVersion) const
{
	SfxBoolItem* pRetval = new Svx3DCharacterModeItem();

	if(nItemVersion > 0)
	{
		SfxBoolItem aBoolItem(Which(), rIn);
		pRetval->SetValue(aBoolItem.GetValue());
	}

	return pRetval;
}

//////////////////////////////////////////////////////////////////////////////
// #107245#

Svx3DCloseFrontItem::Svx3DCloseFrontItem(sal_Bool bVal) 
:	SfxBoolItem(SDRATTR_3DOBJ_CLOSE_FRONT, bVal) 
{}

sal_uInt16 Svx3DCloseFrontItem::GetVersion(sal_uInt16 /*nFileFormatVersion*/) const
{
	return 1;
}

SfxPoolItem* Svx3DCloseFrontItem::Create(SvStream& rIn, sal_uInt16 nItemVersion) const
{
	SfxBoolItem* pRetval = new Svx3DCloseFrontItem();

	if(nItemVersion > 0)
	{
		SfxBoolItem aBoolItem(Which(), rIn);
		pRetval->SetValue(aBoolItem.GetValue());
	}

	return pRetval;
}

//////////////////////////////////////////////////////////////////////////////
// #107245#

Svx3DCloseBackItem::Svx3DCloseBackItem(sal_Bool bVal) 
:	SfxBoolItem(SDRATTR_3DOBJ_CLOSE_BACK, bVal) 
{}

sal_uInt16 Svx3DCloseBackItem::GetVersion(sal_uInt16 /*nFileFormatVersion*/) const
{
	return 1;
}

SfxPoolItem* Svx3DCloseBackItem::Create(SvStream& rIn, sal_uInt16 nItemVersion) const
{
	SfxBoolItem* pRetval = new Svx3DCloseBackItem();

	if(nItemVersion > 0)
	{
		SfxBoolItem aBoolItem(Which(), rIn);
		pRetval->SetValue(aBoolItem.GetValue());
	}

	return pRetval;
}

//////////////////////////////////////////////////////////////////////////////

// Svx3DNormalsKindItem: use drawing::NormalsKind
sal_Bool Svx3DNormalsKindItem::QueryValue( uno::Any& rVal, sal_uInt8 /*nMemberId*/) const
{
	rVal <<= (drawing::NormalsKind)GetValue();
	return sal_True;
}

sal_Bool Svx3DNormalsKindItem::PutValue( const uno::Any& rVal, sal_uInt8 /*nMemberId*/)
{
	drawing::NormalsKind eVar;
	if(!(rVal >>= eVar))
		return sal_False;
	SetValue((sal_Int16)eVar);
	return sal_True;
}

SfxPoolItem* Svx3DNormalsKindItem::Clone(SfxItemPool* /*pPool*/) const 
{ 
	return new Svx3DNormalsKindItem(*this);
}

// Svx3DTextureProjectionXItem: use drawing::TextureProjectionMode
sal_Bool Svx3DTextureProjectionXItem::QueryValue( uno::Any& rVal, sal_uInt8 /*nMemberId*/) const
{
	rVal <<= (drawing::TextureProjectionMode)GetValue();
	return sal_True;
}

sal_Bool Svx3DTextureProjectionXItem::PutValue( const uno::Any& rVal, sal_uInt8 /*nMemberId*/)
{
	drawing::TextureProjectionMode eVar;
	if(!(rVal >>= eVar))
		return sal_False;
	SetValue((sal_Int16)eVar);
	return sal_True;
}

SfxPoolItem* Svx3DTextureProjectionXItem::Clone(SfxItemPool* /*pPool*/) const 
{ 
	return new Svx3DTextureProjectionXItem(*this);
}

// Svx3DTextureProjectionYItem: use drawing::TextureProjectionMode
sal_Bool Svx3DTextureProjectionYItem::QueryValue( uno::Any& rVal, sal_uInt8 /*nMemberId*/) const
{
	rVal <<= (drawing::TextureProjectionMode)GetValue();
	return sal_True;
}

sal_Bool Svx3DTextureProjectionYItem::PutValue( const uno::Any& rVal, sal_uInt8 /*nMemberId*/)
{
	drawing::TextureProjectionMode eVar;
	if(!(rVal >>= eVar))
		return sal_False;
	SetValue((sal_Int16)eVar);
	return sal_True;
}

SfxPoolItem* Svx3DTextureProjectionYItem::Clone(SfxItemPool* /*pPool*/) const 
{ 
	return new Svx3DTextureProjectionYItem(*this);
}

// Svx3DTextureKindItem: use drawing::TextureKind
sal_Bool Svx3DTextureKindItem::QueryValue( uno::Any& rVal, sal_uInt8 /*nMemberId*/) const
{
	rVal <<= (drawing::TextureKind)GetValue();
	return sal_True;
}

sal_Bool Svx3DTextureKindItem::PutValue( const uno::Any& rVal, sal_uInt8 /*nMemberId*/)
{
	drawing::TextureKind eVar;
	if(!(rVal >>= eVar))
		return sal_False;
	SetValue((sal_Int16)eVar);
	return sal_True;
}

SfxPoolItem* Svx3DTextureKindItem::Clone(SfxItemPool* /*pPool*/) const 
{ 
	return new Svx3DTextureKindItem(*this);
}

// Svx3DTextureModeItem: use drawing:TextureMode
sal_Bool Svx3DTextureModeItem::QueryValue( uno::Any& rVal, sal_uInt8 /*nMemberId*/) const
{
	rVal <<= (drawing::TextureMode)GetValue();
	return sal_True;
}

sal_Bool Svx3DTextureModeItem::PutValue( const uno::Any& rVal, sal_uInt8 /*nMemberId*/)
{
	drawing::TextureMode eVar;
	if(!(rVal >>= eVar))
		return sal_False;
	SetValue((sal_Int16)eVar);
	return sal_True;
}

SfxPoolItem* Svx3DTextureModeItem::Clone(SfxItemPool* /*pPool*/) const 
{ 
	return new Svx3DTextureModeItem(*this);
}

// Svx3DPerspectiveItem: use drawing::ProjectionMode
sal_Bool Svx3DPerspectiveItem::QueryValue( uno::Any& rVal, sal_uInt8 /*nMemberId*/) const
{
	rVal <<= (drawing::ProjectionMode)GetValue();
	return sal_True;
}

sal_Bool Svx3DPerspectiveItem::PutValue( const uno::Any& rVal, sal_uInt8 /*nMemberId*/)
{
	drawing::ProjectionMode eVar;
	if(!(rVal >>= eVar))
		return sal_False;
	SetValue((sal_Int16)eVar);
	return sal_True;
}

SfxPoolItem* Svx3DPerspectiveItem::Clone(SfxItemPool* /*pPool*/) const 
{ 
	return new Svx3DPerspectiveItem(*this);
}

// Svx3DShadeModeItem: use drawing::ShadeMode
sal_Bool Svx3DShadeModeItem::QueryValue( uno::Any& rVal, sal_uInt8 /*nMemberId*/) const
{
	rVal <<= (drawing::ShadeMode)GetValue();
	return sal_True;
}

sal_Bool Svx3DShadeModeItem::PutValue( const uno::Any& rVal, sal_uInt8 /*nMemberId*/)
{
	drawing::ShadeMode eVar;
	if(!(rVal >>= eVar))
		return sal_False;
	SetValue((sal_Int16)eVar);
	return sal_True;
}

SfxPoolItem* Svx3DShadeModeItem::Clone(SfxItemPool* /*pPool*/) const 
{ 
	return new Svx3DShadeModeItem(*this);
}

// EOF
