public void Write(Stream output)
{
if (!this._glyphEntries.Count.Equals(this._glyphCount))
{
SwfFormatException e = new SwfFormatException("The value of glyph count and the list size of glyphs muste be equal.");
Log.Error(this, e.Message);
throw e;
}
BitStream bits = new BitStream(output);
bits.WriteBits(1, 1); // TextRecordType (always 1)
bits.WriteBits(3, 0); // StyleFlagsReserved (always 0)
bits.WriteBits(1, Convert.ToInt32(this._StyleFlagsHasFont));
bits.WriteBits(1, Convert.ToInt32(this._StyleFlagsHasColor));
bits.WriteBits(1, Convert.ToInt32(this._StyleFlagsHasYOffset));
bits.WriteBits(1, Convert.ToInt32(this._StyleFlagsHasXOffset));
bits.WriteFlush();
if (this._StyleFlagsHasFont)
{
byte[] fontID = BitConverter.GetBytes(this._fontID);
output.Write(fontID, 0, 2);
}
if (this._StyleFlagsHasColor)
{
this._textColor.Write(output);
}
if (this._StyleFlagsHasXOffset)
{
byte[] xOffset = BitConverter.GetBytes(this._xOffset);
output.Write(xOffset, 0, 2);
}
if (this._StyleFlagsHasYOffset)
{
byte[] yOffset = BitConverter.GetBytes(this._yOffset);
output.Write(yOffset, 0, 2);
}
if (this._StyleFlagsHasFont)
{
byte[] textHeight = BitConverter.GetBytes(this._textHeight);
output.Write(textHeight, 0, 2);
}
output.WriteByte(this._glyphCount);
for (int i = 0; i < this._glyphCount; i++)
{
this._glyphEntries[i].Write(bits);
}
bits.WriteFlush();
}