package com.google.typography.font.sfntly.table.truetype; 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.Iterator; import java.util.List; public final class GlyphTable extends SubTableContainerTable { private GlyphTable(Header paramHeader, ReadableFontData paramReadableFontData) { super(paramHeader, paramReadableFontData); } public Glyph glyph(int paramInt1, int paramInt2) { return Glyph.getGlyph(this, this.data, paramInt1, paramInt2); } public static class Builder extends SubTableContainerTable.Builder<GlyphTable> { private List<Glyph.Builder<? extends Glyph>> glyphBuilders; private List<Integer> loca; public static Builder createBuilder(Header paramHeader, WritableFontData paramWritableFontData) { return new Builder(paramHeader, paramWritableFontData); } protected Builder(Header paramHeader, WritableFontData paramWritableFontData) { super(paramWritableFontData); } protected Builder(Header paramHeader, ReadableFontData paramReadableFontData) { super(paramReadableFontData); } public void setLoca(List<Integer> paramList) { this.loca = new ArrayList(paramList); setModelChanged(false); this.glyphBuilders = null; } public List<Integer> generateLocaList() { ArrayList localArrayList = new ArrayList(getGlyphBuilders().size()); localArrayList.add(Integer.valueOf(0)); if (getGlyphBuilders().size() == 0) { localArrayList.add(Integer.valueOf(0)); } else { int i = 0; Iterator localIterator = getGlyphBuilders().iterator(); while (localIterator.hasNext()) { Glyph.Builder localBuilder = (Glyph.Builder)localIterator.next(); int j = localBuilder.subDataSizeToSerialize(); localArrayList.add(Integer.valueOf(i + j)); i += j; } } return localArrayList; } private void initialize(ReadableFontData paramReadableFontData, List<Integer> paramList) { this.glyphBuilders = new ArrayList(); if (paramReadableFontData != null) { int j = ((Integer)paramList.get(0)).intValue(); for (int k = 1; k < paramList.size(); k++) { int i = ((Integer)paramList.get(k)).intValue(); this.glyphBuilders.add(Glyph.Builder.getBuilder(this, paramReadableFontData, j, i - j)); j = i; } } } private List<Glyph.Builder<? extends Glyph>> getGlyphBuilders() { if (this.glyphBuilders == null) { if ((internalReadData() != null) && (this.loca == null)) { throw new IllegalStateException("Loca values not set - unable to parse glyph data."); } initialize(internalReadData(), this.loca); setModelChanged(); } return this.glyphBuilders; } public void revert() { this.glyphBuilders = null; setModelChanged(false); } public List<Glyph.Builder<? extends Glyph>> glyphBuilders() { return getGlyphBuilders(); } public void setGlyphBuilders(List<Glyph.Builder<? extends Glyph>> paramList) { this.glyphBuilders = paramList; setModelChanged(); } public Glyph.Builder<? extends Glyph> glyphBuilder(ReadableFontData paramReadableFontData) { Glyph.Builder localBuilder = Glyph.Builder.getBuilder(this, paramReadableFontData); return localBuilder; } protected GlyphTable subBuildTable(ReadableFontData paramReadableFontData) { return new GlyphTable(header(), paramReadableFontData, null); } protected void subDataSet() { this.glyphBuilders = null; super.setModelChanged(false); } protected int subDataSizeToSerialize() { if ((this.glyphBuilders == null) || (this.glyphBuilders.size() == 0)) { return 0; } int i = 0; int j = 0; Iterator localIterator = this.glyphBuilders.iterator(); while (localIterator.hasNext()) { Glyph.Builder localBuilder = (Glyph.Builder)localIterator.next(); int k = localBuilder.subDataSizeToSerialize(); j += Math.abs(k); i |= (k <= 0 ? 1 : 0); } return i != 0 ? -j : j; } protected boolean subReadyToSerialize() { return this.glyphBuilders != null; } protected int subSerialize(WritableFontData paramWritableFontData) { int i = 0; Iterator localIterator = this.glyphBuilders.iterator(); while (localIterator.hasNext()) { Glyph.Builder localBuilder = (Glyph.Builder)localIterator.next(); i += localBuilder.subSerialize(paramWritableFontData.slice(i)); } return i; } } public static enum Offset { numberOfContours(0), xMin(2), yMin(4), xMax(6), yMax(8), simpleEndPtsOfCountours(10), simpleInstructionLength(0), simpleInstructions(2), compositeFlags(0), compositeGyphIndexWithoutFlag(0), compositeGlyphIndexWithFlag(2); 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\truetype\GlyphTable.class * Java compiler version: 6 (50.0) * JD-Core Version: 0.7.1 */