Esempio n. 1
0
        private void StartRecord(Stream aOut, short aRecordType)
        {
            LittleEndianHelper.WriteShortU(aOut, aRecordType);
            int aVal = m_recordSize[m_count++] - 4;

            LittleEndianHelper.WriteShortU(aOut, aVal);
        }
Esempio n. 2
0
 internal void WriteHeaderData(Stream aOut, bool aCompressed)
 {
     if (aCompressed)
     {
         m_grbit &= 254;
     }
     else
     {
         m_grbit |= 1;
     }
     LittleEndianHelper.WriteShortU(aOut, m_rgb.Length);
     aOut.WriteByte(m_grbit);
     if (m_runsList != null)
     {
         if ((m_grbit & 8) != 0)
         {
             LittleEndianHelper.WriteShortU(aOut, m_runsList.Count);
         }
     }
     else if ((m_grbit & 8) != 0)
     {
         LittleEndianHelper.WriteShortU(aOut, 0);
     }
 }
Esempio n. 3
0
        internal void Write(Stream aOut)
        {
            CalcSize();
            m_count = 0;
            int num  = 8228;
            int num2 = 12;

            StartRecord(aOut, 252);
            LittleEndianHelper.WriteIntU(aOut, m_totalStrings);
            LittleEndianHelper.WriteIntU(aOut, UniqueStrings);
            int             num3            = num - num2;
            StringChunkInfo stringChunkInfo = new StringChunkInfo();

            foreach (StringWrapperBIFF8 item in m_stringOrder)
            {
                stringChunkInfo.CharsTotal = item.Cch;
                int headerSize = item.HeaderSize;
                int num4       = num3 - headerSize;
                if (num4 < 0 || (num4 == 0 && item.Cch != 0))
                {
                    StartRecord(aOut, 60);
                    num2 = 4;
                    num3 = num - num2;
                }
                int aBytesAvailable = num3 - headerSize;
                num2 += headerSize;
                item.PrepareWriteCharacterData(stringChunkInfo, aBytesAvailable);
                item.WriteHeaderData(aOut, stringChunkInfo.Compressed);
                num2 += item.WriteCharacterData(aOut, stringChunkInfo, aBytesAvailable);
                num3  = ((!stringChunkInfo.HasMore) ? (num - num2) : 0);
                while (stringChunkInfo.HasMore)
                {
                    aBytesAvailable = num3;
                    int charPos           = stringChunkInfo.CharPos;
                    int characterDataSize = item.GetCharacterDataSize(stringChunkInfo, aBytesAvailable);
                    stringChunkInfo.CharPos = charPos;
                    if (characterDataSize == 0)
                    {
                        StartRecord(aOut, 60);
                        num2            = 5;
                        aBytesAvailable = 8223;
                        item.PrepareWriteCharacterData(stringChunkInfo, aBytesAvailable);
                        aOut.WriteByte((byte)((!stringChunkInfo.Compressed) ? 1 : 0));
                    }
                    else
                    {
                        item.PrepareWriteCharacterData(stringChunkInfo, aBytesAvailable);
                    }
                    num2 += item.WriteCharacterData(aOut, stringChunkInfo, aBytesAvailable);
                    num3  = ((!stringChunkInfo.HasMore) ? (num - num2) : 0);
                }
                int num5 = item.FormatRunsDataSize;
                if (num5 <= 0)
                {
                    continue;
                }
                byte[] formatRunsData = item.FormatRunsData;
                while (num5 > 0)
                {
                    if (num3 == 0)
                    {
                        StartRecord(aOut, 60);
                        num2 = 4;
                        num3 = num - num2;
                    }
                    int num6 = (num3 < num5) ? num3 : num5;
                    num6 -= num6 % 4;
                    if (num6 > 0)
                    {
                        aOut.Write(formatRunsData, formatRunsData.Length - num5, num6);
                        num3 -= num6;
                        num5 -= num6;
                        num2 += num6;
                    }
                    else
                    {
                        num3 = 0;
                    }
                }
            }
        }
Esempio n. 4
0
 private void WriteMaskedValue(int offset, short mask, short value)
 {
     LittleEndianHelper.WriteShort(BitField16.PutValue(LittleEndianHelper.ReadShort(m_data, offset), mask, value), m_data, offset);
 }
Esempio n. 5
0
 private void SetValue32(int offset, int mask, int value)
 {
     LittleEndianHelper.WriteInt(BitField32.PutValue(LittleEndianHelper.ReadInt(m_xfData, offset), mask, value), m_xfData, offset);
 }
Esempio n. 6
0
 private void SetValue16(int offset, short mask, int value)
 {
     LittleEndianHelper.WriteShort(BitField16.PutValue(LittleEndianHelper.ReadShort(m_xfData, offset), mask, (short)value), m_xfData, offset);
 }