private void writeTRNS()

in src/main/java/org/apache/xmlgraphics/image/codec/png/PNGImageEncoder.java [695:742]


    private void writeTRNS() throws IOException {
        if (param.isTransparencySet()
            && (colorType != PNG_COLOR_GRAY_ALPHA)
            && (colorType != PNG_COLOR_RGB_ALPHA)) {
            ChunkStream cs = new ChunkStream("tRNS");
            try {
                if (param instanceof PNGEncodeParam.Palette) {
                    byte[] t =
                        ((PNGEncodeParam.Palette)param).getPaletteTransparency();
                    for (byte aT : t) {
                        cs.writeByte(aT);
                    }
                } else if (param instanceof PNGEncodeParam.Gray) {
                    int t = ((PNGEncodeParam.Gray)param).getTransparentGray();
                    cs.writeShort(t);
                } else if (param instanceof PNGEncodeParam.RGB) {
                    int[] t = ((PNGEncodeParam.RGB)param).getTransparentRGB();
                    cs.writeShort(t[0]);
                    cs.writeShort(t[1]);
                    cs.writeShort(t[2]);
                }

                cs.writeToStream(dataOutput);
            } finally {
                cs.close();
            }
        } else if (colorType == PNG_COLOR_PALETTE) {
            int lastEntry = Math.min(255, alphaPalette.length - 1);
            int nonOpaque;
            for (nonOpaque = lastEntry; nonOpaque >= 0; nonOpaque--) {
                if (alphaPalette[nonOpaque] != (byte)255) {
                    break;
                }
            }

            if (nonOpaque >= 0) {
                ChunkStream cs = new ChunkStream("tRNS");
                try {
                    for (int i = 0; i <= nonOpaque; i++) {
                        cs.writeByte(alphaPalette[i]);
                    }
                    cs.writeToStream(dataOutput);
                } finally {
                    cs.close();
                }
            }
        }
    }