001    /*
002     * RGBColorComparator
003     * 
004     * Copyright (c) 2001, 2002 Marco Schmidt <marcoschmidt@users.sourceforge.net>
005     * All rights reserved.
006     */
007    
008    package net.sourceforge.jiu.color.quantization;
009    
010    import net.sourceforge.jiu.data.RGBIndex;
011    import net.sourceforge.jiu.util.ComparatorInterface;
012    
013    /**
014     * Compares two {@link RGBColor} objects.
015     * @author Marco Schmidt
016     */
017    public class RGBColorComparator implements 
018            ComparatorInterface, 
019            RGBIndex
020    {
021            private int sortOrder;
022    
023            public RGBColorComparator(int aSortOrder)
024            {
025                    setSortOrder(aSortOrder);
026            }
027    
028            public int compare(Object o1, Object o2)
029            {
030                    return ((RGBColor)o1).compareTo((RGBColor)o2, sortOrder);
031            }
032    
033            /**
034             * Sets the internal sort order (it is sorted by one of the three
035             * RGB components) to the parameter.
036             */
037            public void setSortOrder(int aSortOrder)
038            {
039                    if (aSortOrder != INDEX_RED && aSortOrder != INDEX_GREEN && aSortOrder != INDEX_BLUE)
040                    {
041                            throw new IllegalArgumentException("The sort order argument must be either INDEX_RED, INDEX_GREEN or INDEX_BLUE.");
042                    }
043                    sortOrder = aSortOrder;
044            }
045    }