Example #1
0
        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);
        }
Example #2
0
 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);
     }
 }
Example #3
0
        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);
        }
Example #4
0
 public static BitWriter Write_RL(this BitWriter writer, int value)
 {
     writer.WriteInt(value);
     return(writer);
 }