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

BaseChart.Draw.cs 5.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. using UnityEngine;
  2. using UnityEngine.UI;
  3. using XUGL;
  4. namespace XCharts.Runtime
  5. {
  6. public partial class BaseChart
  7. {
  8. public void DrawClipPolygon(VertexHelper vh, Vector3 p1, Vector3 p2, Vector3 p3, Vector3 p4,
  9. Color32 color, bool clip, GridCoord grid)
  10. {
  11. DrawClipPolygon(vh, p1, p2, p3, p4, color, color, clip, grid);
  12. }
  13. public void DrawClipPolygon(VertexHelper vh, Vector3 p, float radius, Color32 color,
  14. bool clip, bool vertical, GridCoord grid)
  15. {
  16. if (!IsInChart(p)) return;
  17. if (!clip || (clip && (grid.Contains(p))))
  18. UGL.DrawSquare(vh, p, radius, color);
  19. }
  20. public void DrawClipPolygon(VertexHelper vh, Vector3 p1, Vector3 p2, Vector3 p3, Vector3 p4,
  21. Color32 startColor, Color32 toColor, bool clip, GridCoord grid)
  22. {
  23. ClampInChart(ref p1);
  24. ClampInChart(ref p2);
  25. ClampInChart(ref p3);
  26. ClampInChart(ref p4);
  27. if (clip)
  28. {
  29. p1 = ClampInGrid(grid, p1);
  30. p2 = ClampInGrid(grid, p2);
  31. p3 = ClampInGrid(grid, p3);
  32. p4 = ClampInGrid(grid, p4);
  33. }
  34. if (!clip || (clip && (grid.Contains(p1) && grid.Contains(p2) && grid.Contains(p3) &&
  35. grid.Contains(p4))))
  36. UGL.DrawQuadrilateral(vh, p1, p2, p3, p4, startColor, toColor);
  37. }
  38. public void DrawClipPolygon(VertexHelper vh, ref Vector3 p1, ref Vector3 p2, ref Vector3 p3, ref Vector3 p4,
  39. Color32 startColor, Color32 toColor, bool clip, GridCoord grid)
  40. {
  41. ClampInChart(ref p1);
  42. ClampInChart(ref p2);
  43. ClampInChart(ref p3);
  44. ClampInChart(ref p4);
  45. if (clip)
  46. {
  47. p1 = ClampInGrid(grid, p1);
  48. p2 = ClampInGrid(grid, p2);
  49. p3 = ClampInGrid(grid, p3);
  50. p4 = ClampInGrid(grid, p4);
  51. }
  52. if (!clip ||
  53. (clip && (grid.Contains(p1) && grid.Contains(p2) && grid.Contains(p3) &&
  54. grid.Contains(p4))))
  55. UGL.DrawQuadrilateral(vh, p1, p2, p3, p4, startColor, toColor);
  56. }
  57. public void DrawClipTriangle(VertexHelper vh, Vector3 p1, Vector3 p2, Vector3 p3, Color32 color,
  58. bool clip, GridCoord grid)
  59. {
  60. DrawClipTriangle(vh, p1, p2, p3, color, color, color, clip, grid);
  61. }
  62. public void DrawClipTriangle(VertexHelper vh, Vector3 p1, Vector3 p2, Vector3 p3, Color32 color,
  63. Color32 color2, Color32 color3, bool clip, GridCoord grid)
  64. {
  65. if (!IsInChart(p1) || !IsInChart(p2) || !IsInChart(p3)) return;
  66. if (!clip || (clip && (grid.Contains(p1) || grid.Contains(p2) || grid.Contains(p3))))
  67. UGL.DrawTriangle(vh, p1, p2, p3, color, color2, color3);
  68. }
  69. public void DrawClipLine(VertexHelper vh, Vector3 p1, Vector3 p2, float size, Color32 color,
  70. bool clip, GridCoord grid)
  71. {
  72. if (!IsInChart(p1) || !IsInChart(p2)) return;
  73. if (!clip || (clip && (grid.Contains(p1) || grid.Contains(p2))))
  74. UGL.DrawLine(vh, p1, p2, size, color);
  75. }
  76. public void DrawClipSymbol(VertexHelper vh, SymbolType type, float symbolSize, float tickness,
  77. Vector3 pos, Color32 color, Color32 toColor, Color32 emptyColor, Color32 borderColor, float gap,
  78. bool clip, float[] cornerRadius, GridCoord grid, Vector3 startPos)
  79. {
  80. if (!IsInChart(pos)) return;
  81. if (!clip || (clip && (grid.Contains(pos))))
  82. DrawSymbol(vh, type, symbolSize, tickness, pos, color, toColor, emptyColor, borderColor,
  83. gap, cornerRadius, startPos);
  84. }
  85. public void DrawClipZebraLine(VertexHelper vh, Vector3 p1, Vector3 p2, float size, float zebraWidth,
  86. float zebraGap, Color32 color, Color32 toColor, bool clip, GridCoord grid, float maxDistance)
  87. {
  88. ClampInChart(ref p1);
  89. ClampInChart(ref p2);
  90. UGL.DrawZebraLine(vh, p1, p2, size, zebraWidth, zebraGap, color, toColor, maxDistance);
  91. }
  92. public void DrawSymbol(VertexHelper vh, SymbolType type, float symbolSize, float tickness,
  93. Vector3 pos, Color32 color, Color32 toColor, Color32 emptyColor, Color32 borderColor,
  94. float gap, float[] cornerRadius)
  95. {
  96. DrawSymbol(vh, type, symbolSize, tickness, pos, color, toColor, emptyColor, borderColor,
  97. gap, cornerRadius, Vector3.zero);
  98. }
  99. public void DrawSymbol(VertexHelper vh, SymbolType type, float symbolSize, float tickness,
  100. Vector3 pos, Color32 color, Color32 toColor, Color32 emptyColor, Color32 borderColor,
  101. float gap, float[] cornerRadius, Vector3 startPos)
  102. {
  103. var backgroundColor = GetChartBackgroundColor();
  104. if (ChartHelper.IsClearColor(emptyColor))
  105. emptyColor = backgroundColor;
  106. var smoothness = settings.cicleSmoothness;
  107. ChartDrawer.DrawSymbol(vh, type, symbolSize, tickness, pos, color, toColor, gap,
  108. cornerRadius, emptyColor, backgroundColor, borderColor, smoothness, startPos);
  109. }
  110. public Color32 GetXLerpColor(Color32 areaColor, Color32 areaToColor, Vector3 pos, GridCoord grid)
  111. {
  112. if (ChartHelper.IsValueEqualsColor(areaColor, areaToColor)) return areaColor;
  113. return Color32.Lerp(areaToColor, areaColor, (pos.y - grid.context.y) / grid.context.height);
  114. }
  115. public Color32 GetYLerpColor(Color32 areaColor, Color32 areaToColor, Vector3 pos, GridCoord grid)
  116. {
  117. if (ChartHelper.IsValueEqualsColor(areaColor, areaToColor)) return areaColor;
  118. return Color32.Lerp(areaToColor, areaColor, (pos.x - grid.context.x) / grid.context.width);
  119. }
  120. }
  121. }