コード例 #1
0
        public void WriteBytes(BinaryWriterEx bw)
        {
            header.WriteBytes(bw);

            long offsetsarraypos = bw.BaseStream.Position;

            foreach (CTrack ct in tracks)
            {
                bw.Write((short)0);
            }

            if (tracks.Count % 2 == 0)
            {
                bw.Write((short)0);
            }

            List <long> offsets     = new List <long>();
            long        offsetstart = bw.BaseStream.Position;

            foreach (CTrack ct in tracks)
            {
                offsets.Add(bw.BaseStream.Position - offsetstart);
                ct.WriteBytes(bw);
            }

            long comeback = bw.BaseStream.Position;

            bw.BaseStream.Position = offsetsarraypos;

            foreach (long off in offsets)
            {
                bw.Write((short)off);
            }

            bw.BaseStream.Position = comeback;
        }