OSDN Git Service

98575fe289b4db8f04faf5d632453e09057ea3cf
[dtxmania/dtxmania.git] / DTXMania / コード / 全体 / TextureFactory.cs
1 using System;
2 using System.Diagnostics;
3 using System.IO;
4 using FDK;
5 using System.Drawing;
6
7 namespace DTXMania
8 {
9         public class TextureFactory
10         {
11
12                 #region [ 汎用ヘルパー ]
13                 //-----------------
14                 #region [ tテクスチャの生成 ]
15                 public static CTexture tテクスチャの生成(string fileName)
16                 {
17                         return tテクスチャの生成(fileName, false);
18                 }
19
20                 public static CTexture tテクスチャの生成(string fileName, bool b黒を透過する)
21                 {
22                         if (CDTXMania.Instance == null)
23                         {
24                                 return null;
25                         }
26                         try
27                         {
28                                 return new CTexture(CDTXMania.Instance.Device, fileName, CDTXMania.Instance.TextureFormat, b黒を透過する);
29                         }
30                         catch (CTextureCreateFailedException)
31                         {
32                                 Trace.TraceError("テクスチャの生成に失敗しました。({0})", fileName);
33                                 return null;
34                         }
35                         catch (FileNotFoundException)
36                         {
37                                 Trace.TraceError("テクスチャファイルが見つかりませんでした。({0})", fileName);
38                                 return null;
39                         }
40                 }
41
42                 public static CTextureAf tテクスチャの生成Af(string fileName)
43                 {
44                         return tテクスチャの生成Af(fileName, false);
45                 }
46
47                 public static CTextureAf tテクスチャの生成Af(string fileName, bool b黒を透過する)
48                 {
49                         if (CDTXMania.Instance == null)
50                         {
51                                 return null;
52                         }
53                         try
54                         {
55                                 return new CTextureAf(CDTXMania.Instance.Device, fileName, CDTXMania.Instance.TextureFormat, b黒を透過する);
56                         }
57                         catch (CTextureCreateFailedException)
58                         {
59                                 Trace.TraceError("テクスチャの生成に失敗しました。({0})", fileName);
60                                 return null;
61                         }
62                         catch (FileNotFoundException)
63                         {
64                                 Trace.TraceError("テクスチャファイルが見つかりませんでした。({0})", fileName);
65                                 return null;
66                         }
67                 }
68
69                 public static void tテクスチャの解放(ref CTexture tx)
70                 {
71                         t安全にDisposeする(ref tx);
72                 }
73
74                 public static void tテクスチャの解放(ref CTextureAf tx)
75                 {
76                         t安全にDisposeする(ref tx);
77                 }
78
79                 public static CTexture tテクスチャの生成(byte[] txData)
80                 {
81                         return tテクスチャの生成(txData, false);
82                 }
83
84                 public static CTexture tテクスチャの生成(byte[] txData, bool b黒を透過する)
85                 {
86                         if (CDTXMania.Instance == null)
87                         {
88                                 return null;
89                         }
90                         if (txData == null)
91                         {
92                                 Trace.TraceError("テクスチャの生成に失敗しました。(txData==null)");
93                                 return null;
94                         }
95                         try
96                         {
97                                 return new CTexture(CDTXMania.Instance.Device, txData, CDTXMania.Instance.TextureFormat, b黒を透過する);
98                         }
99                         catch (CTextureCreateFailedException)
100                         {
101                                 Trace.TraceError("テクスチャの生成に失敗しました。(txData)");
102                                 return null;
103                         }
104                 }
105
106                 public static CTexture tテクスチャの生成(Bitmap bitmap)
107                 {
108                         return tテクスチャの生成(bitmap, false);
109                 }
110
111                 public static CTexture tテクスチャの生成(Bitmap bitmap, bool b黒を透過する)
112                 {
113                         if (CDTXMania.Instance == null)
114                         {
115                                 return null;
116                         }
117                         if (bitmap == null)
118                         {
119                                 Trace.TraceError("テクスチャの生成に失敗しました。(bitmap==null)");
120                                 return null;
121                         }
122                         try
123                         {
124                                 return new CTexture(CDTXMania.Instance.Device, bitmap, CDTXMania.Instance.TextureFormat, b黒を透過する);
125                         }
126                         catch (CTextureCreateFailedException)
127                         {
128                                 Trace.TraceError("テクスチャの生成に失敗しました。(bitmap:{0}x{1} )", bitmap.Width, bitmap.Height);
129                                 return null;
130                         }
131                 }
132                 #endregion
133
134                 /// <summary>プロパティ、インデクサには ref は使用できないので注意。</summary>
135                 public static void t安全にDisposeする<T>(ref T obj)
136                 {
137                         if (obj == null)
138                                 return;
139
140                         var d = obj as IDisposable;
141
142                         if (d != null)
143                                 d.Dispose();
144
145                         obj = default(T);
146                 }
147                 //-----------------
148                 #endregion
149         }
150 }