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        /**
016         * @param r
017         *            The red component.
018         * @param g
019         *            The green component.
020         * @param b
021         *            The blue component.
022         * @param a
023         *            The alpha component.
024         * @return An alteration of {@code (r,g,b,a)}.
025         */
026        T alter(float r, float g, float b, float a);
027
028}