OSDN Git Service

Merge branch 'feature/37178_プロジェクトとソリューションファイルの英語化' into develop
[dtxmania/dtxmania.git] / FDK / コード / 01.フレームワーク / DeviceSettings / ConversionMethods.cs
diff --git a/FDK/コード/01.フレームワーク/DeviceSettings/ConversionMethods.cs b/FDK/コード/01.フレームワーク/DeviceSettings/ConversionMethods.cs
new file mode 100644 (file)
index 0000000..88a35e9
--- /dev/null
@@ -0,0 +1,204 @@
+/*
+* Copyright (c) 2007-2009 SlimDX Group
+* 
+* Permission is hereby granted, free of charge, to any person obtaining a copy
+* of this software and associated documentation files (the "Software"), to deal
+* in the Software without restriction, including without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+* 
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+* 
+* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+* THE SOFTWARE.
+*/
+using SharpDX;
+using SharpDX.Direct3D9;
+using DXGI = SharpDX.DXGI;
+
+namespace SampleFramework
+{
+    static class ConversionMethods
+    {
+        public static int GetDepthBits(Format format)
+        {
+            switch (format)
+            {
+                case Format.D32SingleLockable:
+                case Format.D32:
+                    return 32;
+
+                case Format.D24X8:
+                case Format.D24S8:
+                case Format.D24X4S4:
+                case Format.D24SingleS8:
+                    return 24;
+
+                case Format.D16Lockable:
+                case Format.D16:
+                    return 16;
+
+                case Format.D15S1:
+                    return 15;
+
+                default:
+                    return 0;
+            }
+        }
+
+        public static int GetStencilBits(Format format)
+        {
+            switch (format)
+            {
+                case Format.D15S1:
+                    return 1;
+
+                case Format.D24X4S4:
+                    return 4;
+
+                case Format.D24S8:
+                case Format.D24SingleS8:
+                    return 8;
+
+                default:
+                    return 0;
+            }
+        }
+
+        public static int GetColorBits(Format format)
+        {
+            switch (format)
+            {
+                case Format.R8G8B8:
+                case Format.A8R8G8B8:
+                case Format.A8B8G8R8:
+                case Format.X8R8G8B8:
+                    return 8;
+
+                case Format.R5G6B5:
+                case Format.X1R5G5B5:
+                case Format.A1R5G5B5:
+                    return 5;
+
+                case Format.A4R4G4B4:
+                case Format.X4R4G4B4:
+                    return 4;
+
+                case Format.R3G3B2:
+                case Format.A8R3G3B2:
+                    return 2;
+
+                case Format.A2R10G10B10:
+                case Format.A2B10G10R10:
+                    return 10;
+
+                case Format.A16B16G16R16:
+                    return 16;
+
+                default:
+                    return 0;
+            }
+        }
+
+        public static int GetColorBits(DXGI.Format format)
+        {
+            switch (format)
+            {
+                case DXGI.Format.R32G32B32A32_Float:
+                case DXGI.Format.R32G32B32A32_SInt:
+                case DXGI.Format.R32G32B32A32_Typeless:
+                case DXGI.Format.R32G32B32A32_UInt:
+                case DXGI.Format.R32G32B32_Float:
+                case DXGI.Format.R32G32B32_SInt:
+                case DXGI.Format.R32G32B32_Typeless:
+                case DXGI.Format.R32G32B32_UInt:
+                    return 32;
+
+                case DXGI.Format.R16G16B16A16_Float:
+                case DXGI.Format.R16G16B16A16_SInt:
+                case DXGI.Format.R16G16B16A16_SNorm:
+                case DXGI.Format.R16G16B16A16_Typeless:
+                case DXGI.Format.R16G16B16A16_UInt:
+                case DXGI.Format.R16G16B16A16_UNorm:
+                    return 16;
+
+                case DXGI.Format.R10G10B10A2_Typeless:
+                case DXGI.Format.R10G10B10A2_UInt:
+                case DXGI.Format.R10G10B10A2_UNorm:
+                    return 10;
+
+                case DXGI.Format.R8G8B8A8_SInt:
+                case DXGI.Format.R8G8B8A8_SNorm:
+                case DXGI.Format.R8G8B8A8_Typeless:
+                case DXGI.Format.R8G8B8A8_UInt:
+                case DXGI.Format.R8G8B8A8_UNorm:
+                case DXGI.Format.R8G8B8A8_UNorm_SRgb:
+                    return 8;
+
+                case DXGI.Format.B5G5R5A1_UNorm:
+                case DXGI.Format.B5G6R5_UNorm:
+                    return 5;
+
+                default:
+                    return 0;
+            }
+        }
+
+        public static MultisampleType ToDirect3D9(int type)
+        {
+            return (MultisampleType)type;
+        }
+
+        public static Format ToDirect3D9(DXGI.Format format)
+        {
+            switch (format)
+            {
+                case DXGI.Format.R8G8B8A8_UNorm:
+                    return Format.A8R8G8B8;
+                case DXGI.Format.B5G6R5_UNorm:
+                    return Format.R5G6B5;
+                case DXGI.Format.B5G5R5A1_UNorm:
+                    return Format.A1R5G5B5;
+                case DXGI.Format.A8_UNorm:
+                    return Format.A8;
+                case DXGI.Format.R10G10B10A2_UNorm:
+                    return Format.A2B10G10R10;
+                case DXGI.Format.B8G8R8A8_UNorm:
+                    return Format.A8B8G8R8;
+                case DXGI.Format.R16G16_UNorm:
+                    return Format.G16R16;
+                case DXGI.Format.R16G16B16A16_UNorm:
+                    return Format.A16B16G16R16;
+                case DXGI.Format.R16_Float:
+                    return Format.R16F;
+                case DXGI.Format.R16G16_Float:
+                    return Format.G16R16F;
+                case DXGI.Format.R16G16B16A16_Float:
+                    return Format.A16B16G16R16F;
+                case DXGI.Format.R32_Float:
+                    return Format.R32F;
+                case DXGI.Format.R32G32_Float:
+                    return Format.G32R32F;
+                case DXGI.Format.R32G32B32A32_Float:
+                    return Format.A32B32G32R32F;
+            }
+
+            return Format.Unknown;
+        }
+
+        public static float ToFloat(DXGI.Rational rational)
+        {
+            float denom = 1;
+            if (rational.Denominator != 0)
+                denom = rational.Denominator;
+            return rational.Numerator / denom;
+        }
+    }
+}