001/*
002 * $RCSfile: ROI.java,v $
003 * $Revision: 1.1 $
004 * $Date: 2005/02/11 05:02:22 $
005 * $State: Exp $
006 *
007 * Class:                   ROI
008 *
009 * Description:             This class describes a single ROI
010 *
011 *
012 *
013 * COPYRIGHT:
014 *
015 * This software module was originally developed by Raphaël Grosbois and
016 * Diego Santa Cruz (Swiss Federal Institute of Technology-EPFL); Joel
017 * Askelöf (Ericsson Radio Systems AB); and Bertrand Berthelot, David
018 * Bouchard, Félix Henry, Gerard Mozelle and Patrice Onno (Canon Research
019 * Centre France S.A) in the course of development of the JPEG2000
020 * standard as specified by ISO/IEC 15444 (JPEG 2000 Standard). This
021 * software module is an implementation of a part of the JPEG 2000
022 * Standard. Swiss Federal Institute of Technology-EPFL, Ericsson Radio
023 * Systems AB and Canon Research Centre France S.A (collectively JJ2000
024 * Partners) agree not to assert against ISO/IEC and users of the JPEG
025 * 2000 Standard (Users) any of their rights under the copyright, not
026 * including other intellectual property rights, for this software module
027 * with respect to the usage by ISO/IEC and Users of this software module
028 * or modifications thereof for use in hardware or software products
029 * claiming conformance to the JPEG 2000 Standard. Those intending to use
030 * this software module in hardware or software products are advised that
031 * their use may infringe existing patents. The original developers of
032 * this software module, JJ2000 Partners and ISO/IEC assume no liability
033 * for use of this software module or modifications thereof. No license
034 * or right to this software module is granted for non JPEG 2000 Standard
035 * conforming products. JJ2000 Partners have full right to use this
036 * software module for his/her own purpose, assign or donate this
037 * software module to any third party and to inhibit third parties from
038 * using this software module for non JPEG 2000 Standard conforming
039 * products. This copyright notice must be included in all copies or
040 * derivative works of this software module.
041 *
042 * Copyright (c) 1999/2000 JJ2000 Partners.
043 */
044package jj2000.j2k.roi.encoder;
045
046import jj2000.j2k.image.input.ImgReaderPGM;
047
048/**
049 * This class contains the shape of a single ROI. In the current
050 * implementation only rectangles and circles are supported.
051 *
052 * @see ROIMaskGenerator
053 */
054public class ROI{
055
056    /** ImgReaderPGM object with the arbrtrary ROI */
057    public ImgReaderPGM maskPGM = null;
058
059    /** Where or not the ROI shape is arbitrary */
060    public boolean arbShape;
061
062    /** Flag indicating whether the ROI is rectangular or not */
063    public boolean rect;
064
065    /** The components for which the ROI is relevant */
066    public int comp;
067
068    /** x coordinate of upper left corner of rectangular ROI */
069    public int ulx;
070
071    /** y coordinate of upper left corner of rectangular ROI */
072    public int uly;
073
074    /** width of rectangular ROI  */
075    public int w;
076
077    /** height of rectangular ROI */
078    public int h;
079
080    /** x coordinate of center of circular ROI */
081    public int x;
082
083    /** y coordinate of center of circular ROI */
084    public int y;
085
086    /** radius of circular ROI  */
087    public int r;
088
089
090    /**
091     * Constructor for ROI with arbitrary shape
092     *
093     * @param comp The component the ROI belongs to
094     *
095     * @param maskPGM ImgReaderPGM containing the ROI
096     */
097    public ROI(int comp, ImgReaderPGM maskPGM){
098        arbShape = true;
099        rect = false;
100        this.comp = comp;
101        this.maskPGM = maskPGM;
102    }
103
104    /**
105     * Constructor for rectangular ROIs
106     *
107     * @param comp The component the ROI belongs to
108     *
109     * @param x x-coordinate of upper left corner of ROI
110     *
111     * @param y y-coordinate of upper left corner of ROI
112     *
113     * @param w width of ROI
114     *
115     * @param h height of ROI
116     */
117    public ROI(int comp, int ulx, int uly, int w, int h){
118        arbShape = false;
119        this.comp = comp;
120        this.ulx = ulx;
121        this.uly = uly;
122        this.w = w;
123        this.h = h;
124        rect = true;
125    }
126
127    /**
128     * Constructor for circular ROIs
129     *
130     * @param comp The component the ROI belongs to
131     *
132     * @param x x-coordinate of center of ROI
133     *
134     * @param y y-coordinate of center of ROI
135     *
136     * @param w radius of ROI
137     */
138    public ROI(int comp, int x, int y, int rad){
139        arbShape = false;
140        this.comp = comp;
141        this.x = x;
142        this.y = y;
143        this.r = rad;
144    }
145
146    /**
147     * This function prints all relevant data for the ROI
148     */
149    public String toString(){
150        if(arbShape) {
151            return "ROI with arbitrary shape, PGM file= "+maskPGM;
152        }
153        else if(rect)
154            return "Rectangular ROI, comp="+comp+" ulx="+ulx+" uly="+uly+
155                   " w="+w+" h="+h;
156        else
157            return "Circular ROI,  comp="+comp+" x="+x+" y="+y+
158                " radius="+r;
159
160    }
161
162}
163
164
165
166
167
168
169
170
171