Java Code Examples for java.awt.image.Kernel#getWidth()

The following examples show how to use java.awt.image.Kernel#getWidth() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: BufferedBufImgOps.java    From hottub with GNU General Public License v2.0 6 votes vote down vote up
private static void enableConvolveOp(RenderQueue rq,
                                     SurfaceData srcData,
                                     ConvolveOp cop)
{
    // assert rq.lock.isHeldByCurrentThread();
    boolean edgeZero =
        cop.getEdgeCondition() == ConvolveOp.EDGE_ZERO_FILL;
    Kernel kernel = cop.getKernel();
    int kernelWidth = kernel.getWidth();
    int kernelHeight = kernel.getHeight();
    int kernelSize = kernelWidth * kernelHeight;
    int sizeofFloat = 4;
    int totalBytesRequired = 4 + 8 + 12 + (kernelSize * sizeofFloat);

    RenderBuffer buf = rq.getBuffer();
    rq.ensureCapacityAndAlignment(totalBytesRequired, 4);
    buf.putInt(ENABLE_CONVOLVE_OP);
    buf.putLong(srcData.getNativeOps());
    buf.putInt(edgeZero ? 1 : 0);
    buf.putInt(kernelWidth);
    buf.putInt(kernelHeight);
    buf.put(kernel.getKernelData(null));
}
 
Example 2
Source File: BufferedBufImgOps.java    From jdk8u-jdk with GNU General Public License v2.0 6 votes vote down vote up
private static void enableConvolveOp(RenderQueue rq,
                                     SurfaceData srcData,
                                     ConvolveOp cop)
{
    // assert rq.lock.isHeldByCurrentThread();
    boolean edgeZero =
        cop.getEdgeCondition() == ConvolveOp.EDGE_ZERO_FILL;
    Kernel kernel = cop.getKernel();
    int kernelWidth = kernel.getWidth();
    int kernelHeight = kernel.getHeight();
    int kernelSize = kernelWidth * kernelHeight;
    int sizeofFloat = 4;
    int totalBytesRequired = 4 + 8 + 12 + (kernelSize * sizeofFloat);

    RenderBuffer buf = rq.getBuffer();
    rq.ensureCapacityAndAlignment(totalBytesRequired, 4);
    buf.putInt(ENABLE_CONVOLVE_OP);
    buf.putLong(srcData.getNativeOps());
    buf.putInt(edgeZero ? 1 : 0);
    buf.putInt(kernelWidth);
    buf.putInt(kernelHeight);
    buf.put(kernel.getKernelData(null));
}
 
Example 3
Source File: GaussianFilter.java    From Pixelitor with GNU General Public License v3.0 6 votes vote down vote up
/**
 * Blur and transpose a block of ARGB pixels.
 *
 * @param kernel     the blur kernel
 * @param inPixels   the input pixels
 * @param outPixels  the output pixels
 * @param width      the width of the pixel array
 * @param height     the height of the pixel array
 * @param alpha      whether to blur the alpha channel
 * @param edgeAction what to do at the edges
 */
public static void convolveAndTranspose(Kernel kernel, int[] inPixels, int[] outPixels, int width, int height, boolean alpha, boolean premultiply, boolean unpremultiply,
                                        int edgeAction, ProgressTracker pt) {
    float[] matrix = kernel.getKernelData(null);
    int cols = kernel.getWidth();
    int cols2 = cols / 2;

    Future<?>[] resultLines = new Future[height];
    for (int y = 0; y < height; y++) {
        int finalY = y;
        Runnable lineTask = () -> convolveAndTransposeLine(inPixels, outPixels, width, height, alpha, premultiply, unpremultiply, edgeAction, matrix, cols2, finalY);
        resultLines[y] = ThreadPool.submit(lineTask);
    }

    ThreadPool.waitFor(resultLines, pt);
}
 
