| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176 | 
							- using System.Collections.Generic;
 
- using System.Text;
 
- using UnityEngine;
 
- using UnityEngine.UI;
 
- using XUGL;
 
- namespace XCharts.Runtime
 
- {
 
-     [UnityEngine.Scripting.Preserve]
 
-     internal sealed class ParallelCoordHandler : MainComponentHandler<ParallelCoord>
 
-     {
 
-         private Dictionary<int, double> m_SerieDimMin = new Dictionary<int, double>();
 
-         private Dictionary<int, double> m_SerieDimMax = new Dictionary<int, double>();
 
-         private double m_LastInterval;
 
-         private int m_LastSplitNumber;
 
-         public override void InitComponent()
 
-         {
 
-             var grid = component;
 
-             grid.painter = chart.painter;
 
-             grid.refreshComponent = delegate()
 
-             {
 
-                 grid.UpdateRuntimeData(chart);
 
-                 chart.OnCoordinateChanged();
 
-             };
 
-             grid.refreshComponent();
 
-         }
 
-         public override void CheckComponent(StringBuilder sb)
 
-         {
 
-             var grid = component;
 
-             if (grid.left >= chart.chartWidth)
 
-                 sb.Append("warning:grid->left > chartWidth\n");
 
-             if (grid.right >= chart.chartWidth)
 
-                 sb.Append("warning:grid->right > chartWidth\n");
 
-             if (grid.top >= chart.chartHeight)
 
-                 sb.Append("warning:grid->top > chartHeight\n");
 
-             if (grid.bottom >= chart.chartHeight)
 
-                 sb.Append("warning:grid->bottom > chartHeight\n");
 
-             if (grid.left + grid.right >= chart.chartWidth)
 
-                 sb.Append("warning:grid.left + grid.right > chartWidth\n");
 
-             if (grid.top + grid.bottom >= chart.chartHeight)
 
-                 sb.Append("warning:grid.top + grid.bottom > chartHeight\n");
 
-         }
 
-         public override void Update()
 
-         {
 
-             UpdatePointerEnter();
 
-             UpdateParallelAxisMinMaxValue();
 
-         }
 
-         public override void DrawBase(VertexHelper vh)
 
-         {
 
-             if (!SeriesHelper.IsAnyClipSerie(chart.series))
 
-             {
 
-                 DrawCoord(vh);
 
-             }
 
-         }
 
-         public override void DrawUpper(VertexHelper vh)
 
-         {
 
-             if (SeriesHelper.IsAnyClipSerie(chart.series))
 
-             {
 
-                 DrawCoord(vh);
 
-             }
 
-         }
 
-         private void DrawCoord(VertexHelper vh)
 
-         {
 
-             var grid = component;
 
-             if (grid.show && !ChartHelper.IsClearColor(grid.backgroundColor))
 
-             {
 
-                 var p1 = new Vector2(grid.context.x, grid.context.y);
 
-                 var p2 = new Vector2(grid.context.x, grid.context.y + grid.context.height);
 
-                 var p3 = new Vector2(grid.context.x + grid.context.width, grid.context.y + grid.context.height);
 
-                 var p4 = new Vector2(grid.context.x + grid.context.width, grid.context.y);
 
-                 UGL.DrawQuadrilateral(vh, p1, p2, p3, p4, grid.backgroundColor);
 
-             }
 
-         }
 
-         private void UpdatePointerEnter()
 
-         {
 
-             if (chart.isPointerInChart)
 
-                 component.context.runtimeIsPointerEnter = component.Contains(chart.pointerPos);
 
-             else
 
-                 component.context.runtimeIsPointerEnter = false;
 
-         }
 
-         private void UpdateParallelAxisMinMaxValue()
 
-         {
 
-             var list = chart.GetChartComponents<ParallelAxis>();
 
-             if (list.Count != component.context.parallelAxes.Count)
 
-             {
 
-                 component.context.parallelAxes.Clear();
 
-                 foreach (var com in chart.GetChartComponents<ParallelAxis>())
 
-                 {
 
-                     var axis = com as ParallelAxis;
 
-                     if (axis.parallelIndex == component.index)
 
-                         component.context.parallelAxes.Add(axis);
 
-                 }
 
-             }
 
-             m_SerieDimMin.Clear();
 
-             m_SerieDimMax.Clear();
 
-             foreach (var serie in chart.series)
 
-             {
 
-                 if ((serie is Parallel) && serie.parallelIndex == component.index)
 
-                 {
 
-                     foreach (var serieData in serie.data)
 
-                     {
 
-                         for (int i = 0; i < serieData.data.Count; i++)
 
-                         {
 
-                             var value = serieData.data[i];
 
-                             if (!m_SerieDimMin.ContainsKey(i))
 
-                                 m_SerieDimMin[i] = value;
 
-                             else if (m_SerieDimMin[i] > value)
 
-                                 m_SerieDimMin[i] = value;
 
-                             if (!m_SerieDimMax.ContainsKey(i))
 
-                                 m_SerieDimMax[i] = value;
 
-                             else if (m_SerieDimMax[i] < value)
 
-                                 m_SerieDimMax[i] = value;
 
-                         }
 
-                     }
 
-                 }
 
-             }
 
-             for (int i = 0; i < component.context.parallelAxes.Count; i++)
 
-             {
 
-                 var axis = component.context.parallelAxes[i];
 
-                 if (axis.IsCategory())
 
-                 {
 
-                     m_SerieDimMax[i] = axis.data.Count > 0 ? axis.data.Count - 1 : 0;
 
-                     m_SerieDimMin[i] = 0;
 
-                 }
 
-                 else if (axis.minMaxType == Axis.AxisMinMaxType.Custom)
 
-                 {
 
-                     m_SerieDimMin[i] = axis.min;
 
-                     m_SerieDimMax[i] = axis.max;
 
-                 }
 
-                 else if (m_SerieDimMax.ContainsKey(i))
 
-                 {
 
-                     var tempMinValue = m_SerieDimMin[i];
 
-                     var tempMaxValue = m_SerieDimMax[i];
 
-                     AxisHelper.AdjustMinMaxValue(axis, ref tempMinValue, ref tempMaxValue, true);
 
-                     m_SerieDimMin[i] = tempMinValue;
 
-                     m_SerieDimMax[i] = tempMaxValue;
 
-                 }
 
-             }
 
-             for (int i = 0; i < component.context.parallelAxes.Count; i++)
 
-             {
 
-                 if (m_SerieDimMax.ContainsKey(i))
 
-                 {
 
-                     var axis = component.context.parallelAxes[i];
 
-                     var tempMinValue = m_SerieDimMin[i];
 
-                     var tempMaxValue = m_SerieDimMax[i];
 
-                     if (tempMinValue != axis.context.minValue ||
 
-                         tempMaxValue != axis.context.maxValue ||
 
-                         m_LastInterval != axis.interval ||
 
-                         m_LastSplitNumber != axis.splitNumber)
 
-                     {
 
-                         m_LastSplitNumber = axis.splitNumber;
 
-                         m_LastInterval = axis.interval;
 
-                         axis.UpdateMinMaxValue(tempMinValue, tempMaxValue);
 
-                         axis.context.offset = 0;
 
-                         axis.context.lastCheckInverse = axis.inverse;
 
-                         (axis.handler as ParallelAxisHander).UpdateAxisTickValueList(axis);
 
-                         (axis.handler as ParallelAxisHander).UpdateAxisLabelText(axis);
 
-                         chart.RefreshChart();
 
-                     }
 
-                 }
 
-             }
 
-         }
 
-     }
 
- }
 
 
  |