package org.freehep.graphicsio.font.truetype;
/**
* FIXME: These methods are not really tested yet.
*
* @author Simon Fischer
* @version $Id: TTFMemoryInput.java,v 1.5 2009-08-17 21:44:45 murkle Exp $
*/
public class TTFMemoryInput extends TTFInput {
private byte[] data;
private int pointer;
public TTFMemoryInput(byte[] data) {
this.data = data;
}
@Override
public void seek(long offset) {
pointer = (int) offset;
}
@Override
long getPointer() {
return pointer;
}
// ---------- Simple Data Types --------------
@Override
public byte readChar() {
return data[pointer++];
}
@Override
public int readRawByte() {
return data[pointer++] & 0x00ff;
}
@Override
public int readByte() {
return data[pointer++] & 0x00ff;
}
@Override
public short readShort() {
int result = data[pointer++];
return (short) ((result << 8) | data[pointer++]);
}
@Override
public int readUShort() {
return (data[pointer++] << 8) | data[pointer++];
}
@Override
public int readLong() {
int result = data[pointer++];
return (short) ((result << 24) | data[pointer++] << 16
| data[pointer++] << 8 | data[pointer++]);
}
@Override
public long readULong() {
byte[] temp = new byte[4];
readFully(temp);
long l = 0;
for (int i = 0; i < temp.length; i++) {
l |= (temp[3 - i] & 255) << (8 * i);
}
return l;
}
// ---------------- Arrays -------------------
@Override
public void readFully(byte[] b) {
for (int i = 0; i < b.length; i++) {
b[i] = data[pointer++];
}
}
}