Example 4
Source File: BufferedBufImgOps.java    From Bytecoder with Apache License 2.0 6 votes vote down vote up
private static void enableConvolveOp(RenderQueue rq,
                                     SurfaceData srcData,
                                     ConvolveOp cop)
{
    // assert rq.lock.isHeldByCurrentThread();
    boolean edgeZero =
        cop.getEdgeCondition() == ConvolveOp.EDGE_ZERO_FILL;
    Kernel kernel = cop.getKernel();
    int kernelWidth = kernel.getWidth();
    int kernelHeight = kernel.getHeight();
    int kernelSize = kernelWidth * kernelHeight;
    int sizeofFloat = 4;
    int totalBytesRequired = 4 + 8 + 12 + (kernelSize * sizeofFloat);

    RenderBuffer buf = rq.getBuffer();
    rq.ensureCapacityAndAlignment(totalBytesRequired, 4);
    buf.putInt(ENABLE_CONVOLVE_OP);
    buf.putLong(srcData.getNativeOps());
    buf.putInt(edgeZero ? 1 : 0);
    buf.putInt(kernelWidth);
    buf.putInt(kernelHeight);
    buf.put(kernel.getKernelData(null));
}
 
Example 5
Source File: BufferedBufImgOps.java    From openjdk-jdk8u-backup with GNU General Public License v2.0 6 votes vote down vote up
private static void enableConvolveOp(RenderQueue rq,
                                     SurfaceData srcData,
                                     ConvolveOp cop)
{
    // assert rq.lock.isHeldByCurrentThread();
    boolean edgeZero =
        cop.getEdgeCondition() == ConvolveOp.EDGE_ZERO_FILL;
    Kernel kernel = cop.getKernel();
    int kernelWidth = kernel.getWidth();
    int kernelHeight = kernel.getHeight();
    int kernelSize = kernelWidth * kernelHeight;
    int sizeofFloat = 4;
    int totalBytesRequired = 4 + 8 + 12 + (kernelSize * sizeofFloat);

    RenderBuffer buf = rq.getBuffer();
    rq.ensureCapacityAndAlignment(totalBytesRequired, 4);
    buf.putInt(ENABLE_CONVOLVE_OP);
    buf.putLong(srcData.getNativeOps());
    buf.putInt(edgeZero ? 1 : 0);
    buf.putInt(kernelWidth);
    buf.putInt(kernelHeight);
    buf.put(kernel.getKernelData(null));
}
 
Example 6
Source File: BufferedBufImgOps.java    From Bytecoder with Apache License 2.0 5 votes vote down vote up
/**************************** ConvolveOp support ****************************/

    public static boolean isConvolveOpValid(ConvolveOp cop) {
        Kernel kernel = cop.getKernel();
        int kw = kernel.getWidth();
        int kh = kernel.getHeight();
        // REMIND: we currently can only handle 3x3 and 5x5 kernels,
        //         but hopefully this is just a temporary restriction;
        //         see native shader comments for more details
        if (!(kw == 3 && kh == 3) && !(kw == 5 && kh == 5)) {
            return false;
        }
        return true;
    }
 
Example 7
Source File: BufferedBufImgOps.java    From openjdk-8 with GNU General Public License v2.0 5 votes vote down vote up
/**************************** ConvolveOp support ****************************/

    public static boolean isConvolveOpValid(ConvolveOp cop) {
        Kernel kernel = cop.getKernel();
        int kw = kernel.getWidth();
        int kh = kernel.getHeight();
        // REMIND: we currently can only handle 3x3 and 5x5 kernels,
        //         but hopefully this is just a temporary restriction;
        //         see native shader comments for more details
        if (!(kw == 3 && kh == 3) && !(kw == 5 && kh == 5)) {
            return false;
        }
        return true;
    }
 
Example 8
Source File: BufferedBufImgOps.java    From openjdk-8-source with GNU General Public License v2.0 5 votes vote down vote up
/**************************** ConvolveOp support ****************************/

    public static boolean isConvolveOpValid(ConvolveOp cop) {
        Kernel kernel = cop.getKernel();
        int kw = kernel.getWidth();
        int kh = kernel.getHeight();
        // REMIND: we currently can only handle 3x3 and 5x5 kernels,
        //         but hopefully this is just a temporary restriction;
        //         see native shader comments for more details
        if (!(kw == 3 && kh == 3) && !(kw == 5 && kh == 5)) {
            return false;
        }
        return true;
    }
 
