diff --git a/Documentation~/zh/changelog.md b/Documentation~/zh/changelog.md
index 3e3ad024..2b4119c1 100644
--- a/Documentation~/zh/changelog.md
+++ b/Documentation~/zh/changelog.md
@@ -79,6 +79,7 @@ slug: /changelog
## master
+* (2025.02.05) 重构`SerieSymbol`的`sizeFunction`参数
* (2025.01.23) 修复`Treemap`的`Label`不显示的问题
* (2025.01.15) 修复`Chart`在运行时动态添加`Component`异常的问题 (#339)
* (2025.01.08) 修复`TextMeshPro`关闭时残留组件影响`Text`初始化的问题
diff --git a/Runtime/Component/Child/SerieSymbl.cs b/Runtime/Component/Child/SerieSymbl.cs
index 20e76d20..f4fdb332 100644
--- a/Runtime/Component/Child/SerieSymbl.cs
+++ b/Runtime/Component/Child/SerieSymbl.cs
@@ -152,18 +152,16 @@ namespace XCharts.Runtime
///
/// 根据指定的sizeType获得标记的大小
///
- ///
- ///
- public float GetSize(List data, float themeSize)
+ public float GetSize(SerieData serieData, float themeSize)
{
switch (m_SizeType)
{
case SymbolSizeType.Custom:
return size == 0 ? themeSize : size;
case SymbolSizeType.FromData:
- if (data != null && dataIndex >= 0 && dataIndex < data.Count)
+ if (serieData != null && dataIndex >= 0 && dataIndex < serieData.data.Count)
{
- var value = (float) data[dataIndex] * m_DataScale;
+ var value = (float) serieData.data[dataIndex] * m_DataScale;
if (m_MinSize != 0 && value < m_MinSize) value = m_MinSize;
if (m_MaxSize != 0 && value > m_MaxSize) value = m_MaxSize;
return value;
@@ -173,7 +171,7 @@ namespace XCharts.Runtime
return size == 0 ? themeSize : size;
}
case SymbolSizeType.Function:
- if (data != null && sizeFunction != null) return sizeFunction(data);
+ if (sizeFunction != null) return sizeFunction(themeSize, serieData);
else return size == 0 ? themeSize : size;
default:
return size == 0 ? themeSize : size;
diff --git a/Runtime/Internal/Misc/DelegateFunction.cs b/Runtime/Internal/Misc/DelegateFunction.cs
index e60bc2da..0ec6fd59 100644
--- a/Runtime/Internal/Misc/DelegateFunction.cs
+++ b/Runtime/Internal/Misc/DelegateFunction.cs
@@ -18,9 +18,7 @@ namespace XCharts.Runtime
///
/// 获取标记大小的回调。
///
- ///
- ///
- public delegate float SymbolSizeFunction(List data);
+ public delegate float SymbolSizeFunction(float defaultSize, SerieData serieData);
public delegate void CustomDrawGaugePointerFunction(VertexHelper vh, int serieIndex, int dataIndex, float currentAngle);
///
/// DataZoom的start和end变更时的委托方法。
diff --git a/Runtime/Serie/Bar/BarHandler.PolarCoord.cs b/Runtime/Serie/Bar/BarHandler.PolarCoord.cs
index 5cb75bc1..8a2ecfdb 100644
--- a/Runtime/Serie/Bar/BarHandler.PolarCoord.cs
+++ b/Runtime/Serie/Bar/BarHandler.PolarCoord.cs
@@ -31,7 +31,7 @@ namespace XCharts.Runtime
foreach (var serieData in serie.data)
{
var symbol = SerieHelper.GetSerieSymbol(serie, serieData);
- var symbolSize = symbol.GetSize(serieData.data, chart.theme.serie.lineSymbolSize);
+ var symbolSize = symbol.GetSize(serieData, chart.theme.serie.lineSymbolSize);
serieData.context.highlight = false;
serieData.interact.SetValue(ref needAnimation1, symbolSize);
}
diff --git a/Runtime/Serie/Heatmap/HeatmapHandler.PolarCoord.cs b/Runtime/Serie/Heatmap/HeatmapHandler.PolarCoord.cs
index 649267ea..bb2b608d 100644
--- a/Runtime/Serie/Heatmap/HeatmapHandler.PolarCoord.cs
+++ b/Runtime/Serie/Heatmap/HeatmapHandler.PolarCoord.cs
@@ -31,7 +31,7 @@ namespace XCharts.Runtime
foreach (var serieData in serie.data)
{
var symbol = SerieHelper.GetSerieSymbol(serie, serieData);
- var symbolSize = symbol.GetSize(serieData.data, chart.theme.serie.lineSymbolSize);
+ var symbolSize = symbol.GetSize(serieData, chart.theme.serie.lineSymbolSize);
serieData.context.highlight = false;
serieData.interact.SetValue(ref needAnimation1, symbolSize);
}
diff --git a/Runtime/Serie/Line/LineHandler.PolarCoord.cs b/Runtime/Serie/Line/LineHandler.PolarCoord.cs
index 5a014c06..74689e7c 100644
--- a/Runtime/Serie/Line/LineHandler.PolarCoord.cs
+++ b/Runtime/Serie/Line/LineHandler.PolarCoord.cs
@@ -31,7 +31,7 @@ namespace XCharts.Runtime
foreach (var serieData in serie.data)
{
var symbol = SerieHelper.GetSerieSymbol(serie, serieData);
- var symbolSize = symbol.GetSize(serieData.data, chart.theme.serie.lineSymbolSize);
+ var symbolSize = symbol.GetSize(serieData, chart.theme.serie.lineSymbolSize);
serieData.context.highlight = false;
serieData.interact.SetValue(ref needAnimation1, symbolSize);
}
diff --git a/Runtime/Serie/Line/SimplifiedLineHandler.cs b/Runtime/Serie/Line/SimplifiedLineHandler.cs
index aedd02a6..42f522b8 100644
--- a/Runtime/Serie/Line/SimplifiedLineHandler.cs
+++ b/Runtime/Serie/Line/SimplifiedLineHandler.cs
@@ -50,7 +50,7 @@ namespace XCharts.Runtime
foreach (var serieData in serie.data)
{
var symbol = SerieHelper.GetSerieSymbol(serie, serieData);
- var symbolSize = symbol.GetSize(serieData.data, chart.theme.serie.lineSymbolSize);
+ var symbolSize = symbol.GetSize(serieData, chart.theme.serie.lineSymbolSize);
serieData.context.highlight = false;
serieData.interact.SetValue(ref needAnimation1, symbolSize);
}
diff --git a/Runtime/Serie/Radar/RadarHandler.cs b/Runtime/Serie/Radar/RadarHandler.cs
index 9d97512b..034ada5f 100644
--- a/Runtime/Serie/Radar/RadarHandler.cs
+++ b/Runtime/Serie/Radar/RadarHandler.cs
@@ -123,7 +123,7 @@ namespace XCharts.Runtime
{
var serieData = serie.data[i];
var symbol = SerieHelper.GetSerieSymbol(serie, serieData);
- var symbolSize = symbol.GetSize(serieData.data, chart.theme.serie.lineSymbolSize);
+ var symbolSize = symbol.GetSize(serieData, chart.theme.serie.lineSymbolSize);
if (m_LegendEnter)
{
serieData.context.highlight = true;
diff --git a/Runtime/Serie/SerieHelper.cs b/Runtime/Serie/SerieHelper.cs
index e64438a2..2ceb1137 100644
--- a/Runtime/Serie/SerieHelper.cs
+++ b/Runtime/Serie/SerieHelper.cs
@@ -705,7 +705,7 @@ namespace XCharts.Runtime
if (stateStyle == null)
{
var symbol = GetSerieSymbol(serie, serieData, SerieState.Normal);
- size = symbol.GetSize(serieData == null ? null : serieData.data, defaultSize);
+ size = symbol.GetSize(serieData, defaultSize);
switch (state)
{
case SerieState.Emphasis:
@@ -719,7 +719,7 @@ namespace XCharts.Runtime
else
{
var symbol = stateStyle.symbol;
- size = symbol.GetSize(serieData == null ? null : serieData.data, defaultSize);
+ size = symbol.GetSize(serieData, defaultSize);
}
if (serieData != null && checkAnimation)
{