Aucune description
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

CommentHander.cs 2.8KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. using UnityEngine;
  2. using UnityEngine.UI;
  3. using XUGL;
  4. namespace XCharts.Runtime
  5. {
  6. [UnityEngine.Scripting.Preserve]
  7. internal sealed class CommentHander : MainComponentHandler<Comment>
  8. {
  9. private static readonly string s_CommentObjectName = "comment";
  10. public override void InitComponent()
  11. {
  12. var comment = component;
  13. comment.OnChanged();
  14. comment.painter = null;
  15. comment.refreshComponent = delegate()
  16. {
  17. var objName = ChartCached.GetComponentObjectName(comment);
  18. var commentObj = ChartHelper.AddObject(objName,
  19. chart.transform,
  20. chart.chartMinAnchor,
  21. chart.chartMaxAnchor,
  22. chart.chartPivot,
  23. chart.chartSizeDelta);
  24. commentObj.SetActive(comment.show);
  25. commentObj.hideFlags = chart.chartHideFlags;
  26. ChartHelper.HideAllObject(commentObj);
  27. for (int i = 0; i < comment.items.Count; i++)
  28. {
  29. var item = comment.items[i];
  30. var labelStyle = comment.GetLabelStyle(i);
  31. var labelPos = chart.chartPosition + item.location.GetPosition(chart.chartWidth, chart.chartHeight);
  32. var label = ChartHelper.AddChartLabel(s_CommentObjectName + i, commentObj.transform, labelStyle, chart.theme.common,
  33. GetContent(item), Color.clear, TextAnchor.MiddleCenter);
  34. label.SetActive(comment.show && item.show);
  35. label.SetPosition(labelPos);
  36. label.text.SetLocalPosition(labelStyle.offset);
  37. }
  38. };
  39. comment.refreshComponent();
  40. }
  41. private string GetContent(CommentItem item)
  42. {
  43. if (item.content.IndexOf("{") >= 0)
  44. {
  45. var content = item.content;
  46. FormatterHelper.ReplaceContent(ref content, 0, item.labelStyle.numericFormatter, null, chart);
  47. return content;
  48. }
  49. else
  50. {
  51. return item.content;
  52. }
  53. }
  54. public override void DrawUpper(VertexHelper vh)
  55. {
  56. for (int i = 0; i < component.items.Count; i++)
  57. {
  58. var item = component.items[i];
  59. var markStyle = component.GetMarkStyle(i);
  60. if (markStyle == null || !markStyle.show) continue;
  61. var color = ChartHelper.IsClearColor(markStyle.lineStyle.color) ?
  62. chart.theme.axis.splitLineColor :
  63. markStyle.lineStyle.color;
  64. var width = markStyle.lineStyle.width == 0 ? 1 : markStyle.lineStyle.width;
  65. UGL.DrawBorder(vh, item.markRect, width, color);
  66. }
  67. }
  68. }
  69. }