Example 9
Source File: BufferedBufImgOps.java    From jdk8u-jdk with GNU General Public License v2.0 5 votes vote down vote up
/**************************** ConvolveOp support ****************************/

    public static boolean isConvolveOpValid(ConvolveOp cop) {
        Kernel kernel = cop.getKernel();
        int kw = kernel.getWidth();
        int kh = kernel.getHeight();
        // REMIND: we currently can only handle 3x3 and 5x5 kernels,
        //         but hopefully this is just a temporary restriction;
        //         see native shader comments for more details
        if (!(kw == 3 && kh == 3) && !(kw == 5 && kh == 5)) {
            return false;
        }
        return true;
    }
 
Example 10
Source File: BufferedBufImgOps.java    From openjdk-jdk9 with GNU General Public License v2.0 5 votes vote down vote up
/**************************** ConvolveOp support ****************************/

    public static boolean isConvolveOpValid(ConvolveOp cop) {
        Kernel kernel = cop.getKernel();
        int kw = kernel.getWidth();
        int kh = kernel.getHeight();
        // REMIND: we currently can only handle 3x3 and 5x5 kernels,
        //         but hopefully this is just a temporary restriction;
        //         see native shader comments for more details
        if (!(kw == 3 && kh == 3) && !(kw == 5 && kh == 5)) {
            return false;
        }
        return true;
    }
 
Example 11
Source File: BufferedBufImgOps.java    From dragonwell8_jdk with GNU General Public License v2.0 5 votes vote down vote up
/**************************** ConvolveOp support ****************************/

    public static boolean isConvolveOpValid(ConvolveOp cop) {
        Kernel kernel = cop.getKernel();
        int kw = kernel.getWidth();
        int kh = kernel.getHeight();
        // REMIND: we currently can only handle 3x3 and 5x5 kernels,
        //         but hopefully this is just a temporary restriction;
        //         see native shader comments for more details
        if (!(kw == 3 && kh == 3) && !(kw == 5 && kh == 5)) {
            return false;
        }
        return true;
    }
 
Example 12
Source File: ConvolveFilter.java    From weblaf with GNU General Public License v3.0 5 votes vote down vote up
public static void convolve ( final Kernel kernel, final int[] inPixels, final int[] outPixels, final int width, final int height, final boolean alpha, final int edgeAction )
{
    if ( kernel.getHeight () == 1 )
    {
        convolveH ( kernel, inPixels, outPixels, width, height, alpha, edgeAction );
    }
    else if ( kernel.getWidth () == 1 )
    {
        convolveV ( kernel, inPixels, outPixels, width, height, alpha, edgeAction );
    }
    else
    {
        convolveHV ( kernel, inPixels, outPixels, width, height, alpha, edgeAction );
    }
}
 
Example 13
Source File: BufferedBufImgOps.java    From jdk8u60 with GNU General Public License v2.0 5 votes vote down vote up
/**************************** ConvolveOp support ****************************/

    public static boolean isConvolveOpValid(ConvolveOp cop) {
        Kernel kernel = cop.getKernel();
        int kw = kernel.getWidth();
        int kh = kernel.getHeight();
        // REMIND: we currently can only handle 3x3 and 5x5 kernels,
        //         but hopefully this is just a temporary restriction;
        //         see native shader comments for more details
        if (!(kw == 3 && kh == 3) && !(kw == 5 && kh == 5)) {
            return false;
        }
        return true;
    }
 
Example 14
Source File: BufferedBufImgOps.java    From TencentKona-8 with GNU General Public License v2.0 5 votes vote down vote up
/**************************** ConvolveOp support ****************************/

    public static boolean isConvolveOpValid(ConvolveOp cop) {
        Kernel kernel = cop.getKernel();
        int kw = kernel.getWidth();
        int kh = kernel.getHeight();
        // REMIND: we currently can only handle 3x3 and 5x5 kernels,
        //         but hopefully this is just a temporary restriction;
        //         see native shader comments for more details
        if (!(kw == 3 && kh == 3) && !(kw == 5 && kh == 5)) {
            return false;
        }
        return true;
    }
 
