package com.google.typography.font.sfntly.table.bitmap;
import com.google.typography.font.sfntly.data.ReadableFontData;
import com.google.typography.font.sfntly.data.WritableFontData;
import java.util.Iterator;
import java.util.NoSuchElementException;
public final class IndexSubTableFormat2
extends IndexSubTable
{
private final int imageSize = this.data.readULongAsInt(EblcTable.Offset.indexSubTable2_imageSize.offset);
private IndexSubTableFormat2(ReadableFontData paramReadableFontData, int paramInt1, int paramInt2)
{
super(paramReadableFontData, paramInt1, paramInt2);
}
public int imageSize()
{
return this.data.readULongAsInt(EblcTable.Offset.indexSubTable2_imageSize.offset);
}
public BigGlyphMetrics bigMetrics()
{
return new BigGlyphMetrics(this.data.slice(EblcTable.Offset.indexSubTable2_bigGlyphMetrics.offset, BigGlyphMetrics.Offset.metricsLength.offset));
}
public int numGlyphs()
{
return lastGlyphIndex() - firstGlyphIndex() + 1;
}
public int glyphStartOffset(int paramInt)
{
int i = checkGlyphRange(paramInt);
return i * this.imageSize;
}
public int glyphLength(int paramInt)
{
checkGlyphRange(paramInt);
return this.imageSize;
}
public static final class Builder
extends IndexSubTable.Builder<IndexSubTableFormat2>
{
private BigGlyphMetrics.Builder metrics;
public static Builder createBuilder()
{
return new Builder();
}
static Builder createBuilder(ReadableFontData paramReadableFontData, int paramInt1, int paramInt2, int paramInt3)
{
int i = dataLength(paramReadableFontData, paramInt1, paramInt2, paramInt3);
return new Builder(paramReadableFontData.slice(paramInt1, i), paramInt2, paramInt3);
}
static Builder createBuilder(WritableFontData paramWritableFontData, int paramInt1, int paramInt2, int paramInt3)
{
int i = dataLength(paramWritableFontData, paramInt1, paramInt2, paramInt3);
return new Builder(paramWritableFontData.slice(paramInt1, i), paramInt2, paramInt3);
}
private static int dataLength(ReadableFontData paramReadableFontData, int paramInt1, int paramInt2, int paramInt3)
{
return EblcTable.Offset.indexSubTable2Length.offset;
}
private Builder()
{
super(2);
this.metrics = BigGlyphMetrics.Builder.createBuilder();
}
private Builder(WritableFontData paramWritableFontData, int paramInt1, int paramInt2)
{
super(paramInt1, paramInt2);
}
private Builder(ReadableFontData paramReadableFontData, int paramInt1, int paramInt2)
{
super(paramInt1, paramInt2);
}
public int numGlyphs()
{
return lastGlyphIndex() - firstGlyphIndex() + 1;
}
public int glyphStartOffset(int paramInt)
{
int i = super.checkGlyphRange(paramInt);
return i * imageSize();
}
public int glyphLength(int paramInt)
{
super.checkGlyphRange(paramInt);
return imageSize();
}
public int imageSize()
{
return internalReadData().readULongAsInt(EblcTable.Offset.indexSubTable2_imageSize.offset);
}
public void setImageSize(int paramInt)
{
internalWriteData().writeULong(EblcTable.Offset.indexSubTable2_imageSize.offset, paramInt);
}
public BigGlyphMetrics.Builder bigMetrics()
{
if (this.metrics == null)
{
WritableFontData localWritableFontData = internalWriteData().slice(EblcTable.Offset.indexSubTable2_bigGlyphMetrics.offset, BigGlyphMetrics.Offset.metricsLength.offset);
this.metrics = new BigGlyphMetrics.Builder(localWritableFontData);
}
return this.metrics;
}
Iterator<BitmapGlyphInfo> iterator()
{
return new BitmapGlyphInfoIterator();
}
protected IndexSubTableFormat2 subBuildTable(ReadableFontData paramReadableFontData)
{
return new IndexSubTableFormat2(paramReadableFontData, firstGlyphIndex(), lastGlyphIndex(), null);
}
protected void subDataSet()
{
revert();
}
protected int subDataSizeToSerialize()
{
return EblcTable.Offset.indexSubTable2Length.offset;
}
protected boolean subReadyToSerialize()
{
return true;
}
protected int subSerialize(WritableFontData paramWritableFontData)
{
int i = super.serializeIndexSubHeader(paramWritableFontData);
if (this.metrics == null)
{
i += internalReadData().slice(i).copyTo(paramWritableFontData.slice(i));
}
else
{
i += paramWritableFontData.writeLong(EblcTable.Offset.indexSubTable2_imageSize.offset, imageSize());
i += this.metrics.subSerialize(paramWritableFontData.slice(i));
}
return i;
}
private class BitmapGlyphInfoIterator
implements Iterator<BitmapGlyphInfo>
{
private int glyphId = IndexSubTableFormat2.Builder.this.firstGlyphIndex();
public BitmapGlyphInfoIterator() {}
public boolean hasNext()
{
return this.glyphId <= IndexSubTableFormat2.Builder.this.lastGlyphIndex();
}
public BitmapGlyphInfo next()
{
if (!hasNext()) {
throw new NoSuchElementException("No more characters to iterate.");
}
BitmapGlyphInfo localBitmapGlyphInfo = new BitmapGlyphInfo(this.glyphId, IndexSubTableFormat2.Builder.this.imageDataOffset(), IndexSubTableFormat2.Builder.this.glyphStartOffset(this.glyphId), IndexSubTableFormat2.Builder.this.glyphLength(this.glyphId), IndexSubTableFormat2.Builder.this.imageFormat());
this.glyphId += 1;
return localBitmapGlyphInfo;
}
public void remove()
{
throw new UnsupportedOperationException("Unable to remove a glyph info.");
}
}
}
}
/* Location: C:\Users\Ethan\Desktop\FontZip\FontTool\sfnttool.jar!\com\google\typography\font\sfntly\table\bitmap\IndexSubTableFormat2.class
* Java compiler version: 6 (50.0)
* JD-Core Version: 0.7.1
*/