[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