Example 15
Source File: BufferedBufImgOps.java    From jdk8u_jdk with GNU General Public License v2.0 5 votes vote down vote up
/**************************** ConvolveOp support ****************************/

    public static boolean isConvolveOpValid(ConvolveOp cop) {
        Kernel kernel = cop.getKernel();
        int kw = kernel.getWidth();
        int kh = kernel.getHeight();
        // REMIND: we currently can only handle 3x3 and 5x5 kernels,
        //         but hopefully this is just a temporary restriction;
        //         see native shader comments for more details
        if (!(kw == 3 && kh == 3) && !(kw == 5 && kh == 5)) {
            return false;
        }
        return true;
    }
 
Example 16
Source File: ConvolveFilter.java    From Pixelitor with GNU General Public License v3.0 4 votes vote down vote up
/**
 * Convolve with a kernel consisting of one row.
 *
 * @param kernel     the kernel
 * @param inPixels   the input pixels
 * @param outPixels  the output pixels
 * @param width      the width
 * @param height     the height
 * @param alpha      include alpha channel
 * @param edgeAction what to do at the edges
 */
public static void convolveH(Kernel kernel, int[] inPixels, int[] outPixels, int width, int height, boolean alpha, int edgeAction) {
    int index = 0;
    float[] matrix = kernel.getKernelData(null);
    int cols = kernel.getWidth();
    int cols2 = cols / 2;

    for (int y = 0; y < height; y++) {
        int ioffset = y * width;
        for (int x = 0; x < width; x++) {
            float r = 0, g = 0, b = 0, a = 0;
            int moffset = cols2;
            for (int col = -cols2; col <= cols2; col++) {
                float f = matrix[moffset + col];

                if (f != 0) {
                    int ix = x + col;
                    if (ix < 0) {
                        if (edgeAction == CLAMP_EDGES) {
                            ix = 0;
                        } else if (edgeAction == WRAP_EDGES) {
                            ix = (x + width) % width;
                        }
                    } else if (ix >= width) {
                        if (edgeAction == CLAMP_EDGES) {
                            ix = width - 1;
                        } else if (edgeAction == WRAP_EDGES) {
                            ix = (x + width) % width;
                        }
                    }
                    int rgb = inPixels[ioffset + ix];
                    a += f * ((rgb >> 24) & 0xff);
                    r += f * ((rgb >> 16) & 0xff);
                    g += f * ((rgb >> 8) & 0xff);
                    b += f * (rgb & 0xff);
                }
            }
            int ia = alpha ? PixelUtils.clamp((int) (a + 0.5)) : 0xff;
            int ir = PixelUtils.clamp((int) (r + 0.5));
            int ig = PixelUtils.clamp((int) (g + 0.5));
            int ib = PixelUtils.clamp((int) (b + 0.5));
            outPixels[index++] = (ia << 24) | (ir << 16) | (ig << 8) | ib;
        }
    }
}
 
Example 17
Source File: GaussianFilter.java    From pumpernickel with MIT License 4 votes vote down vote up
public static void convolveAndTranspose(Kernel kernel, int[] inPixels,
		int[] outPixels, int width, int height, boolean alpha,
		int edgeAction) {
	float[] matrix = kernel.getKernelData(null);
	int cols = kernel.getWidth();
	int cols2 = cols / 2;

	for (int y = 0; y < height; y++) {
		int index = y;
		int ioffset = y * width;
		for (int x = 0; x < width; x++) {
			float r = 0, g = 0, b = 0, a = 0;
			int moffset = cols2;
			for (int col = -cols2; col <= cols2; col++) {
				float f = matrix[moffset + col];

				if (f != 0) {
					int ix = x + col;
					if (ix < 0) {
						if (edgeAction == CLAMP_EDGES)
							ix = 0;
						else if (edgeAction == WRAP_EDGES)
							ix = (x + width) % width;
					} else if (ix >= width) {
						if (edgeAction == CLAMP_EDGES)
							ix = width - 1;
						else if (edgeAction == WRAP_EDGES)
							ix = (x + width) % width;
					}
					int rgb = inPixels[ioffset + ix];
					a += f * ((rgb >> 24) & 0xff);
					r += f * ((rgb >> 16) & 0xff);
					g += f * ((rgb >> 8) & 0xff);
					b += f * (rgb & 0xff);
				}
			}
			int ia = alpha ? PixelUtils.clamp((int) (a + 0.5)) : 0xff;
			int ir = PixelUtils.clamp((int) (r + 0.5));
			int ig = PixelUtils.clamp((int) (g + 0.5));
			int ib = PixelUtils.clamp((int) (b + 0.5));
			outPixels[index] = (ia << 24) | (ir << 16) | (ig << 8) | ib;
			index += height;
		}
	}
}
 
