001    /*
002     * UnsharpMaskKernel
003     * 
004     * Copyright (c) 2002, 2003 Marco Schmidt.
005     * All rights reserved.
006     */
007    
008    package net.sourceforge.jiu.filters;
009    
010    /**
011     * An unsharp mask kernel to be used with {@link ConvolutionKernelFilter}.
012     *
013     * @author Marco Schmidt
014     * @author Niels Donvil
015     * @since 0.10.0
016     */
017    public class UnsharpMaskKernel extends ConvolutionKernelData
018    {
019            /**
020             * Creates a new unsharp mask kernel.
021             * @param level adjusts the amount of 'unsharpness', must be from 1 to 50
022             */
023            public UnsharpMaskKernel(int level)
024            {
025                    super("Unsharp mask", new int[] {1}, 5, 5, 1, 0);
026                    if (level < 1 || level > 50)
027                    {
028                            throw new IllegalArgumentException("The level argument must be >= 1 and <= 50.");
029                    }
030                    level = ((51 - level) * 4 ) + 20;
031                    setDiv(level);
032                    int[] data = 
033                    {
034                             0,   0,          -1,   0,  0,
035                             0,  -8,         -21,  -8,  0,
036                            -1, -21, level + 120, -21, -1,
037                             0,  -8,         -21,  -8,  0,
038                             0,   0,          -1,   0,  0
039                    };
040                    setData(data);
041                    check();
042            }
043    }