+++ /dev/null
-#include "stdafx.h"\r
-/*\r
-* Copyright (c) 2007-2010 SlimDX Group\r
-* \r
-* Permission is hereby granted, free of charge, to any person obtaining a copy\r
-* of this software and associated documentation files (the "Software"), to deal\r
-* in the Software without restriction, including without limitation the rights\r
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r
-* copies of the Software, and to permit persons to whom the Software is\r
-* furnished to do so, subject to the following conditions:\r
-* \r
-* The above copyright notice and this permission notice shall be included in\r
-* all copies or substantial portions of the Software.\r
-* \r
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r
-* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r
-* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r
-* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r
-* THE SOFTWARE.\r
-*/\r
-\r
-#include <d3d10.h>\r
-\r
-#include "../Utilities.h"\r
-\r
-#include "BlendStateDescription.h"\r
-\r
-using namespace System;\r
-using namespace System::Collections::Generic;\r
-using namespace System::Collections::ObjectModel;\r
-\r
-namespace SlimDX\r
-{\r
-namespace Direct3D10\r
-{ \r
- BlendStateDescription::BlendStateDescription( const D3D10_BLEND_DESC& native )\r
- {\r
- m_AlphaToCoverageEnable = native.AlphaToCoverageEnable ? true : false;\r
- m_SrcBlend = static_cast<BlendOption>( native.SrcBlend );\r
- m_DestBlend = static_cast<BlendOption>( native.DestBlend );\r
- m_BlendOp = static_cast<Direct3D10::BlendOperation>( native.BlendOp );\r
- m_SrcBlendAlpha = static_cast<BlendOption>( native.SrcBlendAlpha );\r
- m_DestBlendAlpha = static_cast<BlendOption>( native.DestBlendAlpha );\r
- m_BlendOpAlpha = static_cast<Direct3D10::BlendOperation>( native.BlendOpAlpha );\r
- \r
- ConstructLazyProperties();\r
- for(int index = 0; index < 8; ++index)\r
- {\r
- m_BlendEnable[ index ] = (native.BlendEnable[ index ] > 0);\r
- m_RenderTargetWriteMask[ index ] = static_cast<ColorWriteMaskFlags>( native.RenderTargetWriteMask[ index ] );\r
- }\r
- }\r
- \r
- D3D10_BLEND_DESC BlendStateDescription::CreateNativeVersion()\r
- {\r
- D3D10_BLEND_DESC native;\r
- native.AlphaToCoverageEnable = m_AlphaToCoverageEnable;\r
- native.SrcBlend = static_cast<D3D10_BLEND>( m_SrcBlend );\r
- native.DestBlend = static_cast<D3D10_BLEND>( m_DestBlend );\r
- native.BlendOp = static_cast<D3D10_BLEND_OP>( m_BlendOp );\r
- native.SrcBlendAlpha = static_cast<D3D10_BLEND>( m_SrcBlendAlpha );\r
- native.DestBlendAlpha = static_cast<D3D10_BLEND>( m_DestBlendAlpha );\r
- native.BlendOpAlpha = static_cast<D3D10_BLEND_OP>( m_BlendOpAlpha );\r
- \r
- ConstructLazyProperties();\r
- for(int index = 0; index < 8; ++index)\r
- {\r
- native.BlendEnable[ index ] = m_BlendEnable[ index ];\r
- native.RenderTargetWriteMask[ index ] = static_cast<UINT8>( m_RenderTargetWriteMask[ index ] );\r
- }\r
- \r
- return native;\r
- }\r
- \r
- bool BlendStateDescription::IsAlphaToCoverageEnabled::get()\r
- {\r
- return m_AlphaToCoverageEnable;\r
- }\r
- \r
- void BlendStateDescription::IsAlphaToCoverageEnabled::set( bool value )\r
- {\r
- m_AlphaToCoverageEnable = value;\r
- }\r
- \r
- BlendOption BlendStateDescription::SourceBlend::get()\r
- {\r
- return m_SrcBlend;\r
- }\r
- \r
- void BlendStateDescription::SourceBlend::set( BlendOption value )\r
- {\r
- m_SrcBlend = value;\r
- }\r
- \r
- BlendOption BlendStateDescription::DestinationBlend::get()\r
- {\r
- return m_DestBlend;\r
- }\r
- \r
- void BlendStateDescription::DestinationBlend::set( BlendOption value )\r
- {\r
- m_DestBlend = value;\r
- }\r
-\r
- Direct3D10::BlendOperation BlendStateDescription::BlendOperation::get()\r
- {\r
- return m_BlendOp;\r
- }\r
-\r
- void BlendStateDescription::BlendOperation::set( Direct3D10::BlendOperation value )\r
- {\r
- m_BlendOp = value;\r
- }\r
- \r
- BlendOption BlendStateDescription::SourceAlphaBlend::get()\r
- {\r
- return m_SrcBlendAlpha;\r
- }\r
- \r
- void BlendStateDescription::SourceAlphaBlend::set( BlendOption value )\r
- {\r
- m_SrcBlendAlpha = value;\r
- }\r
-\r
- BlendOption BlendStateDescription::DestinationAlphaBlend::get()\r
- {\r
- return m_DestBlendAlpha;\r
- }\r
- \r
- void BlendStateDescription::DestinationAlphaBlend::set( BlendOption value )\r
- {\r
- m_DestBlendAlpha = value;\r
- }\r
- \r
- Direct3D10::BlendOperation BlendStateDescription::AlphaBlendOperation::get()\r
- {\r
- return m_BlendOpAlpha;\r
- }\r
- \r
- void BlendStateDescription::AlphaBlendOperation::set( Direct3D10::BlendOperation value )\r
- {\r
- m_BlendOpAlpha = value;\r
- }\r
-\r
- bool BlendStateDescription::GetBlendEnable( UInt32 index )\r
- {\r
- ConstructLazyProperties();\r
- return m_BlendEnable[ index ];\r
- }\r
- \r
- void BlendStateDescription::SetBlendEnable( UInt32 index, bool value )\r
- {\r
- ConstructLazyProperties();\r
- m_BlendEnable[ index ] = value;\r
- }\r
- \r
- ColorWriteMaskFlags BlendStateDescription::GetWriteMask( UInt32 index )\r
- {\r
- ConstructLazyProperties();\r
- return m_RenderTargetWriteMask[ index ];\r
- }\r
- \r
- void BlendStateDescription::SetWriteMask( UInt32 index, ColorWriteMaskFlags value )\r
- {\r
- ConstructLazyProperties();\r
- m_RenderTargetWriteMask[ index ] = value;\r
- }\r
-\r
- void BlendStateDescription::ConstructLazyProperties()\r
- {\r
- if( m_BlendEnable == nullptr )\r
- {\r
- m_BlendEnable = gcnew array<bool>(8);\r
- m_RenderTargetWriteMask = gcnew array<ColorWriteMaskFlags>(8);\r
- for(int index = 0; index < 8; ++index)\r
- {\r
- m_BlendEnable[ index ] = false;\r
- m_RenderTargetWriteMask[ index ] = ColorWriteMaskFlags::All;\r
- }\r
- }\r
- }\r
-\r
- bool BlendStateDescription::operator == ( BlendStateDescription left, BlendStateDescription right )\r
- {\r
- return BlendStateDescription::Equals( left, right );\r
- }\r
-\r
- bool BlendStateDescription::operator != ( BlendStateDescription left, BlendStateDescription right )\r
- {\r
- return !BlendStateDescription::Equals( left, right );\r
- }\r
-\r
- int BlendStateDescription::GetHashCode()\r
- {\r
- ConstructLazyProperties();\r
- return (\r
- m_AlphaToCoverageEnable.GetHashCode() +\r
- m_BlendEnable->GetHashCode() +\r
- m_SrcBlend.GetHashCode() +\r
- m_DestBlend.GetHashCode() +\r
- m_BlendOp.GetHashCode() +\r
- m_SrcBlendAlpha.GetHashCode() +\r
- m_DestBlendAlpha.GetHashCode() +\r
- m_BlendOpAlpha.GetHashCode() +\r
- m_RenderTargetWriteMask->GetHashCode()\r
- );\r
- }\r
-\r
- bool BlendStateDescription::Equals( Object^ value )\r
- {\r
- if( value == nullptr )\r
- return false;\r
-\r
- if( value->GetType() != GetType() )\r
- return false;\r
-\r
- return Equals( safe_cast<BlendStateDescription>( value ) );\r
- }\r
-\r
- bool BlendStateDescription::Equals( BlendStateDescription value )\r
- {\r
- ConstructLazyProperties();\r
- value.ConstructLazyProperties();\r
- return (\r
- m_AlphaToCoverageEnable == value.m_AlphaToCoverageEnable &&\r
- Utilities::CheckElementEquality( m_BlendEnable, value.m_BlendEnable ) &&\r
- m_SrcBlend == value.m_SrcBlend &&\r
- m_DestBlend == value.m_DestBlend &&\r
- m_BlendOp == value.m_BlendOp &&\r
- m_SrcBlendAlpha == value.m_SrcBlendAlpha &&\r
- m_DestBlendAlpha == value.m_DestBlendAlpha &&\r
- m_BlendOpAlpha == value.m_BlendOpAlpha &&\r
- Utilities::CheckElementEquality( m_RenderTargetWriteMask, value.m_RenderTargetWriteMask )\r
- );\r
- }\r
-\r
- bool BlendStateDescription::Equals( BlendStateDescription% value1, BlendStateDescription% value2 )\r
- {\r
- value1.ConstructLazyProperties();\r
- value2.ConstructLazyProperties();\r
- return (\r
- value1.m_AlphaToCoverageEnable == value2.m_AlphaToCoverageEnable &&\r
- Utilities::CheckElementEquality( value1.m_BlendEnable, value2.m_BlendEnable ) &&\r
- value1.m_SrcBlend == value2.m_SrcBlend &&\r
- value1.m_DestBlend == value2.m_DestBlend &&\r
- value1.m_BlendOp == value2.m_BlendOp &&\r
- value1.m_SrcBlendAlpha == value2.m_SrcBlendAlpha &&\r
- value1.m_DestBlendAlpha == value2.m_DestBlendAlpha &&\r
- value1.m_BlendOpAlpha == value2.m_BlendOpAlpha &&\r
- Utilities::CheckElementEquality( value1.m_RenderTargetWriteMask, value2.m_RenderTargetWriteMask )\r
- );\r
- }\r
-}\r
-}\r