/// <summary> /// /// </summary> /// <param name="output"></param> public void Write( Stream output ) { BitStream bits = new BitStream( output ); if ( _HasScale ) { int scaleBitsX = bits.CountNeededBitsFB( _xScaleF ); int scaleBitsY = bits.CountNeededBitsFB( _yScaleF ); int scaleBits = scaleBitsX > scaleBitsY ? scaleBitsX : scaleBitsY; bits.WriteBits( 1, 1 ); // HasScale bits.WriteBits( 5, scaleBits ); bits.WriteBitsFB( scaleBits, _xScaleF ); bits.WriteBitsFB( scaleBits, _yScaleF ); } else { bits.WriteBits( 1, 0 ); // Has no Scale } if ( _HasRotate ) { int rotateBits0 = bits.CountNeededBitsFB( _rotateSkew0F ); int rotateBits1 = bits.CountNeededBitsFB( _rotateSkew1F ); int rotateBits = rotateBits0 > rotateBits1 ? rotateBits0 : rotateBits1; bits.WriteBits( 1, 1 ); // HasRotate bits.WriteBits( 5, rotateBits ); bits.WriteBitsFB( rotateBits, _rotateSkew0F ); bits.WriteBitsFB( rotateBits, _rotateSkew1F ); } else { bits.WriteBits( 1, 0 ); // has no Rotate } int translateBits = bits.CountMaximumBits( _translateX, _translateY ); if (this._SwfVersion > 8) { bits.WriteBits(5, this._numTranslateBits); bits.WriteBits(this._numTranslateBits, _translateX); bits.WriteBits(this._numTranslateBits, _translateY); } else { bits.WriteBits(5, translateBits); bits.WriteBits(translateBits, _translateX); bits.WriteBits(translateBits, _translateY); } bits.WriteFlush(); }
/// <summary> /// /// </summary> /// <param name="output"></param> public void Write(Stream output) { BitStream bits = new BitStream(output); if (_HasScale) { int scaleBitsX = bits.CountNeededBitsFB(_xScaleF); int scaleBitsY = bits.CountNeededBitsFB(_yScaleF); int scaleBits = scaleBitsX > scaleBitsY ? scaleBitsX : scaleBitsY; bits.WriteBits(1, 1); // HasScale bits.WriteBits(5, scaleBits); bits.WriteBitsFB(scaleBits, _xScaleF); bits.WriteBitsFB(scaleBits, _yScaleF); } else { bits.WriteBits(1, 0); // Has no Scale } bits.WriteBits(1, 0); // has no Rotate int translateBits = bits.CountMaximumBits(_translateX, _translateY); bits.WriteBits(5, translateBits); bits.WriteBits(translateBits, _translateX); bits.WriteBits(translateBits, _translateY); bits.WriteFlush(); }