]> source.dussan.org Git - poi.git/commitdiff
Fix bug 38921, where HSSFPalette.findSimilar() wasn't working properly, and add tests...
authorNick Burch <nick@apache.org>
Thu, 21 Feb 2008 11:34:25 +0000 (11:34 +0000)
committerNick Burch <nick@apache.org>
Thu, 21 Feb 2008 11:34:25 +0000 (11:34 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@629755 13f79535-47bb-0310-9956-ffa450edef68

src/documentation/content/xdocs/changes.xml
src/documentation/content/xdocs/status.xml
src/java/org/apache/poi/hssf/usermodel/HSSFPalette.java
src/testcases/org/apache/poi/hssf/usermodel/TestHSSFPalette.java

index 46fdb22acdf9ac0725de86f08d12c18daba1942c..eea475fd2c2861f18850a1a44290be6717918f68 100644 (file)
@@ -36,6 +36,7 @@
 
                <!-- Don't forget to update status.xml too! -->
         <release version="3.1-beta1" date="2008-??-??">
+           <action dev="POI-DEVELOPERS" type="fix">38921 - Have HSSFPalette.findSimilar() work properly</action>
            <action dev="POI-DEVELOPERS" type="fix">44456 - Fix the contrib SViewer / SViewerPanel to not fail on sheets with missing rows</action>
            <action dev="POI-DEVELOPERS" type="fix">44403 - Further support for unusual, but valid, arguments to the Mid function</action>
            <action dev="POI-DEVELOPERS" type="fix">44410 - Support for whole-column ranges, such as C:C, in formula strings and the formula evaluator</action>
index fec81a1e1c3935761c2b4202f514246e76eb2f19..2d176896f5d93dccc96078fb24e47cdcb87a79c6 100644 (file)
@@ -33,6 +33,7 @@
        <!-- Don't forget to update changes.xml too! -->
     <changes>
         <release version="3.1-beta1" date="2008-??-??">
+           <action dev="POI-DEVELOPERS" type="fix">38921 - Have HSSFPalette.findSimilar() work properly</action>
            <action dev="POI-DEVELOPERS" type="fix">44456 - Fix the contrib SViewer / SViewerPanel to not fail on sheets with missing rows</action>
            <action dev="POI-DEVELOPERS" type="fix">44403 - Further support for unusual, but valid, arguments to the Mid function</action>
            <action dev="POI-DEVELOPERS" type="fix">44410 - Support for whole-column ranges, such as C:C, in formula strings and the formula evaluator</action>
index 7fc552595047ab8f069ca937d8c9febc28bb51f8..8674904d0c14519403d66b0217dacf2e16bc4168 100644 (file)
@@ -99,9 +99,11 @@ public class HSSFPalette
         for (short i = (short) PaletteRecord.FIRST_COLOR_INDEX; b != null;
             b = palette.getColor(++i))
         {
-            int colorDistance = red - b[0] + green - b[1] + blue - b[2];
+            int colorDistance = Math.abs(red - b[0]) + 
+               Math.abs(green - b[1]) + Math.abs(blue - b[2]);
             if (colorDistance < minColorDistance)
             {
+                minColorDistance = colorDistance;
                 result = getColor(i);
             }
         }
index c5674b9e765a57c0f01284ff7a8741bac1866cf8..a0f09696b544fa51fd42e428cb4214f8ed47f8a9 100644 (file)
@@ -160,6 +160,49 @@ public class TestHSSFPalette extends TestCase
         assertEquals("FFFF:0:FFFF", p.getColor((short)14).getHexString());
     }
     
+    public void testFindSimilar() throws Exception {
+       HSSFWorkbook book = new HSSFWorkbook();
+       HSSFPalette p = book.getCustomPalette();
+       
+       
+       // Add a few edge colours in
+       p.setColorAtIndex((short)8, (byte)-1, (byte)0, (byte)0);
+       p.setColorAtIndex((short)9, (byte)0, (byte)-1, (byte)0);
+       p.setColorAtIndex((short)10, (byte)0, (byte)0, (byte)-1);
+       
+       // And some near a few of them
+       p.setColorAtIndex((short)11, (byte)-1, (byte)2, (byte)2);
+       p.setColorAtIndex((short)12, (byte)-2, (byte)2, (byte)10);
+       p.setColorAtIndex((short)13, (byte)-4, (byte)0, (byte)0);
+       p.setColorAtIndex((short)14, (byte)-8, (byte)0, (byte)0);
+       
+       assertEquals(
+                       "FFFF:0:0", p.getColor((short)8).getHexString()
+       );
+       
+       // Now check we get the right stuff back
+       assertEquals(
+                       p.getColor((short)8).getHexString(), 
+                       p.findSimilarColor((byte)-1, (byte)0, (byte)0).getHexString()
+       );
+       assertEquals(
+                       p.getColor((short)8).getHexString(), 
+                       p.findSimilarColor((byte)-2, (byte)0, (byte)0).getHexString()
+       );
+       assertEquals(
+                       p.getColor((short)8).getHexString(), 
+                       p.findSimilarColor((byte)-1, (byte)1, (byte)0).getHexString()
+       );
+       assertEquals(
+                       p.getColor((short)11).getHexString(), 
+                       p.findSimilarColor((byte)-1, (byte)2, (byte)1).getHexString()
+       );
+       assertEquals(
+                       p.getColor((short)12).getHexString(), 
+                       p.findSimilarColor((byte)-1, (byte)2, (byte)10).getHexString()
+       );
+    }
+    
     /**
      * Verifies that the generated gnumeric-format string values match the
      * hardcoded values in the HSSFColor default color palette