]> source.dussan.org Git - poi.git/commitdiff
Fix bug 53275: reset indexed color flag when setting a non-indexed color
authorDominik Stadler <centic@apache.org>
Thu, 3 Sep 2015 20:46:23 +0000 (20:46 +0000)
committerDominik Stadler <centic@apache.org>
Thu, 3 Sep 2015 20:46:23 +0000 (20:46 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1701134 13f79535-47bb-0310-9956-ffa450edef68

src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFFont.java
src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFFont.java

index 28ef261ae9d9ada0fa26c504e6be6150473bb27b..2e9c842ed4e0a652b5f86c198e14583739690881 100644 (file)
@@ -388,6 +388,9 @@ public class XSSFFont implements Font {
         if(color == null) _ctFont.setColorArray(null);
         else {
             CTColor ctColor = _ctFont.sizeOfColorArray() == 0 ? _ctFont.addNewColor() : _ctFont.getColorArray(0);
+            if (ctColor.isSetIndexed()) {
+                ctColor.unsetIndexed();
+            }
             ctColor.setRgb(color.getRGB());
         }
     }
index e0dbcaa9b4104cf0f91e931c48d0e632903822fa..cbb66daf372a770e2b0dc81410df7706e0567bf8 100644 (file)
@@ -17,6 +17,8 @@
 
 package org.apache.poi.xssf.usermodel;
 
+import static org.junit.Assert.assertArrayEquals;
+
 import java.io.IOException;
 
 import org.apache.poi.POIXMLException;
@@ -226,15 +228,21 @@ public final class TestXSSFFont extends BaseTestFont{
                ctFont.setColorArray(0,color);
 
                XSSFFont xssfFont=new XSSFFont(ctFont);
-               assertEquals(ctFont.getColorArray(0).getRgb()[0],xssfFont.getXSSFColor().getRgb()[0]);
-               assertEquals(ctFont.getColorArray(0).getRgb()[1],xssfFont.getXSSFColor().getRgb()[1]);
-               assertEquals(ctFont.getColorArray(0).getRgb()[2],xssfFont.getXSSFColor().getRgb()[2]);
-               assertEquals(ctFont.getColorArray(0).getRgb()[3],xssfFont.getXSSFColor().getRgb()[3]);
+               assertEquals(ctFont.getColorArray(0).getRgb()[0],xssfFont.getXSSFColor().getRGB()[0]);
+               assertEquals(ctFont.getColorArray(0).getRgb()[1],xssfFont.getXSSFColor().getRGB()[1]);
+               assertEquals(ctFont.getColorArray(0).getRgb()[2],xssfFont.getXSSFColor().getRGB()[2]);
+               assertEquals(ctFont.getColorArray(0).getRgb()[3],xssfFont.getXSSFColor().getRGB()[3]);
 
-               color.setRgb(Integer.toHexString(0xF1F1F1).getBytes());
+               xssfFont.setColor((short)23);
+               
+               byte[] bytes = Integer.toHexString(0xF1F1F1).getBytes();
+        color.setRgb(bytes);
                XSSFColor newColor=new XSSFColor(color);
                xssfFont.setColor(newColor);
-               assertEquals(ctFont.getColorArray(0).getRgb()[2],newColor.getRgb()[2]);
+               assertEquals(ctFont.getColorArray(0).getRgb()[2],newColor.getRGB()[2]);
+               
+               assertArrayEquals(bytes, xssfFont.getXSSFColor().getRGB());
+               assertEquals(0, xssfFont.getColor());
        }
 
        public void testThemeColor() {