public ImageRawPNG getImageRawPNG()

in src/main/java/org/apache/xmlgraphics/image/loader/impl/PNGFile.java [122:191]


    public ImageRawPNG getImageRawPNG(ImageInfo info) throws ImageException {
        InputStream seqStream = new SequenceInputStream(Collections.enumeration(streamVec));
        ColorSpace rgbCS = null;
        switch (colorType) {
        case PNG_COLOR_GRAY:
            if (hasPalette) {
                throw new ImageException("Corrupt PNG: color palette is not allowed!");
            }
            colorModel = new ComponentColorModel(ColorSpace.getInstance(ColorSpace.CS_GRAY), false, false,
                    ColorModel.OPAQUE, DataBuffer.TYPE_BYTE);
            break;
        case PNG_COLOR_RGB:
            if (iccProfile != null) {
                rgbCS = new ICC_ColorSpace(iccProfile);
            } else if (sRGBRenderingIntent != -1) {
                rgbCS = ColorSpace.getInstance(ColorSpace.CS_sRGB);
            } else {
                rgbCS = ColorSpace.getInstance(ColorSpace.CS_LINEAR_RGB);
            }
            colorModel = new ComponentColorModel(rgbCS, false, false, ColorModel.OPAQUE, DataBuffer.TYPE_BYTE);
            break;
        case PNG_COLOR_PALETTE:
            if (hasAlphaPalette) {
                colorModel = new IndexColorModel(bitDepth, paletteEntries, redPalette, greenPalette,
                        bluePalette, alphaPalette);
            } else {
                colorModel = new IndexColorModel(bitDepth, paletteEntries, redPalette, greenPalette,
                        bluePalette);
            }
            break;
        case PNG_COLOR_GRAY_ALPHA:
            if (hasPalette) {
                throw new ImageException("Corrupt PNG: color palette is not allowed!");
            }
            colorModel = new ComponentColorModel(ColorSpace.getInstance(ColorSpace.CS_GRAY), true, false,
                    ColorModel.TRANSLUCENT, DataBuffer.TYPE_BYTE);
            break;
        case PNG_COLOR_RGB_ALPHA:
            if (iccProfile != null) {
                rgbCS = new ICC_ColorSpace(iccProfile);
            } else if (sRGBRenderingIntent != -1) {
                rgbCS = ColorSpace.getInstance(ColorSpace.CS_sRGB);
            } else {
                rgbCS = ColorSpace.getInstance(ColorSpace.CS_LINEAR_RGB);
            }
            colorModel = new ComponentColorModel(rgbCS, true, false, ColorModel.TRANSLUCENT,
                    DataBuffer.TYPE_BYTE);
            break;
        default:
            throw new ImageException("Unsupported color type: " + colorType);
        }
        // the iccProfile is still null for now
        ImageRawPNG rawImage = new ImageRawPNG(info, seqStream, colorModel, bitDepth, iccProfile);
        if (isTransparent) {
            if (colorType == PNG_COLOR_GRAY) {
                rawImage.setGrayTransparentAlpha(grayTransparentAlpha);
            } else if (colorType == PNG_COLOR_RGB) {
                rawImage.setRGBTransparentAlpha(redTransparentAlpha, greenTransparentAlpha,
                        blueTransparentAlpha);
            } else if (colorType == PNG_COLOR_PALETTE) {
                rawImage.setTransparent();
            } else {
                //
            }
        }
        if (sRGBRenderingIntent != -1) {
          rawImage.setRenderingIntent(sRGBRenderingIntent);
        }
        return rawImage;
    }