package com.google.typography.font.sfntly.table; import com.google.typography.font.sfntly.data.ReadableFontData; import com.google.typography.font.sfntly.data.WritableFontData; import java.io.IOException; import java.io.OutputStream; public abstract class FontDataTable { protected ReadableFontData data; FontDataTable(ReadableFontData paramReadableFontData) { this.data = paramReadableFontData; } public ReadableFontData readFontData() { return this.data; } public String toString() { return this.data.toString(); } public final int dataLength() { return this.data.length(); } public int serialize(OutputStream paramOutputStream) throws IOException { return this.data.copyTo(paramOutputStream); } protected int serialize(WritableFontData paramWritableFontData) { return this.data.copyTo(paramWritableFontData); } public static abstract class Builder<T extends FontDataTable> { private WritableFontData wData; private ReadableFontData rData; private boolean modelChanged; private boolean containedModelChanged; private boolean dataChanged; protected Builder(int paramInt) { this.wData = WritableFontData.createWritableFontData(paramInt); } protected Builder(WritableFontData paramWritableFontData) { this.wData = paramWritableFontData; } protected Builder(ReadableFontData paramReadableFontData) { this.rData = paramReadableFontData; } public WritableFontData data() { WritableFontData localWritableFontData; if (this.modelChanged) { if (!subReadyToSerialize()) { throw new RuntimeException("Table not ready to build."); } int i = subDataSizeToSerialize(); localWritableFontData = WritableFontData.createWritableFontData(i); subSerialize(localWritableFontData); } else { ReadableFontData localReadableFontData = internalReadData(); localWritableFontData = WritableFontData.createWritableFontData(localReadableFontData != null ? localReadableFontData.length() : 0); if (localReadableFontData != null) { localReadableFontData.copyTo(localWritableFontData); } } return localWritableFontData; } public void setData(WritableFontData paramWritableFontData) { internalSetData(paramWritableFontData, true); } public void setData(ReadableFontData paramReadableFontData) { internalSetData(paramReadableFontData, true); } private void internalSetData(WritableFontData paramWritableFontData, boolean paramBoolean) { this.wData = paramWritableFontData; this.rData = null; if (paramBoolean) { this.dataChanged = true; subDataSet(); } } private void internalSetData(ReadableFontData paramReadableFontData, boolean paramBoolean) { this.rData = paramReadableFontData; this.wData = null; if (paramBoolean) { this.dataChanged = true; subDataSet(); } } public T build() { FontDataTable localFontDataTable = null; Object localObject = internalReadData(); if (this.modelChanged) { if (!subReadyToSerialize()) { return null; } int i = subDataSizeToSerialize(); WritableFontData localWritableFontData = WritableFontData.createWritableFontData(i); subSerialize(localWritableFontData); localObject = localWritableFontData; } if (localObject != null) { localFontDataTable = subBuildTable((ReadableFontData)localObject); notifyPostTableBuild(localFontDataTable); } this.rData = null; this.wData = null; return localFontDataTable; } public boolean readyToBuild() { return true; } protected ReadableFontData internalReadData() { if (this.rData != null) { return this.rData; } return this.wData; } protected WritableFontData internalWriteData() { if (this.wData == null) { WritableFontData localWritableFontData = WritableFontData.createWritableFontData(this.rData == null ? 0 : this.rData.length()); if (this.rData != null) { this.rData.copyTo(localWritableFontData); } internalSetData(localWritableFontData, false); } return this.wData; } public boolean changed() { return (dataChanged()) || (modelChanged()); } protected boolean dataChanged() { return this.dataChanged; } protected boolean modelChanged() { return (currentModelChanged()) || (containedModelChanged()); } protected boolean currentModelChanged() { return this.modelChanged; } protected boolean containedModelChanged() { return this.containedModelChanged; } protected boolean setModelChanged() { return setModelChanged(true); } protected boolean setModelChanged(boolean paramBoolean) { boolean bool = this.modelChanged; this.modelChanged = paramBoolean; return bool; } protected void notifyPostTableBuild(T paramT) {} protected abstract int subSerialize(WritableFontData paramWritableFontData); protected abstract boolean subReadyToSerialize(); protected abstract int subDataSizeToSerialize(); protected abstract void subDataSet(); protected abstract T subBuildTable(ReadableFontData paramReadableFontData); } } /* Location: C:\Users\Ethan\Desktop\FontZip\FontTool\sfnttool.jar!\com\google\typography\font\sfntly\table\FontDataTable.class * Java compiler version: 6 (50.0) * JD-Core Version: 0.7.1 */