summaryrefslogtreecommitdiffstats
path: root/awt/org/apache/harmony/x/imageio/plugins/png/PNGImageWriter.java
diff options
context:
space:
mode:
Diffstat (limited to 'awt/org/apache/harmony/x/imageio/plugins/png/PNGImageWriter.java')
-rw-r--r--awt/org/apache/harmony/x/imageio/plugins/png/PNGImageWriter.java247
1 files changed, 0 insertions, 247 deletions
diff --git a/awt/org/apache/harmony/x/imageio/plugins/png/PNGImageWriter.java b/awt/org/apache/harmony/x/imageio/plugins/png/PNGImageWriter.java
deleted file mode 100644
index e2a8d7d..0000000
--- a/awt/org/apache/harmony/x/imageio/plugins/png/PNGImageWriter.java
+++ /dev/null
@@ -1,247 +0,0 @@
-/*
- * 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.
- */
-/**
- * @author Viskov Nikolay
- * @version $Revision$
- */
-package org.apache.harmony.x.imageio.plugins.png;
-
-import com.android.internal.awt.ImageOutputStreamWrapper;
-
-import java.awt.image.BufferedImage;
-import java.awt.image.ColorModel;
-import java.awt.image.DataBufferByte;
-import java.awt.image.DataBufferInt;
-import java.awt.image.IndexColorModel;
-import java.awt.image.Raster;
-import java.awt.image.RenderedImage;
-import java.awt.image.SampleModel;
-import java.awt.image.SinglePixelPackedSampleModel;
-import java.awt.image.WritableRaster;
-import java.io.IOException;
-
-import javax.imageio.IIOImage;
-import javax.imageio.ImageTypeSpecifier;
-import javax.imageio.ImageWriteParam;
-import javax.imageio.ImageWriter;
-import javax.imageio.metadata.IIOMetadata;
-import javax.imageio.spi.ImageWriterSpi;
-import javax.imageio.stream.ImageOutputStream;
-
-import org.apache.harmony.x.imageio.internal.nls.Messages;
-
-import org.apache.harmony.luni.util.NotImplementedException;
-
-import android.graphics.Bitmap;
-import android.graphics.Bitmap.CompressFormat;
-
-public class PNGImageWriter extends ImageWriter {
-
- // /* ???AWT: Debugging
- private static final boolean DEBUG = false;
- private static Bitmap bm;
- public static Bitmap getBitmap() {
- return bm;
- }
- // */
-
- private static int[][] BAND_OFFSETS = {
- {}, {
- 0 }, {
- 0, 1 }, {
- 0, 1, 2 }, {
- 0, 1, 2, 3 } };
-
- // Each pixel is a grayscale sample.
- private static final int PNG_COLOR_TYPE_GRAY = 0;
- // Each pixel is an R,G,B triple.
- private static final int PNG_COLOR_TYPE_RGB = 2;
- // Each pixel is a palette index, a PLTE chunk must appear.
- private static final int PNG_COLOR_TYPE_PLTE = 3;
- // Each pixel is a grayscale sample, followed by an alpha sample.
- private static final int PNG_COLOR_TYPE_GRAY_ALPHA = 4;
- // Each pixel is an R,G,B triple, followed by an alpha sample.
- private static final int PNG_COLOR_TYPE_RGBA = 6;
-
- //???AWT: private static native void initIDs(Class<ImageOutputStream> iosClass);
-
- static {
- //???AWT
- /*
- System.loadLibrary("pngencoder"); //$NON-NLS-1$
- initIDs(ImageOutputStream.class);
- */
- }
-
- /*
- private native int encode(byte[] input, int bytesInBuffer, int bytePixelSize, Object ios, int imageWidth,
- int imageHeight, int bitDepth, int colorType, int[] palette, int i, boolean b);
- */
-
- protected PNGImageWriter(ImageWriterSpi iwSpi) {
- super(iwSpi);
- }
-
- @Override
- public IIOMetadata convertStreamMetadata(IIOMetadata arg0, ImageWriteParam arg1) {
- throw new NotImplementedException();
- }
-
- @Override
- public IIOMetadata convertImageMetadata(IIOMetadata arg0, ImageTypeSpecifier arg1, ImageWriteParam arg2) {
- throw new NotImplementedException();
- }
-
- @Override
- public IIOMetadata getDefaultImageMetadata(ImageTypeSpecifier arg0, ImageWriteParam arg1) {
- throw new NotImplementedException();
- }
-
- @Override
- public IIOMetadata getDefaultStreamMetadata(ImageWriteParam arg0) {
- throw new NotImplementedException();
- }
-
- @Override
- public void write(IIOMetadata streamMetadata, IIOImage iioImage, ImageWriteParam param) throws IOException {
- if (output == null) {
- throw new IllegalStateException("Output not been set");
- }
- if (iioImage == null) {
- throw new IllegalArgumentException("Image equals null");
- }
- // AWT???: I think this is not needed anymore
- // if (iioImage.hasRaster() && !canWriteRasters()) {
- // throw new UnsupportedOperationException("Can't write raster");
- //}// ImageOutputStreamImpl
-
- Raster sourceRaster;
- RenderedImage img = null;
- if (!iioImage.hasRaster()) {
- img = iioImage.getRenderedImage();
- if (img instanceof BufferedImage) {
- sourceRaster = ((BufferedImage) img).getRaster();
- } else {
- sourceRaster = img.getData();
- }
- } else {
- sourceRaster = iioImage.getRaster();
- }
-
- SampleModel model = sourceRaster.getSampleModel();
- int srcWidth = sourceRaster.getWidth();
- int srcHeight = sourceRaster.getHeight();
- int numBands = model.getNumBands();
-
- ColorModel colorModel = img.getColorModel();
- int pixelSize = colorModel.getPixelSize();
- int bytePixelSize = pixelSize / 8;
- int bitDepth = pixelSize / numBands;
-
- // byte per band
- int bpb = bitDepth > 8 ? 2 : 1;
-
- boolean isInterlace = true;
- if (param instanceof PNGImageWriterParam) {
- isInterlace = ((PNGImageWriterParam) param).getInterlace();
- }
-
- int colorType = PNG_COLOR_TYPE_GRAY;
- int[] palette = null;
-
- if (colorModel instanceof IndexColorModel) {
- if (bitDepth != 1 && bitDepth != 2 && bitDepth != 4 && bitDepth != 8) {
-// Wrong bitDepth-numBands composition
- throw new IllegalArgumentException(Messages.getString("imageio.1"));//$NON-NLS-1$
- }
- if (numBands != 1) {
-// Wrong bitDepth-numBands composition
- throw new IllegalArgumentException(Messages.getString("imageio.1"));//$NON-NLS-1$
- }
-
- IndexColorModel icm = (IndexColorModel) colorModel;
- palette = new int[icm.getMapSize()];
- icm.getRGBs(palette);
- colorType = PNG_COLOR_TYPE_PLTE;
- }
- else if (numBands == 1) {
- if (bitDepth != 1 && bitDepth != 2 && bitDepth != 4 && bitDepth != 8 && bitDepth != 16) {
-// Wrong bitDepth-numBands composition
- throw new IllegalArgumentException(Messages.getString("imageio.1"));//$NON-NLS-1$
- }
- colorType = PNG_COLOR_TYPE_GRAY;
- }
- else if (numBands == 2) {
- if (bitDepth != 8 && bitDepth != 16) {
-// Wrong bitDepth-numBands composition
- throw new IllegalArgumentException(Messages.getString("imageio.1"));//$NON-NLS-1$
- }
- colorType = PNG_COLOR_TYPE_GRAY_ALPHA;
- }
- else if (numBands == 3) {
- if (bitDepth != 8 && bitDepth != 16) {
-// Wrong bitDepth-numBands composition
- throw new IllegalArgumentException(Messages.getString("imageio.1")); //$NON-NLS-1$
- }
- colorType = PNG_COLOR_TYPE_RGB;
- }
- else if (numBands == 4) {
- if (bitDepth != 8 && bitDepth != 16) {
- //Wrong bitDepth-numBands composition
- throw new IllegalArgumentException(Messages.getString("imageio.1")); //$NON-NLS-1$
- }
- colorType = PNG_COLOR_TYPE_RGBA;
- }
-
- /* ???AWT: I think this is not needed anymore
- int dbufferLenght = bytePixelSize * imageHeight * imageWidth;
- DataBufferByte dbuffer = new DataBufferByte(dbufferLenght);
-
- WritableRaster scanRaster = Raster.createInterleavedRaster(dbuffer, imageWidth, imageHeight, bpb * numBands
- * imageWidth, bpb * numBands, BAND_OFFSETS[numBands], null);
-
- scanRaster.setRect(((BufferedImage) image).getRaster()// image.getData()
- .createChild(0, 0, imageWidth, imageHeight, 0, 0, null));
- */
-
- if (DEBUG) {
- System.out.println("**** raster:" + sourceRaster);
- System.out.println("**** model:" + model);
- System.out.println("**** type:" + colorType);
- }
-
- if (model instanceof SinglePixelPackedSampleModel) {
- DataBufferInt ibuf = (DataBufferInt)sourceRaster.getDataBuffer();
- int[] pixels = ibuf.getData();
-
- // Create a bitmap with the pixel
- bm = Bitmap.createBitmap(pixels, srcWidth, srcHeight, Bitmap.Config.ARGB_8888);
-
- // Use Bitmap.compress() to write the image
- ImageOutputStream ios = (ImageOutputStream) getOutput();
- ImageOutputStreamWrapper iosw = new ImageOutputStreamWrapper(ios);
- bm.compress(CompressFormat.PNG, 100, iosw);
- } else {
- // ???AWT: Add support for other color models
- throw new RuntimeException("Color model not supported yet");
- }
- }
-
- public ImageWriteParam getDefaultWriteParam() {
- return new PNGImageWriterParam();
- }
-}