mirror of
https://github.com/XCharts-Team/XCharts.git
synced 2026-05-25 10:20:10 +00:00
[optimize] visualmap
This commit is contained in:
@@ -348,7 +348,7 @@ namespace XCharts.Runtime
|
||||
serie.animation.InitProgress(serie.context.dataPoints, isY);
|
||||
|
||||
VisualMapHelper.AutoSetLineMinMax(visualMap, serie, isY, axis, relativedAxis);
|
||||
LineHelper.UpdateSerieDrawPoints(serie, chart.settings, chart.theme, lineWidth, isY);
|
||||
LineHelper.UpdateSerieDrawPoints(serie, chart.settings, chart.theme, visualMap, lineWidth, isY);
|
||||
LineHelper.DrawSerieLineArea(vh, serie, lastSerie, chart.theme, isY, axis, relativedAxis, m_SerieGrid);
|
||||
LineHelper.DrawSerieLine(vh, chart.theme, serie, visualMap, m_SerieGrid, axis, relativedAxis, lineWidth);
|
||||
|
||||
|
||||
@@ -358,9 +358,9 @@ namespace XCharts.Runtime
|
||||
UGL.AddVertToVertexHelper(vh, tp, bp, ColorUtil.clearColor32, false);
|
||||
}
|
||||
|
||||
internal static void UpdateSerieDrawPoints(Serie serie, Settings setting, ThemeStyle theme, float lineWidth, bool isY = false)
|
||||
internal static void UpdateSerieDrawPoints(Serie serie, Settings setting, ThemeStyle theme, VisualMap visualMap,
|
||||
float lineWidth, bool isY = false)
|
||||
{
|
||||
|
||||
serie.context.drawPoints.Clear();
|
||||
var last = Vector3.zero;
|
||||
switch (serie.lineType)
|
||||
@@ -374,14 +374,54 @@ namespace XCharts.Runtime
|
||||
UpdateStepLineDrawPoints(serie, setting, theme, isY, lineWidth);
|
||||
break;
|
||||
default:
|
||||
for (int i = 0; i < serie.context.dataPoints.Count; i++)
|
||||
{
|
||||
serie.context.drawPoints.Add(new PointInfo(serie.context.dataPoints[i], serie.context.dataIgnores[i]));
|
||||
}
|
||||
UpdateNormalLineDrawPoints(serie, setting, visualMap);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private static void UpdateNormalLineDrawPoints(Serie serie, Settings setting, VisualMap visualMap)
|
||||
{
|
||||
var isVisualMapGradient = VisualMapHelper.IsNeedGradient(visualMap);
|
||||
if (isVisualMapGradient)
|
||||
{
|
||||
var dataPoints = serie.context.dataPoints;
|
||||
if (dataPoints.Count > 1)
|
||||
{
|
||||
var sp = dataPoints[0];
|
||||
for (int i = 1; i < dataPoints.Count; i++)
|
||||
{
|
||||
var ep = dataPoints[i];
|
||||
var ignore = serie.context.dataIgnores[i];
|
||||
var dir = (ep - sp).normalized;
|
||||
var dist = Vector3.Distance(sp, ep);
|
||||
var segment = (int)(dist / setting.lineSegmentDistance);
|
||||
serie.context.drawPoints.Add(new PointInfo(sp, ignore));
|
||||
for (int j = 1; j < segment; j++)
|
||||
{
|
||||
var np = sp + dir * dist * j / segment;
|
||||
serie.context.drawPoints.Add(new PointInfo(np, ignore));
|
||||
}
|
||||
sp = ep;
|
||||
if (i == dataPoints.Count - 1)
|
||||
{
|
||||
serie.context.drawPoints.Add(new PointInfo(ep, ignore));
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
serie.context.drawPoints.Add(new PointInfo(dataPoints[0], serie.context.dataIgnores[0]));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for (int i = 0; i < serie.context.dataPoints.Count; i++)
|
||||
{
|
||||
serie.context.drawPoints.Add(new PointInfo(serie.context.dataPoints[i], serie.context.dataIgnores[i]));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static void UpdateSmoothLineDrawPoints(Serie serie, Settings setting, bool isY)
|
||||
{
|
||||
var points = serie.context.dataPoints;
|
||||
|
||||
@@ -238,7 +238,7 @@ namespace XCharts.Runtime
|
||||
|
||||
serie.animation.InitProgress(serie.context.dataPoints, isY);
|
||||
|
||||
LineHelper.UpdateSerieDrawPoints(serie, chart.settings, chart.theme, lineWidth, isY);
|
||||
LineHelper.UpdateSerieDrawPoints(serie, chart.settings, chart.theme, null, lineWidth, isY);
|
||||
LineHelper.DrawSerieLineArea(vh, serie, null, chart.theme, isY, axis, relativedAxis, m_SerieGrid);
|
||||
LineHelper.DrawSerieLine(vh, chart.theme, serie, null, m_SerieGrid, axis, relativedAxis, lineWidth);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user