OSDN Git Service

DTXMania089リリースに際してのtag付け。
[dtxmania/dtxmania.git] / 110401(DTXMania089) / SlimDXc_Jun2010(VC++2008) / source / direct3d10 / DepthStencilViewDescription.cpp
1 #include "stdafx.h"\r
2 /*\r
3 * Copyright (c) 2007-2010 SlimDX Group\r
4\r
5 * Permission is hereby granted, free of charge, to any person obtaining a copy\r
6 * of this software and associated documentation files (the "Software"), to deal\r
7 * in the Software without restriction, including without limitation the rights\r
8 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r
9 * copies of the Software, and to permit persons to whom the Software is\r
10 * furnished to do so, subject to the following conditions:\r
11\r
12 * The above copyright notice and this permission notice shall be included in\r
13 * all copies or substantial portions of the Software.\r
14\r
15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r
16 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r
17 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r
18 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r
19 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r
20 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r
21 * THE SOFTWARE.\r
22 */\r
23 \r
24 #include <d3d10.h>\r
25 \r
26 #include "DepthStencilViewDescription.h"\r
27 \r
28 namespace SlimDX\r
29 {\r
30 namespace Direct3D10\r
31 {\r
32         DepthStencilViewDescription::DepthStencilViewDescription( const D3D10_DEPTH_STENCIL_VIEW_DESC& native )\r
33         : m_MipSlice( 0 ), m_ArraySize( 0 ), m_FirstArraySlice( 0 )\r
34         {\r
35                 m_Format = static_cast<DXGI::Format>( native.Format );\r
36                 m_ViewDimension = static_cast<DepthStencilViewDimension>( native.ViewDimension );\r
37                 switch( m_ViewDimension )\r
38                 {\r
39                         case DepthStencilViewDimension::Texture1D:\r
40                                 m_MipSlice = native.Texture1D.MipSlice;\r
41                                 break;\r
42                         case DepthStencilViewDimension::Texture1DArray:\r
43                                 m_ArraySize = native.Texture1DArray.ArraySize;\r
44                                 m_FirstArraySlice = native.Texture1DArray.FirstArraySlice;\r
45                                 m_MipSlice = native.Texture1DArray.MipSlice;\r
46                                 break;\r
47                         case DepthStencilViewDimension::Texture2D:\r
48                                 m_MipSlice = native.Texture2D.MipSlice;\r
49                                 break;\r
50                         case DepthStencilViewDimension::Texture2DArray:\r
51                                 m_ArraySize = native.Texture2DArray.ArraySize;\r
52                                 m_FirstArraySlice = native.Texture2DArray.FirstArraySlice;\r
53                                 m_MipSlice = native.Texture2DArray.MipSlice;\r
54                                 break;\r
55                         case DepthStencilViewDimension::Texture2DMultisampled:\r
56                                 // Nothing to do here.\r
57                                 break;\r
58                         case DepthStencilViewDimension::Texture2DMultisampledArray:\r
59                                 m_ArraySize = native.Texture2DMSArray.ArraySize;\r
60                                 m_FirstArraySlice = native.Texture2DMSArray.FirstArraySlice;\r
61                                 break;\r
62                         default:\r
63                                 break;\r
64                 }\r
65         }\r
66         \r
67         D3D10_DEPTH_STENCIL_VIEW_DESC DepthStencilViewDescription::CreateNativeVersion()\r
68         {\r
69                 D3D10_DEPTH_STENCIL_VIEW_DESC native;\r
70                 native.Format = static_cast<DXGI_FORMAT>( m_Format );\r
71                 native.ViewDimension = static_cast<D3D10_DSV_DIMENSION>( m_ViewDimension );\r
72                 switch( m_ViewDimension )\r
73                 {\r
74                         case DepthStencilViewDimension::Texture1D:\r
75                                 native.Texture1D.MipSlice = m_MipSlice;\r
76                                 break;\r
77                         case DepthStencilViewDimension::Texture1DArray:\r
78                                 native.Texture1DArray.ArraySize = m_ArraySize;\r
79                                 native.Texture1DArray.FirstArraySlice = m_FirstArraySlice;\r
80                                 native.Texture1DArray.MipSlice = m_MipSlice;\r
81                                 break;\r
82                         case DepthStencilViewDimension::Texture2D:\r
83                                 native.Texture2D.MipSlice = m_MipSlice;\r
84                                 break;\r
85                         case DepthStencilViewDimension::Texture2DArray:\r
86                                 native.Texture2DArray.ArraySize = m_ArraySize;\r
87                                 native.Texture2DArray.FirstArraySlice = m_FirstArraySlice;\r
88                                 native.Texture2DArray.MipSlice = m_MipSlice;\r
89                                 break;\r
90                         case DepthStencilViewDimension::Texture2DMultisampled:\r
91                                 // Nothing to do here.\r
92                                 break;\r
93                         case DepthStencilViewDimension::Texture2DMultisampledArray:\r
94                                 native.Texture2DMSArray.ArraySize = m_ArraySize;\r
95                                 native.Texture2DMSArray.FirstArraySlice = m_FirstArraySlice;\r
96                                 break;\r
97                         default:\r
98                                 break;\r
99                 }\r
100                 \r
101                 return native;\r
102         }\r
103 \r
104         DXGI::Format DepthStencilViewDescription::Format::get()\r
105         {\r
106                 return m_Format;\r
107         }\r
108 \r
109         void DepthStencilViewDescription::Format::set( DXGI::Format value )\r
110         {\r
111                 m_Format = value;\r
112         }\r
113         \r
114         DepthStencilViewDimension DepthStencilViewDescription::Dimension::get()\r
115         {\r
116                 return m_ViewDimension;\r
117         }\r
118 \r
119         void DepthStencilViewDescription::Dimension::set( DepthStencilViewDimension value )\r
120         {\r
121                 m_ViewDimension = value;\r
122         }\r
123 \r
124         int DepthStencilViewDescription::MipSlice::get()\r
125         {\r
126                 return m_MipSlice;\r
127         }\r
128 \r
129         void DepthStencilViewDescription::MipSlice::set( int value )\r
130         {\r
131                 m_MipSlice = value;\r
132         }\r
133         \r
134         int DepthStencilViewDescription::ArraySize::get()\r
135         {\r
136                 return m_ArraySize;\r
137         }\r
138 \r
139         void DepthStencilViewDescription::ArraySize::set( int value )\r
140         {\r
141                 m_ArraySize = value;\r
142         }\r
143         \r
144         int DepthStencilViewDescription::FirstArraySlice::get()\r
145         {\r
146                 return m_FirstArraySlice;\r
147         }\r
148 \r
149         void DepthStencilViewDescription::FirstArraySlice::set( int value )\r
150         {\r
151                 m_FirstArraySlice = value;\r
152         }\r
153 \r
154         bool DepthStencilViewDescription::operator == ( DepthStencilViewDescription left, DepthStencilViewDescription right )\r
155         {\r
156                 return DepthStencilViewDescription::Equals( left, right );\r
157         }\r
158 \r
159         bool DepthStencilViewDescription::operator != ( DepthStencilViewDescription left, DepthStencilViewDescription right )\r
160         {\r
161                 return !DepthStencilViewDescription::Equals( left, right );\r
162         }\r
163 \r
164         int DepthStencilViewDescription::GetHashCode()\r
165         {\r
166                 return m_Format.GetHashCode() + m_ViewDimension.GetHashCode() + m_MipSlice.GetHashCode()\r
167                          + m_FirstArraySlice.GetHashCode() + m_ArraySize.GetHashCode();\r
168         }\r
169 \r
170         bool DepthStencilViewDescription::Equals( Object^ value )\r
171         {\r
172                 if( value == nullptr )\r
173                         return false;\r
174 \r
175                 if( value->GetType() != GetType() )\r
176                         return false;\r
177 \r
178                 return Equals( safe_cast<DepthStencilViewDescription>( value ) );\r
179         }\r
180 \r
181         bool DepthStencilViewDescription::Equals( DepthStencilViewDescription value )\r
182         {\r
183                 return ( m_Format == value.m_Format && m_ViewDimension == value.m_ViewDimension && m_MipSlice == value.m_MipSlice\r
184                          && m_FirstArraySlice == value.m_FirstArraySlice && m_ArraySize == value.m_ArraySize );\r
185         }\r
186 \r
187         bool DepthStencilViewDescription::Equals( DepthStencilViewDescription% value1, DepthStencilViewDescription% value2 )\r
188         {\r
189                 return ( value1.m_Format == value2.m_Format && value1.m_ViewDimension == value2.m_ViewDimension && value1.m_MipSlice == value2.m_MipSlice\r
190                          && value1.m_FirstArraySlice == value2.m_FirstArraySlice && value1.m_ArraySize == value2.m_ArraySize );\r
191         }\r
192 }\r
193 }\r