001package squidpony;
002
003/**
004 * A filter is a function on colors. It is usually used in {@link IColorCenter}
005 * to tint all colors.
006 * 
007 * @author Tommy Ettinger
008 * @author smelC
009 * @param <T>
010 *            The type of colors that this filter outputs.
011 * @see IColorCenter
012 */
013public interface IFilter<T> {
014        /**
015         * @param r
016         *            The red component.
017         * @param g
018         *            The green component.
019         * @param b
020         *            The blue component.
021         * @param a
022         *            The alpha component.
023         * @return An alteration of {@code (r,g,b,a)}.
024         */
025        T alter(float r, float g, float b, float a);
026}