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 */ 048package jj2000.j2k.entropy; 049 050import 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 */ 063public 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}