blob: 31ba1fcfef098795723417f4f20109bee42a439b [file] [log] [blame]
J. Duke319a3b92007-12-01 00:00:00 +00001/*
2 * Copyright 1997-2000 Sun Microsystems, Inc. All Rights Reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. Sun designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Sun in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
22 * CA 95054 USA or visit www.sun.com if you need additional information or
23 * have any questions.
24 */
25
26package java.awt.image;
27
28
29/**
30 * This abstract class defines a lookup table object. ByteLookupTable
31 * and ShortLookupTable are subclasses, which
32 * contain byte and short data, respectively. A lookup table
33 * contains data arrays for one or more bands (or components) of an image
34 * (for example, separate arrays for R, G, and B),
35 * and it contains an offset which will be subtracted from the
36 * input values before indexing into the arrays. This allows an array
37 * smaller than the native data size to be provided for a
38 * constrained input. If there is only one array in the lookup
39 * table, it will be applied to all bands. All arrays must be the
40 * same size.
41 *
42 * @see ByteLookupTable
43 * @see ShortLookupTable
44 * @see LookupOp
45 */
46public abstract class LookupTable extends Object{
47
48 /**
49 * Constants
50 */
51
52 int numComponents;
53 int offset;
54 int numEntries;
55
56 /**
57 * Constructs a new LookupTable from the number of components and an offset
58 * into the lookup table.
59 * @param offset the offset to subtract from input values before indexing
60 * into the data arrays for this <code>LookupTable</code>
61 * @param numComponents the number of data arrays in this
62 * <code>LookupTable</code>
63 * @throws IllegalArgumentException if <code>offset</code> is less than 0
64 * or if <code>numComponents</code> is less than 1
65 */
66 protected LookupTable(int offset, int numComponents) {
67 if (offset < 0) {
68 throw new
69 IllegalArgumentException("Offset must be greater than 0");
70 }
71 if (numComponents < 1) {
72 throw new IllegalArgumentException("Number of components must "+
73 " be at least 1");
74 }
75 this.numComponents = numComponents;
76 this.offset = offset;
77 }
78
79 /**
80 * Returns the number of components in the lookup table.
81 * @return the number of components in this <code>LookupTable</code>.
82 */
83 public int getNumComponents() {
84 return numComponents;
85 }
86
87 /**
88 * Returns the offset.
89 * @return the offset of this <code>LookupTable</code>.
90 */
91 public int getOffset() {
92 return offset;
93 }
94
95 /**
96 * Returns an <code>int</code> array of components for
97 * one pixel. The <code>dest</code> array contains the
98 * result of the lookup and is returned. If dest is
99 * <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}