diff --git a/ClosedXML/ClosedXML.csproj b/ClosedXML/ClosedXML.csproj index 0484c4e..0b68acf 100644 --- a/ClosedXML/ClosedXML.csproj +++ b/ClosedXML/ClosedXML.csproj @@ -26,9 +26,9 @@ - + @@ -55,6 +55,5 @@ - diff --git a/ClosedXML/Excel/Drawings/XLPicture.cs b/ClosedXML/Excel/Drawings/XLPicture.cs index df02007..b1e44e8 100644 --- a/ClosedXML/Excel/Drawings/XLPicture.cs +++ b/ClosedXML/Excel/Drawings/XLPicture.cs @@ -1,20 +1,11 @@ -using ClosedXML.Extensions; -using MetadataExtractor; -using MetadataExtractor.Formats.Bmp; -using MetadataExtractor.Formats.Exif; -using MetadataExtractor.Formats.Gif; -using MetadataExtractor.Formats.Ico; -using MetadataExtractor.Formats.Jpeg; -using MetadataExtractor.Formats.Pcx; -using MetadataExtractor.Formats.Png; -using MetadataExtractor.Formats.Tiff; -using MetadataExtractor.Util; using System; using System.Collections.Generic; using System.Diagnostics; using System.Drawing; +using System.Drawing.Imaging; using System.IO; using System.Linq; +using System.Reflection; namespace ClosedXML.Excel.Drawings { @@ -22,24 +13,25 @@ internal class XLPicture : IXLPicture { private const String InvalidNameChars = @":\/?*[]"; - - private static IDictionary FormatMap = new Dictionary() - { - [FileType.Bmp] = XLPictureFormat.Bmp, - [FileType.Gif] = XLPictureFormat.Gif, - [FileType.Png] = XLPictureFormat.Png, - [FileType.Tiff] = XLPictureFormat.Tiff, - [FileType.Ico] = XLPictureFormat.Icon, - [FileType.Pcx] = XLPictureFormat.Pcx, - [FileType.Jpeg] = XLPictureFormat.Jpeg - }; - + private static IDictionary FormatMap; private readonly IXLWorksheet _worksheet; private Int32 height; private Int32 id; private String name = string.Empty; private Int32 width; + static XLPicture() + { + var properties = typeof(ImageFormat).GetProperties(BindingFlags.Static | BindingFlags.Public); + FormatMap = Enum.GetValues(typeof(XLPictureFormat)) + .Cast() + .Where(pf => properties.Any(pi => pi.Name.Equals(pf.ToString(), StringComparison.OrdinalIgnoreCase))) + .ToDictionary( + pf => pf, + pf => properties.Single(pi => pi.Name.Equals(pf.ToString(), StringComparison.OrdinalIgnoreCase)).GetValue(null, null) as ImageFormat + ); + } + internal XLPicture(IXLWorksheet worksheet, Stream stream) : this(worksheet) { @@ -47,13 +39,17 @@ this.ImageStream = new MemoryStream(); { - stream.Seek(0, SeekOrigin.Begin); + stream.Position = 0; stream.CopyTo(ImageStream); ImageStream.Seek(0, SeekOrigin.Begin); - DeduceImageFormat(ImageStream); - DeduceDimensions(ImageStream); + using (var bitmap = new Bitmap(ImageStream)) + { + if (FormatMap.Values.Select(f => f.Guid).Contains(bitmap.RawFormat.Guid)) + this.Format = FormatMap.Single(f => f.Value.Guid.Equals(bitmap.RawFormat.Guid)).Key; + DeduceDimensionsFromBitmap(bitmap); + } ImageStream.Seek(0, SeekOrigin.Begin); } } @@ -66,14 +62,21 @@ this.ImageStream = new MemoryStream(); { - stream.Seek(0, SeekOrigin.Begin); + stream.Position = 0; stream.CopyTo(ImageStream); - DeduceImageFormat(ImageStream, format); - DeduceDimensions(ImageStream); + ImageStream.Seek(0, SeekOrigin.Begin); + + using (var bitmap = new Bitmap(ImageStream)) + { + if (FormatMap.ContainsKey(this.Format) && FormatMap[this.Format].Guid != bitmap.RawFormat.Guid) + throw new ArgumentException("The picture format in the stream and the parameter don't match"); + + DeduceDimensionsFromBitmap(bitmap); + } + ImageStream.Seek(0, SeekOrigin.Begin); } } -#if _NETFRAMEWORK_ internal XLPicture(IXLWorksheet worksheet, Bitmap bitmap) : this(worksheet) { @@ -81,10 +84,14 @@ this.ImageStream = new MemoryStream(); bitmap.Save(ImageStream, bitmap.RawFormat); ImageStream.Seek(0, SeekOrigin.Begin); - DeduceImageFormat(ImageStream); - DeduceDimensions(ImageStream); + DeduceDimensionsFromBitmap(bitmap); + + var formats = FormatMap.Where(f => f.Value.Guid.Equals(bitmap.RawFormat.Guid)); + if (!formats.Any() || formats.Count() > 1) + throw new ArgumentException("Unsupported or unknown image format in bitmap"); + + this.Format = formats.Single().Key; } -#endif private XLPicture(IXLWorksheet worksheet) { @@ -329,7 +336,7 @@ if (value.IndexOfAny(InvalidNameChars.ToCharArray()) != -1) throw new ArgumentException($"Picture names cannot contain any of the following characters: {InvalidNameChars}"); - if (XLHelper.IsNullOrWhiteSpace(value)) + if (String.IsNullOrWhiteSpace(value)) throw new ArgumentException("Picture names cannot be empty"); if (value.Length > 31) @@ -338,75 +345,35 @@ name = value; } - private void DeduceDimensions(Stream stream) + private static ImageFormat FromMimeType(string mimeType) { - stream.Seek(0, SeekOrigin.Begin); - MetadataExtractor.Directory d; - switch (this.Format) + var guid = ImageCodecInfo.GetImageDecoders().FirstOrDefault(c => c.MimeType.Equals(mimeType, StringComparison.OrdinalIgnoreCase))?.FormatID; + if (!guid.HasValue) return null; + var property = typeof(System.Drawing.Imaging.ImageFormat).GetProperties(BindingFlags.Public | BindingFlags.Static) + .FirstOrDefault(pi => (pi.GetValue(null, null) as ImageFormat).Guid.Equals(guid.Value)); + + if (property == null) return null; + return (property.GetValue(null, null) as ImageFormat); + } + + private static string GetMimeType(Image i) + { + var imgguid = i.RawFormat.Guid; + foreach (ImageCodecInfo codec in ImageCodecInfo.GetImageDecoders()) { - case XLPictureFormat.Bmp: - d = BmpMetadataReader.ReadMetadata(stream); - this.width = d.GetInt32(BmpHeaderDirectory.TagImageWidth); - this.height = d.GetInt32(BmpHeaderDirectory.TagImageHeight); - break; - - case XLPictureFormat.Gif: - d = GifMetadataReader.ReadMetadata(stream).OfType().First(); - this.width = d.GetInt32(GifHeaderDirectory.TagImageWidth); - this.height = d.GetInt32(GifHeaderDirectory.TagImageHeight); - break; - - case XLPictureFormat.Png: - d = PngMetadataReader.ReadMetadata(stream).OfType().First(); - this.width = d.GetInt32(PngDirectory.TagImageWidth); - this.height = d.GetInt32(PngDirectory.TagImageHeight); - break; - - case XLPictureFormat.Tiff: - d = TiffMetadataReader.ReadMetadata(stream).First(); - this.width = d.GetInt32(ExifDirectoryBase.TagImageWidth); - this.height = d.GetInt32(ExifDirectoryBase.TagImageHeight); - break; - - case XLPictureFormat.Icon: - d = IcoMetadataReader.ReadMetadata(stream).OfType().First(); - this.width = d.GetInt32(IcoDirectory.TagImageWidth); - this.height = d.GetInt32(IcoDirectory.TagImageHeight); - break; - - case XLPictureFormat.Pcx: - d = PcxMetadataReader.ReadMetadata(stream); - this.width = d.GetInt32(PcxDirectory.TagXMax); - this.height = d.GetInt32(PcxDirectory.TagYMax); - break; - - case XLPictureFormat.Jpeg: - d = JpegMetadataReader.ReadMetadata(stream).OfType().First(); - this.width = d.GetInt32(JpegDirectory.TagImageWidth); - this.height = d.GetInt32(JpegDirectory.TagImageHeight); - break; + if (codec.FormatID == imgguid) + return codec.MimeType; } - this.OriginalWidth = this.width; - this.OriginalHeight = this.height; + return "image/unknown"; } - private void DeduceImageFormat(Stream stream, XLPictureFormat format) + private void DeduceDimensionsFromBitmap(Bitmap bitmap) { - DeduceImageFormat(stream); - if (this.Format != format) - throw new ArgumentException(nameof(format)); - } + this.OriginalWidth = bitmap.Width; + this.OriginalHeight = bitmap.Height; - private void DeduceImageFormat(Stream stream) - { - stream.Seek(0, SeekOrigin.Begin); - var fileType = FileTypeDetector.DetectFileType(stream); - if (fileType == FileType.Unknown) - throw new NotImplementedException(); - else if (FormatMap.ContainsKey(fileType)) - this.Format = FormatMap[fileType]; - else - throw new NotImplementedException(); + this.width = bitmap.Width; + this.height = bitmap.Height; } } } diff --git a/ClosedXML/Excel/Style/Colors/XLColor_Static.cs b/ClosedXML/Excel/Style/Colors/XLColor_Static.cs index dd0b672..2ae6314 100644 --- a/ClosedXML/Excel/Style/Colors/XLColor_Static.cs +++ b/ClosedXML/Excel/Style/Colors/XLColor_Static.cs @@ -1,11 +1,6 @@ using System; using System.Collections.Generic; using System.Drawing; -using DocumentFormat.OpenXml.Presentation; - -#if _NETSTANDARD_ -using ClosedXML.NetStandard; -#endif namespace ClosedXML.Excel { @@ -32,34 +27,32 @@ { return FromColor(Color.FromArgb(argb)); } + public static XLColor FromArgb(Int32 r, Int32 g, Int32 b) { return FromColor(Color.FromArgb(r, g, b)); } + public static XLColor FromArgb(Int32 a, Int32 r, Int32 g, Int32 b) { return FromColor(Color.FromArgb(a, r, g, b)); } +#if _NETFRAMEWORK_ public static XLColor FromKnownColor(KnownColor color) { -#if _NETFRAMEWORK_ return FromColor(Color.FromKnownColor(color)); -#else - return FromColor(XLColorTranslator.FromKnownColor(color)); + } #endif - } + public static XLColor FromName(String name) { return FromColor(Color.FromName(name)); } + public static XLColor FromHtml(String htmlColor) { -#if _NETFRAMEWORK_ return FromColor(ColorTranslator.FromHtml(htmlColor)); -#else - return FromColor(XLColorTranslator.FromHtml(htmlColor)); -#endif } private static readonly Dictionary ByIndex = new Dictionary(); @@ -126,6 +119,7 @@ } private static Dictionary _indexedColors; + public static Dictionary IndexedColors { get diff --git a/ClosedXML/Excel/XLWorkbook_Load.cs b/ClosedXML/Excel/XLWorkbook_Load.cs index b0a84a2..730da8a 100644 --- a/ClosedXML/Excel/XLWorkbook_Load.cs +++ b/ClosedXML/Excel/XLWorkbook_Load.cs @@ -15,10 +15,6 @@ using Op = DocumentFormat.OpenXml.CustomProperties; using Xdr = DocumentFormat.OpenXml.Drawing.Spreadsheet; -#if _NETSTANDARD_ -using ClosedXML.NetStandard; -#endif - namespace ClosedXML.Excel { using Ap; @@ -2336,11 +2332,7 @@ Color thisColor; if (!_colorList.ContainsKey(htmlColor)) { -#if _NETFRAMEWORK_ thisColor = ColorTranslator.FromHtml(htmlColor); -#else - thisColor = XLColorTranslator.FromHtml(htmlColor); -#endif _colorList.Add(htmlColor, thisColor); } else diff --git a/ClosedXML/Excel/XLWorkbook_Save.cs b/ClosedXML/Excel/XLWorkbook_Save.cs index f5622c7..69dcf2f 100644 --- a/ClosedXML/Excel/XLWorkbook_Save.cs +++ b/ClosedXML/Excel/XLWorkbook_Save.cs @@ -47,12 +47,6 @@ using Vml = DocumentFormat.OpenXml.Vml; using Xdr = DocumentFormat.OpenXml.Drawing.Spreadsheet; -#if _NETSTANDARD_ - -using ClosedXML.NetStandard; - -#endif - namespace ClosedXML.Excel { public partial class XLWorkbook diff --git a/ClosedXML/NetStandard/XLColorTranslator.cs b/ClosedXML/NetStandard/XLColorTranslator.cs deleted file mode 100644 index c7683c6..0000000 --- a/ClosedXML/NetStandard/XLColorTranslator.cs +++ /dev/null @@ -1,210 +0,0 @@ -#if _NETSTANDARD_ - -using ClosedXML.Excel; -using System; -using System.Collections.Generic; -using System.Drawing; -using System.Text.RegularExpressions; - -namespace ClosedXML.NetStandard -{ - public class XLColorTranslator - { - private static IDictionary NAMED_COLOR_MAP = new Dictionary{ - //X11 Color Names (W3C color names) - //Red color names - {"indianred", Color.FromArgb(205, 92, 92)}, - {"lightcoral",Color.FromArgb(240, 128, 128)}, - {"salmon",Color.FromArgb(250, 128, 114)}, - {"darksalmon",Color.FromArgb(233, 150, 122)}, - {"crimson",Color.FromArgb(220, 20, 60)}, - {"red",Color.FromArgb(255, 0, 0)}, - {"firebrick",Color.FromArgb(178, 34, 34)}, - {"darkred",Color.FromArgb(139, 0, 0)}, - //Pink color names - {"pink",Color.FromArgb(255, 192, 203)}, - {"lightpink",Color.FromArgb(255, 182, 193)}, - {"hotpink",Color.FromArgb(255, 105, 180)}, - {"deeppink",Color.FromArgb(255, 20, 147)}, - {"mediumvioletred",Color.FromArgb(199, 21, 133)}, - {"palevioletred",Color.FromArgb(219, 112, 147)}, - //Orange color names - {"lightsalmon",Color.FromArgb(255, 160, 122)}, - {"coral",Color.FromArgb(255, 127, 80)}, - {"tomato",Color.FromArgb(255, 99, 71)}, - {"orangered",Color.FromArgb(255, 69, 0)}, - {"darkorange",Color.FromArgb(255, 140, 0)}, - {"orange",Color.FromArgb(255, 165, 0)}, - //Yellow color names - {"gold",Color.FromArgb(255, 215, 0)}, - {"yellow",Color.FromArgb(255, 255, 0)}, - {"lightyellow",Color.FromArgb(255, 255, 224)}, - {"lemonchiffon",Color.FromArgb(255, 250, 205)}, - {"lightgoldenrodyellow",Color.FromArgb(250, 250, 210)}, - {"papayawhip",Color.FromArgb(255, 239, 213)}, - {"moccasin",Color.FromArgb(255, 228, 181)}, - {"peachpuff",Color.FromArgb(255, 218, 185)}, - {"palegoldenrod",Color.FromArgb(238, 232, 170)}, - {"khaki",Color.FromArgb(240, 230, 140)}, - {"darkkhaki",Color.FromArgb(189, 183, 107)}, - //Purple color names - {"lavender",Color.FromArgb(230, 230, 250)}, - {"thistle",Color.FromArgb(216, 191, 216)}, - {"plum",Color.FromArgb(221, 160, 221)}, - {"violet",Color.FromArgb(238, 130, 238)}, - {"orchid",Color.FromArgb(218, 112, 214)}, - {"fuchsia",Color.FromArgb(255, 0, 255)}, - {"magenta",Color.FromArgb(255, 0, 255)}, - {"mediumorchid",Color.FromArgb(186, 85, 211)}, - {"mediumpurple",Color.FromArgb(147, 112, 219)}, - {"blueviolet",Color.FromArgb(138, 43, 226)}, - {"darkviolet",Color.FromArgb(148, 0, 211)}, - {"darkorchid",Color.FromArgb(153, 50, 204)}, - {"darkmagenta",Color.FromArgb(139, 0, 139)}, - {"purple",Color.FromArgb(128, 0, 128)}, - {"indigo",Color.FromArgb(75, 0, 130)}, - {"slateblue",Color.FromArgb(106, 90, 205)}, - {"darkslateblue",Color.FromArgb(72, 61, 139)}, - //Green color names - {"greenyellow",Color.FromArgb(173, 255, 47)}, - {"chartreuse",Color.FromArgb(127, 255, 0)}, - {"lawngreen",Color.FromArgb(124, 252, 0)}, - {"lime",Color.FromArgb(0, 255, 0)}, - {"limegreen",Color.FromArgb(50, 205, 50)}, - {"palegreen",Color.FromArgb(152, 251, 152)}, - {"lightgreen",Color.FromArgb(144, 238, 144)}, - {"mediumspringgreen",Color.FromArgb(0, 250, 154)}, - {"springgreen",Color.FromArgb(0, 255, 127)}, - {"mediumseagreen",Color.FromArgb(60, 179, 113)}, - {"seagreen",Color.FromArgb(46, 139, 87)}, - {"forestgreen",Color.FromArgb(34, 139, 34)}, - {"green",Color.FromArgb(0, 128, 0)}, - {"darkgreen",Color.FromArgb(0, 100, 0)}, - {"yellowgreen",Color.FromArgb(154, 205, 50)}, - {"olivedrab",Color.FromArgb(107, 142, 35)}, - {"olive",Color.FromArgb(128, 128, 0)}, - {"darkolivegreen",Color.FromArgb(85, 107, 47)}, - {"mediumaquamarine",Color.FromArgb(102, 205, 170)}, - {"darkseagreen",Color.FromArgb(143, 188, 143)}, - {"lightseagreen",Color.FromArgb(32, 178, 170)}, - {"darkcyan",Color.FromArgb(0, 139, 139)}, - {"teal",Color.FromArgb(0, 128, 128)}, - //Blue color names - {"aqua",Color.FromArgb(0, 255, 255)}, - {"cyan",Color.FromArgb(0, 255, 255)}, - {"lightcyan",Color.FromArgb(224, 255, 255)}, - {"paleturquoise",Color.FromArgb(175, 238, 238)}, - {"aquamarine",Color.FromArgb(127, 255, 212)}, - {"turquoise",Color.FromArgb(64, 224, 208)}, - {"mediumturquoise",Color.FromArgb(72, 209, 204)}, - {"darkturquoise",Color.FromArgb(0, 206, 209)}, - {"cadetblue",Color.FromArgb(95, 158, 160)}, - {"steelblue",Color.FromArgb(70, 130, 180)}, - {"lightsteelblue",Color.FromArgb(176, 196, 222)}, - {"powderblue",Color.FromArgb(176, 224, 230)}, - {"lightblue",Color.FromArgb(173, 216, 230)}, - {"skyblue",Color.FromArgb(135, 206, 235)}, - {"lightskyblue",Color.FromArgb(135, 206, 250)}, - {"deepskyblue",Color.FromArgb(0, 191, 255)}, - {"dodgerblue",Color.FromArgb(30, 144, 255)}, - {"cornflowerblue",Color.FromArgb(100, 149, 237)}, - {"mediumslateblue",Color.FromArgb(123, 104, 238)}, - {"royalblue",Color.FromArgb(65, 105, 225)}, - {"blue",Color.FromArgb(0, 0, 255)}, - {"mediumblue",Color.FromArgb(0, 0, 205)}, - {"darkblue",Color.FromArgb(0, 0, 139)}, - {"navy",Color.FromArgb(0, 0, 128)}, - {"midnightblue",Color.FromArgb(25, 25, 112)}, - //Brown color names - {"cornsilk",Color.FromArgb(255, 248, 220)}, - {"blanchedalmond",Color.FromArgb(255, 235, 205)}, - {"bisque",Color.FromArgb(255, 228, 196)}, - {"navajowhite",Color.FromArgb(255, 222, 173)}, - {"wheat",Color.FromArgb(245, 222, 179)}, - {"burlywood",Color.FromArgb(222, 184, 135)}, - {"tan",Color.FromArgb(210, 180, 140)}, - {"rosybrown",Color.FromArgb(188, 143, 143)}, - {"sandybrown",Color.FromArgb(244, 164, 96)}, - {"goldenrod",Color.FromArgb(218, 165, 32)}, - {"darkgoldenrod",Color.FromArgb(184, 134, 11)}, - {"peru",Color.FromArgb(205, 133, 63)}, - {"chocolate",Color.FromArgb(210, 105, 30)}, - {"saddlebrown",Color.FromArgb(139, 69, 19)}, - {"sienna",Color.FromArgb(160, 82, 45)}, - {"brown",Color.FromArgb(165, 42, 42)}, - {"maroon",Color.FromArgb(128, 0, 0)}, - //White color names - {"white",Color.FromArgb(255, 255, 255)}, - {"snow",Color.FromArgb(255, 250, 250)}, - {"honeydew",Color.FromArgb(240, 255, 240)}, - {"mintcream",Color.FromArgb(245, 255, 250)}, - {"azure",Color.FromArgb(240, 255, 255)}, - {"aliceblue",Color.FromArgb(240, 248, 255)}, - {"ghostwhite",Color.FromArgb(248, 248, 255)}, - {"whitesmoke",Color.FromArgb(245, 245, 245)}, - {"seashell",Color.FromArgb(255, 245, 238)}, - {"beige",Color.FromArgb(245, 245, 220)}, - {"oldlace",Color.FromArgb(253, 245, 230)}, - {"floralwhite",Color.FromArgb(255, 250, 240)}, - {"ivory",Color.FromArgb(255, 255, 240)}, - {"antiquewhite",Color.FromArgb(250, 235, 215)}, - {"linen",Color.FromArgb(250, 240, 230)}, - {"lavenderblush",Color.FromArgb(255, 240, 245)}, - {"mistyrose",Color.FromArgb(255, 228, 225)}, - //Grey color names - {"gainsboro",Color.FromArgb(220, 220, 220)}, - {"lightgrey",Color.FromArgb(211, 211, 211)}, - {"silver",Color.FromArgb(192, 192, 192)}, - {"darkgray",Color.FromArgb(169, 169, 169)}, - {"gray",Color.FromArgb(128, 128, 128)}, - {"dimgray",Color.FromArgb(105, 105, 105)}, - {"lightslategray",Color.FromArgb(119, 136, 153)}, - {"slategray",Color.FromArgb(112, 128, 144)}, - {"darkslategray",Color.FromArgb(47, 79, 79)}, - {"black",Color.FromArgb(0, 0, 0)}, - }; - - private static Regex HexParser = new Regex("^#([0-9a-f]{2})?([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$"); - private static Regex ShortHexParser = new Regex("^#([0-9a-f]{1})?([0-9a-f]{1})([0-9a-f]{1})([0-9a-f]{1})$"); - - public static Color FromKnownColor(KnownColor knownColor) - { - var s = knownColor.ToString().ToLowerInvariant(); - return XLColorTranslator.FromHtml(s); - } - - public static Color FromHtml(string htmlColor) - { - string id = htmlColor.Trim().ToLowerInvariant(); - if (NAMED_COLOR_MAP.ContainsKey(id)) - { - return NAMED_COLOR_MAP[id]; - } - else - { - var m = HexParser.Match(id); - if (m.Value == String.Empty) - { - m = ShortHexParser.Match(id); - if (m.Value == String.Empty) - { - throw new ArgumentException("Invalid HTML color: " + htmlColor); - } - } - if (XLHelper.IsNullOrWhiteSpace(m.Groups[1].Value)) - return Color.FromArgb( - Convert.ToInt32(m.Groups[2].Value.PadRight(2, m.Groups[2].Value[0]), 16), - Convert.ToInt32(m.Groups[3].Value.PadRight(2, m.Groups[3].Value[0]), 16), - Convert.ToInt32(m.Groups[4].Value.PadRight(2, m.Groups[4].Value[0]), 16)); - else - return Color.FromArgb( - Convert.ToInt32(m.Groups[1].Value.PadRight(2, m.Groups[1].Value[0]), 16), - Convert.ToInt32(m.Groups[2].Value.PadRight(2, m.Groups[2].Value[0]), 16), - Convert.ToInt32(m.Groups[3].Value.PadRight(2, m.Groups[3].Value[0]), 16), - Convert.ToInt32(m.Groups[4].Value.PadRight(2, m.Groups[4].Value[0]), 16)); - } - } - } -} - -#endif diff --git a/ClosedXML_Examples/Styles/UsingColors.cs b/ClosedXML_Examples/Styles/UsingColors.cs index 9364c15..54fea8f 100644 --- a/ClosedXML_Examples/Styles/UsingColors.cs +++ b/ClosedXML_Examples/Styles/UsingColors.cs @@ -61,12 +61,6 @@ ro++; - // FromKnownColor(KnownColor knownColor) - ws.Cell(++ro, 1).Style.Fill.BackgroundColor = XLColor.FromKnownColor(KnownColor.Plum); - ws.Cell(ro, 2).Value = "XLColor.FromKnownColor(KnownColor.Plum)"; - - ro++; - // FromName(String colorName) ws.Cell(++ro, 1).Style.Fill.BackgroundColor = XLColor.FromName("PowderBlue"); ws.Cell(ro, 2).Value = "XLColor.FromName(\"PowderBlue\")"; @@ -87,4 +81,4 @@ wb.SaveAs(filePath); } } -} \ No newline at end of file +} diff --git a/ClosedXML_Tests/Excel/NetStandard/XLColorTranslatorTests.cs b/ClosedXML_Tests/Excel/NetStandard/XLColorTranslatorTests.cs deleted file mode 100644 index 52256d4..0000000 --- a/ClosedXML_Tests/Excel/NetStandard/XLColorTranslatorTests.cs +++ /dev/null @@ -1,40 +0,0 @@ -#if _NETSTANDARD_ - -using ClosedXML.NetStandard; -using NUnit.Framework; -using System.Drawing; - -namespace ClosedXML_Tests.Excel.NetStandard -{ - /// - /// Summary description for UnitTest1 - /// - [TestFixture] - public class XLColorTranslatorTests - { - [Test] - public void CanResolveFromHtmlColor() - { - Color color; - color = XLColorTranslator.FromHtml("#FF000000"); - Assert.AreEqual(255, color.A); - Assert.AreEqual(0, color.R); - Assert.AreEqual(0, color.G); - Assert.AreEqual(0, color.B); - - color = XLColorTranslator.FromHtml("#8899AABB"); - Assert.AreEqual(136, color.A); - Assert.AreEqual(153, color.R); - Assert.AreEqual(170, color.G); - Assert.AreEqual(187, color.B); - - color = XLColorTranslator.FromHtml("#99AABB"); - Assert.AreEqual(255, color.A); - Assert.AreEqual(153, color.R); - Assert.AreEqual(170, color.G); - Assert.AreEqual(187, color.B); - } - } -} - -#endif diff --git a/ClosedXML_Tests/Excel/Ranges/CopyingRangesTests.cs b/ClosedXML_Tests/Excel/Ranges/CopyingRangesTests.cs index 426daf5..05f1217 100644 --- a/ClosedXML_Tests/Excel/Ranges/CopyingRangesTests.cs +++ b/ClosedXML_Tests/Excel/Ranges/CopyingRangesTests.cs @@ -18,7 +18,7 @@ column1.Cell(2).Style.Fill.SetBackgroundColor(XLColor.FromArgb(1, 1, 1)); column1.Cell(3).Style.Fill.SetBackgroundColor(XLColor.FromHtml("#CCCCCC")); column1.Cell(4).Style.Fill.SetBackgroundColor(XLColor.FromIndex(26)); - column1.Cell(5).Style.Fill.SetBackgroundColor(XLColor.FromKnownColor(KnownColor.MediumSeaGreen)); + column1.Cell(5).Style.Fill.SetBackgroundColor(XLColor.FromColor(Color.MediumSeaGreen)); column1.Cell(6).Style.Fill.SetBackgroundColor(XLColor.FromName("Blue")); column1.Cell(7).Style.Fill.SetBackgroundColor(XLColor.FromTheme(XLThemeColor.Accent3)); @@ -30,7 +30,7 @@ Assert.AreEqual(XLColor.FromArgb(1, 1, 1), column2.Cell(2).Style.Fill.BackgroundColor); Assert.AreEqual(XLColor.FromHtml("#CCCCCC"), column2.Cell(3).Style.Fill.BackgroundColor); Assert.AreEqual(XLColor.FromIndex(26), column2.Cell(4).Style.Fill.BackgroundColor); - Assert.AreEqual(XLColor.FromKnownColor(KnownColor.MediumSeaGreen), + Assert.AreEqual(XLColor.FromColor(Color.MediumSeaGreen), column2.Cell(5).Style.Fill.BackgroundColor); Assert.AreEqual(XLColor.FromName("Blue"), column2.Cell(6).Style.Fill.BackgroundColor); Assert.AreEqual(XLColor.FromTheme(XLThemeColor.Accent3), column2.Cell(7).Style.Fill.BackgroundColor); @@ -40,7 +40,7 @@ Assert.AreEqual(XLColor.FromArgb(1, 1, 1), column3.Cell(2).Style.Fill.BackgroundColor); Assert.AreEqual(XLColor.FromHtml("#CCCCCC"), column3.Cell(3).Style.Fill.BackgroundColor); Assert.AreEqual(XLColor.FromIndex(26), column3.Cell(4).Style.Fill.BackgroundColor); - Assert.AreEqual(XLColor.FromKnownColor(KnownColor.MediumSeaGreen), + Assert.AreEqual(XLColor.FromColor(Color.MediumSeaGreen), column3.Cell(5).Style.Fill.BackgroundColor); Assert.AreEqual(XLColor.FromName("Blue"), column3.Cell(6).Style.Fill.BackgroundColor); Assert.AreEqual(XLColor.FromTheme(XLThemeColor.Accent3), column3.Cell(7).Style.Fill.BackgroundColor); @@ -57,7 +57,7 @@ row1.Cell(2).Style.Fill.SetBackgroundColor(XLColor.FromArgb(1, 1, 1)); row1.Cell(3).Style.Fill.SetBackgroundColor(XLColor.FromHtml("#CCCCCC")); row1.Cell(4).Style.Fill.SetBackgroundColor(XLColor.FromIndex(26)); - row1.Cell(5).Style.Fill.SetBackgroundColor(XLColor.FromKnownColor(KnownColor.MediumSeaGreen)); + row1.Cell(5).Style.Fill.SetBackgroundColor(XLColor.FromColor(Color.MediumSeaGreen)); row1.Cell(6).Style.Fill.SetBackgroundColor(XLColor.FromName("Blue")); row1.Cell(7).Style.Fill.SetBackgroundColor(XLColor.FromTheme(XLThemeColor.Accent3)); @@ -69,7 +69,7 @@ Assert.AreEqual(XLColor.FromArgb(1, 1, 1), row2.Cell(2).Style.Fill.BackgroundColor); Assert.AreEqual(XLColor.FromHtml("#CCCCCC"), row2.Cell(3).Style.Fill.BackgroundColor); Assert.AreEqual(XLColor.FromIndex(26), row2.Cell(4).Style.Fill.BackgroundColor); - Assert.AreEqual(XLColor.FromKnownColor(KnownColor.MediumSeaGreen), row2.Cell(5).Style.Fill.BackgroundColor); + Assert.AreEqual(XLColor.FromColor(Color.MediumSeaGreen), row2.Cell(5).Style.Fill.BackgroundColor); Assert.AreEqual(XLColor.FromName("Blue"), row2.Cell(6).Style.Fill.BackgroundColor); Assert.AreEqual(XLColor.FromTheme(XLThemeColor.Accent3), row2.Cell(7).Style.Fill.BackgroundColor); @@ -78,9 +78,9 @@ Assert.AreEqual(XLColor.FromArgb(1, 1, 1), row3.Cell(2).Style.Fill.BackgroundColor); Assert.AreEqual(XLColor.FromHtml("#CCCCCC"), row3.Cell(3).Style.Fill.BackgroundColor); Assert.AreEqual(XLColor.FromIndex(26), row3.Cell(4).Style.Fill.BackgroundColor); - Assert.AreEqual(XLColor.FromKnownColor(KnownColor.MediumSeaGreen), row3.Cell(5).Style.Fill.BackgroundColor); + Assert.AreEqual(XLColor.FromColor(Color.MediumSeaGreen), row3.Cell(5).Style.Fill.BackgroundColor); Assert.AreEqual(XLColor.FromName("Blue"), row3.Cell(6).Style.Fill.BackgroundColor); Assert.AreEqual(XLColor.FromTheme(XLThemeColor.Accent3), row3.Cell(7).Style.Fill.BackgroundColor); } } -} \ No newline at end of file +} diff --git a/ClosedXML_Tests/Resource/Examples/Styles/UsingColors.xlsx b/ClosedXML_Tests/Resource/Examples/Styles/UsingColors.xlsx index 2ada7d9..2d49b85 100644 --- a/ClosedXML_Tests/Resource/Examples/Styles/UsingColors.xlsx +++ b/ClosedXML_Tests/Resource/Examples/Styles/UsingColors.xlsx Binary files differ