[multiple changes]
2005-02-06 Jerry Quinn <jlquinn@optonline.net> * javax/imageio/metadata/IIOMetadataNode.java: Implemented. * javax/imageio/metadata/IIOAttr.java, javax/imageio/metadata/IIONamedNodeMap.java, javax/imageio/metadata/IIONodeList.java: New files 2005-02-06 Graydon Hoare <graydon@redhat.com> * gnu/java/awt/ClasspathToolkit.java (registerImageIOSpis): New method. * javax/imageio/ImageIO.java (WriterFormatFilter.filter): Fix copy-and-paste typos. (WriterMIMETypeFilter.filter): Likewise. (ImageReaderIterator): Pass extension argument through to SPI. (getReadersByFilter): Likewise. (getWritersByFilter): Likewise. (getImageReadersByFormatName): Likewise. (getImageReadersByMIMEType): Likewise. (getImageReadersBySuffix): Likewise. (getImageWritersByFormatName): Likewise. (getImageWritersByMIMEType): Likewise. (getImageWritersBySuffix): Likewise. (read): Implement. (write): Implement. * javax/imageio/ImageReader.java (progressListeners): Initialize. (setInput): Implement. * javax/imageio/ImageWriter.java (progressListeners): Initialize. (warningListeners): Likewise. (warningLocales): Likewise. (setOutput): Test "isInstance" rather than class equality. * javax/imageio/spi/IIORegistry.java (static): Add reader and writer SPIs. (IIORegistry): Call ClasspathToolkit.registerImageIOSpis. 2004-02-06 Michael Koch <konqueror@gmx.de> * javax/imageio/metadata/IIOInvalidTreeException.java (IIOInvalidTreeException): Reformatted. * javax/imageio/spi/IIORegistry.java (static): Register ImageReaderSpi.class and ImageWriterSpi.class. * javax/imageio/stream/MemoryCacheImageInputStream.java: Reworked import statements. 2004-02-06 Michael Koch <konqueror@gmx.de> * javax/imageio/stream/FileImageOutputStream.java: Implemented. 2004-02-06 Michael Koch <konqueror@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. From-SVN: r94698
This commit is contained in:
parent
c866976a42
commit
7372d214af
20 changed files with 2162 additions and 40 deletions
|
@ -1,3 +1,67 @@
|
||||||
|
2005-02-06 Jerry Quinn <jlquinn@optonline.net>
|
||||||
|
|
||||||
|
* javax/imageio/metadata/IIOMetadataNode.java:
|
||||||
|
Implemented.
|
||||||
|
* javax/imageio/metadata/IIOAttr.java,
|
||||||
|
javax/imageio/metadata/IIONamedNodeMap.java,
|
||||||
|
javax/imageio/metadata/IIONodeList.java:
|
||||||
|
New files
|
||||||
|
|
||||||
|
2005-02-06 Graydon Hoare <graydon@redhat.com>
|
||||||
|
|
||||||
|
* gnu/java/awt/ClasspathToolkit.java
|
||||||
|
(registerImageIOSpis): New method.
|
||||||
|
* javax/imageio/ImageIO.java
|
||||||
|
(WriterFormatFilter.filter): Fix copy-and-paste typos.
|
||||||
|
(WriterMIMETypeFilter.filter): Likewise.
|
||||||
|
(ImageReaderIterator): Pass extension argument through to SPI.
|
||||||
|
(getReadersByFilter): Likewise.
|
||||||
|
(getWritersByFilter): Likewise.
|
||||||
|
(getImageReadersByFormatName): Likewise.
|
||||||
|
(getImageReadersByMIMEType): Likewise.
|
||||||
|
(getImageReadersBySuffix): Likewise.
|
||||||
|
(getImageWritersByFormatName): Likewise.
|
||||||
|
(getImageWritersByMIMEType): Likewise.
|
||||||
|
(getImageWritersBySuffix): Likewise.
|
||||||
|
(read): Implement.
|
||||||
|
(write): Implement.
|
||||||
|
* javax/imageio/ImageReader.java
|
||||||
|
(progressListeners): Initialize.
|
||||||
|
(setInput): Implement.
|
||||||
|
* javax/imageio/ImageWriter.java
|
||||||
|
(progressListeners): Initialize.
|
||||||
|
(warningListeners): Likewise.
|
||||||
|
(warningLocales): Likewise.
|
||||||
|
(setOutput): Test "isInstance" rather than class equality.
|
||||||
|
* javax/imageio/spi/IIORegistry.java
|
||||||
|
(static): Add reader and writer SPIs.
|
||||||
|
(IIORegistry): Call ClasspathToolkit.registerImageIOSpis.
|
||||||
|
|
||||||
|
2004-02-06 Michael Koch <konqueror@gmx.de>
|
||||||
|
|
||||||
|
* javax/imageio/metadata/IIOInvalidTreeException.java
|
||||||
|
(IIOInvalidTreeException): Reformatted.
|
||||||
|
* javax/imageio/spi/IIORegistry.java
|
||||||
|
(static): Register ImageReaderSpi.class and ImageWriterSpi.class.
|
||||||
|
* javax/imageio/stream/MemoryCacheImageInputStream.java:
|
||||||
|
Reworked import statements.
|
||||||
|
|
||||||
|
2004-02-06 Michael Koch <konqueror@gmx.de>
|
||||||
|
|
||||||
|
* javax/imageio/stream/FileImageOutputStream.java:
|
||||||
|
Implemented.
|
||||||
|
|
||||||
|
2004-02-06 Michael Koch <konqueror@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.
|
||||||
|
|
||||||
2005-02-02 David Daney <ddaney@avtrex.com>
|
2005-02-02 David Daney <ddaney@avtrex.com>
|
||||||
|
|
||||||
* java/net/InetAddress.java (InetAddress): Make a private copy of
|
* java/net/InetAddress.java (InetAddress): Make a private copy of
|
||||||
|
|
|
@ -141,6 +141,11 @@ public abstract class IIOParam
|
||||||
this.destinationOffset = destinationOffset;
|
this.destinationOffset = destinationOffset;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setSourceBands(int[] sourceBands)
|
||||||
|
{
|
||||||
|
this.sourceBands = sourceBands;
|
||||||
|
}
|
||||||
|
|
||||||
public void setSourceRegion(Rectangle sourceRegion)
|
public void setSourceRegion(Rectangle sourceRegion)
|
||||||
{
|
{
|
||||||
if (sourceRegion != null
|
if (sourceRegion != null
|
||||||
|
@ -154,4 +159,13 @@ public abstract class IIOParam
|
||||||
|
|
||||||
this.sourceRegion = sourceRegion;
|
this.sourceRegion = sourceRegion;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setSourceSubsampling(int sourceXSubsampling, int sourceYSubsampling,
|
||||||
|
int subsamplingXOffset, int subsamplingYOffset)
|
||||||
|
{
|
||||||
|
this.sourceXSubsampling = sourceXSubsampling;
|
||||||
|
this.sourceYSubsampling = sourceYSubsampling;
|
||||||
|
this.subsamplingXOffset = subsamplingXOffset;
|
||||||
|
this.subsamplingYOffset = subsamplingYOffset;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,8 +38,15 @@ exception statement from your version. */
|
||||||
|
|
||||||
package javax.imageio;
|
package javax.imageio;
|
||||||
|
|
||||||
|
import java.awt.image.RenderedImage;
|
||||||
|
import java.awt.image.BufferedImage;
|
||||||
|
import java.net.URL;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
import java.io.FileInputStream;
|
||||||
|
import java.io.FileOutputStream;
|
||||||
|
import java.io.InputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.io.OutputStream;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
|
@ -48,6 +55,10 @@ import javax.imageio.spi.IIORegistry;
|
||||||
import javax.imageio.spi.ImageReaderSpi;
|
import javax.imageio.spi.ImageReaderSpi;
|
||||||
import javax.imageio.spi.ImageWriterSpi;
|
import javax.imageio.spi.ImageWriterSpi;
|
||||||
import javax.imageio.spi.ServiceRegistry;
|
import javax.imageio.spi.ServiceRegistry;
|
||||||
|
import javax.imageio.stream.ImageOutputStream;
|
||||||
|
import javax.imageio.stream.ImageInputStream;
|
||||||
|
import javax.imageio.stream.MemoryCacheImageInputStream;
|
||||||
|
import javax.imageio.stream.MemoryCacheImageOutputStream;
|
||||||
|
|
||||||
public final class ImageIO
|
public final class ImageIO
|
||||||
{
|
{
|
||||||
|
@ -142,14 +153,14 @@ public final class ImageIO
|
||||||
|
|
||||||
public boolean filter(Object provider)
|
public boolean filter(Object provider)
|
||||||
{
|
{
|
||||||
if (provider instanceof ImageReaderSpi)
|
if (provider instanceof ImageWriterSpi)
|
||||||
{
|
{
|
||||||
ImageReaderSpi spi = (ImageReaderSpi) provider;
|
ImageWriterSpi spi = (ImageWriterSpi) provider;
|
||||||
String[] formatNames = spi.getFormatNames();
|
String[] formatNames = spi.getFormatNames();
|
||||||
|
|
||||||
for (int i = formatNames.length - 1; i >= 0; --i)
|
for (int i = formatNames.length - 1; i >= 0; --i)
|
||||||
if (formatName.equals(formatNames[i]))
|
if (formatName.equals(formatNames[i]))
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
@ -167,7 +178,7 @@ public final class ImageIO
|
||||||
|
|
||||||
public boolean filter(Object provider)
|
public boolean filter(Object provider)
|
||||||
{
|
{
|
||||||
if (provider instanceof ImageReaderSpi)
|
if (provider instanceof ImageWriterSpi)
|
||||||
{
|
{
|
||||||
ImageWriterSpi spi = (ImageWriterSpi) provider;
|
ImageWriterSpi spi = (ImageWriterSpi) provider;
|
||||||
String[] mimetypes = spi.getMIMETypes();
|
String[] mimetypes = spi.getMIMETypes();
|
||||||
|
@ -192,7 +203,7 @@ public final class ImageIO
|
||||||
|
|
||||||
public boolean filter(Object provider)
|
public boolean filter(Object provider)
|
||||||
{
|
{
|
||||||
if (provider instanceof ImageReaderSpi)
|
if (provider instanceof ImageWriterSpi)
|
||||||
{
|
{
|
||||||
ImageWriterSpi spi = (ImageWriterSpi) provider;
|
ImageWriterSpi spi = (ImageWriterSpi) provider;
|
||||||
String[] suffixes = spi.getFileSuffixes();
|
String[] suffixes = spi.getFileSuffixes();
|
||||||
|
@ -209,10 +220,12 @@ public final class ImageIO
|
||||||
private static final class ImageReaderIterator implements Iterator
|
private static final class ImageReaderIterator implements Iterator
|
||||||
{
|
{
|
||||||
Iterator it;
|
Iterator it;
|
||||||
|
Object readerExtension;
|
||||||
|
|
||||||
public ImageReaderIterator(Iterator it)
|
public ImageReaderIterator(Iterator it, Object readerExtension)
|
||||||
{
|
{
|
||||||
this.it = it;
|
this.it = it;
|
||||||
|
this.readerExtension = readerExtension;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean hasNext()
|
public boolean hasNext()
|
||||||
|
@ -224,7 +237,7 @@ public final class ImageIO
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
return ((ImageReaderSpi) it.next()).createReaderInstance();
|
return ((ImageReaderSpi) it.next()).createReaderInstance(readerExtension);
|
||||||
}
|
}
|
||||||
catch (IOException e)
|
catch (IOException e)
|
||||||
{
|
{
|
||||||
|
@ -241,10 +254,12 @@ public final class ImageIO
|
||||||
private static final class ImageWriterIterator implements Iterator
|
private static final class ImageWriterIterator implements Iterator
|
||||||
{
|
{
|
||||||
Iterator it;
|
Iterator it;
|
||||||
|
Object writerExtension;
|
||||||
|
|
||||||
public ImageWriterIterator(Iterator it)
|
public ImageWriterIterator(Iterator it, Object writerExtension)
|
||||||
{
|
{
|
||||||
this.it = it;
|
this.it = it;
|
||||||
|
this.writerExtension = writerExtension;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean hasNext()
|
public boolean hasNext()
|
||||||
|
@ -256,7 +271,7 @@ public final class ImageIO
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
return ((ImageWriterSpi) it.next()).createWriterInstance();
|
return ((ImageWriterSpi) it.next()).createWriterInstance(writerExtension);
|
||||||
}
|
}
|
||||||
catch (IOException e)
|
catch (IOException e)
|
||||||
{
|
{
|
||||||
|
@ -274,12 +289,13 @@ public final class ImageIO
|
||||||
private static boolean useCache = true;
|
private static boolean useCache = true;
|
||||||
|
|
||||||
private static Iterator getReadersByFilter(Class type,
|
private static Iterator getReadersByFilter(Class type,
|
||||||
ServiceRegistry.Filter filter)
|
ServiceRegistry.Filter filter,
|
||||||
|
Object readerExtension)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Iterator it = getRegistry().getServiceProviders(type, filter, true);
|
Iterator it = getRegistry().getServiceProviders(type, filter, true);
|
||||||
return new ImageReaderIterator(it);
|
return new ImageReaderIterator(it, readerExtension);
|
||||||
}
|
}
|
||||||
catch (IllegalArgumentException e)
|
catch (IllegalArgumentException e)
|
||||||
{
|
{
|
||||||
|
@ -288,12 +304,13 @@ public final class ImageIO
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Iterator getWritersByFilter(Class type,
|
private static Iterator getWritersByFilter(Class type,
|
||||||
ServiceRegistry.Filter filter)
|
ServiceRegistry.Filter filter,
|
||||||
|
Object writerExtension)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Iterator it = getRegistry().getServiceProviders(type, filter, true);
|
Iterator it = getRegistry().getServiceProviders(type, filter, true);
|
||||||
return new ImageWriterIterator(it);
|
return new ImageWriterIterator(it, writerExtension);
|
||||||
}
|
}
|
||||||
catch (IllegalArgumentException e)
|
catch (IllegalArgumentException e)
|
||||||
{
|
{
|
||||||
|
@ -312,7 +329,8 @@ public final class ImageIO
|
||||||
throw new IllegalArgumentException("formatName may not be null");
|
throw new IllegalArgumentException("formatName may not be null");
|
||||||
|
|
||||||
return getReadersByFilter(ImageReaderSpi.class,
|
return getReadersByFilter(ImageReaderSpi.class,
|
||||||
new ReaderFormatFilter(formatName));
|
new ReaderFormatFilter(formatName),
|
||||||
|
formatName);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Iterator getImageReadersByMIMEType(String MIMEType)
|
public static Iterator getImageReadersByMIMEType(String MIMEType)
|
||||||
|
@ -321,7 +339,8 @@ public final class ImageIO
|
||||||
throw new IllegalArgumentException("MIMEType may not be null");
|
throw new IllegalArgumentException("MIMEType may not be null");
|
||||||
|
|
||||||
return getReadersByFilter(ImageReaderSpi.class,
|
return getReadersByFilter(ImageReaderSpi.class,
|
||||||
new ReaderMIMETypeFilter(MIMEType));
|
new ReaderMIMETypeFilter(MIMEType),
|
||||||
|
MIMEType);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Iterator getImageReadersBySuffix(String fileSuffix)
|
public static Iterator getImageReadersBySuffix(String fileSuffix)
|
||||||
|
@ -330,7 +349,8 @@ public final class ImageIO
|
||||||
throw new IllegalArgumentException("formatName may not be null");
|
throw new IllegalArgumentException("formatName may not be null");
|
||||||
|
|
||||||
return getReadersByFilter(ImageReaderSpi.class,
|
return getReadersByFilter(ImageReaderSpi.class,
|
||||||
new ReaderSuffixFilter(fileSuffix));
|
new ReaderSuffixFilter(fileSuffix),
|
||||||
|
fileSuffix);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Iterator getImageWritersByFormatName(String formatName)
|
public static Iterator getImageWritersByFormatName(String formatName)
|
||||||
|
@ -339,7 +359,8 @@ public final class ImageIO
|
||||||
throw new IllegalArgumentException("formatName may not be null");
|
throw new IllegalArgumentException("formatName may not be null");
|
||||||
|
|
||||||
return getWritersByFilter(ImageWriterSpi.class,
|
return getWritersByFilter(ImageWriterSpi.class,
|
||||||
new WriterFormatFilter(formatName));
|
new WriterFormatFilter(formatName),
|
||||||
|
formatName);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Iterator getImageWritersByMIMEType(String MIMEType)
|
public static Iterator getImageWritersByMIMEType(String MIMEType)
|
||||||
|
@ -348,7 +369,8 @@ public final class ImageIO
|
||||||
throw new IllegalArgumentException("MIMEType may not be null");
|
throw new IllegalArgumentException("MIMEType may not be null");
|
||||||
|
|
||||||
return getWritersByFilter(ImageWriterSpi.class,
|
return getWritersByFilter(ImageWriterSpi.class,
|
||||||
new WriterMIMETypeFilter(MIMEType));
|
new WriterMIMETypeFilter(MIMEType),
|
||||||
|
MIMEType);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Iterator getImageWritersBySuffix(String fileSuffix)
|
public static Iterator getImageWritersBySuffix(String fileSuffix)
|
||||||
|
@ -357,7 +379,8 @@ public final class ImageIO
|
||||||
throw new IllegalArgumentException("fileSuffix may not be null");
|
throw new IllegalArgumentException("fileSuffix may not be null");
|
||||||
|
|
||||||
return getWritersByFilter(ImageWriterSpi.class,
|
return getWritersByFilter(ImageWriterSpi.class,
|
||||||
new WriterSuffixFilter(fileSuffix));
|
new WriterSuffixFilter(fileSuffix),
|
||||||
|
fileSuffix);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String[] getReaderFormatNames()
|
public static String[] getReaderFormatNames()
|
||||||
|
@ -496,4 +519,87 @@ public final class ImageIO
|
||||||
{
|
{
|
||||||
ImageIO.useCache = useCache;
|
ImageIO.useCache = useCache;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* "Standard" simplified entry points.
|
||||||
|
*/
|
||||||
|
|
||||||
|
public static boolean write(RenderedImage im,
|
||||||
|
String formatName,
|
||||||
|
File output)
|
||||||
|
throws IOException
|
||||||
|
{
|
||||||
|
return write(im, formatName, new FileOutputStream(output));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean write(RenderedImage im,
|
||||||
|
String formatName,
|
||||||
|
OutputStream output)
|
||||||
|
throws IOException
|
||||||
|
{
|
||||||
|
return write(im, formatName, new MemoryCacheImageOutputStream(output));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static boolean write(RenderedImage im,
|
||||||
|
String formatName,
|
||||||
|
ImageOutputStream output)
|
||||||
|
throws IOException
|
||||||
|
{
|
||||||
|
Iterator writers = getImageWritersByFormatName(formatName);
|
||||||
|
IIOImage img = new IIOImage(im, null, null);
|
||||||
|
while (writers.hasNext())
|
||||||
|
{
|
||||||
|
ImageWriter w = (ImageWriter) writers.next();
|
||||||
|
try
|
||||||
|
{
|
||||||
|
w.setOutput(output);
|
||||||
|
}
|
||||||
|
catch (IllegalArgumentException e)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
w.write(null, img, null);
|
||||||
|
output.close();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static BufferedImage read(ImageInputStream stream)
|
||||||
|
throws IOException
|
||||||
|
{
|
||||||
|
Iterator providers = getRegistry().getServiceProviders(ImageReaderSpi.class, true);
|
||||||
|
while (providers.hasNext())
|
||||||
|
{
|
||||||
|
ImageReaderSpi spi = (ImageReaderSpi) providers.next();
|
||||||
|
if (spi.canDecodeInput(stream))
|
||||||
|
{
|
||||||
|
ImageReader reader = spi.createReaderInstance();
|
||||||
|
reader.setInput(stream);
|
||||||
|
return reader.read(0, null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static BufferedImage read(URL input)
|
||||||
|
throws IOException
|
||||||
|
{
|
||||||
|
return read(input.openStream());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static BufferedImage read(InputStream input)
|
||||||
|
throws IOException
|
||||||
|
{
|
||||||
|
return read(new MemoryCacheImageInputStream(input));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static BufferedImage read(File input)
|
||||||
|
throws IOException
|
||||||
|
{
|
||||||
|
return read(new FileInputStream(input));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -94,6 +94,22 @@ public class ImageReadParam extends IIOParam
|
||||||
{
|
{
|
||||||
return sourceRenderSize;
|
return sourceRenderSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setDestination(BufferedImage destination)
|
||||||
|
{
|
||||||
|
this.destination = destination;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDestinationBands(int[] destinationBands)
|
||||||
|
{
|
||||||
|
this.destinationBands = destinationBands;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSourceProgressivePasses(int minPass, int numPasses)
|
||||||
|
{
|
||||||
|
this.minProgressivePass = minPass;
|
||||||
|
this.numProgressivePasses = numPasses;
|
||||||
|
}
|
||||||
|
|
||||||
public void setSourceRenderSize(Dimension size)
|
public void setSourceRenderSize(Dimension size)
|
||||||
throws UnsupportedOperationException
|
throws UnsupportedOperationException
|
||||||
|
|
|
@ -51,6 +51,7 @@ import javax.imageio.event.IIOReadUpdateListener;
|
||||||
import javax.imageio.event.IIOReadWarningListener;
|
import javax.imageio.event.IIOReadWarningListener;
|
||||||
import javax.imageio.metadata.IIOMetadata;
|
import javax.imageio.metadata.IIOMetadata;
|
||||||
import javax.imageio.spi.ImageReaderSpi;
|
import javax.imageio.spi.ImageReaderSpi;
|
||||||
|
import javax.imageio.stream.ImageInputStream;
|
||||||
|
|
||||||
public abstract class ImageReader
|
public abstract class ImageReader
|
||||||
{
|
{
|
||||||
|
@ -62,7 +63,7 @@ public abstract class ImageReader
|
||||||
protected Locale locale;
|
protected Locale locale;
|
||||||
protected int minIndex;
|
protected int minIndex;
|
||||||
protected ImageReaderSpi originatingProvider;
|
protected ImageReaderSpi originatingProvider;
|
||||||
protected List progressListeners;
|
protected List progressListeners = new ArrayList();
|
||||||
protected boolean seekForwardOnly;
|
protected boolean seekForwardOnly;
|
||||||
protected List updateListeners = new ArrayList();
|
protected List updateListeners = new ArrayList();
|
||||||
protected List warningListeners = new ArrayList();
|
protected List warningListeners = new ArrayList();
|
||||||
|
@ -156,6 +157,42 @@ public abstract class ImageReader
|
||||||
public abstract Iterator getImageTypes(int imageIndex)
|
public abstract Iterator getImageTypes(int imageIndex)
|
||||||
throws IOException;
|
throws IOException;
|
||||||
|
|
||||||
|
public void setInput(Object input,
|
||||||
|
boolean seekForwardOnly,
|
||||||
|
boolean ignoreMetadata)
|
||||||
|
{
|
||||||
|
Class[] okClasses = originatingProvider.getInputTypes();
|
||||||
|
if (okClasses == null)
|
||||||
|
{
|
||||||
|
if (!(input instanceof ImageInputStream))
|
||||||
|
throw new IllegalArgumentException();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
boolean classOk = false;
|
||||||
|
for (int i = 0; i < okClasses.length; ++i)
|
||||||
|
if (okClasses[i].isInstance(input))
|
||||||
|
classOk = true;
|
||||||
|
if (!classOk)
|
||||||
|
throw new IllegalArgumentException();
|
||||||
|
}
|
||||||
|
|
||||||
|
this.input = input;
|
||||||
|
this.seekForwardOnly = seekForwardOnly;
|
||||||
|
this.ignoreMetadata = ignoreMetadata;
|
||||||
|
this.minIndex = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setInput(Object in, boolean seekForwardOnly)
|
||||||
|
{
|
||||||
|
setInput(in, seekForwardOnly, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setInput(Object in)
|
||||||
|
{
|
||||||
|
setInput(in, false, false);
|
||||||
|
}
|
||||||
|
|
||||||
public Object getInput()
|
public Object getInput()
|
||||||
{
|
{
|
||||||
return input;
|
return input;
|
||||||
|
|
|
@ -40,6 +40,7 @@ package javax.imageio;
|
||||||
|
|
||||||
import java.awt.Dimension;
|
import java.awt.Dimension;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
@ -59,9 +60,9 @@ public abstract class ImageWriter
|
||||||
protected Locale locale;
|
protected Locale locale;
|
||||||
protected ImageWriterSpi originatingProvider;
|
protected ImageWriterSpi originatingProvider;
|
||||||
protected Object output;
|
protected Object output;
|
||||||
protected List progressListeners;
|
protected List progressListeners = new ArrayList();
|
||||||
protected List warningListeners;
|
protected List warningListeners = new ArrayList();
|
||||||
protected List warningLocales;
|
protected List warningLocales = new ArrayList();
|
||||||
|
|
||||||
protected ImageWriter(ImageWriterSpi originatingProvider)
|
protected ImageWriter(ImageWriterSpi originatingProvider)
|
||||||
{
|
{
|
||||||
|
@ -371,11 +372,11 @@ public abstract class ImageWriter
|
||||||
|
|
||||||
if (originatingProvider != null)
|
if (originatingProvider != null)
|
||||||
types = originatingProvider.getOutputTypes();
|
types = originatingProvider.getOutputTypes();
|
||||||
|
|
||||||
if (types != null)
|
if (types != null)
|
||||||
for (int i = types.length - 1; i >= 0; --i)
|
for (int i = types.length - 1; i >= 0; --i)
|
||||||
if (types[i].equals(output.getClass()))
|
if (types[i].isInstance(output))
|
||||||
found = true;
|
found = true;
|
||||||
|
|
||||||
if (! found)
|
if (! found)
|
||||||
throw new IllegalArgumentException("output type not available");
|
throw new IllegalArgumentException("output type not available");
|
||||||
|
|
378
libjava/javax/imageio/metadata/IIOAttr.java
Normal file
378
libjava/javax/imageio/metadata/IIOAttr.java
Normal file
|
@ -0,0 +1,378 @@
|
||||||
|
/* IIOAttr.java --
|
||||||
|
Copyright (C) 2004, 2005 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
This file is part of GNU Classpath.
|
||||||
|
|
||||||
|
GNU Classpath is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2, or (at your option)
|
||||||
|
any later version.
|
||||||
|
|
||||||
|
GNU Classpath is distributed in the hope that it will be useful, but
|
||||||
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with GNU Classpath; see the file COPYING. If not, write to the
|
||||||
|
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||||
|
02111-1307 USA.
|
||||||
|
|
||||||
|
Linking this library statically or dynamically with other modules is
|
||||||
|
making a combined work based on this library. Thus, the terms and
|
||||||
|
conditions of the GNU General Public License cover the whole
|
||||||
|
combination.
|
||||||
|
|
||||||
|
As a special exception, the copyright holders of this library give you
|
||||||
|
permission to link this library with independent modules to produce an
|
||||||
|
executable, regardless of the license terms of these independent
|
||||||
|
modules, and to copy and distribute the resulting executable under
|
||||||
|
terms of your choice, provided that you also meet, for each linked
|
||||||
|
independent module, the terms and conditions of the license of that
|
||||||
|
module. An independent module is a module which is not derived from
|
||||||
|
or based on this library. If you modify this library, you may extend
|
||||||
|
this exception to your version of the library, but you are not
|
||||||
|
obligated to do so. If you do not wish to do so, delete this
|
||||||
|
exception statement from your version. */
|
||||||
|
|
||||||
|
|
||||||
|
package javax.imageio.metadata;
|
||||||
|
|
||||||
|
import org.w3c.dom.Attr;
|
||||||
|
import org.w3c.dom.DOMException;
|
||||||
|
import org.w3c.dom.Document;
|
||||||
|
import org.w3c.dom.Element;
|
||||||
|
import org.w3c.dom.NamedNodeMap;
|
||||||
|
import org.w3c.dom.Node;
|
||||||
|
import org.w3c.dom.NodeList;
|
||||||
|
import org.w3c.dom.TypeInfo;
|
||||||
|
import org.w3c.dom.UserDataHandler;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Simple Attr node for metadata trees
|
||||||
|
*
|
||||||
|
* @author jlquinn
|
||||||
|
*/
|
||||||
|
class IIOAttr implements Attr
|
||||||
|
{
|
||||||
|
String name;
|
||||||
|
String value;
|
||||||
|
IIOMetadataNode owner;
|
||||||
|
|
||||||
|
public IIOAttr(String name, String value, IIOMetadataNode owner)
|
||||||
|
{
|
||||||
|
this.name = name;
|
||||||
|
this.value = value;
|
||||||
|
this.owner = owner;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.Attr#getName()
|
||||||
|
*/
|
||||||
|
public String getName()
|
||||||
|
{
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public TypeInfo getSchemaTypeInfo()
|
||||||
|
{
|
||||||
|
throw new Error("not implemented");
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.Attr#getSpecified()
|
||||||
|
*/
|
||||||
|
public boolean getSpecified()
|
||||||
|
{
|
||||||
|
// I don't think there can be default attrs in metadata
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.Attr#getValue()
|
||||||
|
*/
|
||||||
|
public String getValue()
|
||||||
|
{
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.Attr#setValue(java.lang.String)
|
||||||
|
*/
|
||||||
|
public void setValue(String value) throws DOMException
|
||||||
|
{
|
||||||
|
this.value = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.Attr#getOwnerElement()
|
||||||
|
*/
|
||||||
|
public Element getOwnerElement()
|
||||||
|
{
|
||||||
|
return owner;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.Node#getNodeName()
|
||||||
|
*/
|
||||||
|
public String getNodeName()
|
||||||
|
{
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.Node#getNodeValue()
|
||||||
|
*/
|
||||||
|
public String getNodeValue() throws DOMException
|
||||||
|
{
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.Node#setNodeValue(java.lang.String)
|
||||||
|
*/
|
||||||
|
public void setNodeValue(String nodeValue) throws DOMException
|
||||||
|
{
|
||||||
|
this.value = nodeValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.Node#getNodeType()
|
||||||
|
*/
|
||||||
|
public short getNodeType()
|
||||||
|
{
|
||||||
|
return ATTRIBUTE_NODE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.Node#getParentNode()
|
||||||
|
*/
|
||||||
|
public Node getParentNode()
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.Node#getChildNodes()
|
||||||
|
*/
|
||||||
|
public NodeList getChildNodes()
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.Node#getFirstChild()
|
||||||
|
*/
|
||||||
|
public Node getFirstChild()
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.Node#getLastChild()
|
||||||
|
*/
|
||||||
|
public Node getLastChild()
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.Node#getPreviousSibling()
|
||||||
|
*/
|
||||||
|
public Node getPreviousSibling()
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.Node#getNextSibling()
|
||||||
|
*/
|
||||||
|
public Node getNextSibling()
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.Node#getAttributes()
|
||||||
|
*/
|
||||||
|
public NamedNodeMap getAttributes()
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.Node#getOwnerDocument()
|
||||||
|
*/
|
||||||
|
public Document getOwnerDocument()
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.Node#insertBefore(org.w3c.dom.Node, org.w3c.dom.Node)
|
||||||
|
*/
|
||||||
|
public Node insertBefore(Node newChild, Node refChild) throws DOMException
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.Node#replaceChild(org.w3c.dom.Node, org.w3c.dom.Node)
|
||||||
|
*/
|
||||||
|
public Node replaceChild(Node newChild, Node oldChild) throws DOMException
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.Node#removeChild(org.w3c.dom.Node)
|
||||||
|
*/
|
||||||
|
public Node removeChild(Node oldChild) throws DOMException
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.Node#appendChild(org.w3c.dom.Node)
|
||||||
|
*/
|
||||||
|
public Node appendChild(Node newChild) throws DOMException
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.Node#hasChildNodes()
|
||||||
|
*/
|
||||||
|
public boolean hasChildNodes()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.Node#cloneNode(boolean)
|
||||||
|
*/
|
||||||
|
public Node cloneNode(boolean deep)
|
||||||
|
{
|
||||||
|
return new IIOAttr(name, value, owner);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.Node#normalize()
|
||||||
|
*/
|
||||||
|
public void normalize()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isDefaultNamespace(String namespaceURI)
|
||||||
|
{
|
||||||
|
throw new Error("not implemented");
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.Node#isSupported(java.lang.String, java.lang.String)
|
||||||
|
*/
|
||||||
|
public boolean isSupported(String feature, String version)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.Node#getNamespaceURI()
|
||||||
|
*/
|
||||||
|
public String getNamespaceURI()
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.Node#getPrefix()
|
||||||
|
*/
|
||||||
|
public String getPrefix()
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.Node#setPrefix(java.lang.String)
|
||||||
|
*/
|
||||||
|
public void setPrefix(String prefix) throws DOMException
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.Node#getLocalName()
|
||||||
|
*/
|
||||||
|
public String getLocalName()
|
||||||
|
{
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Object getUserData(String key)
|
||||||
|
{
|
||||||
|
throw new Error("not implemented");
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.Node#hasAttributes()
|
||||||
|
*/
|
||||||
|
public boolean hasAttributes()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isId()
|
||||||
|
{
|
||||||
|
throw new Error("not implemented");
|
||||||
|
}
|
||||||
|
|
||||||
|
public String lookupNamespaceURI(String prefix)
|
||||||
|
{
|
||||||
|
throw new Error("not implemented");
|
||||||
|
}
|
||||||
|
|
||||||
|
public String lookupPrefix(String namespaceURI)
|
||||||
|
{
|
||||||
|
throw new Error("not implemented");
|
||||||
|
}
|
||||||
|
|
||||||
|
public Object setUserData(String key, Object data, UserDataHandler handler)
|
||||||
|
{
|
||||||
|
throw new Error("not implemented");
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getBaseURI()
|
||||||
|
{
|
||||||
|
throw new Error("not implemented");
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTextContent()
|
||||||
|
{
|
||||||
|
throw new Error("not implemented");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTextContent(String textContent)
|
||||||
|
{
|
||||||
|
throw new Error("not implemented");
|
||||||
|
}
|
||||||
|
|
||||||
|
public short compareDocumentPosition(Node other)
|
||||||
|
throws DOMException
|
||||||
|
{
|
||||||
|
throw new Error("not implemented");
|
||||||
|
}
|
||||||
|
|
||||||
|
public Object getFeature(String feature, String version)
|
||||||
|
{
|
||||||
|
throw new Error("not implemented");
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isEqualNode(Node other)
|
||||||
|
{
|
||||||
|
throw new Error("not implemented");
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isSameNode(Node other)
|
||||||
|
{
|
||||||
|
throw new Error("not implemented");
|
||||||
|
}
|
||||||
|
}
|
|
@ -40,23 +40,28 @@ package javax.imageio.metadata;
|
||||||
|
|
||||||
import javax.imageio.IIOException;
|
import javax.imageio.IIOException;
|
||||||
|
|
||||||
|
import org.w3c.dom.Node;
|
||||||
|
|
||||||
public class IIOInvalidTreeException extends IIOException
|
public class IIOInvalidTreeException extends IIOException
|
||||||
{
|
{
|
||||||
protected /*Node*/ Object offendingNode;
|
private static final long serialVersionUID = -1314083172544132777L;
|
||||||
|
|
||||||
public IIOInvalidTreeException(String message, /*Node*/ Object offendingNode)
|
protected Node offendingNode;
|
||||||
|
|
||||||
|
public IIOInvalidTreeException(String message, Node offendingNode)
|
||||||
{
|
{
|
||||||
super(message);
|
super(message);
|
||||||
this.offendingNode = offendingNode;
|
this.offendingNode = offendingNode;
|
||||||
}
|
}
|
||||||
|
|
||||||
public IIOInvalidTreeException(String message, Throwable cause, /*Node*/ Object offendingNode)
|
public IIOInvalidTreeException(String message, Throwable cause,
|
||||||
|
Node offendingNode)
|
||||||
{
|
{
|
||||||
super(message, cause);
|
super(message, cause);
|
||||||
this.offendingNode = offendingNode;
|
this.offendingNode = offendingNode;
|
||||||
}
|
}
|
||||||
|
|
||||||
public /*Node*/ Object getOffendingNode()
|
public Node getOffendingNode()
|
||||||
{
|
{
|
||||||
return offendingNode;
|
return offendingNode;
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,6 +38,555 @@ exception statement from your version. */
|
||||||
|
|
||||||
package javax.imageio.metadata;
|
package javax.imageio.metadata;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.w3c.dom.Attr;
|
||||||
|
import org.w3c.dom.DOMException;
|
||||||
|
import org.w3c.dom.Document;
|
||||||
|
import org.w3c.dom.Element;
|
||||||
|
import org.w3c.dom.NamedNodeMap;
|
||||||
|
import org.w3c.dom.Node;
|
||||||
|
import org.w3c.dom.NodeList;
|
||||||
|
import org.w3c.dom.TypeInfo;
|
||||||
|
import org.w3c.dom.UserDataHandler;
|
||||||
|
|
||||||
public class IIOMetadataNode
|
public class IIOMetadataNode
|
||||||
|
implements Element, NodeList
|
||||||
{
|
{
|
||||||
|
private String name;
|
||||||
|
private HashMap attrs = new HashMap();
|
||||||
|
private List children = new ArrayList();
|
||||||
|
private IIOMetadataNode parent;
|
||||||
|
private Object obj;
|
||||||
|
|
||||||
|
public IIOMetadataNode()
|
||||||
|
{
|
||||||
|
// Do nothing here.
|
||||||
|
}
|
||||||
|
|
||||||
|
public IIOMetadataNode(String nodename)
|
||||||
|
{
|
||||||
|
name = nodename;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Object getUserObject()
|
||||||
|
{
|
||||||
|
return obj;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUserObject(Object o)
|
||||||
|
{
|
||||||
|
obj = o;
|
||||||
|
}
|
||||||
|
|
||||||
|
public short compareDocumentPosition(Node other)
|
||||||
|
throws DOMException
|
||||||
|
{
|
||||||
|
throw new Error("not implemented");
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.Element#getAttribute(java.lang.String)
|
||||||
|
*/
|
||||||
|
public String getAttribute(String name)
|
||||||
|
{
|
||||||
|
Attr anode = (Attr) attrs.get(name);
|
||||||
|
return anode != null ? anode.getValue() : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.Element#getAttributeNode(java.lang.String)
|
||||||
|
*/
|
||||||
|
public Attr getAttributeNode(String name)
|
||||||
|
{
|
||||||
|
String val = getAttribute(name);
|
||||||
|
if (val != null)
|
||||||
|
return new IIOAttr(name, val, this);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.Element#getAttributeNodeNS(java.lang.String, java.lang.String)
|
||||||
|
*/
|
||||||
|
public Attr getAttributeNodeNS(String namespaceURI, String localName)
|
||||||
|
{
|
||||||
|
return getAttributeNode(localName);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.Element#getAttributeNS(java.lang.String, java.lang.String)
|
||||||
|
*/
|
||||||
|
public String getAttributeNS(String namespaceURI, String localName)
|
||||||
|
{
|
||||||
|
return getAttribute(localName);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getBaseURI()
|
||||||
|
{
|
||||||
|
throw new Error("not implemented");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Recursive function for assembling a node list.
|
||||||
|
private void getElementsRecurse(IIONodeList list, String name)
|
||||||
|
{
|
||||||
|
for (int i=0; i < children.size(); i++)
|
||||||
|
{
|
||||||
|
if (((Node)children.get(i)).getNodeName().equals(name))
|
||||||
|
list.children.add(children.get(i));
|
||||||
|
getElementsRecurse(list, name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.Element#getElementsByTagName(java.lang.String)
|
||||||
|
*/
|
||||||
|
public NodeList getElementsByTagName(String name)
|
||||||
|
{
|
||||||
|
IIONodeList list = new IIONodeList();
|
||||||
|
getElementsRecurse(list, name);
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.Element#getElementsByTagNameNS(java.lang.String, java.lang.String)
|
||||||
|
*/
|
||||||
|
public NodeList getElementsByTagNameNS(String namespaceURI, String localName)
|
||||||
|
{
|
||||||
|
IIONodeList list = new IIONodeList();
|
||||||
|
getElementsRecurse(list, name);
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.Element#getTagName()
|
||||||
|
*/
|
||||||
|
public String getTagName()
|
||||||
|
{
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.Element#hasAttribute(java.lang.String)
|
||||||
|
*/
|
||||||
|
public boolean hasAttribute(String name)
|
||||||
|
{
|
||||||
|
return attrs.containsKey(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.Element#hasAttributeNS(java.lang.String, java.lang.String)
|
||||||
|
*/
|
||||||
|
public boolean hasAttributeNS(String namespaceURI, String localName)
|
||||||
|
{
|
||||||
|
return attrs.containsKey(localName);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.Element#removeAttribute(java.lang.String)
|
||||||
|
*/
|
||||||
|
public void removeAttribute(String name)
|
||||||
|
{
|
||||||
|
attrs.remove(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.Element#removeAttributeNode(org.w3c.dom.Attr)
|
||||||
|
*/
|
||||||
|
public Attr removeAttributeNode(Attr oldAttr)
|
||||||
|
{
|
||||||
|
return (Attr)attrs.remove(oldAttr.getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.Element#removeAttributeNS(java.lang.String, java.lang.String)
|
||||||
|
*/
|
||||||
|
public void removeAttributeNS(String namespaceURI, String localName)
|
||||||
|
{
|
||||||
|
removeAttribute(localName);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.Element#setAttribute(java.lang.String, java.lang.String)
|
||||||
|
*/
|
||||||
|
public void setAttribute(String name, String value)
|
||||||
|
{
|
||||||
|
Attr attr = (Attr) getAttributeNode(name);
|
||||||
|
if (attr != null)
|
||||||
|
attr.setValue(value);
|
||||||
|
else
|
||||||
|
attrs.put(name, new IIOAttr(name, value, this));
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.Element#setAttributeNode(org.w3c.dom.Attr)
|
||||||
|
*/
|
||||||
|
public Attr setAttributeNode(Attr newAttr)
|
||||||
|
{
|
||||||
|
return (Attr)attrs.put(newAttr.getName(), newAttr);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.Element#setAttributeNodeNS(org.w3c.dom.Attr)
|
||||||
|
*/
|
||||||
|
public Attr setAttributeNodeNS(Attr newAttr)
|
||||||
|
{
|
||||||
|
return (Attr)attrs.put(newAttr.getName(), newAttr);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.Element#setAttributeNS(java.lang.String, java.lang.String, java.lang.String)
|
||||||
|
*/
|
||||||
|
public void setAttributeNS(String namespaceURI, String qualifiedName, String value)
|
||||||
|
{
|
||||||
|
setAttribute(qualifiedName, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.NodeList#getLength()
|
||||||
|
*/
|
||||||
|
public int getLength()
|
||||||
|
{
|
||||||
|
return children.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.NodeList#item(int)
|
||||||
|
*/
|
||||||
|
public Node item(int index)
|
||||||
|
{
|
||||||
|
if (index < children.size())
|
||||||
|
return (Node)children.get(index);
|
||||||
|
else
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.Node#appendChild(org.w3c.dom.Node)
|
||||||
|
*/
|
||||||
|
public Node appendChild(Node newChild)
|
||||||
|
{
|
||||||
|
if (newChild == null)
|
||||||
|
throw new IllegalArgumentException("Child node is null");
|
||||||
|
|
||||||
|
IIOMetadataNode child = (IIOMetadataNode) newChild;
|
||||||
|
|
||||||
|
children.add(child);
|
||||||
|
child.parent = this;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.Node#cloneNode(boolean)
|
||||||
|
*/
|
||||||
|
public Node cloneNode(boolean deep)
|
||||||
|
{
|
||||||
|
IIOMetadataNode newnode = new IIOMetadataNode(name);
|
||||||
|
newnode.parent = null;
|
||||||
|
newnode.obj = obj;
|
||||||
|
if (deep)
|
||||||
|
{
|
||||||
|
for (int i=0; i < children.size(); i++)
|
||||||
|
newnode.children.add(((Node)children.get(i)).cloneNode(deep));
|
||||||
|
}
|
||||||
|
|
||||||
|
// clone attrs
|
||||||
|
for (Iterator it = attrs.values().iterator(); it.hasNext();)
|
||||||
|
{
|
||||||
|
IIOAttr attr = (IIOAttr)it.next();
|
||||||
|
newnode.attrs.put(attr.name, attr.cloneNode(deep));
|
||||||
|
attr.owner = newnode;
|
||||||
|
}
|
||||||
|
|
||||||
|
return newnode;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.Node#getAttributes()
|
||||||
|
*/
|
||||||
|
public NamedNodeMap getAttributes()
|
||||||
|
{
|
||||||
|
return new IIONamedNodeMap(attrs);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.Node#getChildNodes()
|
||||||
|
*/
|
||||||
|
public NodeList getChildNodes()
|
||||||
|
{
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Object getFeature(String feature, String version)
|
||||||
|
{
|
||||||
|
throw new Error("not implemented");
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.Node#getFirstChild()
|
||||||
|
*/
|
||||||
|
public Node getFirstChild()
|
||||||
|
{
|
||||||
|
return (children.size() > 0) ? (Node)children.get(0) : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.Node#getLastChild()
|
||||||
|
*/
|
||||||
|
public Node getLastChild()
|
||||||
|
{
|
||||||
|
return (children.size() > 0) ? (Node)children.get(children.size() - 1)
|
||||||
|
: null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.Node#getLocalName()
|
||||||
|
*/
|
||||||
|
public String getLocalName()
|
||||||
|
{
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.Node#getNamespaceURI()
|
||||||
|
*/
|
||||||
|
public String getNamespaceURI()
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.Node#getNextSibling()
|
||||||
|
*/
|
||||||
|
public Node getNextSibling()
|
||||||
|
{
|
||||||
|
// If this op needs to be faster, add links to prev and next nodes.
|
||||||
|
if (parent == null) return null;
|
||||||
|
int idx = parent.children.indexOf(this);
|
||||||
|
return (idx == parent.children.size() - 1) ? null
|
||||||
|
: (Node)parent.children.get(idx + 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.Node#getNodeName()
|
||||||
|
*/
|
||||||
|
public String getNodeName()
|
||||||
|
{
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.Node#getNodeType()
|
||||||
|
*/
|
||||||
|
public short getNodeType()
|
||||||
|
{
|
||||||
|
return ELEMENT_NODE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.Node#getNodeValue()
|
||||||
|
*/
|
||||||
|
public String getNodeValue()
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.Node#getOwnerDocument()
|
||||||
|
*/
|
||||||
|
public Document getOwnerDocument()
|
||||||
|
{
|
||||||
|
// IOMetadataNodes have no owner
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.Node#getParentNode()
|
||||||
|
*/
|
||||||
|
public Node getParentNode()
|
||||||
|
{
|
||||||
|
return parent;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.Node#getPrefix()
|
||||||
|
*/
|
||||||
|
public String getPrefix()
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.Node#getPreviousSibling()
|
||||||
|
*/
|
||||||
|
public Node getPreviousSibling()
|
||||||
|
{
|
||||||
|
// If this op needs to be faster, add links to prev and next nodes.
|
||||||
|
if (parent == null) return null;
|
||||||
|
int idx = parent.children.indexOf(this);
|
||||||
|
return (idx == 0) ? null
|
||||||
|
: (Node)parent.children.get(idx - 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
public TypeInfo getSchemaTypeInfo()
|
||||||
|
{
|
||||||
|
throw new Error("not implemented");
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTextContent()
|
||||||
|
throws DOMException
|
||||||
|
{
|
||||||
|
throw new Error("not implemented");
|
||||||
|
}
|
||||||
|
|
||||||
|
public Object getUserData(String key)
|
||||||
|
{
|
||||||
|
throw new Error("not implemented");
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.Node#hasAttributes()
|
||||||
|
*/
|
||||||
|
public boolean hasAttributes()
|
||||||
|
{
|
||||||
|
return !attrs.isEmpty();
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.Node#hasChildNodes()
|
||||||
|
*/
|
||||||
|
public boolean hasChildNodes()
|
||||||
|
{
|
||||||
|
return !children.isEmpty();
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.Node#insertBefore(org.w3c.dom.Node, org.w3c.dom.Node)
|
||||||
|
*/
|
||||||
|
public Node insertBefore(Node newChild, Node refChild)
|
||||||
|
{
|
||||||
|
if (newChild == null)
|
||||||
|
throw new IllegalArgumentException();
|
||||||
|
|
||||||
|
int idx = children.indexOf(refChild);
|
||||||
|
if (idx == -1)
|
||||||
|
children.add(newChild);
|
||||||
|
else
|
||||||
|
children.add(idx, newChild);
|
||||||
|
((IIOMetadataNode)newChild).parent = this;
|
||||||
|
|
||||||
|
return newChild;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isDefaultNamespace(String namespaceURI)
|
||||||
|
{
|
||||||
|
throw new Error("not implemented");
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isEqualNode(Node arg)
|
||||||
|
{
|
||||||
|
throw new Error("not implemented");
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isSameNode(Node other)
|
||||||
|
{
|
||||||
|
return this == other;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.Node#isSupported(java.lang.String, java.lang.String)
|
||||||
|
*/
|
||||||
|
public boolean isSupported(String feature, String version)
|
||||||
|
{
|
||||||
|
// No DOM features are supported
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String lookupNamespaceURI(String prefix)
|
||||||
|
{
|
||||||
|
throw new Error("not implemented");
|
||||||
|
}
|
||||||
|
|
||||||
|
public String lookupPrefix(String namespaceURI)
|
||||||
|
{
|
||||||
|
throw new Error("not implemented");
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.Node#normalize()
|
||||||
|
*/
|
||||||
|
public void normalize()
|
||||||
|
{
|
||||||
|
// No text nodes so no action
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.Node#removeChild(org.w3c.dom.Node)
|
||||||
|
*/
|
||||||
|
public Node removeChild(Node oldChild)
|
||||||
|
{
|
||||||
|
if (oldChild == null)
|
||||||
|
throw new IllegalArgumentException();
|
||||||
|
children.remove(oldChild);
|
||||||
|
((IIOMetadataNode)oldChild).parent = null;
|
||||||
|
|
||||||
|
return oldChild;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.Node#replaceChild(org.w3c.dom.Node, org.w3c.dom.Node)
|
||||||
|
*/
|
||||||
|
public Node replaceChild(Node newChild, Node oldChild)
|
||||||
|
{
|
||||||
|
if (newChild == null)
|
||||||
|
throw new IllegalArgumentException();
|
||||||
|
children.set(children.indexOf(oldChild), newChild);
|
||||||
|
((IIOMetadataNode)oldChild).parent = null;
|
||||||
|
return oldChild;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setIdAttribute(String name, boolean isId)
|
||||||
|
throws DOMException
|
||||||
|
{
|
||||||
|
throw new Error("not implemented");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setIdAttributeNode(Attr idAttr, boolean isId)
|
||||||
|
throws DOMException
|
||||||
|
{
|
||||||
|
throw new Error("not implemented");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setIdAttributeNS(String namespaceURI, String localName, boolean isId)
|
||||||
|
throws DOMException
|
||||||
|
{
|
||||||
|
throw new Error("not implemented");
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.Node#setNodeValue(java.lang.String)
|
||||||
|
*/
|
||||||
|
public void setNodeValue(String nodeValue) throws DOMException
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.Node#setPrefix(java.lang.String)
|
||||||
|
*/
|
||||||
|
public void setPrefix(String prefix)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTextContent(String textContent)
|
||||||
|
throws DOMException
|
||||||
|
{
|
||||||
|
throw new Error("not implemented");
|
||||||
|
}
|
||||||
|
|
||||||
|
public Object setUserData(String key, Object data, UserDataHandler handler)
|
||||||
|
{
|
||||||
|
throw new Error("not implemented");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
138
libjava/javax/imageio/metadata/IIONamedNodeMap.java
Normal file
138
libjava/javax/imageio/metadata/IIONamedNodeMap.java
Normal file
|
@ -0,0 +1,138 @@
|
||||||
|
/* IIONamedNodeMap.java --
|
||||||
|
Copyright (C) 2004 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
This file is part of GNU Classpath.
|
||||||
|
|
||||||
|
GNU Classpath is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2, or (at your option)
|
||||||
|
any later version.
|
||||||
|
|
||||||
|
GNU Classpath is distributed in the hope that it will be useful, but
|
||||||
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with GNU Classpath; see the file COPYING. If not, write to the
|
||||||
|
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||||
|
02111-1307 USA.
|
||||||
|
|
||||||
|
Linking this library statically or dynamically with other modules is
|
||||||
|
making a combined work based on this library. Thus, the terms and
|
||||||
|
conditions of the GNU General Public License cover the whole
|
||||||
|
combination.
|
||||||
|
|
||||||
|
As a special exception, the copyright holders of this library give you
|
||||||
|
permission to link this library with independent modules to produce an
|
||||||
|
executable, regardless of the license terms of these independent
|
||||||
|
modules, and to copy and distribute the resulting executable under
|
||||||
|
terms of your choice, provided that you also meet, for each linked
|
||||||
|
independent module, the terms and conditions of the license of that
|
||||||
|
module. An independent module is a module which is not derived from
|
||||||
|
or based on this library. If you modify this library, you may extend
|
||||||
|
this exception to your version of the library, but you are not
|
||||||
|
obligated to do so. If you do not wish to do so, delete this
|
||||||
|
exception statement from your version. */
|
||||||
|
|
||||||
|
package javax.imageio.metadata;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
|
||||||
|
import org.w3c.dom.DOMException;
|
||||||
|
import org.w3c.dom.NamedNodeMap;
|
||||||
|
import org.w3c.dom.Node;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Simple NamedNodeMap class for IIOMetadataNode.
|
||||||
|
*
|
||||||
|
* @author jlquinn
|
||||||
|
*/
|
||||||
|
class IIONamedNodeMap implements NamedNodeMap
|
||||||
|
{
|
||||||
|
HashMap attrs;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param attrs
|
||||||
|
* @param node
|
||||||
|
*/
|
||||||
|
public IIONamedNodeMap(HashMap attrs)
|
||||||
|
{
|
||||||
|
this.attrs = attrs;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.NamedNodeMap#getNamedItem(java.lang.String)
|
||||||
|
*/
|
||||||
|
public Node getNamedItem(String name)
|
||||||
|
{
|
||||||
|
return (Node)attrs.get(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.NamedNodeMap#setNamedItem(org.w3c.dom.Node)
|
||||||
|
*/
|
||||||
|
public Node setNamedItem(Node arg) throws DOMException
|
||||||
|
{
|
||||||
|
if (arg instanceof IIOAttr)
|
||||||
|
{
|
||||||
|
IIOAttr attr = (IIOAttr) arg;
|
||||||
|
// The only code that can successfully do this is in this package.
|
||||||
|
if (attr.owner != null)
|
||||||
|
throw new DOMException(DOMException.INUSE_ATTRIBUTE_ERR, "");
|
||||||
|
return (Node)attrs.put(attr.name, attr);
|
||||||
|
}
|
||||||
|
// Anything else gets treated as an invalid op.
|
||||||
|
throw new DOMException(DOMException.HIERARCHY_REQUEST_ERR, "");
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.NamedNodeMap#removeNamedItem(java.lang.String)
|
||||||
|
*/
|
||||||
|
public Node removeNamedItem(String name) throws DOMException
|
||||||
|
{
|
||||||
|
return (Node)attrs.remove(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.NamedNodeMap#item(int)
|
||||||
|
*/
|
||||||
|
public Node item(int index)
|
||||||
|
{
|
||||||
|
return (Node)attrs.values().toArray()[index];
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.NamedNodeMap#getLength()
|
||||||
|
*/
|
||||||
|
public int getLength()
|
||||||
|
{
|
||||||
|
return attrs.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.NamedNodeMap#getNamedItemNS(java.lang.String, java.lang.String)
|
||||||
|
*/
|
||||||
|
public Node getNamedItemNS(String namespaceURI, String localName)
|
||||||
|
{
|
||||||
|
return getNamedItem(localName);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.NamedNodeMap#setNamedItemNS(org.w3c.dom.Node)
|
||||||
|
*/
|
||||||
|
public Node setNamedItemNS(Node arg) throws DOMException
|
||||||
|
{
|
||||||
|
return setNamedItem(arg);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.NamedNodeMap#removeNamedItemNS(java.lang.String, java.lang.String)
|
||||||
|
*/
|
||||||
|
public Node removeNamedItemNS(String namespaceURI, String localName)
|
||||||
|
throws DOMException
|
||||||
|
{
|
||||||
|
return removeNamedItem(localName);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
72
libjava/javax/imageio/metadata/IIONodeList.java
Normal file
72
libjava/javax/imageio/metadata/IIONodeList.java
Normal file
|
@ -0,0 +1,72 @@
|
||||||
|
/* IIOAttr.java --
|
||||||
|
Copyright (C) 2004 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
This file is part of GNU Classpath.
|
||||||
|
|
||||||
|
GNU Classpath is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2, or (at your option)
|
||||||
|
any later version.
|
||||||
|
|
||||||
|
GNU Classpath is distributed in the hope that it will be useful, but
|
||||||
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with GNU Classpath; see the file COPYING. If not, write to the
|
||||||
|
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||||
|
02111-1307 USA.
|
||||||
|
|
||||||
|
Linking this library statically or dynamically with other modules is
|
||||||
|
making a combined work based on this library. Thus, the terms and
|
||||||
|
conditions of the GNU General Public License cover the whole
|
||||||
|
combination.
|
||||||
|
|
||||||
|
As a special exception, the copyright holders of this library give you
|
||||||
|
permission to link this library with independent modules to produce an
|
||||||
|
executable, regardless of the license terms of these independent
|
||||||
|
modules, and to copy and distribute the resulting executable under
|
||||||
|
terms of your choice, provided that you also meet, for each linked
|
||||||
|
independent module, the terms and conditions of the license of that
|
||||||
|
module. An independent module is a module which is not derived from
|
||||||
|
or based on this library. If you modify this library, you may extend
|
||||||
|
this exception to your version of the library, but you are not
|
||||||
|
obligated to do so. If you do not wish to do so, delete this
|
||||||
|
exception statement from your version. */
|
||||||
|
|
||||||
|
package javax.imageio.metadata;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.w3c.dom.Node;
|
||||||
|
import org.w3c.dom.NodeList;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Simple NodeList implementation for IIOMetadataNode.
|
||||||
|
*
|
||||||
|
* @author jlquinn
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
class IIONodeList implements NodeList
|
||||||
|
{
|
||||||
|
List children = new ArrayList();
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.NodeList#item(int)
|
||||||
|
*/
|
||||||
|
public Node item(int index)
|
||||||
|
{
|
||||||
|
return (index < children.size()) ? (Node)children.get(index) : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.w3c.dom.NodeList#getLength()
|
||||||
|
*/
|
||||||
|
public int getLength()
|
||||||
|
{
|
||||||
|
return children.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -39,7 +39,9 @@ exception statement from your version. */
|
||||||
package javax.imageio.spi;
|
package javax.imageio.spi;
|
||||||
|
|
||||||
import gnu.classpath.ServiceFactory;
|
import gnu.classpath.ServiceFactory;
|
||||||
|
import gnu.java.awt.ClasspathToolkit;
|
||||||
|
|
||||||
|
import java.awt.Toolkit;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
|
@ -52,8 +54,8 @@ public final class IIORegistry extends ServiceRegistry
|
||||||
|
|
||||||
static
|
static
|
||||||
{
|
{
|
||||||
//defaultCategories.add(ImageReaderSpi.class);
|
defaultCategories.add(ImageReaderSpi.class);
|
||||||
//defaultCategories.add(ImageWriterSpi.class);
|
defaultCategories.add(ImageWriterSpi.class);
|
||||||
defaultCategories.add(ImageTranscoderSpi.class);
|
defaultCategories.add(ImageTranscoderSpi.class);
|
||||||
defaultCategories.add(ImageInputStreamSpi.class);
|
defaultCategories.add(ImageInputStreamSpi.class);
|
||||||
defaultCategories.add(ImageOutputStreamSpi.class);
|
defaultCategories.add(ImageOutputStreamSpi.class);
|
||||||
|
@ -78,6 +80,8 @@ public final class IIORegistry extends ServiceRegistry
|
||||||
super(defaultCategories.iterator());
|
super(defaultCategories.iterator());
|
||||||
|
|
||||||
// XXX: Register built-in Spis here.
|
// XXX: Register built-in Spis here.
|
||||||
|
|
||||||
|
((ClasspathToolkit)Toolkit.getDefaultToolkit()).registerImageIOSpis(this);
|
||||||
|
|
||||||
registerApplicationClasspathSpis();
|
registerApplicationClasspathSpis();
|
||||||
}
|
}
|
||||||
|
|
|
@ -45,7 +45,7 @@ import java.io.InputStream;
|
||||||
/**
|
/**
|
||||||
* @author Michael Koch (konqueror@gmx.de)
|
* @author Michael Koch (konqueror@gmx.de)
|
||||||
*/
|
*/
|
||||||
public class FileCacheImageInputStream
|
public class FileCacheImageInputStream extends ImageInputStreamImpl
|
||||||
{
|
{
|
||||||
private InputStream stream;
|
private InputStream stream;
|
||||||
private File cacheDir;
|
private File cacheDir;
|
||||||
|
@ -90,4 +90,20 @@ public class FileCacheImageInputStream
|
||||||
{
|
{
|
||||||
return false;
|
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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -45,7 +45,7 @@ import java.io.OutputStream;
|
||||||
/**
|
/**
|
||||||
* @author Michael Koch (konqueror@gmx.de)
|
* @author Michael Koch (konqueror@gmx.de)
|
||||||
*/
|
*/
|
||||||
public class FileCacheImageOutputStream
|
public class FileCacheImageOutputStream extends ImageOutputStreamImpl
|
||||||
{
|
{
|
||||||
private OutputStream stream;
|
private OutputStream stream;
|
||||||
private File cacheDir;
|
private File cacheDir;
|
||||||
|
@ -90,4 +90,34 @@ public class FileCacheImageOutputStream
|
||||||
{
|
{
|
||||||
return false;
|
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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,7 +46,7 @@ import java.io.RandomAccessFile;
|
||||||
/**
|
/**
|
||||||
* @author Michael Koch (konqueror@gmx.de)
|
* @author Michael Koch (konqueror@gmx.de)
|
||||||
*/
|
*/
|
||||||
public class FileImageInputStream
|
public class FileImageInputStream extends ImageInputStreamImpl
|
||||||
{
|
{
|
||||||
private RandomAccessFile file;
|
private RandomAccessFile file;
|
||||||
|
|
||||||
|
@ -84,4 +84,25 @@ public class FileImageInputStream
|
||||||
return -1L;
|
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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,7 +46,7 @@ import java.io.RandomAccessFile;
|
||||||
/**
|
/**
|
||||||
* @author Michael Koch (konqueror@gmx.de)
|
* @author Michael Koch (konqueror@gmx.de)
|
||||||
*/
|
*/
|
||||||
public class FileImageOutputStream
|
public class FileImageOutputStream extends ImageOutputStreamImpl
|
||||||
{
|
{
|
||||||
private RandomAccessFile file;
|
private RandomAccessFile file;
|
||||||
|
|
||||||
|
@ -87,4 +87,47 @@ public class FileImageOutputStream
|
||||||
return -1L;
|
return -1L;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int read()
|
||||||
|
throws IOException
|
||||||
|
{
|
||||||
|
checkClosed();
|
||||||
|
|
||||||
|
setBitOffset(0);
|
||||||
|
return file.read();
|
||||||
|
}
|
||||||
|
|
||||||
|
public int read(byte[] data, int offset, int len)
|
||||||
|
throws IOException
|
||||||
|
{
|
||||||
|
checkClosed();
|
||||||
|
|
||||||
|
setBitOffset(0);
|
||||||
|
return file.read(data, offset, len);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void seek(long position)
|
||||||
|
throws IOException
|
||||||
|
{
|
||||||
|
super.seek(position);
|
||||||
|
file.seek(position);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void write(byte[] data, int offset, int len)
|
||||||
|
throws IOException
|
||||||
|
{
|
||||||
|
checkClosed();
|
||||||
|
|
||||||
|
flushBits();
|
||||||
|
file.write(data, offset, len);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void write(int value)
|
||||||
|
throws IOException
|
||||||
|
{
|
||||||
|
checkClosed();
|
||||||
|
|
||||||
|
// FIXME: Flush pending bits.
|
||||||
|
file.write(value);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,8 +38,11 @@ exception statement from your version. */
|
||||||
|
|
||||||
package javax.imageio.stream;
|
package javax.imageio.stream;
|
||||||
|
|
||||||
|
import java.io.DataInputStream;
|
||||||
|
import java.io.EOFException;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.ByteOrder;
|
import java.nio.ByteOrder;
|
||||||
|
import java.util.Stack;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Michael Koch (konqueror@gmx.de)
|
* @author Michael Koch (konqueror@gmx.de)
|
||||||
|
@ -47,6 +50,9 @@ import java.nio.ByteOrder;
|
||||||
public abstract class ImageInputStreamImpl implements ImageInputStream
|
public abstract class ImageInputStreamImpl implements ImageInputStream
|
||||||
{
|
{
|
||||||
private boolean closed;
|
private boolean closed;
|
||||||
|
private Stack markStack = new Stack();
|
||||||
|
|
||||||
|
byte[] buffer = new byte[8];
|
||||||
|
|
||||||
protected int bitOffset;
|
protected int bitOffset;
|
||||||
protected ByteOrder byteOrder;
|
protected ByteOrder byteOrder;
|
||||||
|
@ -99,6 +105,7 @@ public abstract class ImageInputStreamImpl implements ImageInputStream
|
||||||
public int getBitOffset()
|
public int getBitOffset()
|
||||||
throws IOException
|
throws IOException
|
||||||
{
|
{
|
||||||
|
checkClosed();
|
||||||
return bitOffset;
|
return bitOffset;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -115,6 +122,7 @@ public abstract class ImageInputStreamImpl implements ImageInputStream
|
||||||
public long getStreamPosition()
|
public long getStreamPosition()
|
||||||
throws IOException
|
throws IOException
|
||||||
{
|
{
|
||||||
|
checkClosed();
|
||||||
return streamPos;
|
return streamPos;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -138,6 +146,18 @@ public abstract class ImageInputStreamImpl implements ImageInputStream
|
||||||
return -1L;
|
return -1L;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void mark()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
markStack.push(new Long(getStreamPosition()));
|
||||||
|
}
|
||||||
|
catch (IOException e)
|
||||||
|
{
|
||||||
|
// Ignored.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public abstract int read()
|
public abstract int read()
|
||||||
throws IOException;
|
throws IOException;
|
||||||
|
|
||||||
|
@ -150,8 +170,346 @@ public abstract class ImageInputStreamImpl implements ImageInputStream
|
||||||
public abstract int read(byte[] data, int offset, int len)
|
public abstract int read(byte[] data, int offset, int len)
|
||||||
throws IOException;
|
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;
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,6 +39,7 @@ exception statement from your version. */
|
||||||
package javax.imageio.stream;
|
package javax.imageio.stream;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.nio.ByteOrder;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Michael Koch (konqueror@gmx.de)
|
* @author Michael Koch (konqueror@gmx.de)
|
||||||
|
@ -51,6 +52,13 @@ public abstract class ImageOutputStreamImpl extends ImageInputStreamImpl
|
||||||
// Do nothing here.
|
// Do nothing here.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void flushBits()
|
||||||
|
throws IOException
|
||||||
|
{
|
||||||
|
// FIXME: Implement me.
|
||||||
|
throw new Error("not implemented");
|
||||||
|
}
|
||||||
|
|
||||||
public void write(byte[] data)
|
public void write(byte[] data)
|
||||||
throws IOException
|
throws IOException
|
||||||
{
|
{
|
||||||
|
@ -62,4 +70,176 @@ public abstract class ImageOutputStreamImpl extends ImageInputStreamImpl
|
||||||
|
|
||||||
public abstract void write(int value)
|
public abstract void write(int value)
|
||||||
throws IOException;
|
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");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,11 +38,35 @@ exception statement from your version. */
|
||||||
|
|
||||||
package javax.imageio.stream;
|
package javax.imageio.stream;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Michael Koch (konqueror@gmx.de)
|
* @author Michael Koch (konqueror@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()
|
public boolean isCached()
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
|
@ -57,4 +81,18 @@ public class MemoryCacheImageInputStream
|
||||||
{
|
{
|
||||||
return true;
|
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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,11 +38,35 @@ exception statement from your version. */
|
||||||
|
|
||||||
package javax.imageio.stream;
|
package javax.imageio.stream;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.OutputStream;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Michael Koch (konqueror@gmx.de)
|
* @author Michael Koch (konqueror@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()
|
public boolean isCached()
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
|
@ -57,4 +81,32 @@ public class MemoryCacheImageOutputStream
|
||||||
{
|
{
|
||||||
return true;
|
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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue