+++ /dev/null
-using System;\r
-using System.Collections.Generic;\r
-using System.Text;\r
-using System.Drawing;\r
-using FDK;\r
-\r
-namespace DTXCreator.譜面\r
-{\r
- public class Cチップ : IComparable<Cチップ>\r
- {\r
- public bool bドラッグで選択中;\r
- public bool b移動済;\r
- public bool b確定選択中;\r
- public bool b裏;\r
- public float f値_浮動小数;\r
- public int n移動開始時のレーン番号0to;\r
- public int n移動開始時の小節内の位置grid;\r
- public int n移動開始時の小節番号0to;\r
- public int n読み込み時の解像度 = 0xc0;\r
- public int n枠外レーン数;\r
- public int nチャンネル番号00toFF\r
- {\r
- get\r
- {\r
- return this._nチャンネル番号00toFF;\r
- }\r
- set\r
- {\r
- if( ( value < 0 ) || ( value > 0xff ) )\r
- {\r
- throw new Exception( "値が範囲(0~255)を超えています。-->[" + value + "]" );\r
- }\r
- this._nチャンネル番号00toFF = value;\r
- }\r
- }\r
- public int nレーン番号0to\r
- {\r
- get\r
- {\r
- return this._nレーン番号0to;\r
- }\r
- set\r
- {\r
- if( value < 0 )\r
- {\r
- throw new Exception( "値が範囲を超えています。-->[" + value + "]" );\r
- }\r
- this._nレーン番号0to = value;\r
- }\r
- }\r
- public int n位置grid\r
- {\r
- get\r
- {\r
- return this._n位置grid;\r
- }\r
- set\r
- {\r
- this._n位置grid = value;\r
- }\r
- }\r
- public int n値_整数1to1295\r
- {\r
- get\r
- {\r
- return this._n値_整数1to1295;\r
- }\r
- set\r
- {\r
- if( ( value < 0 ) || ( value > 36 * 36 - 1 ) )\r
- {\r
- throw new Exception( "値が範囲(0~1295)を超えています。-->[" + value + "]" );\r
- }\r
- this._n値_整数1to1295 = value;\r
- }\r
- }\r
- public static readonly int nチップの高さdot = 9;\r
- \r
- public int CompareTo( Cチップ other )\r
- {\r
- return ( this.n位置grid - other.n位置grid );\r
- }\r
- public static void tOPENチップを描画する( Graphics g, Rectangle rcチップ描画領域 )\r
- {\r
- t表チップを描画する_本体( g, rcチップ描画領域, Color.White );\r
- string str = "O P E N";\r
- t表チップを描画する_番号( g, rcチップ描画領域, str );\r
- }\r
- public void tコピーfrom( Cチップ ccコピー元 )\r
- {\r
- this._nチャンネル番号00toFF = ccコピー元._nチャンネル番号00toFF;\r
- this._nレーン番号0to = ccコピー元._nレーン番号0to;\r
- this._n値_整数1to1295 = ccコピー元._n値_整数1to1295;\r
- this.f値_浮動小数 = ccコピー元.f値_浮動小数;\r
- this._n位置grid = ccコピー元._n位置grid;\r
- this.b裏 = ccコピー元.b裏;\r
- this.bドラッグで選択中 = ccコピー元.bドラッグで選択中;\r
- this.b確定選択中 = ccコピー元.b確定選択中;\r
- this.n読み込み時の解像度 = ccコピー元.n読み込み時の解像度;\r
- this.b移動済 = ccコピー元.b移動済;\r
- this.n枠外レーン数 = ccコピー元.n枠外レーン数;\r
- this.n移動開始時の小節番号0to = ccコピー元.n移動開始時の小節番号0to;\r
- this.n移動開始時のレーン番号0to = ccコピー元.n移動開始時のレーン番号0to;\r
- this.n移動開始時の小節内の位置grid = ccコピー元.n移動開始時の小節内の位置grid;\r
- }\r
- public static void tチップの周囲の太枠を描画する( Graphics g, Rectangle rcチップ描画領域 )\r
- {\r
- Pen pen = new Pen( Color.White, 2f );\r
- g.DrawRectangle( pen, rcチップ描画領域 );\r
- pen.Dispose();\r
- }\r
- public static void t表チップを描画する( Graphics g, Rectangle rcチップ描画領域, int nチップ番号, Color col色 )\r
- {\r
- t表チップを描画する( g, rcチップ描画領域, nチップ番号, col色, Cレーン.E種別.WAV ); // とにかくCレーン.E種別.BEAT以外を指定する\r
- }\r
- public static void t表チップを描画する( Graphics g, Rectangle rcチップ描画領域, int nチップ番号, Color col色, Cレーン.E種別 e種別 )\r
- {\r
- if ( e種別 == Cレーン.E種別.BEAT )\r
- {\r
- t表チップを描画する_本体( g, rcチップ描画領域, col色, e種別 );\r
- }\r
- else\r
- {\r
- t表チップを描画する_本体( g, rcチップ描画領域, col色 );\r
- if ( nチップ番号 >= 0 )\r
- {\r
- string str = C変換.str数値を36進数2桁に変換して返す( nチップ番号 );\r
- str = str[ 0 ] + " " + str[ 1 ];\r
- t表チップを描画する_番号( g, rcチップ描画領域, str );\r
- }\r
- }\r
- }\r
- public static void t表チップを描画する( Graphics g, Rectangle rcチップ描画領域, float fチップ数値, Color col色 )\r
- {\r
- t表チップを描画する_本体( g, rcチップ描画領域, col色 );\r
- if( fチップ数値 >= 0f )\r
- {\r
- string str = fチップ数値.ToString();\r
- t表チップを描画する_番号( g, rcチップ描画領域, str );\r
- }\r
- }\r
- public static void t裏チップを描画する( Graphics g, Rectangle rcチップ描画領域, int nチップ番号, Color col色 )\r
- {\r
- t裏チップを描画する( g, rcチップ描画領域, nチップ番号, col色, Cレーン.E種別.WAV ); // とにかくCレーン.E種別.BEAT以外を指定する\r
- }\r
- public static void t裏チップを描画する( Graphics g, Rectangle rcチップ描画領域, int nチップ番号, Color col色, Cレーン.E種別 e種別 )\r
- {\r
- t裏チップを描画する_本体( g, rcチップ描画領域, col色, e種別 );\r
-\r
- if ( e種別 == Cレーン.E種別.BEAT )\r
- {\r
- t裏チップを描画する_本体( g, rcチップ描画領域, col色, e種別 );\r
- }\r
- else\r
- {\r
- t裏チップを描画する_本体( g, rcチップ描画領域, col色 );\r
- if ( nチップ番号 >= 0 )\r
- {\r
- string str = C変換.str数値を36進数2桁に変換して返す( nチップ番号 );\r
- str = str[ 0 ] + " " + str[ 1 ];\r
- t裏チップを描画する_番号( g, rcチップ描画領域, str );\r
- }\r
- }\r
- \r
- }\r
- public static void t裏チップを描画する( Graphics g, Rectangle rcチップ描画領域, float fチップ数値, Color col色 )\r
- {\r
- t裏チップを描画する_本体( g, rcチップ描画領域, col色 );\r
- if( fチップ数値 >= 0f )\r
- {\r
- string str = fチップ数値.ToString();\r
- t裏チップを描画する_番号( g, rcチップ描画領域, str );\r
- }\r
- }\r
- protected static Font ftチップ文字用フォント = new Font( "MS Gothic", 8f, FontStyle.Bold );\r
-\r
- #region [ private ]\r
- //-----------------\r
- private int _nチャンネル番号00toFF;\r
- private int _nレーン番号0to;\r
- private int _n位置grid;\r
- private int _n値_整数1to1295;\r
-\r
- private static void t表チップを描画する_番号( Graphics g, Rectangle rcチップ描画領域, string str番号文字列 )\r
- {\r
- tチップを描画する_番号( g, rcチップ描画領域, str番号文字列, false );\r
- }\r
-\r
- // BEATレーン専用; ●を書く\r
- private static void t表チップを描画する_本体( Graphics g, Rectangle rcチップ描画領域, Color col色, Cレーン.E種別 e種別 )\r
- {\r
- if ( e種別 == Cレーン.E種別.BEAT )\r
- {\r
- tチップを描画する_本体( g, rcチップ描画領域, col色, false, true );\r
- }\r
- else\r
- {\r
- tチップを描画する_本体( g, rcチップ描画領域, col色, false, false );\r
- }\r
- }\r
- private static void t表チップを描画する_本体( Graphics g, Rectangle rcチップ描画領域, Color col色 )\r
- {\r
- tチップを描画する_本体( g, rcチップ描画領域, col色, false, false );\r
- }\r
- private static void t裏チップを描画する_番号( Graphics g, Rectangle rcチップ描画領域, string str番号文字列 )\r
- {\r
- tチップを描画する_番号( g, rcチップ描画領域, str番号文字列, true );\r
- }\r
-\r
- // BEATレーン専用; ●を書く\r
- private static void t裏チップを描画する_本体( Graphics g, Rectangle rcチップ描画領域, Color col色, Cレーン.E種別 e種別 )\r
- {\r
- if ( e種別 == Cレーン.E種別.BEAT )\r
- {\r
- tチップを描画する_本体( g, rcチップ描画領域, col色, true, true );\r
- }\r
- else\r
- {\r
- tチップを描画する_本体( g, rcチップ描画領域, col色, true, false );\r
- }\r
- }\r
- private static void t裏チップを描画する_本体( Graphics g, Rectangle rcチップ描画領域, Color col色 )\r
- {\r
- tチップを描画する_本体( g, rcチップ描画領域, col色, true, false );\r
- }\r
-\r
- private static void tチップを描画する_本体( Graphics g, Rectangle rcチップ描画領域, Color col色, bool b裏チップである, bool bBEATチップである )\r
- {\r
- int alphaBrush = 128;\r
- int alphaPen = 255;\r
- int alphaPen2 = 64;\r
- if ( b裏チップである )\r
- {\r
- rcチップ描画領域.Width -= 8;\r
- rcチップ描画領域.Height -= 2;\r
- rcチップ描画領域.X += 4;\r
- rcチップ描画領域.Y++;\r
- alphaBrush = 80;\r
- alphaPen = 180;\r
- alphaPen2 = 44;\r
- }\r
- SolidBrush brush = new SolidBrush( Color.FromArgb( alphaBrush, col色.R, col色.G, col色.B ) );\r
- Pen pen = new Pen( Color.FromArgb( alphaPen, col色.R, col色.G, col色.B ) );\r
- Pen pen2 = new Pen( Color.FromArgb( alphaPen2, col色.R, col色.G, col色.B ) );\r
- g.FillRectangle( brush, rcチップ描画領域 );\r
- g.DrawLine( pen, rcチップ描画領域.X, rcチップ描画領域.Y, rcチップ描画領域.Right, rcチップ描画領域.Y );\r
- g.DrawLine( pen, rcチップ描画領域.X, rcチップ描画領域.Y, rcチップ描画領域.X, rcチップ描画領域.Bottom );\r
- g.DrawLine( pen2, rcチップ描画領域.X, rcチップ描画領域.Bottom, rcチップ描画領域.Right, rcチップ描画領域.Bottom );\r
- g.DrawLine( pen2, rcチップ描画領域.Right, rcチップ描画領域.Bottom, rcチップ描画領域.Right, rcチップ描画領域.Y );\r
- if ( bBEATチップである )\r
- {\r
- SolidBrush brushWhite = new SolidBrush( Color.White );\r
- g.FillEllipse(\r
- brushWhite,\r
- ( rcチップ描画領域.X + rcチップ描画領域.Width / 2.0f ) - ( rcチップ描画領域.Height / 2.0f ),\r
- ( rcチップ描画領域.Y ),\r
- rcチップ描画領域.Height,\r
- rcチップ描画領域.Height\r
- );\r
- brushWhite.Dispose();\r
-\r
- if ( b裏チップである )\r
- {\r
- Pen pen3 = new Pen( Color.White );\r
- g.DrawLine( pen3, rcチップ描画領域.X, rcチップ描画領域.Y, rcチップ描画領域.X + rcチップ描画領域.Width, rcチップ描画領域.Y + rcチップ描画領域.Height );\r
- g.DrawLine( pen3, rcチップ描画領域.X, rcチップ描画領域.Y + rcチップ描画領域.Height, rcチップ描画領域.X + rcチップ描画領域.Width, rcチップ描画領域.Y );\r
- pen3.Dispose();\r
- }\r
- }\r
- brush.Dispose();\r
- pen.Dispose();\r
- pen2.Dispose();\r
- }\r
- private static void tチップを描画する_番号( Graphics g, Rectangle rcチップ描画領域, string str番号文字列, bool b裏チップである )\r
- {\r
- // 表裏に関係なく、番号描画は共通\r
-\r
- StringFormat format = new StringFormat();\r
- format.Alignment = StringAlignment.Center;\r
- format.LineAlignment = StringAlignment.Near;\r
- RectangleF layoutRectangle = new RectangleF();\r
- layoutRectangle.X = rcチップ描画領域.X;\r
- layoutRectangle.Y = rcチップ描画領域.Y + 1;\r
- layoutRectangle.Width = rcチップ描画領域.Width;\r
- layoutRectangle.Height = rcチップ描画領域.Height;\r
- g.DrawString( str番号文字列, ftチップ文字用フォント, Brushes.Black, layoutRectangle, format );\r
- layoutRectangle.X--;\r
- layoutRectangle.Y--;\r
- g.DrawString( str番号文字列, ftチップ文字用フォント, Brushes.White, layoutRectangle, format );\r
- }\r
- //-----------------\r
- #endregion\r
- }\r
-}\r