[bug][line] fix ignoreLineBreak of line serie not work

This commit is contained in:
monitor1394
2022-07-12 07:26:07 +08:00
parent e42afe8d47
commit 131aabc76a
2 changed files with 9 additions and 4 deletions

View File

@@ -56,6 +56,7 @@
## master ## master
* (2022.07.12) 修复`Serie``ignoreLineBreak`不生效的问题
* (2022.07.07) 优化`Axis``minMaxType`指定为`MinMax`时支持精确到小数 * (2022.07.07) 优化`Axis``minMaxType`指定为`MinMax`时支持精确到小数
* (2022.07.05) 修复`Chart`里有多个坐标系时绘制异常的问题 (#210) * (2022.07.05) 修复`Chart`里有多个坐标系时绘制异常的问题 (#210)
* (2022.07.04) 增加`Settings``axisMaxSplitNumber`参数设置`Axis`的最大分隔段数 * (2022.07.04) 增加`Settings``axisMaxSplitNumber`参数设置`Axis`的最大分隔段数

View File

@@ -271,7 +271,6 @@ namespace XCharts.Runtime
{ {
var cdata = datas[i]; var cdata = datas[i];
var isIgnore = cdata.isIgnoreBreak; var isIgnore = cdata.isIgnoreBreak;
var cp = cdata.position; var cp = cdata.position;
var lp = datas[i - 1].position; var lp = datas[i - 1].position;
@@ -286,7 +285,7 @@ namespace XCharts.Runtime
} }
serie.context.lineEndPostion = cp; serie.context.lineEndPostion = cp;
serie.context.lineEndValue = AxisHelper.GetAxisPositionValue(grid, relativedAxis, cp); serie.context.lineEndValue = AxisHelper.GetAxisPositionValue(grid, relativedAxis, cp);
lastDataIsIgnore = isIgnore;
var handled = false; var handled = false;
if (!smooth) if (!smooth)
{ {
@@ -315,6 +314,7 @@ namespace XCharts.Runtime
} }
if (handled) if (handled)
{ {
lastDataIsIgnore = isIgnore;
if (isBreak) if (isBreak)
break; break;
else else
@@ -371,7 +371,7 @@ namespace XCharts.Runtime
visualMap, serie.lineStyle, grid, axis, relativedAxis, true, lastDataIsIgnore, isIgnore); visualMap, serie.lineStyle, grid, axis, relativedAxis, true, lastDataIsIgnore, isIgnore);
} }
} }
lastDataIsIgnore = isIgnore;
if (isBreak) if (isBreak)
break; break;
} }
@@ -413,9 +413,13 @@ namespace XCharts.Runtime
UGL.AddVertToVertexHelper(vh, tp, bp, lineColor, needTriangle); UGL.AddVertToVertexHelper(vh, tp, bp, lineColor, needTriangle);
} }
if (lastIgnore && !needTriangle) if (lastIgnore && !needTriangle)
{
UGL.AddVertToVertexHelper(vh, tp, bp, ColorUtil.clearColor32, false); UGL.AddVertToVertexHelper(vh, tp, bp, ColorUtil.clearColor32, false);
}
if (ignore && needTriangle) if (ignore && needTriangle)
{
UGL.AddVertToVertexHelper(vh, tp, bp, ColorUtil.clearColor32, false); UGL.AddVertToVertexHelper(vh, tp, bp, ColorUtil.clearColor32, false);
}
} }
internal static void UpdateSerieDrawPoints(Serie serie, Settings setting, ThemeStyle theme, VisualMap visualMap, internal static void UpdateSerieDrawPoints(Serie serie, Settings setting, ThemeStyle theme, VisualMap visualMap,
@@ -452,6 +456,7 @@ namespace XCharts.Runtime
{ {
var ep = dataPoints[i]; var ep = dataPoints[i];
var ignore = serie.context.dataIgnores[i]; var ignore = serie.context.dataIgnores[i];
var dir = (ep - sp).normalized; var dir = (ep - sp).normalized;
var dist = Vector3.Distance(sp, ep); var dist = Vector3.Distance(sp, ep);
var segment = (int) (dist / setting.lineSegmentDistance); var segment = (int) (dist / setting.lineSegmentDistance);
@@ -497,7 +502,6 @@ namespace XCharts.Runtime
UGLHelper.GetBezierListVertical(ref s_CurvesPosList, sp, ep, smoothness, setting.lineSmoothStyle); UGLHelper.GetBezierListVertical(ref s_CurvesPosList, sp, ep, smoothness, setting.lineSmoothStyle);
else else
UGLHelper.GetBezierList(ref s_CurvesPosList, sp, ep, lsp, nep, smoothness, setting.lineSmoothStyle, true); UGLHelper.GetBezierList(ref s_CurvesPosList, sp, ep, lsp, nep, smoothness, setting.lineSmoothStyle, true);
for (int j = 1; j < s_CurvesPosList.Count; j++) for (int j = 1; j < s_CurvesPosList.Count; j++)
{ {
serie.context.drawPoints.Add(new PointInfo(s_CurvesPosList[j], ignore)); serie.context.drawPoints.Add(new PointInfo(s_CurvesPosList[j], ignore));