/// <summary>
/// Reads the data.
/// </summary>
/// <param name="binaryReader">Binary reader.</param>
/// <param name="endOfRecordsFlag">End of records flag.</param>
/// <param name="tagCodeEnum">Tag code enum.</param>
public void ReadData(BufferedBinaryReader binaryReader, ref bool endOfRecordsFlag,
TagCodeEnum tagCodeEnum)
{
binaryReader.SynchBits();
bool textRecordType = binaryReader.ReadBoolean();
binaryReader.ReadUBits(3);
bool styleFlagsHasFont = binaryReader.ReadBoolean();
bool styleFlagsHasColor = binaryReader.ReadBoolean();
bool styleFlagsHasYOffset = binaryReader.ReadBoolean();
bool styleFlagsHasXOffset = binaryReader.ReadBoolean();
if (textRecordType == false)
{
endOfRecordsFlag = true;
return;
}
fontId = 0;
if (styleFlagsHasFont)
fontId = binaryReader.ReadUInt16();
textColor = null;
if (styleFlagsHasColor)
{
if (tagCodeEnum == TagCodeEnum.DefineText2)
{
textColor = new RGBA();
textColor.ReadData(binaryReader);
}
else
{
textColor = new RGB();
textColor.ReadData(binaryReader);
}
}
xOffset = 0;
if (styleFlagsHasXOffset)
xOffset = binaryReader.ReadInt16();
yOffset = 0;
if (styleFlagsHasYOffset)
yOffset = binaryReader.ReadInt16();
textHeight = 0;
if (styleFlagsHasFont)
textHeight = binaryReader.ReadUInt16();
byte glyphCount = binaryReader.ReadByte();
if (glyphCount > 0)
{
if (glyphEntries == null)
glyphEntries = new GlyphEntryCollection();
else
glyphEntries.Clear();
for (int i = 0; i < glyphCount; i++)
{
GlyphEntry glyphEntry = new GlyphEntry();
glyphEntry.ReadData(binaryReader);
glyphEntries.Add(glyphEntry);
}
}
}