Author: centic
Date: Mon Jan 30 12:19:31 2023
New Revision: 1907106

URL: http://svn.apache.org/viewvc?rev=1907106&view=rev
Log:
Bug 54373: Include alpha/transparency value when creating an XSSFColor from an 
AWT Color object

Use the alpha-value from Color as well

Modified:
    
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFTextRun.java
    
poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFDrawing.java
    
poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFFont.java
    poi/trunk/poi/src/main/java/org/apache/poi/ss/usermodel/ExtendedColor.java

Modified: 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFTextRun.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFTextRun.java?rev=1907106&r1=1907105&r2=1907106&view=diff
==============================================================================
--- 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFTextRun.java
 (original)
+++ 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFTextRun.java
 Mon Jan 30 12:19:31 2023
@@ -81,7 +81,11 @@ public class XSSFTextRun {
             if(fill.isSetSrgbClr()){
                 CTSRgbColor clr = fill.getSrgbClr();
                 byte[] rgb = clr.getVal();
-                return new Color(0xFF & rgb[0], 0xFF & rgb[1], 0xFF & rgb[2]);
+                if (rgb.length == 3) {
+                    return new Color(0xFF & rgb[0], 0xFF & rgb[1], 0xFF & 
rgb[2]);
+                } else {
+                    return new Color(0xFF & rgb[1], 0xFF & rgb[2], 0xFF & 
rgb[3], 0xFF & rgb[0]);
+                }
             }
         }
 

Modified: 
poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFDrawing.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFDrawing.java?rev=1907106&r1=1907105&r2=1907106&view=diff
==============================================================================
--- 
poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFDrawing.java
 (original)
+++ 
poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFDrawing.java
 Mon Jan 30 12:19:31 2023
@@ -255,7 +255,7 @@ class TestXSSFDrawing {
         assertTrue(rPr.getI());
         assertEquals(STTextUnderlineType.SNG, rPr.getU());
         assertArrayEquals(
-                new byte[]{0, (byte)128, (byte)128} ,
+                new byte[]{-1, 0, (byte)128, (byte)128} ,
                 rPr.getSolidFill().getSrgbClr().getVal());
 
         checkRewrite(wb);
@@ -325,7 +325,7 @@ class TestXSSFDrawing {
         CTTextCharacterProperties rPr = pr.getRArray(0).getRPr();
         assertEquals("Arial", rPr.getLatin().getTypeface());
         assertArrayEquals(
-                new byte[]{0, (byte)128, (byte)128} ,
+                new byte[]{-1, 0, (byte)128, (byte)128} ,
                 rPr.getSolidFill().getSrgbClr().getVal());
         checkRewrite(wb);
         wb.close();

Modified: 
poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFFont.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFFont.java?rev=1907106&r1=1907105&r2=1907106&view=diff
==============================================================================
--- 
poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFFont.java
 (original)
+++ 
poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFFont.java
 Mon Jan 30 12:19:31 2023
@@ -20,8 +20,8 @@ package org.apache.poi.xssf.usermodel;
 import static org.apache.poi.ss.usermodel.FontCharset.*;
 import static org.junit.jupiter.api.Assertions.*;
 
+import java.awt.Color;
 import java.io.IOException;
-import java.util.Arrays;
 import java.util.stream.Stream;
 
 import org.apache.poi.common.usermodel.fonts.FontCharset;
@@ -523,6 +523,32 @@ public final class TestXSSFFont extends
 
             XSSFCellStyle style = wb.createCellStyle();
             style.setFont(font);
+
+            cell.setCellStyle(style);
+            cell.setCellValue("testtext");
+
+            // make sure the alpha-value was stored properly
+            checkFontColor(wb);
+
+            /*try (OutputStream out = new 
FileOutputStream("/tmp/testout.xlsx")) {
+                wb.write(out);
+            }*/
+        }
+    }
+
+    @Test
+    public void testBug62272b() throws IOException {
+        try (XSSFWorkbook wb = new XSSFWorkbook()) {
+            Sheet sheet = wb.createSheet("test");
+            Row row = sheet.createRow(0);
+            Cell cell = row.createCell(0);
+
+            // create a font with alpha
+            XSSFFont font = wb.createFont();
+            font.setColor(new XSSFColor(new Color(0x33, 0xCC, 0x66, 0x7f), 
null));
+
+            XSSFCellStyle style = wb.createCellStyle();
+            style.setFont(font);
 
             cell.setCellStyle(style);
             cell.setCellValue("testtext");

Modified: 
poi/trunk/poi/src/main/java/org/apache/poi/ss/usermodel/ExtendedColor.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/ss/usermodel/ExtendedColor.java?rev=1907106&r1=1907105&r2=1907106&view=diff
==============================================================================
--- poi/trunk/poi/src/main/java/org/apache/poi/ss/usermodel/ExtendedColor.java 
(original)
+++ poi/trunk/poi/src/main/java/org/apache/poi/ss/usermodel/ExtendedColor.java 
Mon Jan 30 12:19:31 2023
@@ -30,7 +30,7 @@ public abstract class ExtendedColor impl
      * @param clr awt Color to set
      */
     protected void setColor(java.awt.Color clr) {
-        setRGB(new byte[]{(byte)clr.getRed(), (byte)clr.getGreen(), 
(byte)clr.getBlue()});
+        setRGB(new byte[]{(byte)clr.getAlpha(), (byte)clr.getRed(), 
(byte)clr.getGreen(), (byte)clr.getBlue()});
     }
 
     /**



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to