package com.google.typography.font.sfntly.table.bitmap;
import com.google.typography.font.sfntly.data.FontData.DataSize;
import com.google.typography.font.sfntly.data.ReadableFontData;
import com.google.typography.font.sfntly.data.WritableFontData;
import com.google.typography.font.sfntly.table.Header;
import com.google.typography.font.sfntly.table.SubTableContainerTable;
import com.google.typography.font.sfntly.table.SubTableContainerTable.Builder;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.TreeMap;
public final class EbdtTable
extends SubTableContainerTable
{
protected EbdtTable(Header paramHeader, ReadableFontData paramReadableFontData)
{
super(paramHeader, paramReadableFontData);
}
public int version()
{
return this.data.readFixed(Offset.version.offset);
}
public BitmapGlyph glyph(int paramInt1, int paramInt2, int paramInt3)
{
ReadableFontData localReadableFontData = this.data.slice(paramInt1, paramInt2);
return BitmapGlyph.createGlyph(localReadableFontData, paramInt3);
}
public static class Builder
extends SubTableContainerTable.Builder<EbdtTable>
{
private final int version = 131072;
private List<Map<Integer, BitmapGlyphInfo>> glyphLoca;
private List<Map<Integer, BitmapGlyph.Builder<? extends BitmapGlyph>>> glyphBuilders;
public static Builder createBuilder(Header paramHeader, WritableFontData paramWritableFontData)
{
return new Builder(paramHeader, paramWritableFontData);
}
public static Builder createBuilder(Header paramHeader, ReadableFontData paramReadableFontData)
{
return new Builder(paramHeader, paramReadableFontData);
}
protected Builder(Header paramHeader, WritableFontData paramWritableFontData)
{
super(paramWritableFontData);
}
protected Builder(Header paramHeader, ReadableFontData paramReadableFontData)
{
super(paramReadableFontData);
}
public void setLoca(List<Map<Integer, BitmapGlyphInfo>> paramList)
{
revert();
this.glyphLoca = paramList;
}
public List<Map<Integer, BitmapGlyphInfo>> generateLocaList()
{
if (this.glyphBuilders == null)
{
if (this.glyphLoca == null) {
return new ArrayList(0);
}
return this.glyphLoca;
}
ArrayList localArrayList = new ArrayList(this.glyphBuilders.size());
int i = EbdtTable.Offset.headerLength.offset;
Iterator localIterator1 = this.glyphBuilders.iterator();
while (localIterator1.hasNext())
{
Map localMap = (Map)localIterator1.next();
TreeMap localTreeMap = new TreeMap();
int j = 0;
Iterator localIterator2 = localMap.entrySet().iterator();
while (localIterator2.hasNext())
{
Map.Entry localEntry = (Map.Entry)localIterator2.next();
BitmapGlyph.Builder localBuilder = (BitmapGlyph.Builder)localEntry.getValue();
int k = localBuilder.subDataSizeToSerialize();
BitmapGlyphInfo localBitmapGlyphInfo = new BitmapGlyphInfo(((Integer)localEntry.getKey()).intValue(), i + j, k, localBuilder.format());
localTreeMap.put(localEntry.getKey(), localBitmapGlyphInfo);
j += k;
}
i += j;
localArrayList.add(Collections.unmodifiableMap(localTreeMap));
}
return Collections.unmodifiableList(localArrayList);
}
public List<Map<Integer, BitmapGlyph.Builder<? extends BitmapGlyph>>> glyphBuilders()
{
return getGlyphBuilders();
}
public void setGlyphBuilders(List<Map<Integer, BitmapGlyph.Builder<? extends BitmapGlyph>>> paramList)
{
this.glyphBuilders = paramList;
setModelChanged();
}
private List<Map<Integer, BitmapGlyph.Builder<? extends BitmapGlyph>>> getGlyphBuilders()
{
if (this.glyphBuilders == null)
{
if (this.glyphLoca == null) {
throw new IllegalStateException("Loca values not set - unable to parse glyph data.");
}
this.glyphBuilders = initialize(internalReadData(), this.glyphLoca);
setModelChanged();
}
return this.glyphBuilders;
}
public void revert()
{
this.glyphLoca = null;
this.glyphBuilders = null;
setModelChanged(false);
}
private static List<Map<Integer, BitmapGlyph.Builder<? extends BitmapGlyph>>> initialize(ReadableFontData paramReadableFontData, List<Map<Integer, BitmapGlyphInfo>> paramList)
{
ArrayList localArrayList = new ArrayList(paramList.size());
if (paramReadableFontData != null)
{
Iterator localIterator1 = paramList.iterator();
while (localIterator1.hasNext())
{
Map localMap = (Map)localIterator1.next();
TreeMap localTreeMap = new TreeMap();
Iterator localIterator2 = localMap.entrySet().iterator();
while (localIterator2.hasNext())
{
Map.Entry localEntry = (Map.Entry)localIterator2.next();
BitmapGlyphInfo localBitmapGlyphInfo = (BitmapGlyphInfo)localEntry.getValue();
BitmapGlyph.Builder localBuilder = BitmapGlyph.Builder.createGlyphBuilder(paramReadableFontData.slice(localBitmapGlyphInfo.offset(), localBitmapGlyphInfo.length()), localBitmapGlyphInfo.format());
localTreeMap.put(localEntry.getKey(), localBuilder);
}
localArrayList.add(localTreeMap);
}
}
return localArrayList;
}
protected EbdtTable subBuildTable(ReadableFontData paramReadableFontData)
{
return new EbdtTable(header(), paramReadableFontData);
}
protected void subDataSet()
{
revert();
}
protected int subDataSizeToSerialize()
{
if ((this.glyphBuilders == null) || (this.glyphBuilders.size() == 0)) {
return 0;
}
int i = 1;
int j = EbdtTable.Offset.headerLength.offset;
Iterator localIterator1 = this.glyphBuilders.iterator();
while (localIterator1.hasNext())
{
Map localMap = (Map)localIterator1.next();
TreeMap localTreeMap = new TreeMap();
Iterator localIterator2 = localMap.entrySet().iterator();
while (localIterator2.hasNext())
{
Map.Entry localEntry = (Map.Entry)localIterator2.next();
BitmapGlyph.Builder localBuilder = (BitmapGlyph.Builder)localEntry.getValue();
int k = localBuilder.subDataSizeToSerialize();
j += Math.abs(k);
i = k <= 0 ? 0 : i;
}
}
return (i != 0 ? 1 : -1) * j;
}
protected boolean subReadyToSerialize()
{
return this.glyphBuilders != null;
}
protected int subSerialize(WritableFontData paramWritableFontData)
{
int i = 0;
getClass();
i += paramWritableFontData.writeFixed(EbdtTable.Offset.version.offset, 131072);
Iterator localIterator1 = this.glyphBuilders.iterator();
while (localIterator1.hasNext())
{
Map localMap = (Map)localIterator1.next();
TreeMap localTreeMap = new TreeMap();
Iterator localIterator2 = localMap.entrySet().iterator();
while (localIterator2.hasNext())
{
Map.Entry localEntry = (Map.Entry)localIterator2.next();
BitmapGlyph.Builder localBuilder = (BitmapGlyph.Builder)localEntry.getValue();
i += localBuilder.subSerialize(paramWritableFontData.slice(i));
}
}
return i;
}
}
protected static enum Offset
{
version(0), headerLength(FontData.DataSize.Fixed.size());
protected final int offset;
private Offset(int paramInt)
{
this.offset = paramInt;
}
}
}
/* Location: C:\Users\Ethan\Desktop\FontZip\FontTool\sfnttool.jar!\com\google\typography\font\sfntly\table\bitmap\EbdtTable.class
* Java compiler version: 6 (50.0)
* JD-Core Version: 0.7.1
*/