xtifffaxtilecodec.java

来自「OpenMap是一个基于JavaBeansTM的开发工具包。利用OpenMap你」· Java 代码 · 共 114 行

JAVA
114
字号
package org.libtiff.jai.codecimpl;import java.awt.Rectangle;import org.libtiff.jai.codec.XTIFF;import org.libtiff.jai.codec.XTIFFField;import org.libtiff.jai.codec.XTIFFTileCodec;import org.libtiff.jai.codec.XTIFFTileCodecImpl;/** * This codec encapsulates all the logic for the TIFF "lzw" decoding codec * algorithm. */public class XTIFFFaxTileCodec extends XTIFFTileCodecImpl {    private XTIFFFaxDecoder decoder = null;    // Fax compression related variables    long tiffT4Options;    long tiffT6Options;    int fillOrder;    /**     * Public constructor     */    public XTIFFFaxTileCodec() {}    /**     * Creation method     */    public XTIFFTileCodec create() {        return new XTIFFFaxTileCodec();    }    public boolean canEncode() {        return false;    }    /**     * Registration method     */    public void register() {        register(XTIFF.COMPRESSION_FAX_G3_1D);        register(XTIFF.COMPRESSION_FAX_G3_2D);        register(XTIFF.COMPRESSION_FAX_G4_2D);    }    /**     * The initialization method particular to Fax decoding.     */    public void initializeDecoding() {        XTIFFField fillOrderField = directory.getField(XTIFF.TIFFTAG_FILL_ORDER);        if (fillOrderField != null) {            fillOrder = fillOrderField.getAsInt(0);        } else {            // Default Fill Order            fillOrder = 1;        }        // Fax T.4 compression options        if (compression == 3) {            XTIFFField t4OptionsField = directory.getField(XTIFF.TIFFTAG_T4_OPTIONS);            if (t4OptionsField != null) {                tiffT4Options = t4OptionsField.getAsLong(0);            } else {                // Use default value                tiffT4Options = 0;            }        }        // Fax T.6 compression options        if (compression == 4) {            XTIFFField t6OptionsField = directory.getField(XTIFF.TIFFTAG_T6_OPTIONS);            if (t6OptionsField != null) {                tiffT6Options = t6OptionsField.getAsLong(0);            } else {                // Use default value                tiffT6Options = 0;            }        }        decoder = new XTIFFFaxDecoder(fillOrder, tileWidth, tileLength);    }    /**     * Decode a rectangle of pixels     */    public void decodeTilePixels(byte[] input, Rectangle newRect, byte[] bdata) {        if (compression == XTIFF.COMPRESSION_FAX_G3_1D) {            decoder.decode1D(bdata, input, newRect.x, newRect.height);        } else if (compression == XTIFF.COMPRESSION_FAX_G3_2D) {            decoder.decode2D(bdata,                    input,                    newRect.x,                    newRect.height,                    tiffT4Options);        } else if (compression == XTIFF.COMPRESSION_FAX_G4_2D) {            decoder.decodeT6(bdata,                    input,                    newRect.x,                    newRect.height,                    tiffT6Options);        }    }    /**     * Decode a rectangle of pixels     */    public void decodeTilePixels(byte[] input, Rectangle newRect, short[] sdata) {    // not used for fax.    }}

⌨️ 快捷键说明

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