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

📄 modulespec.java

📁 jpeg2000算法实现
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/*  * CVS identifier: *  * $Id: ModuleSpec.java,v 1.20 2000/11/30 13:12:26 grosbois Exp $ *  * Class:                   ModuleSpec *  * Description:             Generic class for storing module specs *  *                           from WTFilterSpec (Diego Santa Cruz) *  * COPYRIGHT: *  * This software module was originally developed by Rapha雔 Grosbois and * Diego Santa Cruz (Swiss Federal Institute of Technology-EPFL); Joel * Askel鰂 (Ericsson Radio Systems AB); and Bertrand Berthelot, David * Bouchard, F閘ix Henry, Gerard Mozelle and Patrice Onno (Canon Research * Centre France S.A) in the course of development of the JPEG2000 * standard as specified by ISO/IEC 15444 (JPEG 2000 Standard). This * software module is an implementation of a part of the JPEG 2000 * Standard. Swiss Federal Institute of Technology-EPFL, Ericsson Radio * Systems AB and Canon Research Centre France S.A (collectively JJ2000 * Partners) agree not to assert against ISO/IEC and users of the JPEG * 2000 Standard (Users) any of their rights under the copyright, not * including other intellectual property rights, for this software module * with respect to the usage by ISO/IEC and Users of this software module * or modifications thereof for use in hardware or software products * claiming conformance to the JPEG 2000 Standard. Those intending to use * this software module in hardware or software products are advised that * their use may infringe existing patents. The original developers of * this software module, JJ2000 Partners and ISO/IEC assume no liability * for use of this software module or modifications thereof. No license * or right to this software module is granted for non JPEG 2000 Standard * conforming products. JJ2000 Partners have full right to use this * software module for his/her own purpose, assign or donate this * software module to any third party and to inhibit third parties from * using this software module for non JPEG 2000 Standard conforming * products. This copyright notice must be included in all copies or * derivative works of this software module. *  * Copyright (c) 1999/2000 JJ2000 Partners. * */package jj2000.j2k;import java.util.*;/** * This generic class is used to handle values to be used by a module for each * tile and component.  It uses attribute to determine which value to use. It * should be extended by each module needing this feature. *  * This class might be used for values that are only tile specific or * component specific but not both. * * <P>The attributes to use are defined by a hierarchy. The hierarchy is: * * <ul> * <li> Tile and component specific attribute</li> * <li> Tile specific default attribute</li> * <li> Component main default attribute</li> * <li> Main default attribute</li> * </ul> * */public class ModuleSpec {    /** The identifier for a specification module that applies only to     * components */    public final static byte SPEC_TYPE_COMP = 0;    /** The identifier for a specification module that applies only to        tiles */    public final static byte SPEC_TYPE_TILE = 1;    /** The identifier for a specification module that applies both to     * tiles and components */    public final static byte SPEC_TYPE_TILE_COMP = 2;    /** The identifier for default specification */    public final static byte SPEC_DEF = 0;    /** The identifier for "component default" specification */    public final static byte SPEC_COMP_DEF = 1;    /** The identifier for "tile default" specification */    public final static byte SPEC_TILE_DEF = 2;    /** The identifier for a "tile-component" specification */    public final static byte SPEC_TILE_COMP = 3;    /** The type of the specification module */    protected int specType;    /** The number of tiles */    protected int nTiles = 0;    /** The number of components */    protected int nComp = 0;    /** The spec type for each tile-component. The first index is     * the tile index, the second is the component index.     */    protected byte[][] specValType;    /** Default value for each tile-component */    protected Object def = null;    /** The default value for each component. Null if no component        specific value is defined */    protected Object[] compDef = null;    /** The default value for each tile. Null if no tile specific        value is defined */    protected Object[] tileDef = null;    /** The specific value for each tile-component. Value of tile 16 component     * 3 is accessible through the hash value "t16c3". Null if no     * tile-component specific value is defined */    protected Hashtable tileCompVal;    /**     * Constructs a 'ModuleSpec' object, initializing all the components and     * tiles to the 'SPEC_DEF' spec val type, for the specified number of     * components and tiles.     *     * @param nt The number of tiles     *     * @param nc The number of components     *     * @param type the type of the specification module i.e. tile specific,     * component specific or both.     * */    public ModuleSpec(int nt, int nc, byte type) {	nTiles = nt;	nComp = nc;        specValType = new byte[nt][nc];        switch (type) {        case SPEC_TYPE_TILE:            specType = SPEC_TYPE_TILE;            break;        case SPEC_TYPE_COMP:            specType = SPEC_TYPE_COMP;            break;        case SPEC_TYPE_TILE_COMP:            specType = SPEC_TYPE_TILE_COMP;            break;        }    }    /**      * Sets default value for this module      * */    public void setDefault(Object value){	def = value;    }    /**      * Gets default value for this module.      *     * @return The default value (Must be casted before use)     * */    public Object getDefault(){	return def;    }    /**      * Sets default value for specified component and specValType tag if     * allowed by its priority.     *     * @param c Component index      * */    public void setCompDef(int c, Object value){        if ( specType == SPEC_TYPE_TILE ) {            String errMsg = "Option whose value is '"+value+"' cannot be "                +"specified for components as it is a 'tile only' specific "                +"option";            throw new Error(errMsg);        }	if(compDef==null)	    compDef = new Object[nComp];	for(int i=0; i<nTiles; i++){	    if(specValType[i][c]<SPEC_COMP_DEF) {		specValType[i][c] = SPEC_COMP_DEF;            }	}	compDef[c] = value;    }    /**      * Gets default value of the specified component. If no specification have     * been entered for this component, returns default value.     *     * @param c Component index      *     * @return The default value for this component (Must be casted before      * use)     *     * @see #setCompDef     * */    public Object getCompDef(int c){        if ( specType == SPEC_TYPE_TILE ) {            throw new Error("Illegal use of ModuleSpec class");        }	if(compDef==null || compDef[c]==null){	    return getDefault();	}	else	    return compDef[c];    }    /**      * Sets default value for specified tile and specValType tag if     * allowed by its priority.     *     * @param c Tile index.     * */    public void setTileDef(int t, Object value){        if ( specType == SPEC_TYPE_COMP ) {            String errMsg = "Option whose value is '"+value+"' cannot be "                + "specified for tiles as it is a 'component only' specific "                + "option";            throw new Error(errMsg);        }	if(tileDef==null)	    tileDef = new Object[nTiles];	for(int i=0; i<nComp; i++){	    if(specValType[t][i]<SPEC_TILE_DEF){		specValType[t][i] = SPEC_TILE_DEF;	    }	}	tileDef[t] = value;    }    /**      * Gets default value of the specified tile. If no specification     * has been entered, it returns the default value.     *     * @param t Tile index      *     * @return The default value for this tile (Must be casted before use)     *     * @see #setTileDef     * */    public Object getTileDef(int t){        if ( specType == SPEC_TYPE_COMP ) {            throw new Error("Illegal use of ModuleSpec class");        }	if(tileDef==null || tileDef[t]==null){	    return getDefault();	}	else	    return tileDef[t];    }    /**      * Sets value for specified tile-component.     *     * @param t Tie index      *      * @param c Component index      * */    public void setTileCompVal(int t,int c, Object value){        if ( specType != SPEC_TYPE_TILE_COMP ) {            String errMsg = "Option whose value is '"+value+"' cannot be "                + "specified for ";            switch (specType) {

⌨️ 快捷键说明

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