--- /dev/null
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Windows.Forms;
+
+namespace DTXCreator.WAV_BMP_AVI
+{
+ internal class CBMPキャッシュ
+ {
+ public Dictionary<int, CBMP> dicBMPディクショナリ = new Dictionary<int, CBMP>();
+ public int n現在のキャッシュアイテム数
+ {
+ get
+ {
+ if( this.dicBMPディクショナリ == null )
+ {
+ return 0;
+ }
+ return this.dicBMPディクショナリ.Count;
+ }
+ }
+
+ public CBMP tBMPをキャッシュから検索して返す( int nBMP番号1to1295 )
+ {
+ CBMP cbmp;
+ if( ( nBMP番号1to1295 < 1 ) || ( nBMP番号1to1295 > 36 * 36 - 1 ) )
+ {
+ throw new Exception( "BMP番号が範囲を超えています。-> [" + nBMP番号1to1295 + "]" );
+ }
+ if( this.dicBMPディクショナリ.TryGetValue( nBMP番号1to1295, out cbmp ) )
+ {
+ return cbmp;
+ }
+ return null;
+ }
+ public CBMP tBMPをキャッシュから検索して返す_なければ新規生成する( int nBMP番号1to1295 )
+ {
+ if( ( nBMP番号1to1295 < 1 ) || ( nBMP番号1to1295 > 36 * 36 - 1 ) )
+ {
+ throw new Exception( "BMP番号が範囲を超えています。-> [" + nBMP番号1to1295 + "]" );
+ }
+ CBMP cbmp = null;
+ if( !this.dicBMPディクショナリ.TryGetValue( nBMP番号1to1295, out cbmp ) )
+ {
+ cbmp = new CBMP();
+ cbmp.nBMP番号1to1295 = nBMP番号1to1295;
+ this.tキャッシュに追加する( cbmp );
+ }
+ return cbmp;
+ }
+ public void tBMPをキャッシュから削除する( int nBMP番号1to1295 )
+ {
+ if( ( nBMP番号1to1295 < 1 ) || ( nBMP番号1to1295 > 36 * 36 - 1 ) )
+ {
+ throw new Exception( "BMP番号が範囲を超えています。-> [" + nBMP番号1to1295 + "]" );
+ }
+ CBMP cbmp = null;
+ if( this.dicBMPディクショナリ.TryGetValue( nBMP番号1to1295, out cbmp ) )
+ {
+ this.dicBMPディクショナリ.Remove( nBMP番号1to1295 );
+ }
+ }
+ public void tキャッシュに追加する( CBMP bc追加するBMP )
+ {
+ CBMP cbmp;
+ if( this.dicBMPディクショナリ.TryGetValue( bc追加するBMP.nBMP番号1to1295, out cbmp ) )
+ {
+ this.dicBMPディクショナリ.Remove( bc追加するBMP.nBMP番号1to1295 );
+ }
+ this.dicBMPディクショナリ.Add( bc追加するBMP.nBMP番号1to1295, bc追加するBMP );
+ }
+ public void tキャッシュに追加する( ListViewItem lvi )
+ {
+ CBMP cbmp = new CBMP();
+ cbmp.tコピーfrom( lvi );
+ this.tキャッシュに追加する( cbmp );
+ }
+ public void t空にする()
+ {
+ this.dicBMPディクショナリ.Clear();
+ }
+ }
+}