You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by ap...@apache.org on 2008/02/04 13:41:40 UTC
svn commit: r618257 - in
/harmony/enhanced/classlib/trunk/modules/imageio/src/main/java:
javax/imageio/spi/ org/apache/harmony/x/imageio/plugins/
org/apache/harmony/x/imageio/plugins/gif/
org/apache/harmony/x/imageio/plugins/jpeg/ org/apache/harmony/x/...
Author: apavlenko
Date: Mon Feb 4 04:41:39 2008
New Revision: 618257
URL: http://svn.apache.org/viewvc?rev=618257&view=rev
Log:
Implemented JPEG, PNG and GIF image readers based on the AWT image loader.
Added:
harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/org/apache/harmony/x/imageio/plugins/AwtImageReader.java (with props)
harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/org/apache/harmony/x/imageio/plugins/ImageSignature.java (with props)
harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/org/apache/harmony/x/imageio/plugins/ImageType.java (with props)
harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/org/apache/harmony/x/imageio/plugins/PluginUtils.java (with props)
harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/org/apache/harmony/x/imageio/plugins/gif/
harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/org/apache/harmony/x/imageio/plugins/gif/GIFImageReader.java (with props)
harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/org/apache/harmony/x/imageio/plugins/gif/GIFImageReaderSpi.java (with props)
Removed:
harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/org/apache/harmony/x/imageio/plugins/jpeg/IISDecodingImageSource.java
Modified:
harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/javax/imageio/spi/IIORegistry.java
harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/org/apache/harmony/x/imageio/plugins/jpeg/JPEGImageReader.java
harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/org/apache/harmony/x/imageio/plugins/jpeg/JPEGImageReaderSpi.java
harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/org/apache/harmony/x/imageio/plugins/jpeg/JPEGImageWriterSpi.java
harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/org/apache/harmony/x/imageio/plugins/jpeg/JPEGSpiConsts.java
harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/org/apache/harmony/x/imageio/plugins/png/PNGImageReader.java
harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/org/apache/harmony/x/imageio/plugins/png/PNGImageReaderSpi.java
harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/org/apache/harmony/x/imageio/plugins/png/PNGImageWriterSpi.java
Modified: harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/javax/imageio/spi/IIORegistry.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/javax/imageio/spi/IIORegistry.java?rev=618257&r1=618256&r2=618257&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/javax/imageio/spi/IIORegistry.java (original)
+++ harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/javax/imageio/spi/IIORegistry.java Mon Feb 4 04:41:39 2008
@@ -22,6 +22,7 @@
import java.util.Arrays;
+import org.apache.harmony.x.imageio.plugins.gif.GIFImageReaderSpi;
import org.apache.harmony.x.imageio.plugins.jpeg.JPEGImageReaderSpi;
import org.apache.harmony.x.imageio.plugins.jpeg.JPEGImageWriterSpi;
import org.apache.harmony.x.imageio.plugins.png.PNGImageReaderSpi;
@@ -33,24 +34,19 @@
import org.apache.harmony.x.imageio.spi.RAFIISSpi;
import org.apache.harmony.x.imageio.spi.RAFIOSSpi;
-/**
- * @author Rustem V. Rafikov, Viskov Nikolay
- * @version $Revision: 1.3 $
- */
public final class IIORegistry extends ServiceRegistry {
- private static IIORegistry instance;
+ private static IIORegistry instance;
private static final Class[] CATEGORIES = new Class[] {
- javax.imageio.spi.ImageWriterSpi.class,
- javax.imageio.spi.ImageReaderSpi.class,
- javax.imageio.spi.ImageInputStreamSpi.class,
- //javax.imageio.spi.ImageTranscoderSpi.class,
- javax.imageio.spi.ImageOutputStreamSpi.class
- };
+ javax.imageio.spi.ImageWriterSpi.class,
+ javax.imageio.spi.ImageReaderSpi.class,
+ javax.imageio.spi.ImageInputStreamSpi.class,
+ // javax.imageio.spi.ImageTranscoderSpi.class,
+ javax.imageio.spi.ImageOutputStreamSpi.class };
private IIORegistry() {
- super(Arrays.<Class<?>>asList(CATEGORIES).iterator());
+ super(Arrays.<Class<?>> asList(CATEGORIES).iterator());
registerBuiltinSpis();
registerApplicationClasspathSpis();
}
@@ -60,17 +56,18 @@
registerServiceProvider(new JPEGImageReaderSpi());
registerServiceProvider(new PNGImageReaderSpi());
registerServiceProvider(new PNGImageWriterSpi());
+ registerServiceProvider(new GIFImageReaderSpi());
registerServiceProvider(new FileIOSSpi());
registerServiceProvider(new FileIISSpi());
registerServiceProvider(new RAFIOSSpi());
registerServiceProvider(new RAFIISSpi());
- registerServiceProvider(new OutputStreamIOSSpi());
+ registerServiceProvider(new OutputStreamIOSSpi());
registerServiceProvider(new InputStreamIISSpi());
- //-- TODO implement
}
public static IIORegistry getDefaultInstance() {
- // TODO implement own instance for each ThreadGroup (see also ThreadLocal)
+ // TODO implement own instance for each ThreadGroup (see also
+ // ThreadLocal)
synchronized (IIORegistry.class) {
if (instance == null) {
instance = new IIORegistry();
@@ -80,6 +77,6 @@
}
public void registerApplicationClasspathSpis() {
- //-- TODO implement for non-builtin plugins
+ // -- TODO implement for non-builtin plugins
}
}
Added: harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/org/apache/harmony/x/imageio/plugins/AwtImageReader.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/org/apache/harmony/x/imageio/plugins/AwtImageReader.java?rev=618257&view=auto
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/org/apache/harmony/x/imageio/plugins/AwtImageReader.java (added)
+++ harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/org/apache/harmony/x/imageio/plugins/AwtImageReader.java Mon Feb 4 04:41:39 2008
@@ -0,0 +1,156 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.harmony.x.imageio.plugins;
+
+import java.awt.Image;
+import java.awt.image.BufferedImage;
+import java.awt.image.ColorModel;
+import java.awt.image.ImageObserver;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Arrays;
+import java.util.Iterator;
+
+import javax.imageio.ImageReadParam;
+import javax.imageio.ImageReader;
+import javax.imageio.ImageTypeSpecifier;
+import javax.imageio.metadata.IIOMetadata;
+import javax.imageio.spi.ImageReaderSpi;
+import javax.imageio.stream.ImageInputStream;
+
+import org.apache.harmony.awt.gl.image.DecodingImageSource;
+import org.apache.harmony.awt.gl.image.OffscreenImage;
+import org.apache.harmony.x.imageio.internal.nls.Messages;
+
+/**
+ * This implementation is based on the image loader from the AWT module. It
+ * supports all the image types supported by the loader.
+ */
+public class AwtImageReader extends ImageReader {
+
+ private ImageInputStream iis;
+ private OffscreenImage image;
+
+ public AwtImageReader(final ImageReaderSpi imageReaderSpi) {
+ super(imageReaderSpi);
+ }
+
+ @Override
+ public int getHeight(final int i) throws IOException {
+ return getImage(i).getHeight(new ImageObserver() {
+ public boolean imageUpdate(final Image img, final int infoflags,
+ final int x, final int y, final int width,
+ final int height) {
+ return (infoflags & HEIGHT) == 0;
+ }
+ });
+ }
+
+ @Override
+ public int getWidth(final int i) throws IOException {
+ return getImage(i).getWidth(new ImageObserver() {
+ public boolean imageUpdate(final Image img, final int infoflags,
+ final int x, final int y, final int width,
+ final int height) {
+ return (infoflags & WIDTH) == 0;
+ }
+ });
+ }
+
+ @Override
+ public int getNumImages(final boolean b) throws IOException {
+ return 1;
+ }
+
+ @Override
+ public Iterator<ImageTypeSpecifier> getImageTypes(final int i)
+ throws IOException {
+ final ColorModel model = getImage(i).getColorModel();
+ final ImageTypeSpecifier[] spec = { new ImageTypeSpecifier(model,
+ model.createCompatibleSampleModel(1, 1)) };
+ return Arrays.asList(spec).iterator();
+ }
+
+ @Override
+ public IIOMetadata getStreamMetadata() throws IOException {
+ return null;
+ }
+
+ @Override
+ public IIOMetadata getImageMetadata(final int i) throws IOException {
+ return null;
+ }
+
+ @Override
+ public BufferedImage read(final int i, final ImageReadParam imageReadParam)
+ throws IOException {
+ return getImage(i).getBufferedImage();
+ }
+
+ @Override
+ public void setInput(final Object input, final boolean seekForwardOnly,
+ final boolean ignoreMetadata) {
+ super.setInput(input, seekForwardOnly, ignoreMetadata);
+ iis = (ImageInputStream) input;
+ image = null;
+ }
+
+ @Override
+ public ImageReadParam getDefaultReadParam() {
+ return new ImageReadParam();
+ }
+
+ private OffscreenImage getImage(final int index) throws IOException {
+ if (index >= getNumImages(false)) {
+ throw new IndexOutOfBoundsException("index >= getNumImages()"); //$NON-NLS-1$
+ }
+
+ if (image == null) {
+ if (iis == null) {
+ throw new IllegalArgumentException(Messages.getString(
+ "imageio.2", //$NON-NLS-1$
+ "input")); //$NON-NLS-1$
+ }
+
+ final DecodingImageSource source = new IISDecodingImageSource(iis);
+ image = new OffscreenImage(source);
+ source.addConsumer(image);
+ source.load();
+ }
+
+ return image;
+ }
+
+ private static class IISDecodingImageSource extends DecodingImageSource {
+
+ private final InputStream is;
+
+ IISDecodingImageSource(final ImageInputStream iis) {
+ is = PluginUtils.wrapIIS(iis);
+ }
+
+ @Override
+ protected boolean checkConnection() {
+ return true;
+ }
+
+ @Override
+ protected InputStream getInputStream() {
+ return is;
+ }
+ }
+}
Propchange: harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/org/apache/harmony/x/imageio/plugins/AwtImageReader.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/org/apache/harmony/x/imageio/plugins/ImageSignature.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/org/apache/harmony/x/imageio/plugins/ImageSignature.java?rev=618257&view=auto
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/org/apache/harmony/x/imageio/plugins/ImageSignature.java (added)
+++ harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/org/apache/harmony/x/imageio/plugins/ImageSignature.java Mon Feb 4 04:41:39 2008
@@ -0,0 +1,72 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.harmony.x.imageio.plugins;
+
+import java.io.IOException;
+import java.util.Arrays;
+
+import javax.imageio.stream.ImageInputStream;
+
+import org.apache.harmony.x.imageio.internal.nls.Messages;
+
+public enum ImageSignature {
+ JPEG(new byte[] { (byte) 0xFF, (byte) 0xD8, (byte) 0xFF }),
+ BMP(new byte[] { 'B', 'M' }),
+ GIF87a(new byte[] { 'G', 'I', 'F', '8', '7', 'a' }),
+ GIF89a(new byte[] { 'G', 'I', 'F', '8', '9', 'a' }),
+ PNG(new byte[] { (byte) 0x89, (byte) 0x50, (byte) 0x4E, (byte) 0x47,
+ (byte) 0x0D, (byte) 0x0A, (byte) 0x1A, (byte) 0x0A });
+
+ private final byte[] sig;
+
+ ImageSignature(final byte[] sig) {
+ this.sig = sig;
+ }
+
+ public static byte[] readSignature(final Object source, final int len)
+ throws IOException {
+ if (source == null) {
+ throw new IllegalArgumentException(Messages.getString("imageio.2", //$NON-NLS-1$
+ "source")); //$NON-NLS-1$
+ }
+
+ if (!(source instanceof ImageInputStream)) {
+ return null;
+ }
+
+ final ImageInputStream iis = (ImageInputStream) source;
+ final byte[] sig = new byte[len];
+
+ iis.mark();
+ iis.readFully(sig);
+ iis.reset();
+
+ return sig;
+ }
+
+ public byte[] getBytes() {
+ return sig.clone();
+ }
+
+ public boolean verify(final byte[] sig) {
+ return Arrays.equals(this.sig, sig);
+ }
+
+ public boolean verify(final Object source) throws IOException {
+ return verify(readSignature(source, sig.length));
+ }
+}
Propchange: harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/org/apache/harmony/x/imageio/plugins/ImageSignature.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/org/apache/harmony/x/imageio/plugins/ImageType.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/org/apache/harmony/x/imageio/plugins/ImageType.java?rev=618257&view=auto
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/org/apache/harmony/x/imageio/plugins/ImageType.java (added)
+++ harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/org/apache/harmony/x/imageio/plugins/ImageType.java Mon Feb 4 04:41:39 2008
@@ -0,0 +1,55 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.harmony.x.imageio.plugins;
+
+public enum ImageType {
+ @SuppressWarnings("nls")
+ JPEG(new String[] { "jpeg", "jpg", "JPEG", "JPG" }, new String[] {
+ "jpeg", "jpg" }, new String[] { "image/jpeg" }),
+ @SuppressWarnings("nls")
+ BMP(new String[] { "bmp", "BMP" }, new String[] { "bmp" },
+ new String[] { "image/bmp" }),
+ @SuppressWarnings("nls")
+ GIF(new String[] { "gif", "GIF" }, new String[] { "gif" },
+ new String[] { "image/gif" }),
+ @SuppressWarnings("nls")
+ PNG(new String[] { "png", "PNG" }, new String[] { "png" },
+ new String[] { "image/png" });
+
+ private final String names[];
+ private final String suffixes[];
+ private final String mimeTypes[];
+
+ ImageType(final String names[], final String suffixes[],
+ final String mimeTypes[]) {
+ this.names = names;
+ this.suffixes = suffixes;
+ this.mimeTypes = mimeTypes;
+ }
+
+ public String[] getNames() {
+ return names.clone();
+ }
+
+ public String[] getSuffixes() {
+ return suffixes.clone();
+ }
+
+ public String[] getMimeTypes() {
+ return mimeTypes.clone();
+ }
+}
Propchange: harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/org/apache/harmony/x/imageio/plugins/ImageType.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/org/apache/harmony/x/imageio/plugins/PluginUtils.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/org/apache/harmony/x/imageio/plugins/PluginUtils.java?rev=618257&view=auto
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/org/apache/harmony/x/imageio/plugins/PluginUtils.java (added)
+++ harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/org/apache/harmony/x/imageio/plugins/PluginUtils.java Mon Feb 4 04:41:39 2008
@@ -0,0 +1,85 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.harmony.x.imageio.plugins;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import javax.imageio.stream.ImageInputStream;
+
+public class PluginUtils {
+
+ public static final String VENDOR_NAME = "Apache Harmony"; //$NON-NLS-1$
+ public static final String DEFAULT_VERSION = "1.0"; //$NON-NLS-1$
+
+ /**
+ * Wrap the specified ImageInputStream object in an InputStream.
+ */
+ public static InputStream wrapIIS(final ImageInputStream iis) {
+ return new IisWrapper(iis);
+ }
+
+ private static class IisWrapper extends InputStream {
+
+ private final ImageInputStream input;
+
+ IisWrapper(final ImageInputStream input) {
+ this.input = input;
+ }
+
+ @Override
+ public int read() throws IOException {
+ return input.read();
+ }
+
+ @Override
+ public int read(final byte[] b) throws IOException {
+ return input.read(b);
+ }
+
+ @Override
+ public int read(final byte[] b, final int off, final int len)
+ throws IOException {
+ return input.read(b, off, len);
+ }
+
+ @Override
+ public long skip(final long n) throws IOException {
+ return input.skipBytes(n);
+ }
+
+ @Override
+ public boolean markSupported() {
+ return true;
+ }
+
+ @Override
+ public void mark(final int readlimit) {
+ input.mark();
+ }
+
+ @Override
+ public void reset() throws IOException {
+ input.reset();
+ }
+
+ @Override
+ public void close() throws IOException {
+ input.close();
+ }
+ }
+}
Propchange: harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/org/apache/harmony/x/imageio/plugins/PluginUtils.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/org/apache/harmony/x/imageio/plugins/gif/GIFImageReader.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/org/apache/harmony/x/imageio/plugins/gif/GIFImageReader.java?rev=618257&view=auto
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/org/apache/harmony/x/imageio/plugins/gif/GIFImageReader.java (added)
+++ harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/org/apache/harmony/x/imageio/plugins/gif/GIFImageReader.java Mon Feb 4 04:41:39 2008
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.harmony.x.imageio.plugins.gif;
+
+import javax.imageio.spi.ImageReaderSpi;
+
+import org.apache.harmony.x.imageio.plugins.AwtImageReader;
+
+public class GIFImageReader extends AwtImageReader {
+
+ public GIFImageReader(final ImageReaderSpi imageReaderSpi) {
+ super(imageReaderSpi);
+ }
+}
Propchange: harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/org/apache/harmony/x/imageio/plugins/gif/GIFImageReader.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/org/apache/harmony/x/imageio/plugins/gif/GIFImageReaderSpi.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/org/apache/harmony/x/imageio/plugins/gif/GIFImageReaderSpi.java?rev=618257&view=auto
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/org/apache/harmony/x/imageio/plugins/gif/GIFImageReaderSpi.java (added)
+++ harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/org/apache/harmony/x/imageio/plugins/gif/GIFImageReaderSpi.java Mon Feb 4 04:41:39 2008
@@ -0,0 +1,58 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.harmony.x.imageio.plugins.gif;
+
+import java.io.IOException;
+import java.util.Locale;
+
+import javax.imageio.ImageReader;
+import javax.imageio.spi.ImageReaderSpi;
+
+import org.apache.harmony.x.imageio.plugins.ImageSignature;
+import org.apache.harmony.x.imageio.plugins.ImageType;
+import org.apache.harmony.x.imageio.plugins.PluginUtils;
+
+public class GIFImageReaderSpi extends ImageReaderSpi {
+
+ public GIFImageReaderSpi() {
+ super(PluginUtils.VENDOR_NAME, PluginUtils.DEFAULT_VERSION,
+ ImageType.GIF.getNames(), ImageType.GIF.getSuffixes(),
+ ImageType.GIF.getMimeTypes(),
+ GIFImageReader.class.getName(), STANDARD_INPUT_TYPE,
+ null, false, null, null, null, null, false, null, null,
+ null, null);
+ }
+
+ @Override
+ public boolean canDecodeInput(final Object source) throws IOException {
+ final byte[] sig = ImageSignature.readSignature(source, 6);
+ return ImageSignature.GIF87a.verify(sig)
+ || ImageSignature.GIF89a.verify(sig);
+ }
+
+ @Override
+ public ImageReader createReaderInstance(Object extension)
+ throws IOException {
+ return new GIFImageReader(this);
+ }
+
+ @Override
+ public String getDescription(Locale locale) {
+ return "GIF image decoder"; //$NON-NLS-1$
+ }
+
+}
Propchange: harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/org/apache/harmony/x/imageio/plugins/gif/GIFImageReaderSpi.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/org/apache/harmony/x/imageio/plugins/jpeg/JPEGImageReader.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/org/apache/harmony/x/imageio/plugins/jpeg/JPEGImageReader.java?rev=618257&r1=618256&r2=618257&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/org/apache/harmony/x/imageio/plugins/jpeg/JPEGImageReader.java (original)
+++ harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/org/apache/harmony/x/imageio/plugins/jpeg/JPEGImageReader.java Mon Feb 4 04:41:39 2008
@@ -16,127 +16,20 @@
*/
package org.apache.harmony.x.imageio.plugins.jpeg;
-import java.awt.Image;
-import java.awt.image.BufferedImage;
-import java.awt.image.ColorModel;
-import java.awt.image.ImageObserver;
-import java.io.IOException;
-import java.util.Arrays;
-import java.util.Iterator;
-
import javax.imageio.ImageReadParam;
-import javax.imageio.ImageReader;
-import javax.imageio.ImageTypeSpecifier;
-import javax.imageio.metadata.IIOMetadata;
import javax.imageio.plugins.jpeg.JPEGImageReadParam;
import javax.imageio.spi.ImageReaderSpi;
-import javax.imageio.stream.ImageInputStream;
-
-import org.apache.harmony.awt.gl.image.DecodingImageSource;
-import org.apache.harmony.awt.gl.image.OffscreenImage;
-import org.apache.harmony.x.imageio.internal.nls.Messages;
-/**
- * This implementation uses org.apache.harmony.awt.gl.image.JpegDecoder to read
- * an image.
- *
- * TODO: Implement generic decoder to be used by javad2 and imageio
- *
- * @see org.apache.harmony.awt.gl.image.JpegDecoder
- * @see org.apache.harmony.x.imageio.plugins.jpeg.IISDecodingImageSource
- */
-public class JPEGImageReader extends ImageReader {
+import org.apache.harmony.x.imageio.plugins.AwtImageReader;
- private ImageInputStream iis;
- private OffscreenImage image;
+public class JPEGImageReader extends AwtImageReader {
public JPEGImageReader(final ImageReaderSpi imageReaderSpi) {
super(imageReaderSpi);
}
@Override
- public int getHeight(final int i) throws IOException {
- return getImage(i).getHeight(new ImageObserver() {
- public boolean imageUpdate(final Image img, final int infoflags,
- final int x, final int y, final int width,
- final int height) {
- return (infoflags & HEIGHT) == 0;
- }
- });
- }
-
- @Override
- public int getWidth(final int i) throws IOException {
- return getImage(i).getWidth(new ImageObserver() {
- public boolean imageUpdate(final Image img, final int infoflags,
- final int x, final int y, final int width,
- final int height) {
- return (infoflags & WIDTH) == 0;
- }
- });
- }
-
- @Override
- public int getNumImages(final boolean b) throws IOException {
- return 1;
- }
-
- @Override
- public Iterator<ImageTypeSpecifier> getImageTypes(final int i)
- throws IOException {
- final ColorModel model = getImage(i).getColorModel();
- final ImageTypeSpecifier[] spec = { new ImageTypeSpecifier(model,
- model.createCompatibleSampleModel(1, 1)) };
- return Arrays.asList(spec).iterator();
- }
-
- @Override
- public IIOMetadata getStreamMetadata() throws IOException {
- return null;
- }
-
- @Override
- public IIOMetadata getImageMetadata(final int i) throws IOException {
- return null;
- }
-
- @Override
- public BufferedImage read(final int i, final ImageReadParam imageReadParam)
- throws IOException {
- return getImage(i).getBufferedImage();
- }
-
- @Override
- public void setInput(final Object input, final boolean seekForwardOnly,
- final boolean ignoreMetadata) {
- super.setInput(input, seekForwardOnly, ignoreMetadata);
- iis = (ImageInputStream) input;
- image = null;
- }
-
- @Override
public ImageReadParam getDefaultReadParam() {
return new JPEGImageReadParam();
- }
-
- private OffscreenImage getImage(final int index) throws IOException {
- if (index >= getNumImages(false)) {
- throw new IndexOutOfBoundsException("index >= getNumImages()"); //$NON-NLS-1$
- }
-
- if (image == null) {
- if (iis == null) {
- throw new IllegalArgumentException(Messages.getString(
- "imageio.2", //$NON-NLS-1$
- "input")); //$NON-NLS-1$
- }
-
- final DecodingImageSource source = new IISDecodingImageSource(iis);
- image = new OffscreenImage(source);
- source.addConsumer(image);
- source.load();
- }
-
- return image;
}
}
Modified: harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/org/apache/harmony/x/imageio/plugins/jpeg/JPEGImageReaderSpi.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/org/apache/harmony/x/imageio/plugins/jpeg/JPEGImageReaderSpi.java?rev=618257&r1=618256&r2=618257&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/org/apache/harmony/x/imageio/plugins/jpeg/JPEGImageReaderSpi.java (original)
+++ harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/org/apache/harmony/x/imageio/plugins/jpeg/JPEGImageReaderSpi.java Mon Feb 4 04:41:39 2008
@@ -22,65 +22,48 @@
import java.io.IOException;
import java.util.Locale;
+
import javax.imageio.ImageReader;
import javax.imageio.spi.ImageReaderSpi;
-import javax.imageio.spi.ServiceRegistry;
-import javax.imageio.stream.ImageInputStream;
+
+import org.apache.harmony.x.imageio.plugins.ImageSignature;
+import org.apache.harmony.x.imageio.plugins.ImageType;
+import org.apache.harmony.x.imageio.plugins.PluginUtils;
public class JPEGImageReaderSpi extends ImageReaderSpi {
public JPEGImageReaderSpi() {
- super(JPEGSpiConsts.vendorName, JPEGSpiConsts.version,
- JPEGSpiConsts.names, JPEGSpiConsts.suffixes,
- JPEGSpiConsts.MIMETypes, JPEGSpiConsts.readerClassName,
- STANDARD_INPUT_TYPE, JPEGSpiConsts.writerSpiNames,
- JPEGSpiConsts.supportsStandardStreamMetadataFormat,
- JPEGSpiConsts.nativeStreamMetadataFormatName,
- JPEGSpiConsts.nativeStreamMetadataFormatClassName,
- JPEGSpiConsts.extraStreamMetadataFormatNames,
- JPEGSpiConsts.extraStreamMetadataFormatClassNames,
- JPEGSpiConsts.supportsStandardImageMetadataFormat,
- JPEGSpiConsts.nativeImageMetadataFormatName,
- JPEGSpiConsts.nativeImageMetadataFormatClassName,
- JPEGSpiConsts.extraImageMetadataFormatNames,
- JPEGSpiConsts.extraImageMetadataFormatClassNames);
+ super(PluginUtils.VENDOR_NAME, PluginUtils.DEFAULT_VERSION,
+ ImageType.JPEG.getNames(),
+ ImageType.JPEG.getSuffixes(),
+ ImageType.JPEG.getMimeTypes(),
+ JPEGImageReader.class.getName(), STANDARD_INPUT_TYPE,
+ JPEGSpiConsts.writerSpiNames,
+ JPEGSpiConsts.supportsStandardStreamMetadataFormat,
+ JPEGSpiConsts.nativeStreamMetadataFormatName,
+ JPEGSpiConsts.nativeStreamMetadataFormatClassName,
+ JPEGSpiConsts.extraStreamMetadataFormatNames,
+ JPEGSpiConsts.extraStreamMetadataFormatClassNames,
+ JPEGSpiConsts.supportsStandardImageMetadataFormat,
+ JPEGSpiConsts.nativeImageMetadataFormatName,
+ JPEGSpiConsts.nativeImageMetadataFormatClassName,
+ JPEGSpiConsts.extraImageMetadataFormatNames,
+ JPEGSpiConsts.extraImageMetadataFormatClassNames);
}
-
@Override
public boolean canDecodeInput(Object source) throws IOException {
- ImageInputStream markable = (ImageInputStream) source;
- try {
- markable.mark();
-
- byte[] signature = new byte[3];
- markable.seek(0);
- markable.read(signature, 0, 3);
- markable.reset();
-
- if ((signature[0] & 0xFF) == 0xFF &&
- (signature[1] & 0xFF) == JPEGConsts.SOI &&
- (signature[2] & 0xFF) == 0xFF) { // JPEG
- return true;
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- return false;
+ return ImageSignature.JPEG.verify(source);
}
@Override
- public ImageReader createReaderInstance(Object extension) throws IOException {
+ public ImageReader createReaderInstance(Object extension)
+ throws IOException {
return new JPEGImageReader(this);
}
@Override
public String getDescription(Locale locale) {
- return "DRL JPEG decoder";
- }
-
- @Override
- public void onRegistration(ServiceRegistry registry, Class<?> category) {
- // super.onRegistration(registry, category);
+ return "JPEG image decoder"; //$NON-NLS-1$
}
}
Modified: harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/org/apache/harmony/x/imageio/plugins/jpeg/JPEGImageWriterSpi.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/org/apache/harmony/x/imageio/plugins/jpeg/JPEGImageWriterSpi.java?rev=618257&r1=618256&r2=618257&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/org/apache/harmony/x/imageio/plugins/jpeg/JPEGImageWriterSpi.java (original)
+++ harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/org/apache/harmony/x/imageio/plugins/jpeg/JPEGImageWriterSpi.java Mon Feb 4 04:41:39 2008
@@ -20,23 +20,36 @@
*/
package org.apache.harmony.x.imageio.plugins.jpeg;
-import javax.imageio.spi.ImageWriterSpi;
-import javax.imageio.ImageWriter;
-import javax.imageio.ImageTypeSpecifier;
import java.io.IOException;
import java.util.Locale;
+import javax.imageio.ImageTypeSpecifier;
+import javax.imageio.ImageWriter;
+import javax.imageio.spi.ImageWriterSpi;
+
+import org.apache.harmony.x.imageio.plugins.ImageType;
+import org.apache.harmony.x.imageio.plugins.PluginUtils;
+
public class JPEGImageWriterSpi extends ImageWriterSpi {
public JPEGImageWriterSpi() {
- super(JPEGSpiConsts.vendorName, JPEGSpiConsts.version,
- JPEGSpiConsts.names, JPEGSpiConsts.suffixes, JPEGSpiConsts.MIMETypes,
- JPEGSpiConsts.writerClassName, STANDARD_OUTPUT_TYPE,
- JPEGSpiConsts.readerSpiNames, JPEGSpiConsts.supportsStandardStreamMetadataFormat /*TODO: support st. metadata format*/,
- JPEGSpiConsts.nativeStreamMetadataFormatName, JPEGSpiConsts.nativeStreamMetadataFormatClassName,
- JPEGSpiConsts.extraStreamMetadataFormatNames, JPEGSpiConsts.extraStreamMetadataFormatClassNames,
- JPEGSpiConsts.supportsStandardImageMetadataFormat, JPEGSpiConsts.nativeImageMetadataFormatName, JPEGSpiConsts.nativeImageMetadataFormatClassName,
- JPEGSpiConsts.extraImageMetadataFormatNames, JPEGSpiConsts.extraImageMetadataFormatClassNames);
+ /* TODO: support st. metadata format */
+ super(PluginUtils.VENDOR_NAME, PluginUtils.DEFAULT_VERSION,
+ ImageType.JPEG.getNames(),
+ ImageType.JPEG.getSuffixes(),
+ ImageType.JPEG.getMimeTypes(),
+ JPEGImageWriter.class.getName(), STANDARD_OUTPUT_TYPE,
+ JPEGSpiConsts.readerSpiNames,
+ JPEGSpiConsts.supportsStandardStreamMetadataFormat,
+ JPEGSpiConsts.nativeStreamMetadataFormatName,
+ JPEGSpiConsts.nativeStreamMetadataFormatClassName,
+ JPEGSpiConsts.extraStreamMetadataFormatNames,
+ JPEGSpiConsts.extraStreamMetadataFormatClassNames,
+ JPEGSpiConsts.supportsStandardImageMetadataFormat,
+ JPEGSpiConsts.nativeImageMetadataFormatName,
+ JPEGSpiConsts.nativeImageMetadataFormatClassName,
+ JPEGSpiConsts.extraImageMetadataFormatNames,
+ JPEGSpiConsts.extraImageMetadataFormatClassNames);
}
@Override
@@ -51,6 +64,6 @@
@Override
public String getDescription(Locale locale) {
- return "DRL JPEG Encoder";
+ return "JPEG image Encoder"; //$NON-NLS-1$
}
}
Modified: harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/org/apache/harmony/x/imageio/plugins/jpeg/JPEGSpiConsts.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/org/apache/harmony/x/imageio/plugins/jpeg/JPEGSpiConsts.java?rev=618257&r1=618256&r2=618257&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/org/apache/harmony/x/imageio/plugins/jpeg/JPEGSpiConsts.java (original)
+++ harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/org/apache/harmony/x/imageio/plugins/jpeg/JPEGSpiConsts.java Mon Feb 4 04:41:39 2008
@@ -20,38 +20,22 @@
*/
package org.apache.harmony.x.imageio.plugins.jpeg;
-/**
- * @author Rustem V. Rafikov
- * @version $Revision: 1.2 $
- */
public class JPEGSpiConsts {
- private JPEGSpiConsts() {}
+ private JPEGSpiConsts() {
+ }
- public static final String vendorName = "Intel Corporation";
- public static final String version = "0.1 beta";
-
- static final String readerClassName = "org.apache.harmony.x.imageio.plugins.jpeg.JPEGImageReader";
- static final String writerClassName = "org.apache.harmony.x.imageio.plugins.jpeg.JPEGImageWriter";
-
- static final String[] names = {"jpeg", "jpg", "JPEG", "JPG"};
- static final String[] suffixes = {"jpeg", "jpg"};
- static final String[] MIMETypes = {"image/jpeg"};
-
- static final String[] writerSpiNames = {"org.apache.harmony.x.imageio.plugins.jpeg.JPEGImageWriterSpi"};
- static final String[] readerSpiNames = {"org.apache.harmony.x.imageio.plugins.jpeg.JPEGImageReaderSpi"};
-
- //-- TODO fill this stuff with correct data
- static final boolean supportsStandardStreamMetadataFormat = false;
- static final String nativeStreamMetadataFormatName = null;
- static final String nativeStreamMetadataFormatClassName = null;
- static final String[] extraStreamMetadataFormatNames = null;
- static final String[] extraStreamMetadataFormatClassNames = null;
- static final boolean supportsStandardImageMetadataFormat = false;
- static final String nativeImageMetadataFormatName =
- "org.apache.harmony.x.imageio.plugins.jpeg.MyFormatMetadata_1.0";
- static final String nativeImageMetadataFormatClassName =
- "org.apache.harmony.x.imageio.plugins.jpeg.MyFormatMetadata";
- static final String[] extraImageMetadataFormatNames = null;
- static final String[] extraImageMetadataFormatClassNames = null;
+ static final String[] writerSpiNames = { JPEGImageWriterSpi.class.getName() };
+ static final String[] readerSpiNames = { JPEGImageReaderSpi.class.getName() };
+ // -- TODO fill this stuff with correct data
+ static final boolean supportsStandardStreamMetadataFormat = false;
+ static final String nativeStreamMetadataFormatName = null;
+ static final String nativeStreamMetadataFormatClassName = null;
+ static final String[] extraStreamMetadataFormatNames = null;
+ static final String[] extraStreamMetadataFormatClassNames = null;
+ static final boolean supportsStandardImageMetadataFormat = false;
+ static final String nativeImageMetadataFormatName = null;
+ static final String nativeImageMetadataFormatClassName = null;
+ static final String[] extraImageMetadataFormatNames = null;
+ static final String[] extraImageMetadataFormatClassNames = null;
}
Modified: harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/org/apache/harmony/x/imageio/plugins/png/PNGImageReader.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/org/apache/harmony/x/imageio/plugins/png/PNGImageReader.java?rev=618257&r1=618256&r2=618257&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/org/apache/harmony/x/imageio/plugins/png/PNGImageReader.java (original)
+++ harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/org/apache/harmony/x/imageio/plugins/png/PNGImageReader.java Mon Feb 4 04:41:39 2008
@@ -15,93 +15,15 @@
* limitations under the License.
*/
-
package org.apache.harmony.x.imageio.plugins.png;
-import org.apache.harmony.awt.gl.image.DecodingImageSource;
-import org.apache.harmony.awt.gl.image.OffscreenImage;
-import org.apache.harmony.luni.util.NotImplementedException;
-import org.apache.harmony.x.imageio.plugins.jpeg.IISDecodingImageSource;
-
-import javax.imageio.ImageReader;
-import javax.imageio.ImageTypeSpecifier;
-import javax.imageio.ImageReadParam;
-import javax.imageio.plugins.jpeg.JPEGImageReadParam;
import javax.imageio.spi.ImageReaderSpi;
-import javax.imageio.stream.ImageInputStream;
-import javax.imageio.metadata.IIOMetadata;
-import java.io.IOException;
-import java.util.Iterator;
-import java.awt.image.BufferedImage;
-public class PNGImageReader extends ImageReader {
- ImageInputStream iis;
+import org.apache.harmony.x.imageio.plugins.AwtImageReader;
+
+public class PNGImageReader extends AwtImageReader {
public PNGImageReader(ImageReaderSpi imageReaderSpi) {
super(imageReaderSpi);
- }
-
- public int getNumImages(boolean allowSearch) throws IOException, NotImplementedException {
- // TODO: implement
- throw new NotImplementedException();
- }
-
- public int getWidth(int imageIndex) throws IOException, NotImplementedException {
- // TODO: implement
- throw new NotImplementedException();
- }
-
- public int getHeight(int imageIndex) throws IOException, NotImplementedException {
- // TODO: implement
- throw new NotImplementedException();
- }
-
- public Iterator<ImageTypeSpecifier> getImageTypes(int imageIndex) throws IOException, NotImplementedException {
- // TODO: implement
- throw new NotImplementedException();
- }
-
- @Override
- public IIOMetadata getStreamMetadata() throws IOException, NotImplementedException {
- // TODO: implement
- throw new NotImplementedException();
- }
-
- @Override
- public IIOMetadata getImageMetadata(int imageIndex) throws IOException, NotImplementedException {
- // TODO: implement
- throw new NotImplementedException();
- }
-
- @Override
- public BufferedImage read(int i, ImageReadParam imageReadParam) throws IOException {
- if (iis == null) {
- throw new IllegalArgumentException("input stream == null");
- }
-
- DecodingImageSource source = new IISDecodingImageSource(iis);
- OffscreenImage image = new OffscreenImage(source);
- source.addConsumer(image);
- source.load();
- // The interrupted flag should be cleared because ImageDecoder interrupts
- // current thread while decoding (due its architecture).
- Thread.interrupted();
- return image.getBufferedImage();
- }
-
- @Override
- public BufferedImage read(int i) throws IOException {
- return read(i, null);
- }
-
- @Override
- public void setInput(Object input, boolean seekForwardOnly, boolean ignoreMetadata) {
- super.setInput(input, seekForwardOnly, ignoreMetadata);
- iis = (ImageInputStream) input;
- }
-
- @Override
- public ImageReadParam getDefaultReadParam() {
- return new ImageReadParam();
}
}
Modified: harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/org/apache/harmony/x/imageio/plugins/png/PNGImageReaderSpi.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/org/apache/harmony/x/imageio/plugins/png/PNGImageReaderSpi.java?rev=618257&r1=618256&r2=618257&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/org/apache/harmony/x/imageio/plugins/png/PNGImageReaderSpi.java (original)
+++ harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/org/apache/harmony/x/imageio/plugins/png/PNGImageReaderSpi.java Mon Feb 4 04:41:39 2008
@@ -15,74 +15,43 @@
* limitations under the License.
*/
-
package org.apache.harmony.x.imageio.plugins.png;
-import org.apache.harmony.x.imageio.plugins.jpeg.JPEGSpiConsts;
-
-import javax.imageio.spi.ImageReaderSpi;
-import javax.imageio.spi.ServiceRegistry;
-import javax.imageio.ImageReader;
-import javax.imageio.stream.ImageInputStream;
import java.io.IOException;
import java.util.Locale;
+import javax.imageio.ImageReader;
+import javax.imageio.spi.ImageReaderSpi;
+
+import org.apache.harmony.x.imageio.plugins.ImageSignature;
+import org.apache.harmony.x.imageio.plugins.ImageType;
+import org.apache.harmony.x.imageio.plugins.PluginUtils;
+
public class PNGImageReaderSpi extends ImageReaderSpi {
- static final String PNG_NAMES[] = new String[] {"png", "PNG"};
- static final String PNG_SUFFIXES[] = new String[] {"png"};
- static final String PNG_MIME_TYPES[] = new String[] {"image/png"};
- static final String PNG_READER_CLASS_NAME = "org.apache.harmony.x.imageio.plugins.png.PNGImageReader";
- static final String PNG_READER_SPI_NAMES[] = {"org.apache.harmony.x.imageio.plugins.png.PNGImageReaderSpi"};
public PNGImageReaderSpi() {
- super(
- JPEGSpiConsts.vendorName, JPEGSpiConsts.version,
- PNG_NAMES, PNG_SUFFIXES,
- PNG_MIME_TYPES, PNG_READER_CLASS_NAME,
- STANDARD_INPUT_TYPE, null,
- false, null,
- null, null,
- null, false,
- null, null,
- null, null
- );
+ super(PluginUtils.VENDOR_NAME, PluginUtils.DEFAULT_VERSION,
+ ImageType.PNG.getNames(), ImageType.PNG.getSuffixes(),
+ ImageType.PNG.getMimeTypes(),
+ PNGImageReader.class.getName(), STANDARD_INPUT_TYPE,
+ new String[] { PNGImageWriterSpi.class.getName() },
+ false, null, null, null, null, false, null, null, null,
+ null);
}
@Override
- public boolean canDecodeInput(Object source) throws IOException {
- ImageInputStream markable = (ImageInputStream) source;
- markable.mark();
-
- byte[] signature = new byte[8];
- markable.seek(0);
-
- int nBytes = markable.read(signature, 0, 8);
- if(nBytes != 8) markable.read(signature, nBytes, 8-nBytes);
- markable.reset();
-
- // PNG signature: 137 80 78 71 13 10 26 10
- return (signature[0] & 0xFF) == 137 &&
- (signature[1] & 0xFF) == 80 &&
- (signature[2] & 0xFF) == 78 &&
- (signature[3] & 0xFF) == 71 &&
- (signature[4] & 0xFF) == 13 &&
- (signature[5] & 0xFF) == 10 &&
- (signature[6] & 0xFF) == 26 &&
- (signature[7] & 0xFF) == 10;
+ public boolean canDecodeInput(final Object source) throws IOException {
+ return ImageSignature.PNG.verify(source);
}
@Override
- public ImageReader createReaderInstance(Object extension) throws IOException {
+ public ImageReader createReaderInstance(Object extension)
+ throws IOException {
return new PNGImageReader(this);
}
@Override
public String getDescription(Locale locale) {
- return "DRL PNG decoder";
- }
-
- @Override
- public void onRegistration(ServiceRegistry registry, Class<?> category) {
- super.onRegistration(registry, category);
+ return "PNG image decoder"; //$NON-NLS-1$
}
}
Modified: harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/org/apache/harmony/x/imageio/plugins/png/PNGImageWriterSpi.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/org/apache/harmony/x/imageio/plugins/png/PNGImageWriterSpi.java?rev=618257&r1=618256&r2=618257&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/org/apache/harmony/x/imageio/plugins/png/PNGImageWriterSpi.java (original)
+++ harmony/enhanced/classlib/trunk/modules/imageio/src/main/java/org/apache/harmony/x/imageio/plugins/png/PNGImageWriterSpi.java Mon Feb 4 04:41:39 2008
@@ -21,7 +21,6 @@
package org.apache.harmony.x.imageio.plugins.png;
import java.awt.image.ColorModel;
-import java.awt.image.DataBufferByte;
import java.awt.image.IndexColorModel;
import java.io.IOException;
import java.util.Locale;
@@ -30,31 +29,27 @@
import javax.imageio.ImageWriter;
import javax.imageio.spi.ImageWriterSpi;
+import org.apache.harmony.x.imageio.plugins.ImageType;
+import org.apache.harmony.x.imageio.plugins.PluginUtils;
+
public class PNGImageWriterSpi extends ImageWriterSpi {
public PNGImageWriterSpi() {
- super("Intel Corporation",// vendorName
- "1.0",// version
- new String[] {
- "png", "PNG" },// names
- new String[] {
- "png", "PNG" },// suffixes
- new String[] {
- "image/png" },// MIMETypes
- "org.apache.harmony.x.imageio.plugins.png.PNGImageWriter",// writerClassName
- STANDARD_OUTPUT_TYPE,// outputTypes
- new String[] {
- "org.apache.harmony.x.imageio.plugins.png.PNGImageWriterSpi" },// readerSpiNames
- false,// supportsStandardStreamMetadataFormat
- null,// nativeStreamMetadataFormatName
- null,// nativeStreamMetadataFormatClassName
- null,// extraStreamMetadataFormatNames
- null,// extraStreamMetadataFormatClassNames
- false,// supportsStandardImageMetadataFormat
- null,// nativeImageMetadataFormatName
- null,// nativeImageMetadataFormatClassName
- null,// extraImageMetadataFormatNames
- null// extraImageMetadataFormatClassNames
+ super(PluginUtils.VENDOR_NAME, PluginUtils.DEFAULT_VERSION,
+ ImageType.PNG.getNames(), ImageType.PNG.getSuffixes(),
+ ImageType.PNG.getMimeTypes(),
+ PNGImageWriter.class.getName(), STANDARD_OUTPUT_TYPE,
+ new String[] { PNGImageReaderSpi.class.getName() },
+ false,// supportsStandardStreamMetadataFormat
+ null,// nativeStreamMetadataFormatName
+ null,// nativeStreamMetadataFormatClassName
+ null,// extraStreamMetadataFormatNames
+ null,// extraStreamMetadataFormatClassNames
+ false,// supportsStandardImageMetadataFormat
+ null,// nativeImageMetadataFormatName
+ null,// nativeImageMetadataFormatClassName
+ null,// extraImageMetadataFormatNames
+ null// extraImageMetadataFormatClassNames
);
}
@@ -69,29 +64,27 @@
int bitDepth = colorModel.getPixelSize() / numBands;
if (colorModel instanceof IndexColorModel) {
- if (bitDepth != 1 && bitDepth != 2 && bitDepth != 4 && bitDepth != 8) {
+ if (bitDepth != 1 && bitDepth != 2 && bitDepth != 4
+ && bitDepth != 8) {
canEncode = false;
}
if (numBands != 1) {
canEncode = false;
}
- }
- else if (numBands == 1) {
- if (bitDepth != 1 && bitDepth != 2 && bitDepth != 4 && bitDepth != 8 && bitDepth != 16) {
+ } else if (numBands == 1) {
+ if (bitDepth != 1 && bitDepth != 2 && bitDepth != 4
+ && bitDepth != 8 && bitDepth != 16) {
canEncode = false;
}
- }
- else if (numBands == 2) {
+ } else if (numBands == 2) {
if (bitDepth != 8 && bitDepth != 16) {
canEncode = false;
}
- }
- else if (numBands == 3) {
+ } else if (numBands == 3) {
if (bitDepth != 8 && bitDepth != 16) {
canEncode = false;
}
- }
- else if (numBands == 4) {
+ } else if (numBands == 4) {
if (bitDepth != 8 && bitDepth != 16) {
canEncode = false;
}
@@ -107,7 +100,7 @@
@Override
public String getDescription(Locale arg0) {
- return "DRL PNG encoder";
+ return "PNG image encoder"; //$NON-NLS-1$
}
}