public void Test003() { var rotateCount = 0; var rotateWord = new Func <string>(() => { var wordList = new string[] { "トヨタ自動車", "日産自動車", "本田技研", "スバル自動車", "東急電鉄", "東武鉄道", "京成電鉄", "京浜急行電鉄", "相模鉄道", "小田急電鉄", "京王電鉄", "西武鉄道", "日本テレビ", "フジテレビ", "TBS", "テレビ朝日", "テレビ東京", }; rotateCount = (rotateCount + 1) % wordList.Length; return(wordList[rotateCount]); }); var props = new Props(); for (var i = 0; i < 100; i++) { var sect = new PropSection(String.Format("DEBUG_SECT_{0:000}", i)); for (var j = 0; j < 500; j++) { var item = new PropItem( String.Format("DEBUG_{0:000}-{1:0000}", i, j), PropType.String, rotateWord()); sect.Items.Add(item); } props.Sections.Add(sect); } using (var fs = File.OpenWrite(".\\QuickTest-Test003.txt")) using (var pw = new PropWriter(fs)) { pw.Write(props); } }
// 公開メソッド /// <summary> /// セクション テーブルを読み込みます。 /// </summary> /// <param name="br"></param> /// <returns></returns> public Dictionary <PropSection, ulong> LoadSectionTable(BinaryReader br) { // セクション数の取得 var sectionCount = br.ReadUInt32(); // セクション情報の読み取り var sectionTable = new Dictionary <PropSection, ulong>(); for (var i = 0u; i < sectionCount; i++) { var name = this._readString(br); // セクション名 var itemTableStartOffset = br.ReadUInt64(); // アイテム テーブルの開始オフセット var section = new PropSection(name); sectionTable.Add(section, itemTableStartOffset); } return(sectionTable); }
public static void SaveTo(Stream outputStream, PixelArtDocument document) { // パレットの生成 var itemPalette = new List <IMCItem>(); foreach (var item in document.Pixels) { if (itemPalette.Contains(item) == false) { itemPalette.Add(item); } } // ピクセル データのインデックス変換 var pixelValues = document.Pixels.Select(item => (short)itemPalette.IndexOf(item)).ToArray(); // 書き出し using (var binaryWriter = new BinaryWriter(outputStream)) { binaryWriter.Write(_fileMn); using (var propWriter = new PropWriter(outputStream)) { var metaSec = new PropSection("mcpixart-file-meta"); metaSec.Items.Add(new PropItem("magic-number", PropType.String, " MCPIXART ")); metaSec.Items.Add(new PropItem("file-description", PropType.String, " This is MC Pixel Art Navi Document File. Please visit our web site: https://www.a32kita.net/ ")); metaSec.Items.Add(new PropItem("file-version", PropType.Int64, 1L)); metaSec.Items.Add(new PropItem("created-at", PropType.DateTime, DateTime.Now)); var docSec = new PropSection("mcpixart-file-doc"); docSec.Items.Add(new PropItem("document-title", PropType.String, document.DocumentTitle)); docSec.Items.Add(new PropItem("document-author", PropType.String, document.DocumentAuthor)); docSec.Items.Add(new PropItem("document-description", PropType.String, document.DocumentDescription)); docSec.Items.Add(new PropItem("art-size", PropType.Int16, (short)document.Size)); docSec.Items.Add(new PropItem("art-palette", PropType.StringArray, itemPalette.Select(item => item.ItemId).ToArray())); docSec.Items.Add(new PropItem("art-pixels", PropType.Int16Array, pixelValues)); propWriter.Write(new Props(new PropSection[] { metaSec, docSec })); } } }