⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chunk_plte.java

📁 Mapserver的一个java客户端,包含两个applet支持地图显示。
💻 JAVA
字号:
// Copyright (C) 1998, 1999, 2001 Chris Nokleberg// Please see included LICENSE.TXTpackage com.sixlegs.image.png;import java.awt.image.IndexColorModel;import java.io.IOException;final class Chunk_PLTEextends Chunk{    private int size;    /* package */ int[] r_raw;    /* package */ int[] g_raw;    /* package */ int[] b_raw;    /* package */ int[] a_raw;    /* package */ byte[] r;    /* package */ byte[] g;    /* package */ byte[] b;    /* package */ byte[] a;    Chunk_PLTE()    {        super(PLTE);    }    protected boolean multipleOK()    {        return false;    }    protected boolean beforeIDAT()    {        return true;    }    protected void readData()    throws IOException    {        img.data.palette = this;        if (img.getChunk(bKGD) != null) {            throw new PngException("bKGD chunk must follow PLTE chunk");        }        if (!img.data.header.colorUsed) {            throw new PngExceptionSoft("PLTE chunk found in grayscale image");        }        if (length % 3 != 0) {            throw new PngException("PLTE chunk length indivisible by 3");        }        size = length / 3;        /// look into this        if (img.data.header.colorType == PngImage.COLOR_TYPE_PALETTE) {            if (size > (2 << img.data.header.depth)) {                throw new PngException("Too many palette entries");            } else if (size > 256) {                throw new PngExceptionSoft("Too many palette entries");            }        }        r = new byte[size];        g = new byte[size];        b = new byte[size];        int[][] raw  = new int[3][size];        r_raw = raw[0];        g_raw = raw[1];        b_raw = raw[2];        for (int i = 0; i < size; i++) {            r_raw[i] = in_data.readUnsignedByte();            g_raw[i] = in_data.readUnsignedByte();            b_raw[i] = in_data.readUnsignedByte();        }        updateProperties(false);    }    // TODO: stop duplication of palette data?    /* package */ void updateProperties(boolean alpha)    {        int[][] prop = new int[alpha ? 4 : 3][size];        System.arraycopy(r_raw, 0, prop[0], 0, size);        System.arraycopy(g_raw, 0, prop[1], 0, size);        System.arraycopy(b_raw, 0, prop[2], 0, size);        if (alpha) {            System.arraycopy(a_raw, 0, prop[3], 0, size);        }        img.data.properties.put("palette", prop);        img.data.properties.put("palette size", new Integer(size));    }    /* package */ void calculate()    {        for (int i = 0; i < size; i++) {            r[i] = (byte)img.data.gammaTable[r_raw[i]];            g[i] = (byte)img.data.gammaTable[g_raw[i]];            b[i] = (byte)img.data.gammaTable[b_raw[i]];        }        if (img.data.header.paletteUsed) {            if (a != null) {                img.data.header.model =                     new IndexColorModel(img.data.header.cmBits, size, r, g, b, a);            } else {                img.data.header.model =                     new IndexColorModel(img.data.header.cmBits, size, r, g, b);            }        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -