001 /*
002 * Copyright 1997-2000 Sun Microsystems, Inc. All Rights Reserved.
003 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
004 *
005 * This code is free software; you can redistribute it and/or modify it
006 * under the terms of the GNU General Public License version 2 only, as
007 * published by the Free Software Foundation. Sun designates this
008 * particular file as subject to the "Classpath" exception as provided
009 * by Sun in the LICENSE file that accompanied this code.
010 *
011 * This code is distributed in the hope that it will be useful, but WITHOUT
012 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
013 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
014 * version 2 for more details (a copy is included in the LICENSE file that
015 * accompanied this code).
016 *
017 * You should have received a copy of the GNU General Public License version
018 * 2 along with this work; if not, write to the Free Software Foundation,
019 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
020 *
021 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
022 * CA 95054 USA or visit www.sun.com if you need additional information or
023 * have any questions.
024 */
025
026 package java.awt.image;
027
028 /**
029 * This abstract class defines a lookup table object. ByteLookupTable
030 * and ShortLookupTable are subclasses, which
031 * contain byte and short data, respectively. A lookup table
032 * contains data arrays for one or more bands (or components) of an image
033 * (for example, separate arrays for R, G, and B),
034 * and it contains an offset which will be subtracted from the
035 * input values before indexing into the arrays. This allows an array
036 * smaller than the native data size to be provided for a
037 * constrained input. If there is only one array in the lookup
038 * table, it will be applied to all bands. All arrays must be the
039 * same size.
040 *
041 * @see ByteLookupTable
042 * @see ShortLookupTable
043 * @see LookupOp
044 * @version 10 Feb 1997
045 */
046 public abstract class LookupTable extends Object {
047
048 /**
049 * Constants
050 */
051
052 int numComponents;
053 int offset;
054 int numEntries;
055
056 /**
057 * Constructs a new LookupTable from the number of components and an offset
058 * into the lookup table.
059 * @param offset the offset to subtract from input values before indexing
060 * into the data arrays for this <code>LookupTable</code>
061 * @param numComponents the number of data arrays in this
062 * <code>LookupTable</code>
063 * @throws IllegalArgumentException if <code>offset</code> is less than 0
064 * or if <code>numComponents</code> is less than 1
065 */
066 protected LookupTable(int offset, int numComponents) {
067 if (offset < 0) {
068 throw new IllegalArgumentException(
069 "Offset must be greater than 0");
070 }
071 if (numComponents < 1) {
072 throw new IllegalArgumentException(
073 "Number of components must " + " be at least 1");
074 }
075 this .numComponents = numComponents;
076 this .offset = offset;
077 }
078
079 /**
080 * Returns the number of components in the lookup table.
081 * @return the number of components in this <code>LookupTable</code>.
082 */
083 public int getNumComponents() {
084 return numComponents;
085 }
086
087 /**
088 * Returns the offset.
089 * @return the offset of this <code>LookupTable</code>.
090 */
091 public int getOffset() {
092 return offset;
093 }
094
095 /**
096 * Returns an <code>int</code> array of components for
097 * one pixel. The <code>dest</code> array contains the
098 * result of the lookup and is returned. If dest is
099 * <code>null</code>, a new array is allocated. The
100 * source and destination can be equal.
101 * @param src the source array of components of one pixel
102 * @param dest the destination array of components for one pixel,
103 * translated with this <code>LookupTable</code>
104 * @return an <code>int</code> array of components for one
105 * pixel.
106 */
107 public abstract int[] lookupPixel(int[] src, int[] dest);
108
109 }
|