001    //$HeadURL: svn+ssh://rbezema@svn.wald.intevation.org/deegree/base/branches/2.2_testing/src/org/deegree/model/coverage/ColorInterpretation.java $
002    /*----------------    FILE HEADER  ------------------------------------------
003    
004     This file is part of deegree.
005     Copyright (C) 2001-2008 by:
006     EXSE, Department of Geography, University of Bonn
007     http://www.giub.uni-bonn.de/deegree/
008     lat/lon GmbH
009     http://www.lat-lon.de
010    
011     This library is free software; you can redistribute it and/or
012     modify it under the terms of the GNU Lesser General Public
013     License as published by the Free Software Foundation; either
014     version 2.1 of the License, or (at your option) any later version.
015    
016     This library is distributed in the hope that it will be useful,
017     but WITHOUT ANY WARRANTY; without even the implied warranty of
018     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
019     Lesser General Public License for more details.
020    
021     You should have received a copy of the GNU Lesser General Public
022     License along with this library; if not, write to the Free Software
023     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
024    
025     Contact:
026    
027     Andreas Poth
028     lat/lon GmbH
029     Aennchenstr. 19
030     53115 Bonn
031     Germany
032     E-Mail: poth@lat-lon.de
033    
034     Prof. Dr. Klaus Greve
035     Department of Geography
036     University of Bonn
037     Meckenheimer Allee 166
038     53115 Bonn
039     Germany
040     E-Mail: greve@giub.uni-bonn.de
041    
042     
043     ---------------------------------------------------------------------------*/
044    package org.deegree.model.coverage;
045    
046    /**
047     * Specifies the mapping of a band to a color model component.
048     * 
049     * @UML codelist CV_ColorInterpretation
050     * @author <A HREF="http://www.opengis.org">OpenGIS&reg; consortium</A>
051     * @version <A HREF="http://www.opengis.org/docs/01-004.pdf">Grid Coverage specification 1.0</A>
052     * 
053     * @see PaletteInterpretation
054     * @see SampleDimension
055     */
056    final class ColorInterpretation extends CodeList {
057        /**
058         * Serial number for compatibility with different versions.
059         */
060        private static final long serialVersionUID = 6947933527594223350L;
061    
062        /**
063         * Band is not associated with a color model component.
064         * 
065         * @UML conditional CV_Undefined
066         */
067        public static final ColorInterpretation UNDEFINED = new ColorInterpretation( "UNDEFINED", 0 );
068    
069        /**
070         * Band is an index into a lookup table.
071         * 
072         * @UML conditional CV_GrayIndex
073         * @see #PALETTE_INDEX
074         * @see PaletteInterpretation#GRAY
075         */
076        public static final ColorInterpretation GRAY_INDEX = new ColorInterpretation( "GRAY_INDEX", 1 );
077    
078        /**
079         * Band is a color index into a color table.
080         * 
081         * @UML conditional CV_PaletteIndex
082         * @see #GRAY_INDEX
083         */
084        public static final ColorInterpretation PALETTE_INDEX = new ColorInterpretation( "PALETTE_INDEX", 2 );
085    
086        /**
087         * Red Band for the {@linkplain PaletteInterpretation#RGB RGB} color model components.
088         * 
089         * @UML conditional CV_RedBand
090         * @see #GREEN_BAND
091         * @see #BLUE_BAND
092         * @see #ALPHA_BAND
093         * @see PaletteInterpretation#RGB
094         */
095        public static final ColorInterpretation RED_BAND = new ColorInterpretation( "RED_BAND", 3 );
096    
097        /**
098         * Greend Band for the {@linkplain PaletteInterpretation#RGB RGB} color model components.
099         * 
100         * @UML conditional CV_GreenBand
101         * @see #RED_BAND
102         * @see #BLUE_BAND
103         * @see #ALPHA_BAND
104         * @see PaletteInterpretation#RGB
105         */
106        public static final ColorInterpretation GREEN_BAND = new ColorInterpretation( "GREEN_BAND", 4 );
107    
108        /**
109         * Blue Band for the {@linkplain PaletteInterpretation#RGB RGB} color model components.
110         * 
111         * @UML conditional CV_BlueBand
112         * @see #RED_BAND
113         * @see #GREEN_BAND
114         * @see #ALPHA_BAND
115         * @see PaletteInterpretation#RGB
116         */
117        public static final ColorInterpretation BLUE_BAND = new ColorInterpretation( "BLUE_BAND", 5 );
118    
119        /**
120         * Alpha Band for the {@linkplain PaletteInterpretation#RGB RGB} color model components. Alpha
121         * band may or may not be present.
122         * 
123         * @UML conditional CV_AlphaBand
124         * @see #RED_BAND
125         * @see #GREEN_BAND
126         * @see #BLUE_BAND
127         * @see PaletteInterpretation#RGB
128         */
129        public static final ColorInterpretation ALPHA_BAND = new ColorInterpretation( "ALPHA_BAND", 6 );
130    
131        /**
132         * Hue Band for the {@linkplain PaletteInterpretation#HLS HLS} color model.
133         * 
134         * @UML conditional CV_HueBand
135         * @see #SATURATION_BAND
136         * @see #LIGHTNESS_BAND
137         * @see PaletteInterpretation#HLS
138         */
139        public static final ColorInterpretation HUE_BAND = new ColorInterpretation( "HUE_BAND", 7 );
140    
141        /**
142         * Saturation Band for the {@linkplain PaletteInterpretation#HLS HLS} color model.
143         * 
144         * @UML conditional CV_SaturationBand
145         * @see #HUE_BAND
146         * @see #LIGHTNESS_BAND
147         * @see PaletteInterpretation#HLS
148         */
149        public static final ColorInterpretation SATURATION_BAND = new ColorInterpretation( "SATURATION_BAND", 8 );
150    
151        /**
152         * Lightness Band for the {@linkplain PaletteInterpretation#HLS HLS} color model.
153         * 
154         * @UML conditional CV_LightnessBand
155         * @see #HUE_BAND
156         * @see #SATURATION_BAND
157         * @see PaletteInterpretation#HLS
158         */
159        public static final ColorInterpretation LIGHTNESS_BAND = new ColorInterpretation( "LIGHTNESS_BAND", 9 );
160    
161        /**
162         * Cyan Band for the {@linkplain PaletteInterpretation#CMYK CMYK} color model.
163         * 
164         * @UML conditional CV_CyanBand
165         * @see #MAGENTA_BAND
166         * @see #YELLOW_BAND
167         * @see #BLACK_BAND
168         * @see PaletteInterpretation#CMYK
169         */
170        public static final ColorInterpretation CYAN_BAND = new ColorInterpretation( "CYAN_BAND", 10 );
171    
172        /**
173         * Magenta Band for the {@linkplain PaletteInterpretation#CMYK CMYK} color model.
174         * 
175         * @UML conditional CV_MagentaBand
176         * @see #CYAN_BAND
177         * @see #YELLOW_BAND
178         * @see #BLACK_BAND
179         * @see PaletteInterpretation#CMYK
180         */
181        public static final ColorInterpretation MAGENTA_BAND = new ColorInterpretation( "MAGENTA_BAND", 11 );
182    
183        /**
184         * Yellow Band for the {@linkplain PaletteInterpretation#CMYK CMYK} color model.
185         * 
186         * @UML conditional CV_YellowBand
187         * @see #CYAN_BAND
188         * @see #MAGENTA_BAND
189         * @see #BLACK_BAND
190         * @see PaletteInterpretation#CMYK
191         */
192        public static final ColorInterpretation YELLOW_BAND = new ColorInterpretation( "YELLOW_BAND", 12 );
193    
194        /**
195         * Black Band for the {@linkplain PaletteInterpretation#CMYK CMYK} color model.
196         * 
197         * @UML conditional CV_BlackBand
198         * @see #CYAN_BAND
199         * @see #MAGENTA_BAND
200         * @see #YELLOW_BAND
201         * @see PaletteInterpretation#CMYK
202         */
203        public static final ColorInterpretation BLACK_BAND = new ColorInterpretation( "BLACK_BAND", 13 );
204    
205        /**
206         * List of all enumerations of this type.
207         */
208        private static final ColorInterpretation[] VALUES = new ColorInterpretation[] { UNDEFINED, GRAY_INDEX,
209                                                                                       PALETTE_INDEX, RED_BAND, GREEN_BAND,
210                                                                                       BLUE_BAND, ALPHA_BAND, HUE_BAND,
211                                                                                       SATURATION_BAND, LIGHTNESS_BAND,
212                                                                                       CYAN_BAND, MAGENTA_BAND,
213                                                                                       YELLOW_BAND, BLACK_BAND };
214    
215        /**
216         * Constructs an enum with the given name.
217         */
218        private ColorInterpretation( final String name, final int ordinal ) {
219            super( name, ordinal );
220        }
221    
222        /**
223         * Returns the list of <code>ColorInterpretation</code>s.
224         */
225        public static ColorInterpretation[] values() {
226            return VALUES.clone();
227        }
228    
229        /**
230         * Returns the list of enumerations of the same kind than this enum.
231         */
232        public CodeList[] family() {
233            return values();
234        }
235    }