Example #1
0
        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);
                }
        }
Example #2
0
        // 公開メソッド

        /// <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);
        }
Example #3
0
        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 }));
                }
            }
        }