SwfTagBase ISwfTagVisitor <ISwfStreamReader, SwfTagBase> .Visit(DefineFontAlignZonesTag tag, ISwfStreamReader reader) { tag.FontID = reader.ReadUInt16(); tag.CsmTableHint = (CSMTableHint)reader.ReadUnsignedBits(2); tag.Reserved = (byte)reader.ReadUnsignedBits(6); while (!reader.IsEOF) { var zone = new ZoneRecord(); int count = reader.ReadByte(); for (var j = 0; j < count; j++) { var zoneData = new ZoneData { Position = reader.ReadShortFloat(), Size = reader.ReadShortFloat() }; zone.Data.Add(zoneData); } zone.Reserved = (byte)reader.ReadUnsignedBits(6); zone.ZoneX = reader.ReadBit(); zone.ZoneY = reader.ReadBit(); tag.ZoneTable.Add(zone); } return(tag); }
SwfTagData ISwfTagVisitor <ISwfStreamWriter, SwfTagData> .Visit(DefineFontAlignZonesTag tag, ISwfStreamWriter writer) { writer.WriteUInt16(tag.FontID); writer.WriteUnsignedBits((byte)tag.CsmTableHint, 2); writer.WriteUnsignedBits(tag.Reserved, 6); foreach (var zoneArray in tag.ZoneTable) { writer.WriteByte((byte)zoneArray.Data.Count); foreach (var zoneData in zoneArray.Data) { writer.WriteShortFloat(zoneData.Position); writer.WriteShortFloat(zoneData.Size); } writer.WriteUnsignedBits(zoneArray.Reserved, 6); writer.WriteBit(zoneArray.ZoneX); writer.WriteBit(zoneArray.ZoneY); } return(null); }
ITagFormatter ISwfTagVisitor <object, ITagFormatter> .Visit(DefineFontAlignZonesTag tag, object arg) { return(new DefineFontAlignZonesTagFormatter()); }