public void Write( Stream output )
{
BitStream bits = new BitStream( output );
int maxBits = this.BitCount;
if ( 0 == maxBits )
{
//
// special case: must be byte-aligned by hand
//
bits.WriteBits( 2, 0 ); // has no Terms whatsoever
bits.WriteBits( 4, 1 ); // 1 Bit per nothing
bits.WriteBits( 2, 0 ); // nothing
}
else
{
bits.WriteBits( 1, ( _HasAddTerms ? 1 : 0 ) );
bits.WriteBits( 1, ( _HasMultTerms ? 1 : 0 ) );
bits.WriteBits( 4, maxBits );
if ( _HasMultTerms )
{
bits.WriteBits( maxBits, _RedMultTerm );
bits.WriteBits( maxBits, _GreenMultTerm );
bits.WriteBits( maxBits, _BlueMultTerm );
bits.WriteBits( maxBits, _AlphaMultTerm );
}
if ( _HasAddTerms )
{
bits.WriteBits( maxBits, _RedAddTerm );
bits.WriteBits( maxBits, _GreenAddTerm );
bits.WriteBits( maxBits, _BlueAddTerm );
bits.WriteBits( maxBits, _AlphaAddTerm );
}
}
bits.WriteFlush();
}