| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 | 
							- using UnityEngine;
 
- namespace XCharts.Runtime
 
- {
 
-     internal static class MarkLineHelper
 
-     {
 
-         public static string GetFormatterContent(Serie serie, MarkLineData data)
 
-         {
 
-             var serieLabel = data.label;
 
-             var numericFormatter = serieLabel.numericFormatter;
 
-             if (string.IsNullOrEmpty(serieLabel.formatter))
 
-             {
 
-                 var content = ChartCached.NumberToStr(data.runtimeValue, numericFormatter);
 
-                 return serieLabel.formatterFunction == null? content:
 
-                     serieLabel.formatterFunction(data.index, data.runtimeValue, null, content);
 
-             }
 
-             else
 
-             {
 
-                 var content = serieLabel.formatter;
 
-                 FormatterHelper.ReplaceSerieLabelContent(ref content, numericFormatter, serie.dataCount, data.runtimeValue,
 
-                     0, serie.serieName, data.name, data.name, Color.clear, null);
 
-                 return serieLabel.formatterFunction == null? content:
 
-                     serieLabel.formatterFunction(data.index, data.runtimeValue, null, content);
 
-             }
 
-         }
 
-         public static Vector3 GetLabelPosition(MarkLineData data)
 
-         {
 
-             if (!data.label.show) return Vector3.zero;
 
-             var dir = (data.runtimeEndPosition - data.runtimeStartPosition).normalized;
 
-             var horizontal = Mathf.Abs(Vector3.Dot(dir, Vector3.right)) == 1;
 
-             var labelWidth = data.runtimeLabel == null ? 50 : data.runtimeLabel.GetTextWidth();
 
-             var labelHeight = data.runtimeLabel == null ? 20 : data.runtimeLabel.GetTextHeight();
 
-             switch (data.label.position)
 
-             {
 
-                 case LabelStyle.Position.Start:
 
-                     if (data.runtimeStartPosition == Vector3.zero) return Vector3.zero;
 
-                     if (horizontal) return data.runtimeStartPosition + data.label.offset + labelWidth / 2 * Vector3.left;
 
-                     else return data.runtimeStartPosition + data.label.offset + labelHeight / 2 * Vector3.down;
 
-                 case LabelStyle.Position.Middle:
 
-                     if (data.runtimeCurrentEndPosition == Vector3.zero) return Vector3.zero;
 
-                     var center = (data.runtimeStartPosition + data.runtimeCurrentEndPosition) / 2;
 
-                     if (horizontal) return center + data.label.offset + labelHeight / 2 * Vector3.up;
 
-                     else return center + data.label.offset + labelWidth / 2 * Vector3.right;
 
-                 default:
 
-                     if (data.runtimeCurrentEndPosition == Vector3.zero) return Vector3.zero;
 
-                     if (horizontal) return data.runtimeCurrentEndPosition + data.label.offset + labelWidth / 2 * Vector3.right;
 
-                     else return data.runtimeCurrentEndPosition + data.label.offset + labelHeight / 2 * Vector3.up;
 
-             }
 
-         }
 
-     }
 
- }
 
 
  |