01: /*
02: * $RCSfile: ImageFunction.java,v $
03: *
04: * Copyright (c) 2005 Sun Microsystems, Inc. All rights reserved.
05: *
06: * Use is subject to license terms.
07: *
08: * $Revision: 1.1 $
09: * $Date: 2005/02/11 04:57:09 $
10: * $State: Exp $
11: */
12: package javax.media.jai;
13:
14: /**
15: * ImageFunction is a common interface for vector-valued functions which
16: * are to be evaluated at positions in the X-Y coordinate system. At
17: * each position the value of such a function may contain one or more
18: * elements each of which may be complex.
19: */
20: public interface ImageFunction {
21:
22: /** Returns whether or not each value's elements are complex. */
23: boolean isComplex();
24:
25: /** Returns the number of elements per value at each position. */
26: int getNumElements();
27:
28: /**
29: * Returns all values of a given element for a specified set of
30: * coordinates. An ArrayIndexOutOfBoundsException may be thrown if
31: * the length of the supplied array(s) is insufficient.
32: *
33: * @param startX The X coordinate of the upper left location to evaluate.
34: * @param startY The Y coordinate of the upper left location to evaluate.
35: * @param deltaX The horizontal increment.
36: * @param deltaY The vertical increment.
37: * @param countX The number of points in the horizontal direction.
38: * @param countY The number of points in the vertical direction.
39: * @param real A pre-allocated float array of length at least countX*countY
40: * in which the real parts of all elements will be returned.
41: * @param imag A pre-allocated float array of length at least countX*countY
42: * in which the imaginary parts of all elements will be returned; may be
43: * null for real data, i.e., when <code>isComplex()</code> returns false.
44: *
45: * @throws ArrayIndexOutOfBoundsException if the length of the supplied
46: * array(s) is insufficient.
47: */
48: void getElements(float startX, float startY, float deltaX,
49: float deltaY, int countX, int countY, int element,
50: float[] real, float[] imag);
51:
52: /**
53: * Returns all values of a given element for a specified set of
54: * coordinates. An ArrayIndexOutOfBoundsException may be thrown if
55: * the length of the supplied array(s) is insufficient.
56: *
57: * @param startX The X coordinate of the upper left location to evaluate.
58: * @param startY The Y coordinate of the upper left location to evaluate.
59: * @param deltaX The horizontal increment.
60: * @param deltaY The vertical increment.
61: * @param countX The number of points in the horizontal direction.
62: * @param countY The number of points in the vertical direction.
63: * @param real A pre-allocated double array of length at least
64: * countX*countY in which the real parts of all elements will be returned.
65: * @param imag A pre-allocated double array of length at least
66: * countX*countY in which the imaginary parts of all elements will be
67: * returned; may be null for real data, i.e., when
68: * <code>isComplex()</code> returns false.
69: *
70: * @throws ArrayIndexOutOfBoundsException if the length of the supplied
71: * array(s) is insufficient.
72: */
73: void getElements(double startX, double startY, double deltaX,
74: double deltaY, int countX, int countY, int element,
75: double[] real, double[] imag);
76: }
|