| package com.googlecode.mp4parser.boxes.threegpp26245; |
| |
| import com.coremedia.iso.IsoTypeReader; |
| import com.coremedia.iso.IsoTypeWriter; |
| import com.coremedia.iso.Utf8; |
| import com.googlecode.mp4parser.AbstractBox; |
| |
| import java.io.IOException; |
| import java.nio.ByteBuffer; |
| import java.util.LinkedList; |
| import java.util.List; |
| |
| /** |
| * |
| */ |
| public class FontTableBox extends AbstractBox { |
| List<FontRecord> entries = new LinkedList<FontRecord>(); |
| |
| public FontTableBox() { |
| super("ftab"); |
| } |
| |
| @Override |
| protected long getContentSize() { |
| int size = 2; |
| for (FontRecord fontRecord : entries) { |
| size += fontRecord.getSize(); |
| } |
| return size; |
| } |
| |
| |
| @Override |
| public void _parseDetails(ByteBuffer content) { |
| int numberOfRecords = IsoTypeReader.readUInt16(content); |
| for (int i = 0; i < numberOfRecords; i++) { |
| FontRecord fr = new FontRecord(); |
| fr.parse(content); |
| entries.add(fr); |
| } |
| } |
| |
| @Override |
| protected void getContent(ByteBuffer byteBuffer) { |
| IsoTypeWriter.writeUInt16(byteBuffer, entries.size()); |
| for (FontRecord record : entries) { |
| record.getContent(byteBuffer); |
| } |
| } |
| |
| public List<FontRecord> getEntries() { |
| return entries; |
| } |
| |
| public void setEntries(List<FontRecord> entries) { |
| this.entries = entries; |
| } |
| |
| public static class FontRecord { |
| int fontId; |
| String fontname; |
| |
| public FontRecord() { |
| } |
| |
| public FontRecord(int fontId, String fontname) { |
| this.fontId = fontId; |
| this.fontname = fontname; |
| } |
| |
| public void parse(ByteBuffer bb) { |
| fontId = IsoTypeReader.readUInt16(bb); |
| int length = IsoTypeReader.readUInt8(bb); |
| fontname = IsoTypeReader.readString(bb, length); |
| } |
| |
| public void getContent(ByteBuffer bb) { |
| IsoTypeWriter.writeUInt16(bb, fontId); |
| IsoTypeWriter.writeUInt8(bb, fontname.length()); |
| bb.put(Utf8.convert(fontname)); |
| } |
| |
| public int getSize() { |
| return Utf8.utf8StringLengthInBytes(fontname) + 3; |
| } |
| |
| @Override |
| public String toString() { |
| return "FontRecord{" + |
| "fontId=" + fontId + |
| ", fontname='" + fontname + '\'' + |
| '}'; |
| } |
| } |
| } |