SerieLabelHelper.cs 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. using System.Collections.Generic;
  2. using UnityEngine;
  3. namespace XCharts.Runtime
  4. {
  5. public static class SerieLabelHelper
  6. {
  7. public static Color GetLabelColor(Serie serie, ThemeStyle theme, int index)
  8. {
  9. if (serie.label != null && !ChartHelper.IsClearColor(serie.label.textStyle.color))
  10. {
  11. return serie.label.textStyle.color;
  12. }
  13. else
  14. {
  15. return theme.GetColor(index);
  16. }
  17. }
  18. public static bool CanShowLabel(Serie serie, SerieData serieData, LabelStyle label, int dimesion)
  19. {
  20. return serie.show && serieData.context.canShowLabel && !serie.IsIgnoreValue(serieData, dimesion);
  21. }
  22. public static string GetFormatterContent(Serie serie, SerieData serieData,
  23. double dataValue, double dataTotal, LabelStyle serieLabel, Color color, BaseChart chart = null)
  24. {
  25. if (serieLabel == null)
  26. {
  27. serieLabel = SerieHelper.GetSerieLabel(serie, serieData);
  28. }
  29. var numericFormatter = serieLabel == null ? "" : serieLabel.numericFormatter;
  30. var serieName = serie.serieName;
  31. var dataName = serieData != null ? serieData.name : null;
  32. if (string.IsNullOrEmpty(serieLabel.formatter))
  33. {
  34. var currentContent = ChartCached.NumberToStr(dataValue, numericFormatter);
  35. if (serieLabel.formatterFunction == null)
  36. return currentContent;
  37. else
  38. return serieLabel.formatterFunction(serieData.index, dataValue, null, currentContent);
  39. }
  40. else
  41. {
  42. var content = serieLabel.formatter;
  43. FormatterHelper.ReplaceSerieLabelContent(ref content, numericFormatter, serie.dataCount, dataValue,
  44. dataTotal, serieName, dataName, dataName, color, serieData, chart);
  45. if (serieLabel.formatterFunction == null)
  46. return content;
  47. else
  48. return serieLabel.formatterFunction(serieData.index, dataValue, null, content);
  49. }
  50. }
  51. public static void SetGaugeLabelText(Serie serie)
  52. {
  53. var serieData = serie.GetSerieData(0);
  54. if (serieData == null) return;
  55. if (serieData.labelObject == null) return;
  56. var label = SerieHelper.GetSerieLabel(serie, serieData);
  57. if (label == null) return;
  58. var value = serieData.GetData(1);
  59. var total = serie.max;
  60. var content = SerieLabelHelper.GetFormatterContent(serie, serieData, value, total, null, Color.clear);
  61. serieData.labelObject.SetText(content);
  62. serieData.labelObject.SetPosition(serie.context.center + label.offset);
  63. if (!ChartHelper.IsClearColor(label.textStyle.color))
  64. {
  65. serieData.labelObject.text.SetColor(label.textStyle.color);
  66. }
  67. }
  68. }
  69. }