public void TestRGBColour() { XSSFWorkbook wb = XSSFTestDataSamples.OpenSampleWorkbook("50299.xlsx"); // Check the CTColor is as expected XSSFColor rgb3 = (XSSFColor)((XSSFCellStyle)wb.GetCellStyleAt((short)25)).FillForegroundXSSFColor; Assert.AreEqual(false, rgb3.GetCTColor().IsSetIndexed()); Assert.AreEqual(0, rgb3.GetCTColor().indexed); Assert.AreEqual(true, rgb3.GetCTColor().IsSetTint()); Assert.AreEqual(-0.34999, rgb3.GetCTColor().tint, 0.00001); Assert.AreEqual(true, rgb3.GetCTColor().IsSetRgb()); Assert.AreEqual(3, rgb3.GetCTColor().GetRgb().Length); // Now check the XSSFColor Assert.AreEqual(0, rgb3.Indexed); Assert.AreEqual(-0.34999, rgb3.Tint, 0.00001); Assert.AreEqual("FFFFFFFF", rgb3.GetARGBHex()); Assert.AreEqual(3, rgb3.GetRgb().Length); Assert.AreEqual(255, rgb3.GetRgb()[0]); Assert.AreEqual(255, rgb3.GetRgb()[1]); Assert.AreEqual(255, rgb3.GetRgb()[2]); Assert.AreEqual(4, rgb3.GetARgb().Length); Assert.AreEqual(255, rgb3.GetARgb()[0]); Assert.AreEqual(255, rgb3.GetARgb()[1]); Assert.AreEqual(255, rgb3.GetARgb()[2]); Assert.AreEqual(255, rgb3.GetARgb()[3]); // Tint doesn't have the alpha // tint = -0.34999 // 255 * (1 + tint) = 165 truncated // or (byte) -91 (which is 165 - 256) Assert.AreEqual(3, rgb3.GetRgbWithTint().Length); Assert.AreEqual(-91, (sbyte)rgb3.GetRgbWithTint()[0]); Assert.AreEqual(-91, (sbyte)rgb3.GetRgbWithTint()[1]); Assert.AreEqual(-91, (sbyte)rgb3.GetRgbWithTint()[2]); // Set the colour to black, will Get translated internally // (Excel stores 3 colour white and black wrong!) // Set the color to black (no theme). rgb3.SetRgb(new byte[] { 0, 0, 0 }); Assert.AreEqual("FF000000", rgb3.GetARGBHex()); Assert.AreEqual(0, rgb3.GetCTColor().GetRgb()[0]); Assert.AreEqual(0, rgb3.GetCTColor().GetRgb()[1]); Assert.AreEqual(0, rgb3.GetCTColor().GetRgb()[2]); // Set another, is fine rgb3.SetRgb(new byte[] { 16, 17, 18 }); Assert.AreEqual("FF101112", rgb3.GetARGBHex()); Assert.AreEqual(0x10, rgb3.GetCTColor().GetRgb()[0]); Assert.AreEqual(0x11, rgb3.GetCTColor().GetRgb()[1]); Assert.AreEqual(0x12, rgb3.GetCTColor().GetRgb()[2]); }
public override bool Equals(Object o) { if (o == null || !(o is XSSFColor)) { return(false); } XSSFColor cf = (XSSFColor)o; return(ctColor.ToString().Equals(cf.GetCTColor().ToString())); }
/** * set the color for the font in Standard Alpha Red Green Blue color value * * @param color - color to use */ public void SetColor(XSSFColor color) { if (color == null) { _ctFont.SetColorArray(null); } else { Spreadsheet.CT_Color ctColor = _ctFont.sizeOfColorArray() == 0 ? _ctFont.AddNewColor() : _ctFont.GetColorArray(0); ctColor.SetRgb(color.RGB); } }
/** * get the color value for the font * References a color defined as Standard Alpha Red Green Blue color value (ARGB). * * @return XSSFColor - rgb color to use */ public XSSFColor GetXSSFColor() { Spreadsheet.CT_Color ctColor = _ctFont.sizeOfColorArray() == 0 ? null : _ctFont.GetColorArray(0); if (ctColor != null) { XSSFColor color = new XSSFColor(ctColor); if (_themes != null) { _themes.InheritFromThemeAsRequired(color); } return(color); } else { return(null); } }
public void TestARGBColour() { XSSFWorkbook wb = XSSFTestDataSamples.OpenSampleWorkbook("48779.xlsx"); // Check the CTColor is as expected XSSFColor rgb4 = (XSSFColor)wb.GetCellStyleAt(1).FillForegroundColorColor; Assert.AreEqual(false, rgb4.GetCTColor().IsSetIndexed()); Assert.AreEqual(0, rgb4.GetCTColor().indexed); Assert.AreEqual(true, rgb4.GetCTColor().IsSetRgb()); Assert.AreEqual(4, rgb4.GetCTColor().GetRgb().Length); // Now check the XSSFColor Assert.AreEqual(0, rgb4.Indexed); Assert.AreEqual(0.0, rgb4.Tint); Assert.AreEqual("FFFF0000", rgb4.GetARGBHex()); Assert.AreEqual(3, rgb4.GetRgb().Length); Assert.AreEqual(255, rgb4.GetRgb()[0]); Assert.AreEqual(0, rgb4.GetRgb()[1]); Assert.AreEqual(0, rgb4.GetRgb()[2]); Assert.AreEqual(4, rgb4.GetARgb().Length); Assert.AreEqual(255, rgb4.GetARgb()[0]); Assert.AreEqual(255, rgb4.GetARgb()[1]); Assert.AreEqual(0, rgb4.GetARgb()[2]); Assert.AreEqual(0, rgb4.GetARgb()[3]); // Tint doesn't have the alpha Assert.AreEqual(3, rgb4.GetRgbWithTint().Length); Assert.AreEqual(255, rgb4.GetRgbWithTint()[0]); Assert.AreEqual(0, rgb4.GetRgbWithTint()[1]); Assert.AreEqual(0, rgb4.GetRgbWithTint()[2]); // Turn on tinting, and check it behaves // TODO These values are suspected to be wrong... rgb4.Tint = (0.4); Assert.AreEqual(0.4, rgb4.Tint); Assert.AreEqual(3, rgb4.GetRgbWithTint().Length); Assert.AreEqual(255, rgb4.GetRgbWithTint()[0]); Assert.AreEqual(102, rgb4.GetRgbWithTint()[1]); Assert.AreEqual(102, rgb4.GetRgbWithTint()[2]); }
public void TestIndexedColour() { XSSFWorkbook wb = XSSFTestDataSamples.OpenSampleWorkbook("48779.xlsx"); // Check the CTColor is as expected XSSFColor indexed = (XSSFColor)wb.GetCellStyleAt(1).FillBackgroundColorColor; Assert.AreEqual(true, indexed.GetCTColor().IsSetIndexed()); Assert.AreEqual(64, indexed.GetCTColor().indexed); Assert.AreEqual(false, indexed.GetCTColor().IsSetRgb()); Assert.AreEqual(null, indexed.GetCTColor().GetRgb()); // Now check the XSSFColor // Note - 64 is a special "auto" one with no rgb equiv Assert.AreEqual(64, indexed.Indexed); Assert.AreEqual(null, indexed.GetRgb()); Assert.AreEqual(null, indexed.GetRgbWithTint()); Assert.AreEqual(null, indexed.GetARGBHex()); // Now Move to one with indexed rgb values indexed.Indexed = (59); Assert.AreEqual(true, indexed.GetCTColor().IsSetIndexed()); Assert.AreEqual(59, indexed.GetCTColor().indexed); Assert.AreEqual(false, indexed.GetCTColor().IsSetRgb()); Assert.AreEqual(null, indexed.GetCTColor().GetRgb()); Assert.AreEqual(59, indexed.Indexed); Assert.AreEqual("FF333300", indexed.GetARGBHex()); Assert.AreEqual(3, indexed.GetRgb().Length); Assert.AreEqual(0x33, indexed.GetRgb()[0]); Assert.AreEqual(0x33, indexed.GetRgb()[1]); Assert.AreEqual(0x00, indexed.GetRgb()[2]); Assert.AreEqual(4, indexed.GetARgb().Length); Assert.AreEqual(255, indexed.GetARgb()[0]); Assert.AreEqual(0x33, indexed.GetARgb()[1]); Assert.AreEqual(0x33, indexed.GetARgb()[2]); Assert.AreEqual(0x00, indexed.GetARgb()[3]); // You don't Get tinted indexed colours, sorry... Assert.AreEqual(null, indexed.GetRgbWithTint()); }
public void TestGetSetFillBackgroundColor() { Assert.AreEqual(IndexedColors.Automatic.Index, cellStyle.FillBackgroundColor); Assert.IsNull(cellStyle.FillBackgroundColorColor); XSSFColor clr; int num = stylesTable.GetFills().Count; //setting indexed color cellStyle.FillBackgroundColor = (IndexedColors.Red.Index); Assert.AreEqual(IndexedColors.Red.Index, cellStyle.FillBackgroundColor); clr = (XSSFColor)cellStyle.FillBackgroundColorColor; Assert.IsTrue(clr.GetCTColor().IsSetIndexed()); Assert.AreEqual(IndexedColors.Red.Index, clr.Indexed); //a new fill was Added to the styles table Assert.AreEqual(num + 1, stylesTable.GetFills().Count); //id of the Created border int FillId = (int)cellStyle.GetCoreXf().fillId; Assert.IsTrue(FillId > 0); //check changes in the underlying xml bean CT_Fill ctFill = stylesTable.GetFillAt(FillId).GetCTFill(); Assert.AreEqual((uint)IndexedColors.Red.Index, ctFill.GetPatternFill().bgColor.indexed); //setting XSSFColor num = stylesTable.GetFills().Count; clr = new XSSFColor(Color.Cyan); cellStyle.SetFillBackgroundColor(clr); // TODO this testcase assumes that cellStyle creates a new CT_Fill, but the implementation changes the existing style. - do not know whats right 8-( Assert.AreEqual(clr.GetCTColor().ToString(), ((XSSFColor)cellStyle.FillBackgroundColorColor).GetCTColor().ToString()); byte[] rgb = ((XSSFColor)cellStyle.FillBackgroundColorColor).GetRgb(); Assert.AreEqual(Color.Cyan.ToArgb(), Color.FromArgb(rgb[0] & 0xFF, rgb[1] & 0xFF, rgb[2] & 0xFF).ToArgb()); //another border was added to the styles table Assert.AreEqual(num + 1, stylesTable.GetFills().Count); //passing null unsets the color cellStyle.SetFillBackgroundColor(null); Assert.IsNull(cellStyle.FillBackgroundColorColor); Assert.AreEqual(IndexedColors.Automatic.Index, cellStyle.FillBackgroundColor); }
public void TestGetSetRightBorderColor() { //defaults Assert.AreEqual(IndexedColors.Black.Index, cellStyle.RightBorderColor); Assert.IsNull(cellStyle.RightBorderXSSFColor); int num = stylesTable.GetBorders().Count; XSSFColor clr; //setting indexed color cellStyle.RightBorderColor = (IndexedColors.BlueGrey.Index); Assert.AreEqual(IndexedColors.BlueGrey.Index, cellStyle.RightBorderColor); clr = cellStyle.RightBorderXSSFColor; Assert.IsTrue(clr.GetCTColor().IsSetIndexed()); Assert.AreEqual(IndexedColors.BlueGrey.Index, clr.Indexed); //a new border was Added to the styles table Assert.AreEqual(num + 1, stylesTable.GetBorders().Count); //id of the Created border int borderId = (int)cellStyle.GetCoreXf().borderId; Assert.IsTrue(borderId > 0); //check Changes in the underlying xml bean CT_Border ctBorder = stylesTable.GetBorderAt(borderId).GetCTBorder(); Assert.AreEqual((uint)IndexedColors.BlueGrey.Index, ctBorder.right.color.indexed); //setting XSSFColor num = stylesTable.GetBorders().Count; clr = new XSSFColor(Color.Cyan); cellStyle.SetRightBorderColor(clr); Assert.AreEqual(clr.GetCTColor().ToString(), cellStyle.RightBorderXSSFColor.GetCTColor().ToString()); byte[] rgb = cellStyle.RightBorderXSSFColor.GetRgb(); Assert.AreEqual(Color.Cyan.ToArgb(), Color.FromArgb(rgb[0] & 0xFF, rgb[1] & 0xFF, rgb[2] & 0xFF).ToArgb()); //another border was Added to the styles table Assert.AreEqual(num, stylesTable.GetBorders().Count); //passing null unsets the color cellStyle.SetRightBorderColor(null); Assert.IsNull(cellStyle.RightBorderXSSFColor); }