Browse Source

Fix bug 53275: reset indexed color flag when setting a non-indexed color

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1701134 13f79535-47bb-0310-9956-ffa450edef68
tags/REL_3_13_FINAL
Dominik Stadler 8 years ago
parent
commit
e69dd93c64

+ 3
- 0
src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFFont.java View 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());
}
}

+ 14
- 6
src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFFont.java View 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() {

Loading…
Cancel
Save