暂无描述
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

YAxisHander.cs 5.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. using UnityEngine;
  2. using UnityEngine.UI;
  3. namespace XCharts.Runtime
  4. {
  5. [UnityEngine.Scripting.Preserve]
  6. internal sealed class YAxisHander : AxisHandler<YAxis>
  7. {
  8. protected override Orient orient { get { return Orient.Vertical; } }
  9. public override void InitComponent()
  10. {
  11. InitYAxis(component);
  12. }
  13. public override void Update()
  14. {
  15. UpdateAxisMinMaxValue(component.index, component);
  16. UpdatePointerValue(component);
  17. }
  18. public override void DrawBase(VertexHelper vh)
  19. {
  20. UpdatePosition(component);
  21. DrawYAxisSplit(vh, component.index, component);
  22. DrawYAxisLine(vh, component.index, component);
  23. DrawYAxisTick(vh, component.index, component);
  24. }
  25. private void UpdatePosition(YAxis axis)
  26. {
  27. var grid = chart.GetChartComponent<GridCoord>(axis.gridIndex);
  28. if (grid != null)
  29. {
  30. var relativedAxis = chart.GetChartComponent<XAxis>(axis.gridIndex);
  31. axis.context.x = AxisHelper.GetYAxisXOrY(grid, axis, relativedAxis);
  32. axis.context.y = grid.context.y;
  33. axis.context.zeroX = axis.context.x;
  34. axis.context.zeroY = axis.context.y + axis.context.offset;
  35. }
  36. }
  37. private void InitYAxis(YAxis yAxis)
  38. {
  39. var theme = chart.theme;
  40. var yAxisIndex = yAxis.index;
  41. yAxis.painter = chart.painter;
  42. yAxis.refreshComponent = delegate()
  43. {
  44. var grid = chart.GetChartComponent<GridCoord>(yAxis.gridIndex);
  45. if (grid != null)
  46. {
  47. var xAxis = chart.GetChartComponent<YAxis>(yAxis.index);
  48. InitAxis(xAxis,
  49. orient,
  50. grid.context.x,
  51. grid.context.y,
  52. grid.context.height,
  53. grid.context.width);
  54. }
  55. };
  56. yAxis.refreshComponent();
  57. }
  58. internal override void UpdateAxisLabelText(Axis axis)
  59. {
  60. base.UpdateAxisLabelText(axis);
  61. if (axis.IsTime() || axis.IsValue())
  62. {
  63. for (int i = 0; i < axis.context.labelObjectList.Count; i++)
  64. {
  65. var label = axis.context.labelObjectList[i];
  66. if (label != null)
  67. {
  68. var pos = GetLabelPosition(0, i);
  69. label.SetPosition(pos);
  70. CheckValueLabelActive(axis, i, label, pos);
  71. }
  72. }
  73. }
  74. }
  75. protected override Vector3 GetLabelPosition(float scaleWid, int i)
  76. {
  77. var grid = chart.GetChartComponent<GridCoord>(component.gridIndex);
  78. if (grid == null)
  79. return Vector3.zero;
  80. var xAxis = chart.GetChartComponent<XAxis>(component.index);
  81. return GetLabelPosition(i, Orient.Vertical, component, xAxis,
  82. chart.theme.axis,
  83. scaleWid,
  84. grid.context.x,
  85. grid.context.y,
  86. grid.context.height,
  87. grid.context.width);
  88. }
  89. private void DrawYAxisSplit(VertexHelper vh, int yAxisIndex, YAxis yAxis)
  90. {
  91. if (AxisHelper.NeedShowSplit(yAxis))
  92. {
  93. var grid = chart.GetChartComponent<GridCoord>(yAxis.gridIndex);
  94. if (grid == null)
  95. return;
  96. var relativedAxis = chart.GetChartComponent<XAxis>(yAxis.gridIndex);
  97. var dataZoom = chart.GetDataZoomOfAxis(yAxis);
  98. DrawAxisSplit(vh, chart.theme.axis, dataZoom,
  99. Orient.Vertical,
  100. grid.context.x,
  101. grid.context.y,
  102. grid.context.height,
  103. grid.context.width,
  104. relativedAxis);
  105. }
  106. }
  107. private void DrawYAxisTick(VertexHelper vh, int yAxisIndex, YAxis yAxis)
  108. {
  109. if (AxisHelper.NeedShowSplit(yAxis))
  110. {
  111. var grid = chart.GetChartComponent<GridCoord>(yAxis.gridIndex);
  112. if (grid == null)
  113. return;
  114. var dataZoom = chart.GetDataZoomOfAxis(yAxis);
  115. DrawAxisTick(vh, yAxis, chart.theme.axis, dataZoom,
  116. Orient.Vertical,
  117. GetAxisLineXOrY(),
  118. grid.context.y,
  119. grid.context.height);
  120. }
  121. }
  122. private void DrawYAxisLine(VertexHelper vh, int yAxisIndex, YAxis yAxis)
  123. {
  124. if (yAxis.show && yAxis.axisLine.show)
  125. {
  126. var grid = chart.GetChartComponent<GridCoord>(yAxis.gridIndex);
  127. if (grid == null)
  128. return;
  129. DrawAxisLine(vh, yAxis, chart.theme.axis,
  130. Orient.Vertical,
  131. GetAxisLineXOrY(),
  132. grid.context.y,
  133. grid.context.height);
  134. }
  135. }
  136. internal override float GetAxisLineXOrY()
  137. {
  138. return component.context.x;
  139. }
  140. }
  141. }