OSDN Git Service

・ 「DTXCreatorプロジェクト」と「実行時フォルダ(DTXCreator)」を trunk/ に追加。
[dtxmania/dtxmania.git] / DTXCreatorプロジェクト / コード / 05.譜面 / Cチップ.cs
1 using System;\r
2 using System.Collections.Generic;\r
3 using System.Text;\r
4 using System.Drawing;\r
5 using FDK;\r
6 \r
7 namespace DTXCreator.譜面\r
8 {\r
9         public class Cチップ : IComparable<Cチップ>\r
10         {\r
11                 public bool bドラッグで選択中;\r
12                 public bool b移動済;\r
13                 public bool b確定選択中;\r
14                 public bool b裏;\r
15                 public float f値・浮動小数;\r
16                 public int n移動開始時のレーン番号0to;\r
17                 public int n移動開始時の小節内の位置grid;\r
18                 public int n移動開始時の小節番号0to;\r
19                 public int n読み込み時の解像度 = 0xc0;\r
20                 public int n枠外レーン数;\r
21                 public int nチャンネル番号00toFF\r
22                 {\r
23                         get\r
24                         {\r
25                                 return this._nチャンネル番号00toFF;\r
26                         }\r
27                         set\r
28                         {\r
29                                 if( ( value < 0 ) || ( value > 0xff ) )\r
30                                 {\r
31                                         throw new Exception( "値が範囲(0~255)を超えています。-->[" + value + "]" );\r
32                                 }\r
33                                 this._nチャンネル番号00toFF = value;\r
34                         }\r
35                 }\r
36                 public int nレーン番号0to\r
37                 {\r
38                         get\r
39                         {\r
40                                 return this._nレーン番号0to;\r
41                         }\r
42                         set\r
43                         {\r
44                                 if( value < 0 )\r
45                                 {\r
46                                         throw new Exception( "値が範囲を超えています。-->[" + value + "]" );\r
47                                 }\r
48                                 this._nレーン番号0to = value;\r
49                         }\r
50                 }\r
51                 public int n位置grid\r
52                 {\r
53                         get\r
54                         {\r
55                                 return this._n位置grid;\r
56                         }\r
57                         set\r
58                         {\r
59                                 this._n位置grid = value;\r
60                         }\r
61                 }\r
62                 public int n値・整数1to1295\r
63                 {\r
64                         get\r
65                         {\r
66                                 return this._n値・整数1to1295;\r
67                         }\r
68                         set\r
69                         {\r
70                                 if( ( value < 0 ) || ( value > 0x50f ) )\r
71                                 {\r
72                                         throw new Exception( "値が範囲(0~1295)を超えています。-->[" + value + "]" );\r
73                                 }\r
74                                 this._n値・整数1to1295 = value;\r
75                         }\r
76                 }\r
77                 public static readonly int nチップの高さdot = 9;\r
78                 \r
79                 public int CompareTo( Cチップ other )\r
80                 {\r
81                         return ( this.n位置grid - other.n位置grid );\r
82                 }\r
83                 public static void tOPENチップを描画する( Graphics g, Rectangle rcチップ描画領域 )\r
84                 {\r
85                         t表チップを描画する・本体( g, rcチップ描画領域, Color.White );\r
86                         string str = "O P E N";\r
87                         t表チップを描画する・番号( g, rcチップ描画領域, str );\r
88                 }\r
89                 public void tコピーfrom( Cチップ ccコピー元 )\r
90                 {\r
91                         this._nチャンネル番号00toFF = ccコピー元._nチャンネル番号00toFF;\r
92                         this._nレーン番号0to = ccコピー元._nレーン番号0to;\r
93                         this._n値・整数1to1295 = ccコピー元._n値・整数1to1295;\r
94                         this.f値・浮動小数 = ccコピー元.f値・浮動小数;\r
95                         this._n位置grid = ccコピー元._n位置grid;\r
96                         this.b裏 = ccコピー元.b裏;\r
97                         this.bドラッグで選択中 = ccコピー元.bドラッグで選択中;\r
98                         this.b確定選択中 = ccコピー元.b確定選択中;\r
99                         this.n読み込み時の解像度 = ccコピー元.n読み込み時の解像度;\r
100                         this.b移動済 = ccコピー元.b移動済;\r
101                         this.n枠外レーン数 = ccコピー元.n枠外レーン数;\r
102                         this.n移動開始時の小節番号0to = ccコピー元.n移動開始時の小節番号0to;\r
103                         this.n移動開始時のレーン番号0to = ccコピー元.n移動開始時のレーン番号0to;\r
104                         this.n移動開始時の小節内の位置grid = ccコピー元.n移動開始時の小節内の位置grid;\r
105                 }\r
106                 public static void tチップの周囲の太枠を描画する( Graphics g, Rectangle rcチップ描画領域 )\r
107                 {\r
108                         Pen pen = new Pen( Color.White, 2f );\r
109                         g.DrawRectangle( pen, rcチップ描画領域 );\r
110                         pen.Dispose();\r
111                 }\r
112                 public static void t表チップを描画する( Graphics g, Rectangle rcチップ描画領域, int nチップ番号, Color col色 )\r
113                 {\r
114                         t表チップを描画する・本体( g, rcチップ描画領域, col色 );\r
115                         if( nチップ番号 >= 0 )\r
116                         {\r
117                                 string str = C変換.str数値を36進数2桁に変換して返す( nチップ番号 );\r
118                                 str = str[ 0 ] + " " + str[ 1 ];\r
119                                 t表チップを描画する・番号( g, rcチップ描画領域, str );\r
120                         }\r
121                 }\r
122                 public static void t表チップを描画する( Graphics g, Rectangle rcチップ描画領域, float fチップ数値, Color col色 )\r
123                 {\r
124                         t表チップを描画する・本体( g, rcチップ描画領域, col色 );\r
125                         if( fチップ数値 >= 0f )\r
126                         {\r
127                                 string str = fチップ数値.ToString();\r
128                                 t表チップを描画する・番号( g, rcチップ描画領域, str );\r
129                         }\r
130                 }\r
131                 public static void t裏チップを描画する( Graphics g, Rectangle rcチップ描画領域, int nチップ番号, Color col色 )\r
132                 {\r
133                         t裏チップを描画する・本体( g, rcチップ描画領域, col色 );\r
134                         if( nチップ番号 >= 0 )\r
135                         {\r
136                                 string str = C変換.str数値を36進数2桁に変換して返す( nチップ番号 );\r
137                                 str = str[ 0 ] + " " + str[ 1 ];\r
138                                 t裏チップを描画する・番号( g, rcチップ描画領域, str );\r
139                         }\r
140                 }\r
141                 public static void t裏チップを描画する( Graphics g, Rectangle rcチップ描画領域, float fチップ数値, Color col色 )\r
142                 {\r
143                         t裏チップを描画する・本体( g, rcチップ描画領域, col色 );\r
144                         if( fチップ数値 >= 0f )\r
145                         {\r
146                                 string str = fチップ数値.ToString();\r
147                                 t裏チップを描画する・番号( g, rcチップ描画領域, str );\r
148                         }\r
149                 }\r
150 \r
151                 protected static Font ftチップ文字用フォント = new Font( "MS Gothic", 8f, FontStyle.Bold );\r
152 \r
153                 #region [ private ]\r
154                 //-----------------\r
155                 private int _nチャンネル番号00toFF;\r
156                 private int _nレーン番号0to;\r
157                 private int _n位置grid;\r
158                 private int _n値・整数1to1295;\r
159 \r
160                 private static void t表チップを描画する・番号( Graphics g, Rectangle rcチップ描画領域, string str番号文字列 )\r
161                 {\r
162                         StringFormat format = new StringFormat();\r
163                         format.Alignment = StringAlignment.Center;\r
164                         format.LineAlignment = StringAlignment.Near;\r
165                         RectangleF layoutRectangle = new RectangleF();\r
166                         layoutRectangle.X = rcチップ描画領域.X;\r
167                         layoutRectangle.Y = rcチップ描画領域.Y + 1;\r
168                         layoutRectangle.Width = rcチップ描画領域.Width;\r
169                         layoutRectangle.Height = rcチップ描画領域.Height;\r
170                         g.DrawString( str番号文字列, ftチップ文字用フォント, Brushes.Black, layoutRectangle, format );\r
171                         layoutRectangle.X--;\r
172                         layoutRectangle.Y--;\r
173                         g.DrawString( str番号文字列, ftチップ文字用フォント, Brushes.White, layoutRectangle, format );\r
174                 }\r
175                 private static void t表チップを描画する・本体( Graphics g, Rectangle rcチップ描画領域, Color col色 )\r
176                 {\r
177                         SolidBrush brush = new SolidBrush( Color.FromArgb( 0x80, col色.R, col色.G, col色.B ) );\r
178                         Pen pen = new Pen( Color.FromArgb( 0xff, col色.R, col色.G, col色.B ) );\r
179                         Pen pen2 = new Pen( Color.FromArgb( 0x40, col色.R, col色.G, col色.B ) );\r
180                         g.FillRectangle( brush, rcチップ描画領域 );\r
181                         g.DrawLine( pen, rcチップ描画領域.X, rcチップ描画領域.Y, rcチップ描画領域.Right, rcチップ描画領域.Y );\r
182                         g.DrawLine( pen, rcチップ描画領域.X, rcチップ描画領域.Y, rcチップ描画領域.X, rcチップ描画領域.Bottom );\r
183                         g.DrawLine( pen2, rcチップ描画領域.X, rcチップ描画領域.Bottom, rcチップ描画領域.Right, rcチップ描画領域.Bottom );\r
184                         g.DrawLine( pen2, rcチップ描画領域.Right, rcチップ描画領域.Bottom, rcチップ描画領域.Right, rcチップ描画領域.Y );\r
185                         brush.Dispose();\r
186                         pen.Dispose();\r
187                         pen2.Dispose();\r
188                 }\r
189                 private static void t裏チップを描画する・番号( Graphics g, Rectangle rcチップ描画領域, string str番号文字列 )\r
190                 {\r
191                         StringFormat format = new StringFormat();\r
192                         format.Alignment = StringAlignment.Center;\r
193                         format.LineAlignment = StringAlignment.Near;\r
194                         RectangleF layoutRectangle = new RectangleF();\r
195                         layoutRectangle.X = rcチップ描画領域.X;\r
196                         layoutRectangle.Y = rcチップ描画領域.Y + 1;\r
197                         layoutRectangle.Width = rcチップ描画領域.Width;\r
198                         layoutRectangle.Height = rcチップ描画領域.Height;\r
199                         g.DrawString( str番号文字列, ftチップ文字用フォント, Brushes.Black, layoutRectangle, format );\r
200                         layoutRectangle.X--;\r
201                         layoutRectangle.Y--;\r
202                         g.DrawString( str番号文字列, ftチップ文字用フォント, Brushes.White, layoutRectangle, format );\r
203                 }\r
204                 private static void t裏チップを描画する・本体( Graphics g, Rectangle rcチップ描画領域, Color col色 )\r
205                 {\r
206                         rcチップ描画領域.Width -= 8;\r
207                         rcチップ描画領域.Height -= 2;\r
208                         rcチップ描画領域.X += 4;\r
209                         rcチップ描画領域.Y++;\r
210                         SolidBrush brush = new SolidBrush( Color.FromArgb( 80, col色.R, col色.G, col色.B ) );\r
211                         Pen pen = new Pen( Color.FromArgb( 180, col色.R, col色.G, col色.B ) );\r
212                         Pen pen2 = new Pen( Color.FromArgb( 0x2c, col色.R, col色.G, col色.B ) );\r
213                         g.FillRectangle( brush, rcチップ描画領域 );\r
214                         g.DrawLine( pen, rcチップ描画領域.X, rcチップ描画領域.Y, rcチップ描画領域.Right, rcチップ描画領域.Y );\r
215                         g.DrawLine( pen, rcチップ描画領域.X, rcチップ描画領域.Y, rcチップ描画領域.X, rcチップ描画領域.Bottom );\r
216                         g.DrawLine( pen2, rcチップ描画領域.X, rcチップ描画領域.Bottom, rcチップ描画領域.Right, rcチップ描画領域.Bottom );\r
217                         g.DrawLine( pen2, rcチップ描画領域.Right, rcチップ描画領域.Bottom, rcチップ描画領域.Right, rcチップ描画領域.Y );\r
218                         brush.Dispose();\r
219                         pen.Dispose();\r
220                         pen2.Dispose();\r
221                 }\r
222                 //-----------------\r
223                 #endregion\r
224         }\r
225 }\r