public override void WriteTo(System.IO.BinaryWriter writer)
        {
            base.WriteTo(writer);

            FormatChecker.CheckExpression(() => Item.FaceName == null || Item.FaceName.Length < FaceNameLength);
            FormatChecker.CheckExpression(() => Item.ColorTable != null && Item.ColorTable.Length == ColorTableLength);
            FormatChecker.CheckExpression(() => BlockSize == ExactBlockSize);

            writer.Write((ushort)Item.FillAttributes);
            writer.Write((ushort)Item.PopupFillAttributes);

            writer.Write((short)Item.ScreenBufferSize.Width);
            writer.Write((short)Item.ScreenBufferSize.Height);
            writer.Write((short)Item.WindowSize.Width);
            writer.Write((short)Item.WindowSize.Height);
            writer.Write((short)Item.WindowOrigin.X);
            writer.Write((short)Item.WindowOrigin.Y);

            writer.Write(new byte[UnusedLength]);

            //writer.Write(Item.FontSize);
            writer.Write((short)0);
            writer.Write((short)Item.FontSize);

            writer.Write((uint)Item.FontFamily);
            writer.Write(Item.FontWeight);

            writer.WriteASCIIZF(Item.FaceName, Encoding.Unicode, FaceNameLength, Item.FaceNamePadding);

            writer.Write(Item.CursorSize);
            writer.Write(Convert.ToInt32(Item.FullScreen));
            writer.Write(Convert.ToInt32(Item.FastEdit));
            writer.Write(Convert.ToInt32(Item.InsertMode));
            writer.Write(Convert.ToInt32(Item.AutoPosition));

            writer.Write(Item.HistoryBufferSize);
            writer.Write(Item.NumberOfHistoryBuffers);
            writer.Write(Convert.ToInt32(Item.HistoryDuplicateAllowed));

            writer.Write(Item.ColorTable);
        }
Esempio n. 2
0
        public override void WriteTo(System.IO.BinaryWriter writer)
        {
            base.WriteTo(writer);

            FormatChecker.CheckExpression(() => Item.MachineID == null || Item.MachineID.Length <= MachineIDLength);
            FormatChecker.CheckExpression(() => BlockSize == ExactBlockSize);
            FormatChecker.CheckExpression(() => Item.Droid != null && Item.Droid.Length == 2);
            FormatChecker.CheckExpression(() => Item.DroidBirth != null && Item.DroidBirth.Length == 2);

            Length = ComputedSize - base.ComputedSize;
            FormatChecker.CheckExpression(() => Length >= MinimumLength);

            writer.Write(Length);
            writer.Write(Item.Version);
            writer.WriteASCIIZF(Item.MachineID, Encoding.Default, MachineIDLength);
            foreach (var guid in Item.Droid)
            {
                writer.Write(guid.ToByteArray());
            }
            foreach (var guid in Item.DroidBirth)
            {
                writer.Write(guid.ToByteArray());
            }
        }