| /* |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| /** |
| * @author Oleg V. Khaschansky |
| * @version $Revision$ |
| * |
| * @date: Sep 28, 2005 |
| */ |
| |
| package java.awt.image; |
| |
| import org.apache.harmony.awt.internal.nls.Messages; |
| |
| /** |
| * The Kernel class provides a matrix. This matrix is stored as a float array |
| * which describes how a specified pixel affects the value calculated for the |
| * pixel's position in the output image of a filtering operation. The X, Y |
| * origins indicate the kernel matrix element which corresponds to the pixel |
| * position for which an output value is being calculated. |
| * |
| * @since Android 1.0 |
| */ |
| public class Kernel implements Cloneable { |
| |
| /** |
| * The x origin. |
| */ |
| private final int xOrigin; |
| |
| /** |
| * The y origin. |
| */ |
| private final int yOrigin; |
| |
| /** |
| * The width. |
| */ |
| private int width; |
| |
| /** |
| * The height. |
| */ |
| private int height; |
| |
| /** |
| * The data. |
| */ |
| float data[]; |
| |
| /** |
| * Instantiates a new Kernel with the specified float array. The |
| * width*height elements of the data array are copied. |
| * |
| * @param width |
| * the width of the Kernel. |
| * @param height |
| * the height of the Kernel. |
| * @param data |
| * the data of Kernel. |
| */ |
| public Kernel(int width, int height, float[] data) { |
| int dataLength = width * height; |
| if (data.length < dataLength) { |
| // awt.22B=Length of data should not be less than width*height |
| throw new IllegalArgumentException(Messages.getString("awt.22B")); //$NON-NLS-1$ |
| } |
| |
| this.width = width; |
| this.height = height; |
| |
| this.data = new float[dataLength]; |
| System.arraycopy(data, 0, this.data, 0, dataLength); |
| |
| xOrigin = (width - 1) / 2; |
| yOrigin = (height - 1) / 2; |
| } |
| |
| /** |
| * Gets the width of this Kernel. |
| * |
| * @return the width of this Kernel. |
| */ |
| public final int getWidth() { |
| return width; |
| } |
| |
| /** |
| * Gets the height of this Kernel. |
| * |
| * @return the height of this Kernel. |
| */ |
| public final int getHeight() { |
| return height; |
| } |
| |
| /** |
| * Gets the float data array of this Kernel. |
| * |
| * @param data |
| * the float array where the resulted data will be stored. |
| * @return the float data array of this Kernel. |
| */ |
| public final float[] getKernelData(float[] data) { |
| if (data == null) { |
| data = new float[this.data.length]; |
| } |
| System.arraycopy(this.data, 0, data, 0, this.data.length); |
| |
| return data; |
| } |
| |
| /** |
| * Gets the X origin of this Kernel. |
| * |
| * @return the X origin of this Kernel. |
| */ |
| public final int getXOrigin() { |
| return xOrigin; |
| } |
| |
| /** |
| * Gets the Y origin of this Kernel. |
| * |
| * @return the Y origin of this Kernel. |
| */ |
| public final int getYOrigin() { |
| return yOrigin; |
| } |
| |
| /** |
| * Returns a copy of this Kernel object. |
| * |
| * @return the copy of this Kernel object. |
| */ |
| @Override |
| public Object clone() { |
| return new Kernel(width, height, data); |
| } |
| } |