private bool writeBit(byte bit)
{
if (m_stream.Position == m_stream.Length)
{
byte[] bt = { (byte)(bit << (bitsInByte - 1)) };
m_stream.Write(bt, 0, 1);
m_stream.Seek(-1, SeekOrigin.Current);
}
else
{
byte[] bt = { 0 };
m_stream.Read(bt, 0, 1);
m_stream.Seek(-1, SeekOrigin.Current);
int shift = (bitsInByte - m_positionInByte - 1) % bitsInByte;
byte maskByte = (byte)(bit << shift);
bt[0] |= maskByte;
m_stream.Write(bt, 0, 1);
m_stream.Seek(-1, SeekOrigin.Current);
}
Seek(1, SeekOrigin.Current);
int currentPosition = Tell();
if (currentPosition > m_size)
m_size = currentPosition;
return true;
}