From d9266b3c9cec7bc330bebf4afcf4a33aee16fc38 Mon Sep 17 00:00:00 2001 From: monitor1394 Date: Thu, 5 May 2022 13:10:04 +0800 Subject: [PATCH] [refactor][optimize] item color --- Runtime/Component/Child/ItemStyle.cs | 16 ++--- Runtime/Component/Debug/DebugInfo.cs | 2 +- Runtime/Component/Mark/MarkAreaHandler.cs | 2 +- Runtime/Component/Mark/MarkLineHandler.cs | 2 +- Runtime/Internal/BaseChart.API.cs | 13 ++++ Runtime/Internal/BaseChart.cs | 1 - .../Serie/Candlestick/CandlestickHandler.cs | 7 +- .../SimplifiedCandlestickHandler.cs | 7 +- Runtime/Serie/Heatmap/HeatmapHandler.cs | 5 +- Runtime/Serie/Parallel/ParallelHandler.cs | 7 +- Runtime/Serie/Radar/RadarHandler.cs | 4 +- Runtime/Serie/Ring/RingHandler.cs | 14 ++-- Runtime/Serie/Scatter/BaseScatterHandler.cs | 14 ++-- Runtime/Serie/SerieHandler.cs | 66 ++++++++----------- 14 files changed, 75 insertions(+), 85 deletions(-) diff --git a/Runtime/Component/Child/ItemStyle.cs b/Runtime/Component/Child/ItemStyle.cs index 51f1adc8..1ca767da 100644 --- a/Runtime/Component/Child/ItemStyle.cs +++ b/Runtime/Component/Child/ItemStyle.cs @@ -110,6 +110,14 @@ namespace XCharts.Runtime set { if (PropertyUtil.SetColor(ref m_BackgroundColor, value)) SetVerticesDirty(); } } /// + /// 数据项背景宽度。 + /// + public float backgroundWidth + { + get { return m_BackgroundWidth; } + set { if (PropertyUtil.SetStruct(ref m_BackgroundWidth, value)) SetVerticesDirty(); } + } + /// /// 中心区域颜色。 /// public Color32 centerColor @@ -126,14 +134,6 @@ namespace XCharts.Runtime set { if (PropertyUtil.SetStruct(ref m_CenterGap, value)) SetVerticesDirty(); } } /// - /// 数据项背景宽度。 - /// - public float backgroundWidth - { - get { return m_BackgroundWidth; } - set { if (PropertyUtil.SetStruct(ref m_BackgroundWidth, value)) SetVerticesDirty(); } - } - /// /// 边框的颜色。 /// public Color32 borderColor diff --git a/Runtime/Component/Debug/DebugInfo.cs b/Runtime/Component/Debug/DebugInfo.cs index 9fd6fec1..8b4c1fea 100644 --- a/Runtime/Component/Debug/DebugInfo.cs +++ b/Runtime/Component/Debug/DebugInfo.cs @@ -41,7 +41,7 @@ namespace XCharts.Runtime private ChartLabel m_Label; private List m_FpsList = new List(); - public bool showAllChartObject { get { return m_ShowAllChartObject; } } + public bool showAllChartObject { get { return m_ShowAllChartObject; } set { m_ShowAllChartObject = value; } } public bool foldSeries { get { return m_FoldSeries; } set { m_FoldSeries = value; } } public float fps { get; private set; } public float avgFps { get; private set; } diff --git a/Runtime/Component/Mark/MarkAreaHandler.cs b/Runtime/Component/Mark/MarkAreaHandler.cs index f3c9ed3e..c0f90ffb 100644 --- a/Runtime/Component/Mark/MarkAreaHandler.cs +++ b/Runtime/Component/Mark/MarkAreaHandler.cs @@ -62,7 +62,7 @@ namespace XCharts.Runtime UpdateRuntimeData(markArea); - var colorIndex = chart.GetLegendRealShowNameIndex(serie.serieName); + var colorIndex = chart.GetLegendRealShowNameIndex(serie.legendName); var serieColor = SerieHelper.GetLineColor(serie, null, chart.theme, colorIndex, false); var areaColor = markArea.itemStyle.GetColor(serieColor); UGL.DrawRectangle(vh, markArea.runtimeRect, areaColor, areaColor); diff --git a/Runtime/Component/Mark/MarkLineHandler.cs b/Runtime/Component/Mark/MarkLineHandler.cs index 3b02319e..b646d985 100644 --- a/Runtime/Component/Mark/MarkLineHandler.cs +++ b/Runtime/Component/Mark/MarkLineHandler.cs @@ -48,7 +48,7 @@ namespace XCharts.Runtime var serie = chart.GetSerie(markLine.serieIndex); if (!serie.show || !markLine.show) return; ResetTempMarkLineGroupData(markLine); - var serieColor = (Color)chart.theme.GetColor(chart.GetLegendRealShowNameIndex(serie.serieName)); + var serieColor = (Color) chart.GetItemColor(serie); if (m_TempGroupData.Count > 0) { foreach (var kv in m_TempGroupData) diff --git a/Runtime/Internal/BaseChart.API.cs b/Runtime/Internal/BaseChart.API.cs index 782a2ca6..1cba5dee 100644 --- a/Runtime/Internal/BaseChart.API.cs +++ b/Runtime/Internal/BaseChart.API.cs @@ -524,5 +524,18 @@ namespace XCharts.Runtime var background = GetChartComponent(); return theme.GetBackgroundColor(background); } + + public Color32 GetItemColor(Serie serie, SerieData serieData, bool highlight = false) + { + var colorIndex = serieData == null || !serie.useDataNameForColor + ? GetLegendRealShowNameIndex(serie.legendName) + : GetLegendRealShowNameIndex(serieData.legendName); + return SerieHelper.GetItemColor(serie, serieData, m_Theme, colorIndex, highlight); + } + + public Color32 GetItemColor(Serie serie, bool highlight = false) + { + return SerieHelper.GetItemColor(serie, null, m_Theme, serie.context.colorIndex, highlight); + } } } diff --git a/Runtime/Internal/BaseChart.cs b/Runtime/Internal/BaseChart.cs index 5cfc96a3..91c28449 100644 --- a/Runtime/Internal/BaseChart.cs +++ b/Runtime/Internal/BaseChart.cs @@ -402,7 +402,6 @@ namespace XCharts.Runtime m_ChartPivot = m_GraphPivot; m_ChartSizeDelta = m_GraphSizeDelta; m_ChartRect = m_GraphRect; - SetAllComponentDirty(); OnCoordinateChanged(); RefreshChart(); diff --git a/Runtime/Serie/Candlestick/CandlestickHandler.cs b/Runtime/Serie/Candlestick/CandlestickHandler.cs index a66f0de0..0029bb81 100644 --- a/Runtime/Serie/Candlestick/CandlestickHandler.cs +++ b/Runtime/Serie/Candlestick/CandlestickHandler.cs @@ -11,8 +11,7 @@ namespace XCharts.Runtime { public override void DrawSerie(VertexHelper vh) { - var colorIndex = chart.GetLegendRealShowNameIndex(serie.legendName); - DrawCandlestickSerie(vh, colorIndex, serie); + DrawCandlestickSerie(vh, serie); } public override void UpdateTooltipSerieParams(int dataIndex, bool showCategory, string category, @@ -31,7 +30,7 @@ namespace XCharts.Runtime title = category; - var color = chart.GetLegendRealShowNameColor(serie.serieName); + var color = SerieHelper.GetItemColor(serie, serieData, chart.theme, serie.context.colorIndex, false); var newMarker = SerieHelper.GetItemMarker(serie, serieData, marker); var newItemFormatter = SerieHelper.GetItemFormatter(serie, serieData, itemFormatter); var newNumericFormatter = SerieHelper.GetNumericFormatter(serie, serieData, numericFormatter); @@ -78,7 +77,7 @@ namespace XCharts.Runtime } } - private void DrawCandlestickSerie(VertexHelper vh, int colorIndex, Candlestick serie) + private void DrawCandlestickSerie(VertexHelper vh, Candlestick serie) { if (!serie.show) return; if (serie.animation.HasFadeOut()) return; diff --git a/Runtime/Serie/Candlestick/SimplifiedCandlestickHandler.cs b/Runtime/Serie/Candlestick/SimplifiedCandlestickHandler.cs index 94afc492..c8f31ac5 100644 --- a/Runtime/Serie/Candlestick/SimplifiedCandlestickHandler.cs +++ b/Runtime/Serie/Candlestick/SimplifiedCandlestickHandler.cs @@ -11,8 +11,7 @@ namespace XCharts.Runtime { public override void DrawSerie(VertexHelper vh) { - var colorIndex = chart.GetLegendRealShowNameIndex(serie.legendName); - DrawCandlestickSerie(vh, colorIndex, serie); + DrawCandlestickSerie(vh, serie); } public override void UpdateTooltipSerieParams(int dataIndex, bool showCategory, string category, @@ -31,7 +30,7 @@ namespace XCharts.Runtime title = category; - var color = chart.GetLegendRealShowNameColor(serie.serieName); + var color = SerieHelper.GetItemColor(serie, serieData, chart.theme, serie.context.colorIndex, false); var newMarker = SerieHelper.GetItemMarker(serie, serieData, marker); var newItemFormatter = SerieHelper.GetItemFormatter(serie, serieData, itemFormatter); var newNumericFormatter = SerieHelper.GetNumericFormatter(serie, serieData, numericFormatter); @@ -78,7 +77,7 @@ namespace XCharts.Runtime } } - private void DrawCandlestickSerie(VertexHelper vh, int colorIndex, SimplifiedCandlestick serie) + private void DrawCandlestickSerie(VertexHelper vh, SimplifiedCandlestick serie) { if (!serie.show) return; if (serie.animation.HasFadeOut()) return; diff --git a/Runtime/Serie/Heatmap/HeatmapHandler.cs b/Runtime/Serie/Heatmap/HeatmapHandler.cs index d2cc84ed..4788496a 100644 --- a/Runtime/Serie/Heatmap/HeatmapHandler.cs +++ b/Runtime/Serie/Heatmap/HeatmapHandler.cs @@ -21,8 +21,7 @@ namespace XCharts.Runtime public override void DrawSerie(VertexHelper vh) { - var colorIndex = chart.GetLegendRealShowNameIndex(serie.legendName); - DrawHeatmapSerie(vh, colorIndex, serie); + DrawHeatmapSerie(vh, serie); } public override void UpdateTooltipSerieParams(int dataIndex, bool showCategory, string category, @@ -120,7 +119,7 @@ namespace XCharts.Runtime } } - private void DrawHeatmapSerie(VertexHelper vh, int colorIndex, Heatmap serie) + private void DrawHeatmapSerie(VertexHelper vh, Heatmap serie) { if (serie.animation.HasFadeOut()) return; XAxis xAxis; diff --git a/Runtime/Serie/Parallel/ParallelHandler.cs b/Runtime/Serie/Parallel/ParallelHandler.cs index 2a8221c8..f609f7da 100644 --- a/Runtime/Serie/Parallel/ParallelHandler.cs +++ b/Runtime/Serie/Parallel/ParallelHandler.cs @@ -19,15 +19,14 @@ namespace XCharts.Runtime public override void DrawSerie(VertexHelper vh) { - var colorIndex = chart.GetLegendRealShowNameIndex(serie.legendName); - DrawParallelSerie(vh, colorIndex, serie); + DrawParallelSerie(vh, serie); } private void UpdateSerieContext() { } - private void DrawParallelSerie(VertexHelper vh, int colorIndex, Parallel serie) + private void DrawParallelSerie(VertexHelper vh, Parallel serie) { if (!serie.show) return; if (serie.animation.HasFadeOut()) return; @@ -42,7 +41,7 @@ namespace XCharts.Runtime var animationIndex = serie.animation.GetCurrIndex(); var isHorizonal = parallel.orient == Orient.Horizonal; - var lineColor = SerieHelper.GetLineColor(serie, null, chart.theme, colorIndex, false); + var lineColor = SerieHelper.GetLineColor(serie, null, chart.theme, serie.context.colorIndex, false); var lineWidth = serie.lineStyle.GetWidth(chart.theme.serie.lineWidth); float currDetailProgress = !isHorizonal diff --git a/Runtime/Serie/Radar/RadarHandler.cs b/Runtime/Serie/Radar/RadarHandler.cs index ab05e320..add6cdc2 100644 --- a/Runtime/Serie/Radar/RadarHandler.cs +++ b/Runtime/Serie/Radar/RadarHandler.cs @@ -55,7 +55,7 @@ namespace XCharts.Runtime if (serieData == null) return; - var color = chart.theme.GetColor(dataIndex); + var color = SerieHelper.GetItemColor(serie, serieData, chart.theme, dataIndex, false);; title = serieData.name; for (int i = 0; i < serieData.data.Count; i++) { @@ -221,7 +221,7 @@ namespace XCharts.Runtime var areaStyle = SerieHelper.GetAreaStyle(serie, serieData); var symbol = SerieHelper.GetSerieSymbol(serie, serieData); var isHighlight = serieData.context.highlight; - var colorIndex = chart.GetLegendRealShowNameIndex(serieData.name); + var colorIndex = chart.GetLegendRealShowNameIndex(serieData.legendName); var areaColor = SerieHelper.GetAreaColor(serie, serieData, chart.theme, colorIndex, isHighlight); var areaToColor = SerieHelper.GetAreaToColor(serie, serieData, chart.theme, colorIndex, isHighlight); var lineColor = SerieHelper.GetLineColor(serie, serieData, chart.theme, colorIndex, isHighlight); diff --git a/Runtime/Serie/Ring/RingHandler.cs b/Runtime/Serie/Ring/RingHandler.cs index 73e90f97..58ed2583 100644 --- a/Runtime/Serie/Ring/RingHandler.cs +++ b/Runtime/Serie/Ring/RingHandler.cs @@ -96,7 +96,7 @@ namespace XCharts.Runtime param.serieData = serieData; param.value = serieData.GetData(0); param.total = serieData.GetData(1); - param.color = chart.theme.GetColor(dataIndex); + param.color = SerieHelper.GetItemColor(serie, serieData, chart.theme, dataIndex, false); param.marker = SerieHelper.GetItemMarker(serie, serieData, marker); param.itemFormatter = SerieHelper.GetItemFormatter(serie, serieData, itemFormatter); param.numericFormatter = SerieHelper.GetNumericFormatter(serie, serieData, numericFormatter); ; @@ -159,8 +159,9 @@ namespace XCharts.Runtime var startDegree = GetStartAngle(serie); var toDegree = GetToAngle(serie, degree); var itemStyle = SerieHelper.GetItemStyle(serie, serieData, serieData.context.highlight); - var itemColor = SerieHelper.GetItemColor(serie, serieData, chart.theme, j, serieData.context.highlight); - var itemToColor = SerieHelper.GetItemToColor(serie, serieData, chart.theme, j, serieData.context.highlight); + var colorIndex = chart.GetLegendRealShowNameIndex(serieData.legendName); + var itemColor = SerieHelper.GetItemColor(serie, serieData, chart.theme, colorIndex, serieData.context.highlight); + var itemToColor = SerieHelper.GetItemToColor(serie, serieData, chart.theme, colorIndex, serieData.context.highlight); var outsideRadius = serie.context.outsideRadius - j * (ringWidth + serie.gap); var insideRadius = outsideRadius - ringWidth; var borderWidth = itemStyle.borderWidth; @@ -171,12 +172,7 @@ namespace XCharts.Runtime serieData.context.toAngle = serie.clockwise ? toDegree : startDegree; serieData.context.insideRadius = insideRadius; serieData.context.outsideRadius = serieData.radius > 0 ? serieData.radius : outsideRadius; - if (itemStyle.backgroundColor.a != 0) - { - UGL.DrawDoughnut(vh, serie.context.center, insideRadius, outsideRadius, itemStyle.backgroundColor, - itemStyle.backgroundColor, Color.clear, 0, 360, borderWidth, borderColor, 0, - chart.settings.cicleSmoothness, false, serie.clockwise); - } + DrawBackground(vh, serie, serieData, j, insideRadius, outsideRadius); UGL.DrawDoughnut(vh, serie.context.center, insideRadius, outsideRadius, itemColor, itemToColor, Color.clear, startDegree, toDegree, borderWidth, borderColor, 0, chart.settings.cicleSmoothness, roundCap, serie.clockwise); diff --git a/Runtime/Serie/Scatter/BaseScatterHandler.cs b/Runtime/Serie/Scatter/BaseScatterHandler.cs index 19a639e5..1a09fab4 100644 --- a/Runtime/Serie/Scatter/BaseScatterHandler.cs +++ b/Runtime/Serie/Scatter/BaseScatterHandler.cs @@ -36,7 +36,7 @@ namespace XCharts.Runtime param.category = category; param.dimension = 1; param.serieData = serieData; - param.color = chart.theme.GetColor(serie.index); + param.color = SerieHelper.GetItemColor(serie, serieData, chart.theme, serie.context.colorIndex, false); param.marker = SerieHelper.GetItemMarker(serie, serieData, marker); param.itemFormatter = SerieHelper.GetItemFormatter(serie, serieData, itemFormatter); param.numericFormatter = SerieHelper.GetNumericFormatter(serie, serieData, numericFormatter); @@ -52,15 +52,13 @@ namespace XCharts.Runtime public override void DrawSerie(VertexHelper vh) { - var colorIndex = chart.GetLegendRealShowNameIndex(serie.legendName); - if (serie.IsUseCoord()) { - DrawSingAxisScatterSerie(vh, colorIndex, serie); + DrawSingAxisScatterSerie(vh, serie); } else if (serie.IsUseCoord()) { - DrawScatterSerie(vh, colorIndex, serie); + DrawScatterSerie(vh, serie); } } @@ -107,7 +105,7 @@ namespace XCharts.Runtime } } - protected virtual void DrawScatterSerie(VertexHelper vh, int colorIndex, BaseScatter serie) + protected virtual void DrawScatterSerie(VertexHelper vh, BaseScatter serie) { if (serie.animation.HasFadeOut()) return; @@ -141,6 +139,7 @@ namespace XCharts.Runtime var interacting = false; var dataList = serie.GetDataList(xDataZoom); var isEffectScatter = serie is EffectScatter; + var colorIndex = serie.context.colorIndex; serie.containerIndex = m_Grid.index; serie.containterInstanceId = m_Grid.instanceId; @@ -218,7 +217,7 @@ namespace XCharts.Runtime } } - protected virtual void DrawSingAxisScatterSerie(VertexHelper vh, int colorIndex, BaseScatter serie) + protected virtual void DrawSingAxisScatterSerie(VertexHelper vh, BaseScatter serie) { if (serie.animation.HasFadeOut()) return; @@ -245,6 +244,7 @@ namespace XCharts.Runtime var dataChanging = false; var dataList = serie.GetDataList(xDataZoom); var isEffectScatter = serie is EffectScatter; + var colorIndex = serie.context.colorIndex; serie.containerIndex = axis.index; serie.containterInstanceId = axis.instanceId; diff --git a/Runtime/Serie/SerieHandler.cs b/Runtime/Serie/SerieHandler.cs index 81cbffa1..37541167 100644 --- a/Runtime/Serie/SerieHandler.cs +++ b/Runtime/Serie/SerieHandler.cs @@ -187,7 +187,16 @@ namespace XCharts.Runtime private void InitRoot() { - if (m_SerieRoot != null) return; + if (m_SerieRoot != null) + { + var rect = ChartHelper.GetOrAddComponent(m_SerieRoot); + rect.localPosition = Vector3.zero; + rect.sizeDelta = chart.chartSizeDelta; + rect.anchorMin = chart.chartMinAnchor; + rect.anchorMax = chart.chartMaxAnchor; + rect.pivot = chart.chartPivot; + return; + } var objName = s_SerieRootObjectName + "_" + serie.index; m_SerieRoot = ChartHelper.AddObject(objName, chart.transform, chart.chartMinAnchor, chart.chartMaxAnchor, chart.chartPivot, chart.chartSizeDelta); @@ -198,8 +207,7 @@ namespace XCharts.Runtime private void InitSerieLabel() { - if (m_SerieRoot == null) - InitRoot(); + InitRoot(); m_SerieLabelRoot = ChartHelper.AddObject(s_SerieLabelObjectName, m_SerieRoot.transform, chart.chartMinAnchor, chart.chartMaxAnchor, chart.chartPivot, chart.chartSizeDelta); m_SerieLabelRoot.hideFlags = chart.chartHideFlags; @@ -241,7 +249,8 @@ namespace XCharts.Runtime && (serieEmphasisLabel == null || !serieEmphasisLabel.show)) return false; - var dataAutoColor = (Color)chart.theme.GetColor(serie.useDataNameForColor ? serieData.index : serie.index); + var colorIndex = serie.useDataNameForColor ? serieData.index : serie.index; + var dataAutoColor = (Color)SerieHelper.GetItemColor(serie, serieData, chart.theme, colorIndex, false); var textName = ChartCached.GetSerieLabelName(s_SerieLabelObjectName, serie.index, serieData.index); var label = ChartHelper.AddChartLabel(textName, serieLabelRoot.transform, serieLabel, chart.theme.common, "", dataAutoColor, TextAnchor.MiddleCenter); @@ -270,9 +279,8 @@ namespace XCharts.Runtime } return; } - if (m_SerieRoot == null) - InitRoot(); - var dataAutoColor = (Color)chart.theme.GetColor(serie.index); + InitRoot(); + var dataAutoColor = (Color)chart.GetLegendRealShowNameColor(serie.legendName); m_EndLabel = ChartHelper.AddChartLabel(s_SerieEndLabelObjectName, m_SerieRoot.transform, serie.endLabel, chart.theme.common, "", dataAutoColor, TextAnchor.MiddleLeft); m_EndLabel.SetActive(serie.endLabel.show); @@ -281,8 +289,7 @@ namespace XCharts.Runtime private void InitSerieTitle() { - if (m_SerieRoot == null) - InitRoot(); + InitRoot(); var serieTitleRoot = ChartHelper.AddObject(s_SerieTitleObjectName, m_SerieRoot.transform, chart.chartMinAnchor, chart.chartMaxAnchor, chart.chartPivot, chart.chartSizeDelta); serieTitleRoot.hideFlags = chart.chartHideFlags; @@ -295,8 +302,7 @@ namespace XCharts.Runtime var serieData = serie.data[i]; var titleStyle = SerieHelper.GetTitleStyle(serie, serieData); if (titleStyle == null) continue; - var color = chart.GetLegendRealShowNameColor(serieData.name); - + var color = chart.GetItemColor(serie, serieData); var label = ChartHelper.AddChartLabel("title_" + i, serieTitleRoot.transform, titleStyle, chart.theme.common, serieData.name, color, TextAnchor.MiddleCenter); serieData.titleObject = label; @@ -312,8 +318,6 @@ namespace XCharts.Runtime if (!m_InitedLabel) return; - var colorIndex = chart.GetLegendRealShowNameIndex(serie.legendName); - var dataChangeDuration = serie.animation.GetUpdateAnimationDuration(); foreach (var serieData in serie.data) @@ -331,35 +335,13 @@ namespace XCharts.Runtime && serieData.context.canShowLabel && !isIgnore) { - //var value = serieData.GetData(defaultDimension); var value = serieData.GetCurrData(defaultDimension, dataChangeDuration); var total = serie.GetDataTotal(defaultDimension, serieData); + var color = chart.GetItemColor(serie, serieData); var content = string.IsNullOrEmpty(currLabel.formatter) ? ChartCached.NumberToStr(value, serieLabel.numericFormatter) : SerieLabelHelper.GetFormatterContent(serie, serieData, value, total, - currLabel, chart.theme.GetColor(colorIndex)); - - // var isInsidePosition = currLabel.position == LabelStyle.Position.Inside; - // //text color - // var textColor = chart.theme.common.textColor; - // if (!ChartHelper.IsClearColor(currLabel.textStyle.color)) - // textColor = currLabel.textStyle.color; - // else if (isInsidePosition) - // textColor = Color.white; - // if (currLabel.textStyle.autoColor && serie.useDataNameForColor) - // textColor = chart.theme.GetColor(serieData.index); - // //text rotate - // var rotate = currLabel.textStyle.rotate; - // if (currLabel.textStyle.rotate > 0 && isInsidePosition) - // { - // var currAngle = serieData.context.halfAngle; - // if (currAngle > 0) - // { - // if (currAngle > 180) rotate += 270 - currAngle; - // else rotate += -(currAngle - 90); - // } - // } - // SerieLabelHelper.ResetLabel(serieData.labelObject.text, currLabel, chart.theme, textColor, rotate); + currLabel, color); serieData.SetLabelActive(!isIgnore); serieData.labelObject.SetText(content); @@ -402,7 +384,9 @@ namespace XCharts.Runtime public virtual Vector3 GetSerieDataLabelPosition(SerieData serieData, LabelStyle label) { - return serieData.context.position; + return ChartHelper.IsZeroVector(serieData.context.labelPosition) + ? serieData.context.position + : serieData.context.labelPosition; } public virtual Vector3 GetSerieDataLabelOffset(SerieData serieData, LabelStyle label) @@ -441,7 +425,7 @@ namespace XCharts.Runtime param.serieData = serieData; param.value = serieData.GetData(1); param.total = serie.yTotal; - param.color = chart.GetLegendRealShowNameColor(serie.serieName); + param.color = SerieHelper.GetItemColor(serie, serieData, chart.theme, serie.context.colorIndex, false); param.marker = SerieHelper.GetItemMarker(serie, serieData, marker); param.itemFormatter = itemFormatter; param.numericFormatter = SerieHelper.GetNumericFormatter(serie, serieData, numericFormatter); @@ -472,6 +456,8 @@ namespace XCharts.Runtime if (TooltipHelper.IsIgnoreItemFormatter(itemFormatter)) return; + var colorIndex = chart.GetLegendRealShowNameIndex(serieData.name); + var param = serie.context.param; param.serieName = serie.serieName; param.serieIndex = serie.index; @@ -480,7 +466,7 @@ namespace XCharts.Runtime param.serieData = serieData; param.value = serieData.GetData(param.dimension); param.total = SerieHelper.GetMaxData(serie, dimension); - param.color = chart.GetLegendRealShowNameColor(serieData.name); + param.color = SerieHelper.GetItemColor(serie, serieData, chart.theme, colorIndex, false); param.marker = SerieHelper.GetItemMarker(serie, serieData, marker); param.itemFormatter = itemFormatter; param.numericFormatter = SerieHelper.GetNumericFormatter(serie, serieData, numericFormatter);