?? modulespec.java
字號:
/* * 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 + -