internal void Write(BitWriter writer) { writer.StartCrcCalculation(); writer.WriteStringAscii(Version.VersionString(), nullTerminated: false); writer.WriteBytes(0, 0, 0, 0, 0); if (Version == DwgVersionId.R14) { writer.WriteByte((byte)MaintenenceVersion); } else { writer.WriteByte(0); } writer.WriteByte(1); writer.WriteInt(ImagePointer); writer.WriteBytes(0, 0); writer.WriteShort(CodePage); writer.WriteInt(5); // 5 records HeaderVariablesLocator.Write(writer); ClassSectionLocator.Write(writer); ObjectMapLocator.Write(writer); UnknownSection_R13C3AndLaterLocator.Write(writer); UnknownSection_PaddingLocator.Write(writer); writer.WriteCrc(xorValue: 0x3CC4); // value for 5 records writer.WriteBytes(HeaderSentinel); }
public void Write(BitWriter writer, bool writingSecondHeader = false) { writer.WriteByte(RecordNumber); if (writingSecondHeader) { writer.Write_BL(Pointer); writer.Write_BL(Length); } else { writer.WriteInt(Pointer); writer.WriteInt(Length); } }
public static BitWriter Write_BL(this BitWriter writer, int value) { if (value == 0) { writer.Write_BB(0b10); } else if (value >= 0 && value <= 255) { writer.Write_BB(0b01); writer.WriteByte((byte)value); } else { writer.Write_BB(0b00); writer.WriteInt(value); } return(writer); }
public static BitWriter Write_RL(this BitWriter writer, int value) { writer.WriteInt(value); return(writer); }