[kaffe] CVS kaffe (robilad): Resynced with GNU Classpath: Added all missing methods in javax.imageio.stream
Kaffe CVS
cvs-commits at kaffe.org
Wed Dec 8 10:12:42 PST 2004
PatchSet 5568
Date: 2004/12/08 18:03:35
Author: robilad
Branch: HEAD
Tag: (none)
Log:
Resynced with GNU Classpath: Added all missing methods in javax.imageio.stream
2004-12-08 Dalibor Topic <robilad at kaffe.org>
* libraries/javalib/javax/imageio/stream/FileCacheImageInputStream.java,
libraries/javalib/javax/imageio/stream/FileCacheImageOutputStream.java,
libraries/javalib/javax/imageio/stream/FileImageInputStream.java,
libraries/javalib/javax/imageio/stream/ImageInputStreamImpl.java,
libraries/javalib/javax/imageio/stream/ImageOutputStreamImpl.java,
libraries/javalib/javax/imageio/stream/MemoryCacheImageInputStream.java,
libraries/javalib/javax/imageio/stream/MemoryCacheImageOutputStream.java:
Resynced with GNU Classpath.
2004-12-07 Michael Koch <konqueror at gmx.de>
* javax/imageio/stream/FileCacheImageInputStream.java,
javax/imageio/stream/FileCacheImageOutputStream.java,
javax/imageio/stream/FileImageInputStream.java,
javax/imageio/stream/ImageInputStreamImpl.java,
javax/imageio/stream/ImageOutputStreamImpl.java,
javax/imageio/stream/MemoryCacheImageInputStream.java,
javax/imageio/stream/MemoryCacheImageOutputStream.java:
Added all missing methods in javax.imageio.stream.
Members:
ChangeLog:1.3114->1.3115
libraries/javalib/javax/imageio/stream/FileCacheImageInputStream.java:1.1->1.2
libraries/javalib/javax/imageio/stream/FileCacheImageOutputStream.java:1.1->1.2
libraries/javalib/javax/imageio/stream/FileImageInputStream.java:1.1->1.2
libraries/javalib/javax/imageio/stream/ImageInputStreamImpl.java:1.3->1.4
libraries/javalib/javax/imageio/stream/ImageOutputStreamImpl.java:1.1->1.2
libraries/javalib/javax/imageio/stream/MemoryCacheImageInputStream.java:1.1->1.2
libraries/javalib/javax/imageio/stream/MemoryCacheImageOutputStream.java:1.1->1.2
Index: kaffe/ChangeLog
diff -u kaffe/ChangeLog:1.3114 kaffe/ChangeLog:1.3115
--- kaffe/ChangeLog:1.3114 Wed Dec 8 17:38:07 2004
+++ kaffe/ChangeLog Wed Dec 8 18:03:35 2004
@@ -1,5 +1,27 @@
2004-12-08 Dalibor Topic <robilad at kaffe.org>
+ * libraries/javalib/javax/imageio/stream/FileCacheImageInputStream.java,
+ libraries/javalib/javax/imageio/stream/FileCacheImageOutputStream.java,
+ libraries/javalib/javax/imageio/stream/FileImageInputStream.java,
+ libraries/javalib/javax/imageio/stream/ImageInputStreamImpl.java,
+ libraries/javalib/javax/imageio/stream/ImageOutputStreamImpl.java,
+ libraries/javalib/javax/imageio/stream/MemoryCacheImageInputStream.java,
+ libraries/javalib/javax/imageio/stream/MemoryCacheImageOutputStream.java:
+ Resynced with GNU Classpath.
+
+ 2004-12-07 Michael Koch <konqueror at gmx.de>
+
+ * javax/imageio/stream/FileCacheImageInputStream.java,
+ javax/imageio/stream/FileCacheImageOutputStream.java,
+ javax/imageio/stream/FileImageInputStream.java,
+ javax/imageio/stream/ImageInputStreamImpl.java,
+ javax/imageio/stream/ImageOutputStreamImpl.java,
+ javax/imageio/stream/MemoryCacheImageInputStream.java,
+ javax/imageio/stream/MemoryCacheImageOutputStream.java:
+ Added all missing methods in javax.imageio.stream.
+
+2004-12-08 Dalibor Topic <robilad at kaffe.org>
+
* libraries/javalib/java/io/BufferedInputStream.java:
Resynced with GNU Classpath.
Index: kaffe/libraries/javalib/javax/imageio/stream/FileCacheImageInputStream.java
diff -u kaffe/libraries/javalib/javax/imageio/stream/FileCacheImageInputStream.java:1.1 kaffe/libraries/javalib/javax/imageio/stream/FileCacheImageInputStream.java:1.2
--- kaffe/libraries/javalib/javax/imageio/stream/FileCacheImageInputStream.java:1.1 Sat Oct 23 12:08:19 2004
+++ kaffe/libraries/javalib/javax/imageio/stream/FileCacheImageInputStream.java Wed Dec 8 18:03:42 2004
@@ -45,7 +45,7 @@
/**
* @author Michael Koch (konqueror at gmx.de)
*/
-public class FileCacheImageInputStream
+public class FileCacheImageInputStream extends ImageInputStreamImpl
{
private InputStream stream;
private File cacheDir;
@@ -89,5 +89,21 @@
public boolean isCachedMemory()
{
return false;
+ }
+
+ public int read()
+ throws IOException
+ {
+ checkStreamClosed();
+ setBitOffset(0);
+ return stream.read();
+ }
+
+ public int read(byte[] data, int offset, int len)
+ throws IOException
+ {
+ checkStreamClosed();
+ setBitOffset(0);
+ return stream.read(data, offset, len);
}
}
Index: kaffe/libraries/javalib/javax/imageio/stream/FileCacheImageOutputStream.java
diff -u kaffe/libraries/javalib/javax/imageio/stream/FileCacheImageOutputStream.java:1.1 kaffe/libraries/javalib/javax/imageio/stream/FileCacheImageOutputStream.java:1.2
--- kaffe/libraries/javalib/javax/imageio/stream/FileCacheImageOutputStream.java:1.1 Sat Oct 23 12:08:19 2004
+++ kaffe/libraries/javalib/javax/imageio/stream/FileCacheImageOutputStream.java Wed Dec 8 18:03:42 2004
@@ -45,7 +45,7 @@
/**
* @author Michael Koch (konqueror at gmx.de)
*/
-public class FileCacheImageOutputStream
+public class FileCacheImageOutputStream extends ImageOutputStreamImpl
{
private OutputStream stream;
private File cacheDir;
@@ -89,5 +89,35 @@
public boolean isCachedMemory()
{
return false;
+ }
+
+ public int read()
+ throws IOException
+ {
+ // FIXME: Implement me.
+ throw new Error("not implemented");
+ }
+
+ public int read(byte[] data, int offset, int len)
+ throws IOException
+ {
+ // FIXME: Implement me.
+ throw new Error("not implemented");
+ }
+
+ public void write(byte[] data, int offset, int len)
+ throws IOException
+ {
+ checkStreamClosed();
+ // FIXME: Flush pending bits.
+ stream.write(data, offset, len);
+ }
+
+ public void write(int value)
+ throws IOException
+ {
+ checkStreamClosed();
+ // FIXME: Flush pending bits.
+ stream.write(value);
}
}
Index: kaffe/libraries/javalib/javax/imageio/stream/FileImageInputStream.java
diff -u kaffe/libraries/javalib/javax/imageio/stream/FileImageInputStream.java:1.1 kaffe/libraries/javalib/javax/imageio/stream/FileImageInputStream.java:1.2
--- kaffe/libraries/javalib/javax/imageio/stream/FileImageInputStream.java:1.1 Sat Oct 23 12:08:19 2004
+++ kaffe/libraries/javalib/javax/imageio/stream/FileImageInputStream.java Wed Dec 8 18:03:42 2004
@@ -46,7 +46,7 @@
/**
* @author Michael Koch (konqueror at gmx.de)
*/
-public class FileImageInputStream
+public class FileImageInputStream extends ImageInputStreamImpl
{
private RandomAccessFile file;
@@ -83,5 +83,26 @@
{
return -1L;
}
+ }
+
+ public int read()
+ throws IOException
+ {
+ setBitOffset(0);
+ return file.read();
+ }
+
+ public int read(byte[] data, int offset, int len)
+ throws IOException
+ {
+ setBitOffset(0);
+ return file.read(data, offset, len);
+ }
+
+ public void seek(long position)
+ throws IOException
+ {
+ super.seek(position);
+ file.seek(position);
}
}
Index: kaffe/libraries/javalib/javax/imageio/stream/ImageInputStreamImpl.java
diff -u kaffe/libraries/javalib/javax/imageio/stream/ImageInputStreamImpl.java:1.3 kaffe/libraries/javalib/javax/imageio/stream/ImageInputStreamImpl.java:1.4
--- kaffe/libraries/javalib/javax/imageio/stream/ImageInputStreamImpl.java:1.3 Wed Nov 24 03:20:46 2004
+++ kaffe/libraries/javalib/javax/imageio/stream/ImageInputStreamImpl.java Wed Dec 8 18:03:42 2004
@@ -38,8 +38,11 @@
package javax.imageio.stream;
+import java.io.DataInputStream;
+import java.io.EOFException;
import java.io.IOException;
import java.nio.ByteOrder;
+import java.util.Stack;
/**
* @author Michael Koch (konqueror at gmx.de)
@@ -47,6 +50,9 @@
public abstract class ImageInputStreamImpl implements ImageInputStream
{
private boolean closed;
+ private Stack markStack = new Stack();
+
+ byte[] buffer = new byte[8];
protected int bitOffset;
protected ByteOrder byteOrder;
@@ -99,6 +105,7 @@
public int getBitOffset()
throws IOException
{
+ checkClosed();
return bitOffset;
}
@@ -115,6 +122,7 @@
public long getStreamPosition()
throws IOException
{
+ checkClosed();
return streamPos;
}
@@ -138,6 +146,18 @@
return -1L;
}
+ public void mark()
+ {
+ try
+ {
+ markStack.push(new Long(getStreamPosition()));
+ }
+ catch (IOException e)
+ {
+ // Ignored.
+ }
+ }
+
public abstract int read()
throws IOException;
@@ -150,8 +170,346 @@
public abstract int read(byte[] data, int offset, int len)
throws IOException;
- public void setByteOrder (ByteOrder byteOrder)
+ public int readBit()
+ throws IOException
+ {
+ checkClosed();
+
+ // Calc new bit offset here, readByte resets it.
+ int newOffset = (bitOffset + 1) & 0x7;
+
+ byte data = readByte();
+
+ if (bitOffset != 0)
+ {
+ seek(getStreamPosition() - 1);
+ data = (byte) (data >> (8 - newOffset));
+ }
+
+ bitOffset = newOffset;
+ return data & 0x1;
+ }
+
+ public long readBits(int numBits)
+ throws IOException
+ {
+ checkClosed();
+
+ if (numBits < 0 || numBits > 64)
+ throw new IllegalArgumentException();
+
+ if (numBits == 0)
+ return 0L;
+
+ long bits = 0L;
+
+ for (int i = 0; i < numBits; i++)
+ {
+ bits <<= 1;
+ bits |= readBit();
+ }
+
+ return bits;
+ }
+
+ public boolean readBoolean()
+ throws IOException
+ {
+ byte data = readByte();
+ return data != 0;
+ }
+
+ public byte readByte()
+ throws IOException
+ {
+ int data = read();
+
+ if (data == -1)
+ throw new EOFException();
+
+ return (byte) data;
+ }
+
+ public void readBytes(IIOByteBuffer buffer, int len)
+ throws IOException
+ {
+ int result = read(buffer.getData(), buffer.getOffset(), len);
+
+ if (result == -1 || result < len)
+ throw new EOFException();
+
+ buffer.setLength(len);
+ }
+
+ public char readChar()
+ throws IOException
+ {
+ return (char) readShort();
+ }
+
+ public double readDouble()
+ throws IOException
+ {
+ return (double) readLong();
+ }
+
+ public float readFloat()
+ throws IOException
+ {
+ return (float) readInt();
+ }
+
+ public void readFully(byte[] data)
+ throws IOException
+ {
+ readFully(data, 0, data.length);
+ }
+
+ public void readFully(byte[] data, int offset, int len)
+ throws IOException
+ {
+ for (int i = 0; i < len; ++i)
+ data[offset + i] = readByte();
+ }
+
+ public void readFully(char[] data, int offset, int len)
+ throws IOException
+ {
+ for (int i = 0; i < len; ++i)
+ data[offset + i] = readChar();
+ }
+
+ public void readFully(double[] data, int offset, int len)
+ throws IOException
+ {
+ for (int i = 0; i < len; ++i)
+ data[offset + i] = readDouble();
+ }
+
+ public void readFully(float[] data, int offset, int len)
+ throws IOException
+ {
+ for (int i = 0; i < len; ++i)
+ data[offset + i] = readFloat();
+ }
+
+ public void readFully(int[] data, int offset, int len)
+ throws IOException
+ {
+ for (int i = 0; i < len; ++i)
+ data[offset + i] = readInt();
+ }
+
+ public void readFully(long[] data, int offset, int len)
+ throws IOException
+ {
+ for (int i = 0; i < len; ++i)
+ data[offset + i] = readLong();
+ }
+
+ public void readFully(short[] data, int offset, int len)
+ throws IOException
+ {
+ for (int i = 0; i < len; ++i)
+ data[offset + i] = readShort();
+ }
+
+ public int readInt()
+ throws IOException
+ {
+ int result = read(buffer, 0, 4);
+
+ if (result == -1)
+ throw new EOFException();
+
+ if (getByteOrder() == ByteOrder.LITTLE_ENDIAN)
+ {
+ return ((buffer[0] & 0xff)
+ + (buffer[1] << 8)
+ + (buffer[2] << 16)
+ + (buffer[3] << 24));
+ }
+
+ return ((buffer[4] << 24)
+ + (buffer[3] << 16)
+ + (buffer[2] << 8)
+ + (buffer[1] & 0xff));
+ }
+
+ public String readLine()
+ throws IOException
+ {
+ checkClosed();
+
+ int c = -1;
+ boolean eol = false;
+ StringBuffer buffer = new StringBuffer();
+
+ while (!eol && (c = read()) != -1)
+ {
+ switch(c)
+ {
+ case '\r':
+ // Consume following \n'
+ long oldPosition = getStreamPosition();
+ if (read() != '\n')
+ seek(oldPosition);
+ case '\n':
+ eol = true;
+ break;
+ default:
+ buffer.append((char) c);
+ break;
+ }
+ }
+
+ if (c == -1 && buffer.length() == 0)
+ return null;
+
+ return buffer.toString();
+ }
+
+ public long readLong()
+ throws IOException
+ {
+ int result = read(buffer, 0, 8);
+
+ if (result == -1)
+ throw new EOFException();
+
+ if (getByteOrder() == ByteOrder.LITTLE_ENDIAN)
+ {
+ return ((buffer[0] & 0xff)
+ + (((buffer[1] & 0xff)) << 8)
+ + (((buffer[2] & 0xff)) << 16)
+ + (((buffer[3] & 0xffL)) << 24)
+ + (((buffer[4] & 0xffL)) << 32)
+ + (((buffer[5] & 0xffL)) << 40)
+ + (((buffer[6] & 0xffL)) << 48)
+ + (((long) buffer[7]) << 56));
+ }
+
+ return ((((long) buffer[7]) << 56)
+ + ((buffer[6] & 0xffL) << 48)
+ + ((buffer[5] & 0xffL) << 40)
+ + ((buffer[4] & 0xffL) << 32)
+ + ((buffer[3] & 0xffL) << 24)
+ + ((buffer[2] & 0xff) << 16)
+ + ((buffer[1] & 0xff) << 8)
+ + (buffer[0] & 0xff));
+ }
+
+ public short readShort()
+ throws IOException
+ {
+ int result = read(buffer, 0, 2);
+
+ if (result == -1)
+ throw new EOFException();
+
+ if (getByteOrder() == ByteOrder.LITTLE_ENDIAN)
+ {
+ return (short) ((buffer[0] & 0xff)
+ + (buffer[1] << 8));
+ }
+
+ return (short) ((buffer[0] << 8)
+ + (buffer[1] & 0xff));
+ }
+
+ public int readUnsignedByte()
+ throws IOException
+ {
+ return readByte() & 0xff;
+ }
+
+ public long readUnsignedInt()
+ throws IOException
+ {
+ return readInt() & 0xffffffff;
+ }
+
+ public int readUnsignedShort()
+ throws IOException
+ {
+ return readShort() & 0xffff;
+ }
+
+ public String readUTF()
+ throws IOException
+ {
+ checkClosed();
+
+ String data;
+ ByteOrder old = getByteOrder();
+ setByteOrder(ByteOrder.BIG_ENDIAN); // Strings are always big endian.
+
+ try
+ {
+ data = DataInputStream.readUTF(this);
+ }
+ finally
+ {
+ setByteOrder(old);
+ }
+
+ return data;
+ }
+
+ public void reset()
+ throws IOException
+ {
+ checkClosed();
+
+ long mark = ((Long) markStack.pop()).longValue();
+ seek(mark);
+ }
+
+ public void seek(long position)
+ throws IOException
+ {
+ checkClosed();
+
+ if (position < getFlushedPosition())
+ throw new IndexOutOfBoundsException("position < flushed position");
+
+ streamPos = position;
+ bitOffset = 0;
+ }
+
+ public void setBitOffset (int bitOffset)
+ throws IOException
+ {
+ checkClosed();
+
+ if (bitOffset < 0 || bitOffset > 7)
+ throw new IllegalArgumentException();
+
+ this.bitOffset = bitOffset;
+ }
+
+ public void setByteOrder(ByteOrder byteOrder)
{
this.byteOrder = byteOrder;
+ }
+
+ public int skipBytes(int num)
+ throws IOException
+ {
+ checkClosed();
+
+ seek(getStreamPosition() + num);
+ bitOffset = 0;
+ return num;
+ }
+
+ public long skipBytes(long num)
+ throws IOException
+ {
+ checkClosed();
+
+ seek(getStreamPosition() + num);
+ bitOffset = 0;
+ return num;
}
}
Index: kaffe/libraries/javalib/javax/imageio/stream/ImageOutputStreamImpl.java
diff -u kaffe/libraries/javalib/javax/imageio/stream/ImageOutputStreamImpl.java:1.1 kaffe/libraries/javalib/javax/imageio/stream/ImageOutputStreamImpl.java:1.2
--- kaffe/libraries/javalib/javax/imageio/stream/ImageOutputStreamImpl.java:1.1 Sun Oct 10 14:55:15 2004
+++ kaffe/libraries/javalib/javax/imageio/stream/ImageOutputStreamImpl.java Wed Dec 8 18:03:42 2004
@@ -39,6 +39,7 @@
package javax.imageio.stream;
import java.io.IOException;
+import java.nio.ByteOrder;
/**
* @author Michael Koch (konqueror at gmx.de)
@@ -51,6 +52,13 @@
// Do nothing here.
}
+ protected void flushBits()
+ throws IOException
+ {
+ // FIXME: Implement me.
+ throw new Error("not implemented");
+ }
+
public void write(byte[] data)
throws IOException
{
@@ -62,4 +70,176 @@
public abstract void write(int value)
throws IOException;
+
+ public void writeBit(int bit)
+ throws IOException
+ {
+ // FIXME: Implement me.
+ throw new Error("not implemented");
+ }
+
+ public void writeBits(long bits, int numBits)
+ throws IOException
+ {
+ // FIXME: Implement me.
+ throw new Error("not implemented");
+ }
+
+ public void writeBoolean(boolean value)
+ throws IOException
+ {
+ writeByte(value ? 1 : 0);
+ }
+
+ public void writeByte(int value)
+ throws IOException
+ {
+ write(value & 0xff);
+ }
+
+ public void writeBytes(String data)
+ throws IOException
+ {
+ write(data.getBytes());
+ }
+
+ public void writeChar(int value)
+ throws IOException
+ {
+ writeShort((short) value);
+ }
+
+ public void writeChars(char[] data, int offset, int len)
+ throws IOException
+ {
+ for(int i = 0; i < len; ++len)
+ writeChar(data[offset + i]);
+ }
+
+ public void writeChars(String data)
+ throws IOException
+ {
+ // FIXME: Implement me.
+ throw new Error("not implemented");
+ }
+
+ public void writeDouble(double value)
+ throws IOException
+ {
+ writeLong((long) value);
+ }
+
+ public void writeDoubles(double[] data, int offset, int len)
+ throws IOException
+ {
+ for(int i = 0; i < len; ++len)
+ writeDouble(data[offset + i]);
+ }
+
+ public void writeFloat(float value)
+ throws IOException
+ {
+ writeInt((int) value);
+ }
+
+ public void writeFloats(float[] data, int offset, int len)
+ throws IOException
+ {
+ for(int i = 0; i < len; ++len)
+ writeFloat(data[offset + i]);
+ }
+
+ public void writeInt(int value)
+ throws IOException
+ {
+ if (getByteOrder() == ByteOrder.LITTLE_ENDIAN)
+ {
+ buffer[0] = ((byte) value);
+ buffer[1] = ((byte) (value >> 8));
+ buffer[2] = ((byte) (value >> 16));
+ buffer[3] = ((byte) (value >> 24));
+ }
+ else
+ {
+ buffer[0] = ((byte) (value >> 24));
+ buffer[1] = ((byte) (value >> 16));
+ buffer[2] = ((byte) (value >> 8));
+ buffer[3] = ((byte) value);
+ }
+
+ write(buffer, 0, 4);
+ }
+
+ public void writeInts(int[] data, int offset, int len)
+ throws IOException
+ {
+ for(int i = 0; i < len; ++len)
+ writeInt(data[offset + i]);
+ }
+
+ public void writeLong(long value)
+ throws IOException
+ {
+ if (getByteOrder() == ByteOrder.LITTLE_ENDIAN)
+ {
+ buffer[0] = ((byte) value);
+ buffer[1] = ((byte) (value >> 8));
+ buffer[2] = ((byte) (value >> 16));
+ buffer[3] = ((byte) (value >> 24));
+ buffer[4] = ((byte) (value >> 32));
+ buffer[5] = ((byte) (value >> 40));
+ buffer[6] = ((byte) (value >> 48));
+ buffer[7] = ((byte) (value >> 56));
+ }
+ else
+ {
+ buffer[0] = ((byte) (value >> 56));
+ buffer[1] = ((byte) (value >> 48));
+ buffer[2] = ((byte) (value >> 40));
+ buffer[3] = ((byte) (value >> 32));
+ buffer[4] = ((byte) (value >> 24));
+ buffer[5] = ((byte) (value >> 16));
+ buffer[6] = ((byte) (value >> 8));
+ buffer[7] = ((byte) value);
+ }
+
+ write(buffer, 0, 8);
+ }
+
+ public void writeLongs(long[] data, int offset, int len)
+ throws IOException
+ {
+ for(int i = 0; i < len; ++len)
+ writeLong(data[offset + i]);
+ }
+
+ public void writeShort(int value)
+ throws IOException
+ {
+ if (getByteOrder() == ByteOrder.LITTLE_ENDIAN)
+ {
+ buffer[0] = ((byte) value);
+ buffer[1] = ((byte) (value >> 8));
+ }
+ else
+ {
+ buffer[0] = ((byte) (value >> 8));
+ buffer[1] = ((byte) value);
+ }
+
+ write(buffer, 0, 2);
+ }
+
+ public void writeShorts(short[] data, int offset, int len)
+ throws IOException
+ {
+ for(int i = 0; i < len; ++len)
+ writeShort(data[offset + i]);
+ }
+
+ public void writeUTF(String data)
+ throws IOException
+ {
+ throw new Error("not implemented");
+ }
}
Index: kaffe/libraries/javalib/javax/imageio/stream/MemoryCacheImageInputStream.java
diff -u kaffe/libraries/javalib/javax/imageio/stream/MemoryCacheImageInputStream.java:1.1 kaffe/libraries/javalib/javax/imageio/stream/MemoryCacheImageInputStream.java:1.2
--- kaffe/libraries/javalib/javax/imageio/stream/MemoryCacheImageInputStream.java:1.1 Sat Oct 23 12:08:19 2004
+++ kaffe/libraries/javalib/javax/imageio/stream/MemoryCacheImageInputStream.java Wed Dec 8 18:03:42 2004
@@ -38,11 +38,35 @@
package javax.imageio.stream;
+import java.io.InputStream;
+import java.io.IOException;
+
/**
* @author Michael Koch (konqueror at gmx.de)
*/
-public class MemoryCacheImageInputStream
+public class MemoryCacheImageInputStream extends ImageInputStreamImpl
{
+ private InputStream stream;
+
+ public MemoryCacheImageInputStream(InputStream stream)
+ {
+ this.stream = stream;
+ }
+
+ public void close()
+ throws IOException
+ {
+ super.close();
+ stream.close();
+ }
+
+ public void flushBefore(long position)
+ throws IOException
+ {
+ // FIXME: Implement me.
+ throw new Error("not implemented");
+ }
+
public boolean isCached()
{
return true;
@@ -56,5 +80,19 @@
public boolean isCachedMemory()
{
return true;
+ }
+
+ public int read()
+ throws IOException
+ {
+ setBitOffset(0);
+ return stream.read();
+ }
+
+ public int read(byte[] data, int offset, int len)
+ throws IOException
+ {
+ setBitOffset(0);
+ return stream.read(data, offset, len);
}
}
Index: kaffe/libraries/javalib/javax/imageio/stream/MemoryCacheImageOutputStream.java
diff -u kaffe/libraries/javalib/javax/imageio/stream/MemoryCacheImageOutputStream.java:1.1 kaffe/libraries/javalib/javax/imageio/stream/MemoryCacheImageOutputStream.java:1.2
--- kaffe/libraries/javalib/javax/imageio/stream/MemoryCacheImageOutputStream.java:1.1 Sat Oct 23 12:08:19 2004
+++ kaffe/libraries/javalib/javax/imageio/stream/MemoryCacheImageOutputStream.java Wed Dec 8 18:03:42 2004
@@ -38,11 +38,35 @@
package javax.imageio.stream;
+import java.io.IOException;
+import java.io.OutputStream;
+
/**
* @author Michael Koch (konqueror at gmx.de)
*/
-public class MemoryCacheImageOutputStream
+public class MemoryCacheImageOutputStream extends ImageOutputStreamImpl
{
+ private OutputStream stream;
+
+ public MemoryCacheImageOutputStream(OutputStream stream)
+ {
+ this.stream = stream;
+ }
+
+ public void close()
+ throws IOException
+ {
+ super.close();
+ stream.close();
+ }
+
+ public void flushBefore(long position)
+ throws IOException
+ {
+ // FIXME: Implement me.
+ throw new Error("not implemented");
+ }
+
public boolean isCached()
{
return true;
@@ -56,5 +80,33 @@
public boolean isCachedMemory()
{
return true;
+ }
+
+ public int read()
+ throws IOException
+ {
+ // FIXME: Implement me.
+ throw new Error("not implemented");
+ }
+
+ public int read (byte[] data, int offset, int len)
+ throws IOException
+ {
+ // FIXME: Implement me.
+ throw new Error("not implemented");
+ }
+
+ public void write(byte[] data, int offset, int len)
+ throws IOException
+ {
+ // FIXME: Flush pending bits.
+ stream.write(data, offset, len);
+ }
+
+ public void write(int value)
+ throws IOException
+ {
+ // FIXME: Flush pending bits.
+ stream.write(value);
}
}
More information about the kaffe
mailing list