Нет описания
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

ChartDrawer.cs 6.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. using System.Collections.Generic;
  2. using UnityEngine;
  3. using UnityEngine.UI;
  4. using XUGL;
  5. namespace XCharts.Runtime
  6. {
  7. public static class ChartDrawer
  8. {
  9. public static void DrawSymbol(VertexHelper vh, SymbolType type, float symbolSize, float tickness,
  10. Vector3 pos, Color32 color, Color32 toColor, float gap, float[] cornerRadius,
  11. Color32 emptyColor, Color32 backgroundColor, Color32 borderColor, float smoothness, Vector3 startPos)
  12. {
  13. switch (type)
  14. {
  15. case SymbolType.None:
  16. break;
  17. case SymbolType.Circle:
  18. if (gap > 0)
  19. {
  20. UGL.DrawDoughnut(vh, pos, symbolSize, symbolSize + gap, backgroundColor, backgroundColor, color, smoothness);
  21. }
  22. else
  23. {
  24. if (tickness > 0)
  25. UGL.DrawDoughnut(vh, pos, symbolSize, symbolSize + tickness, borderColor, borderColor, color, smoothness);
  26. else
  27. UGL.DrawCricle(vh, pos, symbolSize, color, toColor, smoothness);
  28. }
  29. break;
  30. case SymbolType.EmptyCircle:
  31. if (gap > 0)
  32. {
  33. UGL.DrawCricle(vh, pos, symbolSize + gap, backgroundColor, smoothness);
  34. UGL.DrawEmptyCricle(vh, pos, symbolSize, tickness, color, color, emptyColor, smoothness);
  35. }
  36. else
  37. {
  38. UGL.DrawEmptyCricle(vh, pos, symbolSize, tickness, color, color, emptyColor, smoothness);
  39. }
  40. break;
  41. case SymbolType.Rect:
  42. if (gap > 0)
  43. {
  44. UGL.DrawSquare(vh, pos, symbolSize + gap, backgroundColor);
  45. UGL.DrawSquare(vh, pos, symbolSize, color, toColor);
  46. }
  47. else
  48. {
  49. if (tickness > 0)
  50. {
  51. UGL.DrawRoundRectangle(vh, pos, symbolSize, symbolSize, color, color, 0, cornerRadius, true);
  52. UGL.DrawBorder(vh, pos, symbolSize, symbolSize, tickness, borderColor, 0, cornerRadius);
  53. }
  54. else
  55. UGL.DrawRoundRectangle(vh, pos, symbolSize, symbolSize, color, color, 0, cornerRadius, true);
  56. }
  57. break;
  58. case SymbolType.EmptyRect:
  59. if (gap > 0)
  60. {
  61. UGL.DrawSquare(vh, pos, symbolSize + gap, backgroundColor);
  62. UGL.DrawBorder(vh, pos, symbolSize / 2, symbolSize / 2, tickness, color);
  63. }
  64. else
  65. {
  66. UGL.DrawBorder(vh, pos, symbolSize / 2, symbolSize / 2, tickness, color);
  67. }
  68. break;
  69. case SymbolType.Triangle:
  70. if (gap > 0)
  71. {
  72. UGL.DrawTriangle(vh, pos, symbolSize + gap, backgroundColor);
  73. UGL.DrawTriangle(vh, pos, symbolSize, color, toColor);
  74. }
  75. else
  76. {
  77. UGL.DrawTriangle(vh, pos, symbolSize, color, toColor);
  78. }
  79. break;
  80. case SymbolType.Diamond:
  81. if (gap > 0)
  82. {
  83. UGL.DrawDiamond(vh, pos, symbolSize + gap, backgroundColor);
  84. UGL.DrawDiamond(vh, pos, symbolSize, color, toColor);
  85. }
  86. else
  87. {
  88. UGL.DrawDiamond(vh, pos, symbolSize, color, toColor);
  89. }
  90. break;
  91. case SymbolType.Arrow:
  92. var arrowWidth = symbolSize * 2;
  93. var arrowHeight = arrowWidth * 1.5f;
  94. var arrowOffset = 0;
  95. var arrowDent = arrowWidth / 3.3f;
  96. UGL.DrawArrow(vh, startPos, pos, arrowWidth, arrowHeight,
  97. arrowOffset, arrowDent, color);
  98. break;
  99. }
  100. }
  101. public static void DrawLineStyle(VertexHelper vh, LineStyle lineStyle, Vector3 startPos, Vector3 endPos,
  102. Color32 defaultColor, float themeWidth, LineStyle.Type themeType)
  103. {
  104. var type = lineStyle.GetType(themeType);
  105. var width = lineStyle.GetWidth(themeWidth);
  106. var color = lineStyle.GetColor(defaultColor);
  107. DrawLineStyle(vh, type, width, startPos, endPos, color, color);
  108. }
  109. public static void DrawLineStyle(VertexHelper vh, LineStyle lineStyle, Vector3 startPos, Vector3 endPos,
  110. float themeWidth, LineStyle.Type themeType, Color32 defaultColor, Color32 defaultToColor)
  111. {
  112. var type = lineStyle.GetType(themeType);
  113. var width = lineStyle.GetWidth(themeWidth);
  114. var color = lineStyle.GetColor(defaultColor);
  115. var toColor = ChartHelper.IsClearColor(defaultToColor) ? color : defaultToColor;
  116. DrawLineStyle(vh, type, width, startPos, endPos, color, toColor);
  117. }
  118. public static void DrawLineStyle(VertexHelper vh, LineStyle.Type lineType, float lineWidth,
  119. Vector3 startPos, Vector3 endPos, Color32 color)
  120. {
  121. DrawLineStyle(vh, lineType, lineWidth, startPos, endPos, color, color);
  122. }
  123. public static void DrawLineStyle(VertexHelper vh, LineStyle.Type lineType, float lineWidth,
  124. Vector3 startPos, Vector3 endPos, Color32 color, Color32 toColor)
  125. {
  126. switch (lineType)
  127. {
  128. case LineStyle.Type.Dashed:
  129. UGL.DrawDashLine(vh, startPos, endPos, lineWidth, color, toColor);
  130. break;
  131. case LineStyle.Type.Dotted:
  132. UGL.DrawDotLine(vh, startPos, endPos, lineWidth, color, toColor);
  133. break;
  134. case LineStyle.Type.Solid:
  135. UGL.DrawLine(vh, startPos, endPos, lineWidth, color, toColor);
  136. break;
  137. case LineStyle.Type.DashDot:
  138. UGL.DrawDashDotLine(vh, startPos, endPos, lineWidth, color);
  139. break;
  140. case LineStyle.Type.DashDotDot:
  141. UGL.DrawDashDotDotLine(vh, startPos, endPos, lineWidth, color);
  142. break;
  143. }
  144. }
  145. }
  146. }