package com.google.typography.font.sfntly.data; import com.google.typography.font.sfntly.math.FontMath; import java.util.ArrayList; import java.util.List; final class SegmentedGrowableMemoryByteArray extends ByteArray<SegmentedGrowableMemoryByteArray> { private static final int DEFAULT_BUFFER_LOW_BITS = 8; private List<byte[]> buffers = new ArrayList(); private final int lowBits; public SegmentedGrowableMemoryByteArray() { this(8); } public SegmentedGrowableMemoryByteArray(int paramInt) { super(0, Integer.MAX_VALUE, true); this.lowBits = paramInt; } protected void internalPut(int paramInt, byte paramByte) { int i = bufferIndex(paramInt); int j = bufferOffset(i, paramInt); byte[] arrayOfByte = buffer(i); arrayOfByte[j] = paramByte; } protected int internalPut(int paramInt1, byte[] paramArrayOfByte, int paramInt2, int paramInt3) { int i = 0; while (i < paramInt3) { int j = bufferIndex(paramInt1); int k = bufferOffset(j, paramInt1); byte[] arrayOfByte = buffer(j); int m = Math.min(paramInt3 - i, arrayOfByte.length - k); System.arraycopy(paramArrayOfByte, paramInt2, arrayOfByte, k, m); paramInt1 += m; paramInt2 += m; i += m; } return i; } protected int internalGet(int paramInt) { int i = bufferIndex(paramInt); int j = bufferOffset(i, paramInt); byte[] arrayOfByte = buffer(i); return arrayOfByte[j]; } protected int internalGet(int paramInt1, byte[] paramArrayOfByte, int paramInt2, int paramInt3) { int i = 0; while (i < paramInt3) { int j = bufferIndex(paramInt1); int k = bufferOffset(j, paramInt1); byte[] arrayOfByte = buffer(j); int m = Math.min(paramInt3 - i, arrayOfByte.length - k); System.arraycopy(arrayOfByte, k, paramArrayOfByte, paramInt2, m); paramInt1 += m; paramInt2 += m; i += m; } return i; } public void close() { this.buffers = null; } private int bufferOffset(int paramInt1, int paramInt2) { return paramInt2 & (1 << Math.max(this.lowBits, paramInt1 + this.lowBits - 1) ^ 0xFFFFFFFF); } private int bufferIndex(int paramInt) { return FontMath.log2(paramInt >> this.lowBits) + 1; } private byte[] buffer(int paramInt) { byte[] arrayOfByte = null; if (paramInt >= this.buffers.size()) { for (int i = this.buffers.size(); i < paramInt + 1; i++) { int j = 1 << Math.max(0, i - 1) + this.lowBits; arrayOfByte = new byte[j]; this.buffers.add(arrayOfByte); } } arrayOfByte = (byte[])this.buffers.get(paramInt); return arrayOfByte; } } /* Location: C:\Users\Ethan\Desktop\FontZip\FontTool\sfnttool.jar!\com\google\typography\font\sfntly\data\SegmentedGrowableMemoryByteArray.class * Java compiler version: 6 (50.0) * JD-Core Version: 0.7.1 */