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 }