DFLayoutUtils.cs 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Drawing;
  4. using System.Globalization;
  5. using System.Text;
  6. namespace InABox.Core
  7. {
  8. public static class DFLayoutUtils
  9. {
  10. public static Color? ConvertObjectToColour(object? colour)
  11. {
  12. if (colour is string str)
  13. {
  14. if (str.StartsWith('#'))
  15. {
  16. var trimmed = str.TrimStart('#');
  17. try
  18. {
  19. if (trimmed.Length == 6)
  20. {
  21. return Color.FromArgb(
  22. Int32.Parse(trimmed[..2], NumberStyles.HexNumber),
  23. Int32.Parse(trimmed.Substring(2, 2), NumberStyles.HexNumber),
  24. Int32.Parse(trimmed.Substring(4, 2), NumberStyles.HexNumber));
  25. }
  26. else if (trimmed.Length == 8)
  27. {
  28. return Color.FromArgb(Int32.Parse(trimmed, NumberStyles.HexNumber));
  29. }
  30. else
  31. {
  32. return null;
  33. }
  34. }
  35. catch (Exception e)
  36. {
  37. Logger.Send(LogType.Error, "", $"Error parsing colour '{str}': {e.Message}");
  38. return null;
  39. }
  40. }
  41. else if (Enum.TryParse<KnownColor>(str, out var result))
  42. {
  43. return Color.FromKnownColor(result);
  44. }
  45. return null;
  46. }
  47. return null;
  48. }
  49. }
  50. }