OSDN Git Service

DTXMania089リリースに際してのtag付け。
[dtxmania/dtxmania.git] / 110401(DTXMania089) / SlimDXc_Jun2010(VC++2008) / source / dxgi / ModeDescription.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 <dxgi.h>\r
25 \r
26 #include "ModeDescription.h"\r
27 \r
28 using namespace System;\r
29 using namespace System::Globalization;\r
30 \r
31 namespace SlimDX\r
32 {\r
33 namespace DXGI\r
34 {       \r
35         ModeDescription::ModeDescription( int width, int height, Rational refreshRate, DXGI::Format format )\r
36         : m_Width( width ), m_Height( height ), m_RefreshRate( refreshRate ), m_Format( format ),\r
37                 m_ScanlineOrdering( DisplayModeScanlineOrdering::Unspecified ), m_Scaling( DisplayModeScaling::Unspecified )\r
38         {\r
39         }\r
40         \r
41         ModeDescription::ModeDescription( const DXGI_MODE_DESC& native )\r
42         {\r
43                 m_Width = native.Width;\r
44                 m_Height = native.Height;\r
45                 m_RefreshRate.Numerator = native.RefreshRate.Numerator;\r
46                 m_RefreshRate.Denominator = native.RefreshRate.Denominator;\r
47                 m_Format = static_cast<DXGI::Format>( native.Format );\r
48                 m_ScanlineOrdering = static_cast<DisplayModeScanlineOrdering>( native.ScanlineOrdering );\r
49                 m_Scaling = static_cast<DisplayModeScaling>( native.Scaling );\r
50         }\r
51 \r
52         DXGI_MODE_DESC ModeDescription::CreateNativeVersion()\r
53         {\r
54                 DXGI_MODE_DESC native;\r
55                 native.Width = m_Width;\r
56                 native.Height = m_Height;\r
57                 native.RefreshRate.Numerator = m_RefreshRate.Numerator;\r
58                 native.RefreshRate.Denominator = m_RefreshRate.Denominator;\r
59                 native.Format = static_cast<DXGI_FORMAT>( m_Format );\r
60                 native.ScanlineOrdering = static_cast<DXGI_MODE_SCANLINE_ORDER>( m_ScanlineOrdering );\r
61                 native.Scaling = static_cast<DXGI_MODE_SCALING>( m_Scaling );\r
62                 \r
63                 return native;\r
64         }\r
65 \r
66         int ModeDescription::Width::get()\r
67         {\r
68                 return m_Width;\r
69         }\r
70 \r
71         void ModeDescription::Width::set( int value )\r
72         {\r
73                 m_Width = value;\r
74         }\r
75 \r
76         int ModeDescription::Height::get()\r
77         {\r
78                 return m_Height;\r
79         }\r
80         \r
81         void ModeDescription::Height::set( int value )\r
82         {\r
83                 m_Height = value;\r
84         }\r
85         \r
86         Rational ModeDescription::RefreshRate::get()\r
87         {\r
88                 return m_RefreshRate;\r
89         }\r
90         \r
91         void ModeDescription::RefreshRate::set( Rational value )\r
92         {\r
93                 m_RefreshRate = value;\r
94         }\r
95         \r
96         DXGI::Format ModeDescription::Format::get()\r
97         {\r
98                 return m_Format;\r
99         }\r
100         \r
101         void ModeDescription::Format::set( DXGI::Format value )\r
102         {\r
103                 m_Format = value;\r
104         }\r
105         \r
106         DisplayModeScanlineOrdering ModeDescription::ScanlineOrdering::get()\r
107         {\r
108                 return m_ScanlineOrdering;\r
109         }\r
110         \r
111         void ModeDescription::ScanlineOrdering::set( DisplayModeScanlineOrdering value )\r
112         {\r
113                 m_ScanlineOrdering = value;\r
114         }\r
115         \r
116         DisplayModeScaling ModeDescription::Scaling::get()\r
117         {\r
118                 return m_Scaling;\r
119         }\r
120         \r
121         void ModeDescription::Scaling::set( DisplayModeScaling value )\r
122         {\r
123                 m_Scaling = value;\r
124         }\r
125 \r
126         String^ ModeDescription::ToString()\r
127         {\r
128                 return String::Format( CultureInfo::CurrentCulture, "{0}x{1}x{2}", m_Width, m_Height, m_RefreshRate.Denominator == 0 ? 0 : m_RefreshRate.Numerator / m_RefreshRate.Denominator );\r
129         }\r
130 \r
131         bool ModeDescription::operator == ( ModeDescription left, ModeDescription right )\r
132         {\r
133                 return ModeDescription::Equals( left, right );\r
134         }\r
135 \r
136         bool ModeDescription::operator != ( ModeDescription left, ModeDescription right )\r
137         {\r
138                 return !ModeDescription::Equals( left, right );\r
139         }\r
140 \r
141         int ModeDescription::GetHashCode()\r
142         {\r
143                 return m_Width.GetHashCode() + m_Height.GetHashCode() + m_RefreshRate.GetHashCode()\r
144                          + m_Format.GetHashCode() + m_ScanlineOrdering.GetHashCode() + m_Scaling.GetHashCode();\r
145         }\r
146 \r
147         bool ModeDescription::Equals( Object^ value )\r
148         {\r
149                 if( value == nullptr )\r
150                         return false;\r
151 \r
152                 if( value->GetType() != GetType() )\r
153                         return false;\r
154 \r
155                 return Equals( safe_cast<ModeDescription>( value ) );\r
156         }\r
157 \r
158         bool ModeDescription::Equals( ModeDescription value )\r
159         {\r
160                 return ( m_Width == value.m_Width && m_Height == value.m_Height && m_RefreshRate == value.m_RefreshRate\r
161                          && m_Format == value.m_Format && m_ScanlineOrdering == value.m_ScanlineOrdering && m_Scaling == value.m_Scaling );\r
162         }\r
163 \r
164         bool ModeDescription::Equals( ModeDescription% value1, ModeDescription% value2 )\r
165         {\r
166                 return ( value1.m_Width == value2.m_Width && value1.m_Height == value2.m_Height && value1.m_RefreshRate == value2.m_RefreshRate\r
167                          && value1.m_Format == value2.m_Format && value1.m_ScanlineOrdering == value2.m_ScanlineOrdering && value1.m_Scaling == value2.m_Scaling );\r
168         }\r
169 }\r
170 }\r