diff options
author | Matthias Klose <doko@gcc.gnu.org> | 2007-06-03 23:18:43 +0000 |
---|---|---|
committer | Matthias Klose <doko@gcc.gnu.org> | 2007-06-03 23:18:43 +0000 |
commit | e1bea0c0687c5f4551b3a6058ec37ce3705fa6cc (patch) | |
tree | a9c9e7d91c484d53fe154f9285fc57325572ce50 /libjava/classpath/javax/imageio | |
parent | af333b9a7f9e1cc1029bec56d48f2de63acdf686 (diff) | |
download | gcc-e1bea0c0687c5f4551b3a6058ec37ce3705fa6cc.zip gcc-e1bea0c0687c5f4551b3a6058ec37ce3705fa6cc.tar.gz gcc-e1bea0c0687c5f4551b3a6058ec37ce3705fa6cc.tar.bz2 |
libjava/classpath/ChangeLog.gcj:
2007-05-31 Matthias Klose <doko@ubuntu.com>
* javax/management/NotificationBroadcasterSupport.java
(getNotificationInfo): Add cast.
* native/jni/qt-peer/Makefile.am (AM_CXXFLAGS): Add libstdc++ include
directories.
* native/jni/qt-peer/Makefile.in: Regenerate.
libjava/ChangeLog:
2007-06-03 Matthias Klose <doko@ubuntu.com>
* java/io/natFileWin32.cc (setFilePermissions): New (stub only).
_access: Handle EXEC query, stub only.
2007-06-03 Matthias Klose <doko@ubuntu.com>
Merged from classpath:
* gnu/java/nio/SelectorProviderImpl.java: Whitespace merge.
* java/lang/System.java(inheritedChannel): New.
* java/lang/Character.java: Remove stray`;'.
* java/net/MulticastSocket.java: Merged.
* java/text/DateFormatSymbols.java(getInstance): New, comment updates.
* java/text/Collator.java(getInstance): Merged.
* java/util/Calendar.java: New attributes ALL_STYLES, SHORT, LONG.
getDisplayName, getDisplayNames: New.
* java/util/logging/Logger.java: Merged.
* Regenerate .class and .h files.
2007-06-03 Matthias Klose <doko@ubuntu.com>
* java/io/File.java: Merge with classpath-0.95, new method
setFilePermissions, new attribute EXEC.
* java/io/natFilePosix.cc (setFilePermissions): New.
_access: Handle EXEC query.
* classpath/lib/java/io/File.class, java/io/File.h: Regenerate.
2007-06-03 Matthias Klose <doko@ubuntu.com>
Imported GNU Classpath 0.95.
* classpath/Makefile.in,
classpath/native/jni/midi-dssi/Makefile.in,
classpath/native/jni/classpath/Makefile.in,
classpath/native/jni/Makefile.in,
classpath/native/jni/gconf-peer/Makefile.in,
classpath/native/jni/java-io/Makefile.in,
classpath/native/jni/native-lib/Makefile.in,
classpath/native/jni/java-util/Makefile.in,
classpath/native/jni/midi-alsa/Makefile.in,
classpath/native/jni/java-lang/Makefile.in,
classpath/native/jni/java-nio/Makefile.in,
classpath/native/jni/java-net/Makefile.in,
classpath/native/jni/xmlj/Makefile.in,
classpath/native/jni/qt-peer/Makefile.in,
classpath/native/jni/gtk-peer/Makefile.in,
classpath/native/Makefile.in, classpath/native/jawt/Makefile.in,
classpath/native/fdlibm/Makefile.in,
classpath/native/plugin/Makefile.in,
classpath/resource/Makefile.in, classpath/scripts/Makefile.in,
classpath/tools/Makefile.in, classpath/doc/Makefile.in,
classpath/doc/api/Makefile.in, classpath/lib/Makefile.in,
classpath/external/Makefile.in, classpath/external/jsr166/Makefile.in,
classpath/external/sax/Makefile.in,
classpath/external/w3c_dom/Makefile.in,
classpath/external/relaxngDatatype/Makefile.in,
classpath/include/Makefile.in,
classpath/examples/Makefile.in: Regenerate.
* classpath/config.guess, classpath/config.sub,
classpath/ltmain.sh : Update.
* classpath/configure, classpath/depcomp, classpath/missing,
classpath/aclocal.m4, classpath/install-sh: Regenerate.
* gnu/classpath/Configuration.java (CLASSPATH_VERSION): Now 0.95.
* sources.am: Regenerate.
* Makefile.in: Regenerate.
* Update the .class files and generated CNI header files, add new
.class and generated CNI header files.
* Remove generated files for removed java source files:
classpath/gnu/java/net/BASE64.java,
classpath/gnu/java/security/util/Base64.java,
classpath/gnu/java/awt/peer/gtk/GThreadMutex.java,
classpath/gnu/java/awt/peer/gtk/GThreadNativeMethodRunner.java,
classpath/gnu/java/awt/font/autofit/Scaler.java,
classpath/gnu/classpath/jdwp/util/Value.java,
classpath/gnu/javax/net/ssl/Base64.java.
* Remove empty directories.
* Makefile.am(nat_source_files): Add natVMOperatingSystemMXBeanImpl.cc.
* java/lang/Class.java(setAccessible): Merge from classpath.
* java/util/Locale.java: Remove.
* gnu/java/lang/management/VMOperatingSystemMXBeanImpl.java,
gnu/java/lang/management/natVMOperatingSystemMXBeanImpl.cc: New.
* gcj/javaprims.h: Update class declarations.
* scripts/classes.pl: Update usage.
* HACKING: Mention to build all peers.
From-SVN: r125302
Diffstat (limited to 'libjava/classpath/javax/imageio')
5 files changed, 181 insertions, 47 deletions
diff --git a/libjava/classpath/javax/imageio/ImageWriteParam.java b/libjava/classpath/javax/imageio/ImageWriteParam.java index 4d8efc3..f4794a3 100644 --- a/libjava/classpath/javax/imageio/ImageWriteParam.java +++ b/libjava/classpath/javax/imageio/ImageWriteParam.java @@ -278,7 +278,7 @@ public class ImageWriteParam extends IIOParam public String[] getCompressionQualityDescriptions() { checkNotExplicitCompression(); - checkCompressionTypesSet();; + checkCompressionTypesSet(); return null; } @@ -286,7 +286,7 @@ public class ImageWriteParam extends IIOParam public float[] getCompressionQualityValues() { checkNotExplicitCompression(); - checkCompressionTypesSet();; + checkCompressionTypesSet(); return null; } diff --git a/libjava/classpath/javax/imageio/spi/IIORegistry.java b/libjava/classpath/javax/imageio/spi/IIORegistry.java index fc3087f..101cead 100644 --- a/libjava/classpath/javax/imageio/spi/IIORegistry.java +++ b/libjava/classpath/javax/imageio/spi/IIORegistry.java @@ -45,6 +45,7 @@ import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; +import gnu.java.awt.ClasspathToolkit; import gnu.javax.imageio.bmp.BMPImageReaderSpi; import gnu.javax.imageio.bmp.BMPImageWriterSpi; import gnu.javax.imageio.gif.GIFImageReaderSpi; @@ -91,6 +92,8 @@ public final class IIORegistry extends ServiceRegistry registerServiceProvider(new BMPImageWriterSpi()); Toolkit toolkit = Toolkit.getDefaultToolkit(); + if (toolkit instanceof ClasspathToolkit) + ((ClasspathToolkit)toolkit).registerImageIOSpis(this); registerApplicationClasspathSpis(); } diff --git a/libjava/classpath/javax/imageio/spi/ServiceRegistry.java b/libjava/classpath/javax/imageio/spi/ServiceRegistry.java index 4848bc6..3051a81 100644 --- a/libjava/classpath/javax/imageio/spi/ServiceRegistry.java +++ b/libjava/classpath/javax/imageio/spi/ServiceRegistry.java @@ -957,6 +957,6 @@ public class ServiceRegistry * criteria; <code>false</code> if it does not match. */ boolean filter(Object provider); - }; + } } diff --git a/libjava/classpath/javax/imageio/stream/FileCacheImageOutputStream.java b/libjava/classpath/javax/imageio/stream/FileCacheImageOutputStream.java index ae65598..47b7bb8 100644 --- a/libjava/classpath/javax/imageio/stream/FileCacheImageOutputStream.java +++ b/libjava/classpath/javax/imageio/stream/FileCacheImageOutputStream.java @@ -38,11 +38,10 @@ exception statement from your version. */ package javax.imageio.stream; -import gnu.classpath.NotImplementedException; - import java.io.File; import java.io.IOException; import java.io.OutputStream; +import java.io.RandomAccessFile; /** * @author Michael Koch (konqueror@gmx.de) @@ -50,32 +49,30 @@ import java.io.OutputStream; public class FileCacheImageOutputStream extends ImageOutputStreamImpl { private OutputStream stream; - private File cacheDir; - - public FileCacheImageOutputStream(OutputStream stream, File cacheDir) - throws IOException - { - super(); - this.stream = stream; - // FIXME: We do not support caching yet. - this.cacheDir = cacheDir; - } + private File cacheFile; + private RandomAccessFile cache; + private long maxPos; - public void close() + public FileCacheImageOutputStream(OutputStream s, File cacheDir) throws IOException { - if (stream != null) - { - stream.close(); - stream = null; - } + stream = s; + cacheFile = File.createTempFile("imageio", ".tmp", cacheDir); + cache = new RandomAccessFile(cacheFile, "rw"); + maxPos = 0; } - private void checkStreamClosed() + public void close() throws IOException { - if (stream == null) - throw new IOException("stream closed"); + maxPos = cache.length(); + seek(maxPos); + flushBefore(maxPos); + super.close(); + cache.close(); + cacheFile.delete(); + stream.flush(); + stream = null; } public boolean isCached() @@ -94,32 +91,88 @@ public class FileCacheImageOutputStream extends ImageOutputStreamImpl } public int read() - throws IOException, NotImplementedException + throws IOException { - // FIXME: Implement me. - throw new Error("not implemented"); + bitOffset = 0; + int val = cache.read(); + if (val != -1) + streamPos++; + return val; } public int read(byte[] data, int offset, int len) - throws IOException, NotImplementedException + throws IOException { - // FIXME: Implement me. - throw new Error("not implemented"); + bitOffset = 0; + int num = cache.read(data, offset, len); + if (num != -1) + streamPos += num; + return num; } public void write(byte[] data, int offset, int len) throws IOException { - checkStreamClosed(); - // FIXME: Flush pending bits. - stream.write(data, offset, len); + flushBits(); + cache.write(data, offset, len); + streamPos += len; + maxPos = Math.max(streamPos, maxPos); } public void write(int value) throws IOException { - checkStreamClosed(); - // FIXME: Flush pending bits. - stream.write(value); + flushBits(); + cache.write(value); + streamPos++; + maxPos = Math.max(streamPos, maxPos); + } + + public long length() + { + long l; + try + { + l = cache.length(); + } + catch (IOException ex) + { + l = -1; + } + return l; + } + + public void seek(long pos) + throws IOException + { + checkClosed(); + if (pos < flushedPos) + throw new IndexOutOfBoundsException(); + cache.seek(pos); + streamPos = cache.getFilePointer(); + maxPos = Math.max(streamPos, maxPos); + bitOffset = 0; + } + + public void flushBefore(long pos) + throws IOException + { + long oldPos = flushedPos; + super.flushBefore(pos); + long flushed = flushedPos - oldPos; + if (flushed > 0) + { + int len = 512; + byte[] buf = new byte[len]; + cache.seek(oldPos); + while (flushed > 0) + { + int l = (int) Math.min(flushed, len); + cache.readFully(buf, 0, l); + stream.write(buf, 0, l); + flushed -= l; + } + stream.flush(); + } } } diff --git a/libjava/classpath/javax/imageio/stream/ImageOutputStreamImpl.java b/libjava/classpath/javax/imageio/stream/ImageOutputStreamImpl.java index 1179fed..f23e695 100644 --- a/libjava/classpath/javax/imageio/stream/ImageOutputStreamImpl.java +++ b/libjava/classpath/javax/imageio/stream/ImageOutputStreamImpl.java @@ -38,8 +38,6 @@ exception statement from your version. */ package javax.imageio.stream; -import gnu.classpath.NotImplementedException; - import java.io.IOException; import java.io.UTFDataFormatException; import java.nio.ByteOrder; @@ -56,10 +54,25 @@ public abstract class ImageOutputStreamImpl extends ImageInputStreamImpl } protected final void flushBits() - throws IOException, NotImplementedException + throws IOException { - // FIXME: Implement me. - throw new Error("not implemented"); + checkClosed(); + if (bitOffset != 0) + { + int offset = bitOffset; + int partial = read(); + if (partial < 0) + { + partial = 0; + bitOffset = 0; + } + else + { + seek(getStreamPosition() - 1); + partial &= -1 << (8 - offset); + } + write(partial); + } } public void write(byte[] data) @@ -75,17 +88,82 @@ public abstract class ImageOutputStreamImpl extends ImageInputStreamImpl throws IOException; public void writeBit(int bit) - throws IOException, NotImplementedException + throws IOException { - // FIXME: Implement me. - throw new Error("not implemented"); + writeBits(1L & bit, 1); } public void writeBits(long bits, int numBits) - throws IOException, NotImplementedException + throws IOException { - // FIXME: Implement me. - throw new Error("not implemented"); + checkClosed(); + // Append chunk of bits to any preexisting bits, if any. + if (getStreamPosition() > 0 || bitOffset > 0) + { + int offs = bitOffset; + int partial = read(); + if (partial != -1) + seek(getStreamPosition() - 1); + else + partial = 0; + if (numBits + offs < 8) + { + // Append complete bits to partial byte. + int shift = 8 - (offs + numBits); + int mask = -1 >>> (32 - numBits); + partial &= ~(mask << shift); + partial |= (bits & mask) << shift; + write(partial); + seek(getStreamPosition() - 1); + bitOffset = offs + numBits; + numBits = 0; + } + else + { + // Append bits and decrease numBits accordingly. + int num = 8 - offs; + int mask = -1 >>> (32 - num); + partial &= ~mask; + partial |= (bits >> (numBits - num)) & mask; + write(partial); + numBits -= num; + } + } + + // Write out whole chunks, if any. + if (numBits > 7) + { + int remaining = numBits % 8; + for (int numBytes = numBits / 8; numBytes > 0; numBytes--) + { + int shift = (numBytes - 1) * 8 + remaining; + int value = (int) ((shift == 0) ? bits & 0xff + : (bits >> shift) & 0xff); + write(value); + } + numBits = remaining; + } + + // Write remaing partial bytes. + if (numBits != 0) + { + int partial = read(); + if (partial == -1) + { + seek(getStreamPosition() - 1); + } + else + { + partial = 0; + } + int shift = 8 - numBits; + int mask = -1 >>> (32 - numBits); + partial &= ~(mask << shift); + partial |= (bits & mask) << shift; + write(partial); + seek(getStreamPosition() - 1); + bitOffset = numBits; + } } public void writeBoolean(boolean value) |