001: /*
002: * $RCSfile: Progression.java,v $
003: * $Revision: 1.1 $
004: * $Date: 2005/02/11 05:02:05 $
005: * $State: Exp $
006: *
007: * Class: Progression
008: *
009: * Description: Holds the type(s) of progression
010: *
011: *
012: * Modified by:
013: *
014: * COPYRIGHT:
015: *
016: * This software module was originally developed by Raphaël Grosbois and
017: * Diego Santa Cruz (Swiss Federal Institute of Technology-EPFL); Joel
018: * Askelöf (Ericsson Radio Systems AB); and Bertrand Berthelot, David
019: * Bouchard, Félix Henry, Gerard Mozelle and Patrice Onno (Canon Research
020: * Centre France S.A) in the course of development of the JPEG2000
021: * standard as specified by ISO/IEC 15444 (JPEG 2000 Standard). This
022: * software module is an implementation of a part of the JPEG 2000
023: * Standard. Swiss Federal Institute of Technology-EPFL, Ericsson Radio
024: * Systems AB and Canon Research Centre France S.A (collectively JJ2000
025: * Partners) agree not to assert against ISO/IEC and users of the JPEG
026: * 2000 Standard (Users) any of their rights under the copyright, not
027: * including other intellectual property rights, for this software module
028: * with respect to the usage by ISO/IEC and Users of this software module
029: * or modifications thereof for use in hardware or software products
030: * claiming conformance to the JPEG 2000 Standard. Those intending to use
031: * this software module in hardware or software products are advised that
032: * their use may infringe existing patents. The original developers of
033: * this software module, JJ2000 Partners and ISO/IEC assume no liability
034: * for use of this software module or modifications thereof. No license
035: * or right to this software module is granted for non JPEG 2000 Standard
036: * conforming products. JJ2000 Partners have full right to use this
037: * software module for his/her own purpose, assign or donate this
038: * software module to any third party and to inhibit third parties from
039: * using this software module for non JPEG 2000 Standard conforming
040: * products. This copyright notice must be included in all copies or
041: * derivative works of this software module.
042: *
043: * Copyright (c) 1999/2000 JJ2000 Partners.
044: *
045: *
046: *
047: */
048: package jj2000.j2k.entropy;
049:
050: import jj2000.j2k.codestream.*;
051:
052: /**
053: * This class holds one of the different progression orders defined in
054: * the bit stream. The type(s) of progression order are defined in the
055: * ProgressionType interface. A Progression object is totally defined
056: * by its component start and end, resolution level start and end and
057: * layer start and end indexes. If no progression order change is
058: * defined, there is only Progression instance.
059: *
060: * @see ProgressionType
061: *
062: */
063: public class Progression implements ProgressionType {
064:
065: /** Progression type as defined in ProgressionType interface */
066: public int type;
067:
068: /** Component index for the start of a progression */
069: public int cs;
070:
071: /** Component index for the end of a progression. */
072: public int ce;
073:
074: /** Resolution index for the start of a progression */
075: public int rs;
076:
077: /** Resolution index for the end of a progression. */
078: public int re;
079:
080: /** The index of the last layer. */
081: public int lye;
082:
083: /**
084: * Constructor.
085: *
086: * Builds a new Progression object with specified type and bounds
087: * of progression.
088: *
089: * @param type The progression type
090: *
091: * @param cs The component index start
092: *
093: * @param ce The component index end
094: *
095: * @param rs The resolution level index start
096: *
097: * @param re The resolution level index end
098: *
099: * @param lye The layer index end
100: *
101: */
102: public Progression(int type, int cs, int ce, int rs, int re, int lye) {
103: this .type = type;
104: this .cs = cs;
105: this .ce = ce;
106: this .rs = rs;
107: this .re = re;
108: this .lye = lye;
109: }
110:
111: public String toString() {
112: String str = "type= ";
113: switch (type) {
114: case LY_RES_COMP_POS_PROG:
115: str += "layer, ";
116: break;
117: case RES_LY_COMP_POS_PROG:
118: str += "res, ";
119: break;
120: case RES_POS_COMP_LY_PROG:
121: str += "res-pos, ";
122: break;
123: case POS_COMP_RES_LY_PROG:
124: str += "pos-comp, ";
125: break;
126: case COMP_POS_RES_LY_PROG:
127: str += "pos-comp, ";
128: break;
129: default:
130: throw new Error("Unknown progression type");
131: }
132: str += "comp.: " + cs + "-" + ce + ", ";
133: str += "res.: " + rs + "-" + re + ", ";
134: str += "layer: up to " + lye;
135: return str;
136: }
137: }
|