Example 18
Source File: ConvolveFilter.java    From openbd-core with GNU General Public License v3.0 4 votes vote down vote up
/**
 * Convolve with a kernel consisting of one row.
    * @param kernel the kernel
    * @param inPixels the input pixels
    * @param outPixels the output pixels
    * @param width the width
    * @param height the height
    * @param alpha include alpha channel
    * @param edgeAction what to do at the edges
 */
public static void convolveH(Kernel kernel, int[] inPixels, int[] outPixels, int width, int height, boolean alpha, int edgeAction) {
	int index = 0;
	float[] matrix = kernel.getKernelData( null );
	int cols = kernel.getWidth();
	int cols2 = cols/2;

	for (int y = 0; y < height; y++) {
		int ioffset = y*width;
		for (int x = 0; x < width; x++) {
			float r = 0, g = 0, b = 0, a = 0;
			int moffset = cols2;
			for (int col = -cols2; col <= cols2; col++) {
				float f = matrix[moffset+col];

				if (f != 0) {
					int ix = x+col;
					if ( ix < 0 ) {
						if ( edgeAction == CLAMP_EDGES )
							ix = 0;
						else if ( edgeAction == WRAP_EDGES )
							ix = (x+width) % width;
					} else if ( ix >= width) {
						if ( edgeAction == CLAMP_EDGES )
							ix = width-1;
						else if ( edgeAction == WRAP_EDGES )
							ix = (x+width) % width;
					}
					int rgb = inPixels[ioffset+ix];
					a += f * ((rgb >> 24) & 0xff);
					r += f * ((rgb >> 16) & 0xff);
					g += f * ((rgb >> 8) & 0xff);
					b += f * (rgb & 0xff);
				}
			}
			int ia = alpha ? PixelUtils.clamp((int)(a+0.5)) : 0xff;
			int ir = PixelUtils.clamp((int)(r+0.5));
			int ig = PixelUtils.clamp((int)(g+0.5));
			int ib = PixelUtils.clamp((int)(b+0.5));
			outPixels[index++] = (ia << 24) | (ir << 16) | (ig << 8) | ib;
		}
	}
}
 
Example 19
Source File: ConvolveFilter.java    From openbd-core with GNU General Public License v3.0 3 votes vote down vote up
/**
    * Convolve a block of pixels.
    * @param kernel the kernel
    * @param inPixels the input pixels
    * @param outPixels the output pixels
    * @param width the width
    * @param height the height
    * @param alpha include alpha channel
    * @param edgeAction what to do at the edges
    */
public static void convolve(Kernel kernel, int[] inPixels, int[] outPixels, int width, int height, boolean alpha, int edgeAction) {
	if (kernel.getHeight() == 1)
		convolveH(kernel, inPixels, outPixels, width, height, alpha, edgeAction);
	else if (kernel.getWidth() == 1)
		convolveV(kernel, inPixels, outPixels, width, height, alpha, edgeAction);
	else
		convolveHV(kernel, inPixels, outPixels, width, height, alpha, edgeAction);
}
 
Example 20
Source File: ConvolveFilter.java    From Pixelitor with GNU General Public License v3.0 3 votes vote down vote up
/**
 * Convolve a block of pixels.
 *
 * @param kernel     the kernel
 * @param inPixels   the input pixels
 * @param outPixels  the output pixels
 * @param width      the width
 * @param height     the height
 * @param alpha      include alpha channel
 * @param edgeAction what to do at the edges
 */
public void convolve(Kernel kernel, int[] inPixels, int[] outPixels, int width, int height, boolean alpha, int edgeAction) {
    if (kernel.getHeight() == 1) {
        convolveH(kernel, inPixels, outPixels, width, height, alpha, edgeAction);
    } else if (kernel.getWidth() == 1) {
        convolveV(kernel, inPixels, outPixels, width, height, alpha, edgeAction);
    } else {
        convolveHV(kernel, inPixels, outPixels, width, height, alpha, edgeAction);
    }
}