mirror of
https://github.com/XCharts-Team/XCharts.git
synced 2026-05-20 23:40:10 +00:00
[feature][symbol] support symbol settings for StateStyle
This commit is contained in:
@@ -57,9 +57,11 @@
|
||||
|
||||
## master
|
||||
|
||||
* (2022.07.24) 增加`StateStyle`的`Symbol`用于配置状态下的标记样式
|
||||
* (2022.07.24) 去掉`SerieSymbol`的`selectedSize`配置
|
||||
* (2022.07.24) 增加`Serie`和`SerieData`的`state`设置默认状态
|
||||
* (2022.07.22) 增加`Serie`的三种状态`EmphasisStyle`,`BlurStyle`,`SelectStyle`
|
||||
* (2022.07.22) 去掉`AreaStyle`的`m_HighlightColor`和`m_HighlightToColor`配置
|
||||
* (2022.07.22) 去掉`AreaStyle`的`highlightColor`和`highlightToColor`配置
|
||||
* (2022.07.22) 去掉`Emphasis`,`EmphasisItemStyle`,`EmphasisLabelStyle`,`EmphasisLabelLine`组件
|
||||
* (2022.07.20) 文档支持用`Since`标识类从哪个版本开始支持
|
||||
* (2022.07.20) 修复`Axis`在`Value`轴时,`AxisLabel`的`showStartLabel`和`showEndLabel`参数设置不生效的问题
|
||||
|
||||
@@ -31,12 +31,10 @@ namespace XCharts.Editor
|
||||
{
|
||||
case SymbolSizeType.Custom:
|
||||
PropertyField(prop, "m_Size");
|
||||
PropertyField(prop, "m_SelectedSize");
|
||||
break;
|
||||
case SymbolSizeType.FromData:
|
||||
PropertyField(prop, "m_DataIndex");
|
||||
PropertyField(prop, "m_DataScale");
|
||||
PropertyField(prop, "m_SelectedDataScale");
|
||||
break;
|
||||
case SymbolSizeType.Function:
|
||||
break;
|
||||
|
||||
@@ -16,6 +16,7 @@ namespace XCharts.Editor
|
||||
{
|
||||
++EditorGUI.indentLevel;
|
||||
OnCustomGUI(prop);
|
||||
PropertyField(prop, "m_Symbol");
|
||||
PropertyField(prop, "m_ItemStyle");
|
||||
PropertyField(prop, "m_Label");
|
||||
PropertyField(prop, "m_LabelLine");
|
||||
|
||||
@@ -18,7 +18,6 @@ namespace XCharts.Example
|
||||
foreach (var serie in chart.series)
|
||||
{
|
||||
serie.symbol.sizeFunction = SymbolSize;
|
||||
serie.symbol.selectedSizeFunction = SymbolSelectedSize;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,10 +25,5 @@ namespace XCharts.Example
|
||||
{
|
||||
return (float) (Math.Sqrt(data[2]) / 6e2);
|
||||
}
|
||||
|
||||
float SymbolSelectedSize(List<double> data)
|
||||
{
|
||||
return (float) (Math.Sqrt(data[2]) / 5e2);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -34,12 +34,9 @@ namespace XCharts.Runtime
|
||||
public class SerieSymbol : SymbolStyle, ISerieDataComponent
|
||||
{
|
||||
[SerializeField] private SymbolSizeType m_SizeType = SymbolSizeType.Custom;
|
||||
[SerializeField] private float m_SelectedSize = 0f;
|
||||
[SerializeField] private int m_DataIndex = 1;
|
||||
[SerializeField] private float m_DataScale = 1;
|
||||
[SerializeField] private float m_SelectedDataScale = 1.5f;
|
||||
[SerializeField] private SymbolSizeFunction m_SizeFunction;
|
||||
[SerializeField] private SymbolSizeFunction m_SelectedSizeFunction;
|
||||
[SerializeField] private int m_StartIndex;
|
||||
[SerializeField] private int m_Interval;
|
||||
[SerializeField] private bool m_ForceShowLast = false;
|
||||
@@ -49,12 +46,9 @@ namespace XCharts.Runtime
|
||||
{
|
||||
base.Reset();
|
||||
m_SizeType = SymbolSizeType.Custom;
|
||||
m_SelectedSize = 0f;
|
||||
m_DataIndex = 1;
|
||||
m_DataScale = 1;
|
||||
m_SelectedDataScale = 1.5f;
|
||||
m_SizeFunction = null;
|
||||
m_SelectedSizeFunction = null;
|
||||
m_StartIndex = 0;
|
||||
m_Interval = 0;
|
||||
m_ForceShowLast = false;
|
||||
@@ -71,15 +65,6 @@ namespace XCharts.Runtime
|
||||
set { if (PropertyUtil.SetStruct(ref m_SizeType, value)) SetVerticesDirty(); }
|
||||
}
|
||||
/// <summary>
|
||||
/// the size of selected symbol.
|
||||
/// |被选中的标记的大小。
|
||||
/// </summary>
|
||||
public float selectedSize
|
||||
{
|
||||
get { return m_SelectedSize; }
|
||||
set { if (PropertyUtil.SetStruct(ref m_SelectedSize, value)) SetVerticesDirty(); }
|
||||
}
|
||||
/// <summary>
|
||||
/// whitch data index is when the sizeType assined as FromData.
|
||||
/// |当sizeType指定为FromData时,指定的数据源索引。
|
||||
/// </summary>
|
||||
@@ -98,15 +83,6 @@ namespace XCharts.Runtime
|
||||
set { if (PropertyUtil.SetStruct(ref m_DataScale, value)) SetVerticesDirty(); }
|
||||
}
|
||||
/// <summary>
|
||||
/// the scale of selected data when sizeType assined as FromData.
|
||||
/// |当sizeType指定为FromData时,指定的高亮倍数系数。
|
||||
/// </summary>
|
||||
public float selectedDataScale
|
||||
{
|
||||
get { return m_SelectedDataScale; }
|
||||
set { if (PropertyUtil.SetStruct(ref m_SelectedDataScale, value)) SetVerticesDirty(); }
|
||||
}
|
||||
/// <summary>
|
||||
/// the function of size when sizeType assined as Function.
|
||||
/// |当sizeType指定为Function时,指定的委托函数。
|
||||
/// </summary>
|
||||
@@ -116,15 +92,6 @@ namespace XCharts.Runtime
|
||||
set { if (PropertyUtil.SetClass(ref m_SizeFunction, value)) SetVerticesDirty(); }
|
||||
}
|
||||
/// <summary>
|
||||
/// the function of size when sizeType assined as Function.
|
||||
/// |当sizeType指定为Function时,指定的高亮委托函数。
|
||||
/// </summary>
|
||||
public SymbolSizeFunction selectedSizeFunction
|
||||
{
|
||||
get { return m_SelectedSizeFunction; }
|
||||
set { if (PropertyUtil.SetClass(ref m_SelectedSizeFunction, value)) SetVerticesDirty(); }
|
||||
}
|
||||
/// <summary>
|
||||
/// the index start to show symbol.
|
||||
/// |开始显示图形标记的索引。
|
||||
/// </summary>
|
||||
@@ -187,42 +154,6 @@ namespace XCharts.Runtime
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 根据sizeType获得高亮时的标记大小
|
||||
/// </summary>
|
||||
/// <param name="data"></param>
|
||||
/// <returns></returns>
|
||||
public float GetSelectedSize(List<double> data, float themeSelectedSize)
|
||||
{
|
||||
switch (m_SizeType)
|
||||
{
|
||||
case SymbolSizeType.Custom:
|
||||
|
||||
return selectedSize == 0 ? themeSelectedSize : selectedSize;
|
||||
|
||||
case SymbolSizeType.FromData:
|
||||
|
||||
if (data != null && dataIndex >= 0 && dataIndex < data.Count)
|
||||
{
|
||||
return (float) data[dataIndex] * m_SelectedDataScale;
|
||||
}
|
||||
else
|
||||
{
|
||||
return selectedSize == 0 ? themeSelectedSize : selectedSize;
|
||||
}
|
||||
|
||||
case SymbolSizeType.Function:
|
||||
|
||||
if (data != null && selectedSizeFunction != null)
|
||||
return selectedSizeFunction(data);
|
||||
else
|
||||
return selectedSize == 0 ? themeSelectedSize : selectedSize;
|
||||
|
||||
default:
|
||||
return selectedSize == 0 ? themeSelectedSize : selectedSize;
|
||||
}
|
||||
}
|
||||
|
||||
public bool ShowSymbol(int dataIndex, int dataCount)
|
||||
{
|
||||
if (!show)
|
||||
|
||||
@@ -242,9 +242,10 @@ namespace XCharts.Runtime
|
||||
private void DrawMarkLineSymbol(VertexHelper vh, SymbolStyle symbol, Serie serie, GridCoord grid, ThemeStyle theme,
|
||||
Vector3 pos, Vector3 startPos, Color32 lineColor)
|
||||
{
|
||||
var tickness = SerieHelper.GetSymbolBorder(serie, null, theme);
|
||||
var borderColor = SerieHelper.GetSymbolBorderColor(serie, null, theme);
|
||||
var cornerRadius = SerieHelper.GetSymbolCornerRadius(serie, null);
|
||||
float tickness = 0f;
|
||||
float[] cornerRadius = null;
|
||||
Color32 borderColor;
|
||||
SerieHelper.GetSymbolInfo(out borderColor, out tickness, out cornerRadius, serie, null, chart.theme);
|
||||
chart.DrawClipSymbol(vh, symbol.type, symbol.size, tickness, pos, lineColor, lineColor,
|
||||
ColorUtil.clearColor32, borderColor, symbol.gap, true, cornerRadius, grid, startPos);
|
||||
}
|
||||
|
||||
@@ -16,6 +16,7 @@ namespace XCharts.Runtime
|
||||
[SerializeField] private ItemStyle m_ItemStyle = new ItemStyle();
|
||||
[SerializeField] private LineStyle m_LineStyle = new LineStyle();
|
||||
[SerializeField] private AreaStyle m_AreaStyle = new AreaStyle();
|
||||
[SerializeField] private SerieSymbol m_Symbol = new SerieSymbol();
|
||||
|
||||
public void Reset()
|
||||
{
|
||||
@@ -23,6 +24,7 @@ namespace XCharts.Runtime
|
||||
m_Label.Reset();
|
||||
m_LabelLine.Reset();
|
||||
m_ItemStyle.Reset();
|
||||
m_Symbol.Reset();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -73,6 +75,14 @@ namespace XCharts.Runtime
|
||||
get { return m_AreaStyle; }
|
||||
set { if (PropertyUtil.SetClass(ref m_AreaStyle, value, true)) SetVerticesDirty(); }
|
||||
}
|
||||
/// <summary>
|
||||
/// 标记样式。
|
||||
/// </summary>
|
||||
public SerieSymbol symbol
|
||||
{
|
||||
get { return m_Symbol; }
|
||||
set { if (PropertyUtil.SetClass(ref m_Symbol, value, true)) SetVerticesDirty(); }
|
||||
}
|
||||
|
||||
public override bool vertsDirty
|
||||
{
|
||||
@@ -82,7 +92,8 @@ namespace XCharts.Runtime
|
||||
m_Label.vertsDirty ||
|
||||
m_ItemStyle.vertsDirty ||
|
||||
m_LineStyle.vertsDirty ||
|
||||
m_AreaStyle.vertsDirty;
|
||||
m_AreaStyle.vertsDirty ||
|
||||
m_Symbol.vertsDirty;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -102,12 +113,14 @@ namespace XCharts.Runtime
|
||||
m_ItemStyle.ClearVerticesDirty();
|
||||
m_LineStyle.ClearVerticesDirty();
|
||||
m_AreaStyle.ClearVerticesDirty();
|
||||
m_Symbol.ClearVerticesDirty();
|
||||
}
|
||||
|
||||
public override void ClearComponentDirty()
|
||||
{
|
||||
base.ClearComponentDirty();
|
||||
m_Label.ClearComponentDirty();
|
||||
m_Symbol.ClearComponentDirty();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -836,7 +836,7 @@ namespace XCharts.Runtime
|
||||
}
|
||||
}
|
||||
|
||||
public static Color32 GetHighlightColor(Color32 color, float rate = 0.8f)
|
||||
public static Color32 GetHighlightColor(Color32 color, float rate = 1.2f)
|
||||
{
|
||||
var newColor = color;
|
||||
newColor.r = (byte) (color.r * rate);
|
||||
@@ -852,7 +852,7 @@ namespace XCharts.Runtime
|
||||
return newColor;
|
||||
}
|
||||
|
||||
public static Color32 GetSelectColor(Color32 color, float rate = 0.7f)
|
||||
public static Color32 GetSelectColor(Color32 color, float rate = 0.8f)
|
||||
{
|
||||
var newColor = color;
|
||||
newColor.r = (byte) (color.r * rate);
|
||||
|
||||
@@ -56,70 +56,62 @@ namespace XCharts.Runtime
|
||||
}
|
||||
m_LastCheckContextFlag = needCheck;
|
||||
var themeSymbolSize = chart.theme.serie.lineSymbolSize;
|
||||
var themeSymbolSelectedSize = chart.theme.serie.lineSymbolSelectedSize;
|
||||
var needInteract = false;
|
||||
if (m_LegendEnter)
|
||||
{
|
||||
serie.interact.SetValue(ref needInteract, lineWidth, true, chart.theme.serie.selectedRate);
|
||||
for (int i = 0; i < serie.dataCount; i++)
|
||||
{
|
||||
var serieData = serie.data[i];
|
||||
var symbol = SerieHelper.GetSerieSymbol(serie, serieData);
|
||||
var symbolSelectedSize = symbol.GetSelectedSize(serieData.data, themeSymbolSelectedSize);
|
||||
|
||||
serieData.context.highlight = true;
|
||||
serieData.interact.SetValue(ref needInteract, symbolSelectedSize);
|
||||
}
|
||||
}
|
||||
else if (serie.context.isTriggerByAxis)
|
||||
{
|
||||
serie.context.pointerEnter = true;
|
||||
serie.interact.SetValue(ref needInteract, lineWidth, true, chart.theme.serie.selectedRate);
|
||||
for (int i = 0; i < serie.dataCount; i++)
|
||||
{
|
||||
var serieData = serie.data[i];
|
||||
var symbol = SerieHelper.GetSerieSymbol(serie, serieData);
|
||||
var symbolSize = symbol.GetSize(serieData.data, themeSymbolSize);
|
||||
var symbolSelectedSize = symbol.GetSelectedSize(serieData.data, themeSymbolSelectedSize);
|
||||
|
||||
if (i == serie.context.pointerItemDataIndex)
|
||||
var size = SerieHelper.GetSysmbolSize(serie, serieData, chart.theme, themeSymbolSize, SerieState.Emphasis);
|
||||
serieData.context.highlight = true;
|
||||
serieData.interact.SetValue(ref needInteract, size);
|
||||
}
|
||||
}
|
||||
else if (serie.context.isTriggerByAxis)
|
||||
{
|
||||
serie.context.pointerEnter = false;
|
||||
serie.interact.SetValue(ref needInteract, lineWidth, true, chart.theme.serie.selectedRate);
|
||||
for (int i = 0; i < serie.dataCount; i++)
|
||||
{
|
||||
var serieData = serie.data[i];
|
||||
var highlight = i == serie.context.pointerItemDataIndex;
|
||||
serieData.context.highlight = highlight;
|
||||
var state = SerieHelper.GetSerieState(serie, serieData, true);
|
||||
var size = SerieHelper.GetSysmbolSize(serie, serieData, chart.theme, themeSymbolSize, state);
|
||||
serieData.interact.SetValue(ref needInteract, size);
|
||||
if (highlight)
|
||||
{
|
||||
serieData.context.highlight = true;
|
||||
serieData.interact.SetValue(ref needInteract, symbolSelectedSize);
|
||||
}
|
||||
else
|
||||
{
|
||||
serieData.context.highlight = false;
|
||||
serieData.interact.SetValue(ref needInteract, symbolSize);
|
||||
serie.context.pointerEnter = true;
|
||||
serie.context.pointerItemDataIndex = i;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
var lastIndex = serie.context.pointerItemDataIndex;
|
||||
serie.context.pointerItemDataIndex = -1;
|
||||
serie.context.pointerEnter = false;
|
||||
for (int i = 0; i < serie.dataCount; i++)
|
||||
{
|
||||
var serieData = serie.data[i];
|
||||
serieData.index = i;
|
||||
var dist = Vector3.Distance(chart.pointerPos, serieData.context.position);
|
||||
var symbol = SerieHelper.GetSerieSymbol(serie, serieData);
|
||||
var symbolSize = symbol.GetSize(serieData.data, themeSymbolSize);
|
||||
var symbolSelectedSize = symbol.GetSelectedSize(serieData.data, themeSymbolSelectedSize);
|
||||
if (dist <= symbolSelectedSize)
|
||||
var size = SerieHelper.GetSysmbolSize(serie, serieData, chart.theme, themeSymbolSize);
|
||||
var highlight = dist <= size;
|
||||
serieData.context.highlight = highlight;
|
||||
var state = SerieHelper.GetSerieState(serie, serieData, true);
|
||||
size = SerieHelper.GetSysmbolSize(serie, serieData, chart.theme, themeSymbolSize, state);
|
||||
serieData.interact.SetValue(ref needInteract, size);
|
||||
if (highlight)
|
||||
{
|
||||
serie.context.pointerItemDataIndex = serieData.index;
|
||||
serie.context.pointerEnter = true;
|
||||
serie.context.pointerItemDataIndex = serieData.index;
|
||||
serie.interact.SetValue(ref needInteract, lineWidth, true);
|
||||
serieData.context.highlight = true;
|
||||
serieData.interact.SetValue(ref needInteract, symbolSelectedSize);
|
||||
}
|
||||
else
|
||||
{
|
||||
serieData.context.highlight = false;
|
||||
serieData.interact.SetValue(ref needInteract, symbolSize);
|
||||
}
|
||||
}
|
||||
if (lastIndex != serie.context.pointerItemDataIndex)
|
||||
needInteract = true;
|
||||
}
|
||||
if (needInteract)
|
||||
{
|
||||
@@ -157,8 +149,8 @@ namespace XCharts.Runtime
|
||||
continue;
|
||||
if (serieData.context.isClip)
|
||||
continue;
|
||||
|
||||
var symbol = SerieHelper.GetSerieSymbol(serie, serieData);
|
||||
var state = SerieHelper.GetSerieState(serie, serieData, true);
|
||||
var symbol = SerieHelper.GetSerieSymbol(serie, serieData, state);
|
||||
|
||||
if (!symbol.show || !symbol.ShowSymbol(i, count))
|
||||
continue;
|
||||
@@ -175,30 +167,24 @@ namespace XCharts.Runtime
|
||||
if (ChartHelper.IsIngore(pos))
|
||||
continue;
|
||||
|
||||
var highlight = serie.data[i].context.highlight || serie.highlight;
|
||||
var symbolSize = highlight ?
|
||||
theme.serie.lineSymbolSelectedSize :
|
||||
theme.serie.lineSymbolSize;
|
||||
var symbolSize = 0f;
|
||||
if (!serieData.interact.TryGetValue(ref symbolSize, ref interacting))
|
||||
{
|
||||
symbolSize = highlight ?
|
||||
symbol.GetSelectedSize(serieData.data, symbolSize) :
|
||||
symbol.GetSize(serieData.data, symbolSize);
|
||||
symbolSize = SerieHelper.GetSysmbolSize(serie, serieData, chart.theme, chart.theme.serie.lineSymbolSize, state);
|
||||
serieData.interact.SetValue(ref interacting, symbolSize);
|
||||
symbolSize = serie.animation.GetSysmbolSize(symbolSize);
|
||||
}
|
||||
var state = SerieHelper.GetSerieState(serie, serieData);
|
||||
Color32 symbolColor, symbolToColor,symbolEmptyColor;
|
||||
SerieHelper.GetItemColor(out symbolColor, out symbolToColor,out symbolEmptyColor, serie, serieData, theme, serie.index, state);
|
||||
|
||||
float symbolBorder = 0f;
|
||||
float[] cornerRadius = null;
|
||||
Color32 symbolColor, symbolToColor, symbolEmptyColor, borderColor;
|
||||
SerieHelper.GetItemColor(out symbolColor, out symbolToColor, out symbolEmptyColor, serie, serieData, theme, serie.index);
|
||||
SerieHelper.GetSymbolInfo(out borderColor, out symbolBorder, out cornerRadius, serie, null, chart.theme, state);
|
||||
if (isVisualMapGradient)
|
||||
{
|
||||
symbolColor = VisualMapHelper.GetLineGradientColor(visualMap, pos, m_SerieGrid, axis, relativedAxis, symbolColor);
|
||||
symbolToColor = symbolColor;
|
||||
}
|
||||
var symbolBorder = SerieHelper.GetSymbolBorder(serie, serieData, theme, state);
|
||||
var borderColor = SerieHelper.GetSymbolBorderColor(serie, serieData, theme, state);
|
||||
var cornerRadius = SerieHelper.GetSymbolCornerRadius(serie, serieData, state);
|
||||
chart.DrawClipSymbol(vh, symbol.type, symbolSize, symbolBorder, pos,
|
||||
symbolColor, symbolToColor, symbolEmptyColor, borderColor, symbol.gap, clip, cornerRadius, m_SerieGrid,
|
||||
i > 0 ? serie.context.dataPoints[i - 1] : m_SerieGrid.context.position);
|
||||
|
||||
@@ -47,21 +47,19 @@ namespace XCharts.Runtime
|
||||
}
|
||||
m_LastCheckContextFlag = needCheck;
|
||||
var themeSymbolSize = chart.theme.serie.lineSymbolSize;
|
||||
var themeSymbolSelectedSize = chart.theme.serie.lineSymbolSelectedSize;
|
||||
lineWidth = serie.lineStyle.GetWidth(chart.theme.serie.lineWidth);
|
||||
|
||||
var needInteract = false;
|
||||
if (m_LegendEnter)
|
||||
{
|
||||
serie.context.pointerEnter = true;
|
||||
serie.interact.SetValue(ref needInteract, lineWidth, true, chart.theme.serie.selectedRate);
|
||||
for (int i = 0; i < serie.dataCount; i++)
|
||||
{
|
||||
var serieData = serie.data[i];
|
||||
var symbol = SerieHelper.GetSerieSymbol(serie, serieData);
|
||||
var symbolSelectedSize = symbol.GetSelectedSize(serieData.data, themeSymbolSelectedSize);
|
||||
|
||||
var size = SerieHelper.GetSysmbolSize(serie, serieData, chart.theme, themeSymbolSize, SerieState.Emphasis);
|
||||
serieData.context.highlight = true;
|
||||
serieData.interact.SetValue(ref needInteract, symbolSelectedSize);
|
||||
serieData.interact.SetValue(ref needInteract, size);
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -205,27 +203,23 @@ namespace XCharts.Runtime
|
||||
continue;
|
||||
|
||||
var count = serie.dataCount;
|
||||
Color32 symbolColor, symbolToColor,symbolEmptyColor;
|
||||
float symbolBorder = 0f;
|
||||
float[] cornerRadius = null;
|
||||
Color32 symbolColor, symbolToColor, symbolEmptyColor, borderColor;
|
||||
for (int i = 0; i < count; i++)
|
||||
{
|
||||
var serieData = serie.GetSerieData(i);
|
||||
var symbol = SerieHelper.GetSerieSymbol(serie, serieData);
|
||||
var state = SerieHelper.GetSerieState(serie, serieData, true);
|
||||
var symbol = SerieHelper.GetSerieSymbol(serie, serieData, state);
|
||||
if (ChartHelper.IsIngore(serieData.context.position))
|
||||
continue;
|
||||
|
||||
bool highlight = serieData.context.highlight || serie.highlight;
|
||||
if ((!symbol.show || !symbol.ShowSymbol(i, count) || serie.IsPerformanceMode()) &&
|
||||
!serieData.context.highlight)
|
||||
if (!symbol.show || !symbol.ShowSymbol(i, count))
|
||||
continue;
|
||||
|
||||
var symbolSize = highlight ?
|
||||
symbol.GetSelectedSize(serieData.data, chart.theme.serie.lineSymbolSize) :
|
||||
symbol.GetSize(serieData.data, chart.theme.serie.lineSymbolSize);
|
||||
var state = SerieHelper.GetSerieState(serie, serieData);
|
||||
SerieHelper.GetItemColor(out symbolColor, out symbolToColor,out symbolEmptyColor, serie, serieData, chart.theme, n);
|
||||
var symbolBorder = SerieHelper.GetSymbolBorder(serie, serieData, chart.theme, state);
|
||||
var borderColor = SerieHelper.GetSymbolBorderColor(serie, serieData, chart.theme, state);
|
||||
var cornerRadius = SerieHelper.GetSymbolCornerRadius(serie, serieData, state);
|
||||
var symbolSize = SerieHelper.GetSysmbolSize(serie, serieData, chart.theme, chart.theme.serie.lineSymbolSize, state);
|
||||
SerieHelper.GetItemColor(out symbolColor, out symbolToColor, out symbolEmptyColor, serie, serieData, chart.theme, n);
|
||||
SerieHelper.GetSymbolInfo(out borderColor, out symbolBorder, out cornerRadius, serie, null, chart.theme, state);
|
||||
|
||||
symbolSize = serie.animation.GetSysmbolSize(symbolSize);
|
||||
chart.DrawSymbol(vh, symbol.type, symbolSize, symbolBorder, serieData.context.position,
|
||||
|
||||
@@ -261,8 +261,6 @@ namespace XCharts.Runtime
|
||||
var isY = axis is YAxis;
|
||||
var isVisualMapGradient = VisualMapHelper.IsNeedLineGradient(visualMap);
|
||||
var isLineStyleGradient = serie.lineStyle.IsNeedGradient();
|
||||
|
||||
//var highlight = serie.highlight || serie.context.pointerEnter;
|
||||
var lineColor = SerieHelper.GetLineColor(serie, null, theme, serie.context.colorIndex);
|
||||
|
||||
var lastDataIsIgnore = datas[0].isIgnoreBreak;
|
||||
|
||||
@@ -73,15 +73,14 @@ namespace XCharts.Runtime
|
||||
var needInteract = false;
|
||||
if (m_LegendEnter)
|
||||
{
|
||||
serie.context.pointerEnter = true;
|
||||
serie.interact.SetValue(ref needInteract, lineWidth, true, chart.theme.serie.selectedRate);
|
||||
for (int i = 0; i < serie.dataCount; i++)
|
||||
{
|
||||
var serieData = serie.data[i];
|
||||
var symbol = SerieHelper.GetSerieSymbol(serie, serieData);
|
||||
var symbolSelectedSize = symbol.GetSelectedSize(serieData.data, themeSymbolSelectedSize);
|
||||
|
||||
var size = SerieHelper.GetSysmbolSize(serie, serieData, chart.theme, themeSymbolSize, SerieState.Emphasis);
|
||||
serieData.context.highlight = true;
|
||||
serieData.interact.SetValue(ref needInteract, symbolSelectedSize);
|
||||
serieData.interact.SetValue(ref needInteract, size);
|
||||
}
|
||||
}
|
||||
else if (serie.context.isTriggerByAxis)
|
||||
@@ -91,47 +90,42 @@ namespace XCharts.Runtime
|
||||
for (int i = 0; i < serie.dataCount; i++)
|
||||
{
|
||||
var serieData = serie.data[i];
|
||||
var symbol = SerieHelper.GetSerieSymbol(serie, serieData);
|
||||
var symbolSize = symbol.GetSize(serieData.data, themeSymbolSize);
|
||||
var symbolSelectedSize = symbol.GetSelectedSize(serieData.data, themeSymbolSelectedSize);
|
||||
|
||||
if (i == serie.context.pointerItemDataIndex)
|
||||
var highlight = i == serie.context.pointerItemDataIndex;
|
||||
serieData.context.highlight = highlight;
|
||||
var state = SerieHelper.GetSerieState(serie, serieData, true);
|
||||
var size = SerieHelper.GetSysmbolSize(serie, serieData, chart.theme, themeSymbolSize, state);
|
||||
serieData.interact.SetValue(ref needInteract, size);
|
||||
if (highlight)
|
||||
{
|
||||
serieData.context.highlight = true;
|
||||
serieData.interact.SetValue(ref needInteract, symbolSelectedSize);
|
||||
}
|
||||
else
|
||||
{
|
||||
serieData.context.highlight = false;
|
||||
serieData.interact.SetValue(ref needInteract, symbolSize);
|
||||
serie.context.pointerEnter = true;
|
||||
serie.context.pointerItemDataIndex = i;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
var lastIndex = serie.context.pointerItemDataIndex;
|
||||
serie.context.pointerItemDataIndex = -1;
|
||||
serie.context.pointerEnter = false;
|
||||
foreach (var serieData in serie.data)
|
||||
for (int i = 0; i < serie.dataCount; i++)
|
||||
{
|
||||
var serieData = serie.data[i];
|
||||
var dist = Vector3.Distance(chart.pointerPos, serieData.context.position);
|
||||
var symbol = SerieHelper.GetSerieSymbol(serie, serieData);
|
||||
var symbolSize = symbol.GetSize(serieData.data, themeSymbolSize);
|
||||
var symbolSelectedSize = symbol.GetSelectedSize(serieData.data, themeSymbolSelectedSize);
|
||||
|
||||
if (dist <= symbolSelectedSize)
|
||||
var size = SerieHelper.GetSysmbolSize(serie, serieData, chart.theme, themeSymbolSize);
|
||||
var highlight = dist <= size;
|
||||
serieData.context.highlight = highlight;
|
||||
var state = SerieHelper.GetSerieState(serie, serieData, true);
|
||||
size = SerieHelper.GetSysmbolSize(serie, serieData, chart.theme, themeSymbolSize, state);
|
||||
serieData.interact.SetValue(ref needInteract, size);
|
||||
if (highlight)
|
||||
{
|
||||
serie.context.pointerItemDataIndex = serieData.index;
|
||||
serie.context.pointerEnter = true;
|
||||
serie.context.pointerItemDataIndex = serieData.index;
|
||||
serie.interact.SetValue(ref needInteract, lineWidth, true);
|
||||
serieData.context.highlight = true;
|
||||
serieData.interact.SetValue(ref needInteract, symbolSelectedSize);
|
||||
}
|
||||
else
|
||||
{
|
||||
serieData.context.highlight = false;
|
||||
serieData.interact.SetValue(ref needInteract, symbolSize);
|
||||
}
|
||||
}
|
||||
if (lastIndex != serie.context.pointerItemDataIndex)
|
||||
needInteract = true;
|
||||
}
|
||||
if (needInteract)
|
||||
{
|
||||
|
||||
@@ -224,10 +224,10 @@ namespace XCharts.Runtime
|
||||
{
|
||||
continue;
|
||||
}
|
||||
var serieState = SerieHelper.GetSerieState(serie, serieData, true);
|
||||
var lineStyle = SerieHelper.GetLineStyle(serie, serieData);
|
||||
var symbol = SerieHelper.GetSerieSymbol(serie, serieData);
|
||||
var isHighlight = serieData.context.highlight;
|
||||
var serieState = SerieHelper.GetSerieState(serie, serieData);
|
||||
var symbol = SerieHelper.GetSerieSymbol(serie, serieData, serieState);
|
||||
|
||||
var colorIndex = chart.GetLegendRealShowNameIndex(serieData.legendName);
|
||||
var showArea = SerieHelper.GetAreaColor(out areaColor, out areaToColor, serie, serieData, chart.theme, colorIndex);
|
||||
var lineColor = SerieHelper.GetLineColor(serie, serieData, chart.theme, colorIndex);
|
||||
@@ -300,25 +300,21 @@ namespace XCharts.Runtime
|
||||
|
||||
if (symbol.show && symbol.type != SymbolType.None)
|
||||
{
|
||||
float symbolBorder = 0f;
|
||||
float[] cornerRadius = null;
|
||||
Color32 symbolColor, symbolToColor, symbolEmptyColor, borderColor;
|
||||
for (int m = 0; m < serieData.context.dataPoints.Count; m++)
|
||||
{
|
||||
var point = serieData.context.dataPoints[m];
|
||||
var symbolSize = isHighlight ?
|
||||
symbol.GetSelectedSize(null, chart.theme.serie.lineSymbolSelectedSize) :
|
||||
symbol.GetSize(null, chart.theme.serie.lineSymbolSize);
|
||||
var symbolSize = 0f;
|
||||
if (!serieData.interact.TryGetValue(ref symbolSize, ref interacting))
|
||||
{
|
||||
symbolSize = isHighlight ?
|
||||
symbol.GetSelectedSize(serieData.data, symbolSize) :
|
||||
symbol.GetSize(serieData.data, symbolSize);
|
||||
symbolSize = SerieHelper.GetSysmbolSize(serie, serieData, chart.theme, chart.theme.serie.lineSymbolSize, serieState);
|
||||
serieData.interact.SetValue(ref interacting, symbolSize);
|
||||
symbolSize = serie.animation.GetSysmbolSize(symbolSize);
|
||||
}
|
||||
Color32 symbolColor, symbolToColor, symbolEmptyColor;
|
||||
SerieHelper.GetItemColor(out symbolColor, out symbolToColor, out symbolEmptyColor, serie, serieData, chart.theme, j, serieState);
|
||||
var symbolBorder = SerieHelper.GetSymbolBorder(serie, serieData, chart.theme, serieState);
|
||||
var borderColor = SerieHelper.GetSymbolBorderColor(serie, serieData, chart.theme, serieState);
|
||||
var cornerRadius = SerieHelper.GetSymbolCornerRadius(serie, serieData, serieState);
|
||||
SerieHelper.GetSymbolInfo(out borderColor, out symbolBorder, out cornerRadius, serie, serieData, chart.theme, serieState);
|
||||
chart.DrawSymbol(vh, symbol.type, symbolSize, symbolBorder, point, symbolColor,
|
||||
symbolToColor, symbolEmptyColor, borderColor, symbol.gap, cornerRadius);
|
||||
}
|
||||
@@ -451,20 +447,18 @@ namespace XCharts.Runtime
|
||||
}
|
||||
if (serie.symbol.show && serie.symbol.type != SymbolType.None)
|
||||
{
|
||||
float symbolBorder = 0f;
|
||||
float[] cornerRadius = null;
|
||||
Color32 symbolColor, symbolToColor, symbolEmptyColor, borderColor;
|
||||
for (int j = 0; j < serie.data.Count; j++)
|
||||
{
|
||||
var serieData = serie.data[j];
|
||||
if (!serieData.show) continue;
|
||||
var state = SerieHelper.GetSerieState(serie, serieData);
|
||||
var serieIndex = serieData.index;
|
||||
var symbolSize = state == SerieState.Emphasis ?
|
||||
serie.symbol.GetSelectedSize(serieData.data, chart.theme.serie.lineSymbolSelectedSize) :
|
||||
serie.symbol.GetSize(serieData.data, chart.theme.serie.lineSymbolSize);
|
||||
Color32 symbolColor, symbolToColor,symbolEmptyColor;
|
||||
SerieHelper.GetItemColor(out symbolColor, out symbolToColor,out symbolEmptyColor, serie, serieData, chart.theme, serieIndex, state);
|
||||
var symbolBorder = SerieHelper.GetSymbolBorder(serie, serieData, chart.theme, state);
|
||||
var borderColor = SerieHelper.GetSymbolBorderColor(serie, serieData, chart.theme, state);
|
||||
var cornerRadius = SerieHelper.GetSymbolCornerRadius(serie, serieData, state);
|
||||
var symbolSize = SerieHelper.GetSysmbolSize(serie, serieData, chart.theme, chart.theme.serie.lineSymbolSize, state);
|
||||
SerieHelper.GetItemColor(out symbolColor, out symbolToColor, out symbolEmptyColor, serie, serieData, chart.theme, serieIndex, state);
|
||||
SerieHelper.GetSymbolInfo(out borderColor, out symbolBorder, out cornerRadius, serie, serieData, chart.theme, state);
|
||||
if (!radar.IsInIndicatorRange(j, serieData.GetData(1)))
|
||||
{
|
||||
symbolColor = radar.outRangeColor;
|
||||
|
||||
@@ -82,22 +82,21 @@ namespace XCharts.Runtime
|
||||
for (int i = serie.dataCount - 1; i >= 0; i--)
|
||||
{
|
||||
var serieData = serie.data[i];
|
||||
var symbol = SerieHelper.GetSerieSymbol(serie, serieData);
|
||||
var symbolSize = symbol.GetSize(serieData.data, themeSymbolSize);
|
||||
var symbolSelectedSize = symbol.GetSelectedSize(serieData.data, themeSymbolSelectedSize);
|
||||
var symbolSize = SerieHelper.GetSysmbolSize(serie, serieData, chart.theme, themeSymbolSize);
|
||||
if (m_LegendEnter ||
|
||||
(!needHideAll && Vector3.Distance(serieData.context.position, chart.pointerPos) <= symbolSize))
|
||||
{
|
||||
serie.context.pointerItemDataIndex = i;
|
||||
serie.context.pointerEnter = true;
|
||||
serieData.context.highlight = true;
|
||||
serieData.interact.SetValue(ref needInteract, symbolSelectedSize);
|
||||
}
|
||||
else
|
||||
{
|
||||
serieData.context.highlight = false;
|
||||
serieData.interact.SetValue(ref needInteract, symbolSize);
|
||||
}
|
||||
var state = SerieHelper.GetSerieState(serie, serieData, true);
|
||||
symbolSize = SerieHelper.GetSysmbolSize(serie, serieData, chart.theme, themeSymbolSize, state);
|
||||
serieData.interact.SetValue(ref needInteract, symbolSize);
|
||||
}
|
||||
if (needInteract)
|
||||
{
|
||||
@@ -144,19 +143,19 @@ namespace XCharts.Runtime
|
||||
serie.containerIndex = m_Grid.index;
|
||||
serie.containterInstanceId = m_Grid.instanceId;
|
||||
|
||||
float symbolBorder = 0f;
|
||||
float[] cornerRadius = null;
|
||||
Color32 color, toColor, emptyColor, borderColor;
|
||||
foreach (var serieData in dataList)
|
||||
{
|
||||
var symbol = SerieHelper.GetSerieSymbol(serie, serieData);
|
||||
if (!symbol.ShowSymbol(serieData.index, maxCount))
|
||||
continue;
|
||||
|
||||
var highlight = serie.highlight || serieData.context.highlight;
|
||||
var state = SerieHelper.GetSerieState(serie, serieData);
|
||||
Color32 color, toColor, emptyColor;
|
||||
var state = SerieHelper.GetSerieState(serie, serieData, true);
|
||||
|
||||
SerieHelper.GetItemColor(out color, out toColor, out emptyColor, serie, serieData, chart.theme, colorIndex, state);
|
||||
var symbolBorder = SerieHelper.GetSymbolBorder(serie, serieData, theme, state);
|
||||
var borderColor = SerieHelper.GetSymbolBorderColor(serie, serieData, theme, state);
|
||||
var cornerRadius = SerieHelper.GetSymbolCornerRadius(serie, serieData, state);
|
||||
SerieHelper.GetSymbolInfo(out borderColor, out symbolBorder, out cornerRadius, serie, serieData, chart.theme, state);
|
||||
double xValue = serieData.GetCurrData(0, dataChangeDuration, xAxis.inverse);
|
||||
double yValue = serieData.GetCurrData(1, dataChangeDuration, yAxis.inverse);
|
||||
|
||||
@@ -175,14 +174,10 @@ namespace XCharts.Runtime
|
||||
serie.context.dataPoints.Add(pos);
|
||||
serieData.context.position = pos;
|
||||
var datas = serieData.data;
|
||||
var symbolSize = serie.highlight || serieData.context.highlight ?
|
||||
theme.serie.scatterSymbolSelectedSize :
|
||||
theme.serie.scatterSymbolSize;
|
||||
var symbolSize = 0f;
|
||||
if (!serieData.interact.TryGetValue(ref symbolSize, ref interacting))
|
||||
{
|
||||
symbolSize = highlight ?
|
||||
symbol.GetSelectedSize(serieData.data, symbolSize) :
|
||||
symbol.GetSize(serieData.data, symbolSize);
|
||||
symbolSize = SerieHelper.GetSysmbolSize(serie, serieData, chart.theme, chart.theme.serie.scatterSymbolSize, state);
|
||||
serieData.interact.SetValue(ref interacting, symbolSize);
|
||||
}
|
||||
|
||||
@@ -249,24 +244,25 @@ namespace XCharts.Runtime
|
||||
serie.containerIndex = axis.index;
|
||||
serie.containterInstanceId = axis.instanceId;
|
||||
|
||||
float symbolBorder = 0f;
|
||||
float[] cornerRadius = null;
|
||||
Color32 color, toColor, emptyColor, borderColor;
|
||||
foreach (var serieData in dataList)
|
||||
{
|
||||
var symbol = SerieHelper.GetSerieSymbol(serie, serieData);
|
||||
if (!symbol.ShowSymbol(serieData.index, maxCount))
|
||||
continue;
|
||||
|
||||
var state = SerieHelper.GetSerieState(serie, serieData);
|
||||
Color32 color, toColor, emptyColor;
|
||||
var state = SerieHelper.GetSerieState(serie, serieData, true);
|
||||
SerieHelper.GetItemColor(out color, out toColor, out emptyColor, serie, serieData, chart.theme, colorIndex, state);
|
||||
var symbolBorder = SerieHelper.GetSymbolBorder(serie, serieData, theme, state);
|
||||
var borderColor = SerieHelper.GetSymbolBorderColor(serie, serieData, theme, state);
|
||||
var cornerRadius = SerieHelper.GetSymbolCornerRadius(serie, serieData, state);
|
||||
var xValue = serieData.GetCurrData(0, dataChangeDuration, axis.inverse);
|
||||
SerieHelper.GetSymbolInfo(out borderColor, out symbolBorder, out cornerRadius, serie, serieData, chart.theme, state);
|
||||
|
||||
if (serieData.IsDataChanged())
|
||||
dataChanging = true;
|
||||
|
||||
var pos = Vector3.zero;
|
||||
var xValue = serieData.GetCurrData(0, dataChangeDuration, axis.inverse);
|
||||
|
||||
if (axis.orient == Orient.Horizonal)
|
||||
{
|
||||
var xDataHig = GetDataHig(axis, xValue, axis.context.width);
|
||||
@@ -283,11 +279,7 @@ namespace XCharts.Runtime
|
||||
serieData.context.position = pos;
|
||||
|
||||
var datas = serieData.data;
|
||||
var symbolSize = 0f;
|
||||
if (serie.highlight || serieData.context.highlight)
|
||||
symbolSize = symbol.GetSelectedSize(datas, theme.serie.scatterSymbolSelectedSize);
|
||||
else
|
||||
symbolSize = symbol.GetSize(datas, theme.serie.scatterSymbolSize);
|
||||
var symbolSize = SerieHelper.GetSysmbolSize(serie, serieData, chart.theme, chart.theme.serie.scatterSymbolSize, state);
|
||||
symbolSize *= rate;
|
||||
|
||||
if (isEffectScatter)
|
||||
|
||||
@@ -16,6 +16,7 @@ namespace XCharts.Runtime
|
||||
{
|
||||
"m_Id",
|
||||
"m_ParentId",
|
||||
"m_State",
|
||||
"m_Ignore",
|
||||
"m_Selected",
|
||||
"m_Radius",
|
||||
|
||||
@@ -248,13 +248,20 @@ namespace XCharts.Runtime
|
||||
return serie.state;
|
||||
}
|
||||
|
||||
public static SerieState GetSerieState(Serie serie, SerieData serieData)
|
||||
public static SerieState GetSerieState(SerieData serieData)
|
||||
{
|
||||
if (serieData == null || serieData.state == SerieState.Auto) return GetSerieState(serie);
|
||||
if (serieData.context.highlight) return SerieState.Emphasis;
|
||||
return serieData.state;
|
||||
}
|
||||
|
||||
public static SerieState GetSerieState(Serie serie, SerieData serieData, bool defaultSerieState = false)
|
||||
{
|
||||
if (serieData == null) return GetSerieState(serie);
|
||||
if (serieData.context.highlight) return SerieState.Emphasis;
|
||||
if (serieData.state == SerieState.Auto) return defaultSerieState?serie.state : GetSerieState(serie);
|
||||
return serieData.state;
|
||||
}
|
||||
|
||||
public static Color32 GetItemBackgroundColor(Serie serie, SerieData serieData, ThemeStyle theme, int index,
|
||||
SerieState state = SerieState.Auto, bool useDefault = false)
|
||||
{
|
||||
@@ -443,10 +450,18 @@ namespace XCharts.Runtime
|
||||
return stateStyle == null?serie.labelLine : stateStyle.labelLine;
|
||||
}
|
||||
|
||||
public static SerieSymbol GetSerieSymbol(Serie serie, SerieData serieData)
|
||||
public static SerieSymbol GetSerieSymbol(Serie serie, SerieData serieData, SerieState state = SerieState.Auto)
|
||||
{
|
||||
if (!serie.IsPerformanceMode() && serieData.symbol != null) return serieData.symbol;
|
||||
else return serie.symbol;
|
||||
if (state == SerieState.Auto) state = GetSerieState(serie, serieData);
|
||||
if (state == SerieState.Normal)
|
||||
{
|
||||
return serieData != null && serieData.symbol != null? serieData.symbol : serie.symbol;
|
||||
}
|
||||
else
|
||||
{
|
||||
var stateStyle = GetStateStyle(serie, serieData, state);
|
||||
return stateStyle == null?serie.symbol : stateStyle.symbol;
|
||||
}
|
||||
}
|
||||
|
||||
public static LineStyle GetLineStyle(Serie serie, SerieData serieData)
|
||||
@@ -579,29 +594,73 @@ namespace XCharts.Runtime
|
||||
{
|
||||
if (!ChartHelper.IsClearColor(checkColor)) color = checkColor;
|
||||
else if (!ChartHelper.IsClearColor(itemColor)) color = itemColor;
|
||||
if (ChartHelper.IsClearColor(color)) color = theme.GetColor(colorIndex);
|
||||
if (ChartHelper.IsClearColor(color) && colorIndex >= 0) color = theme.GetColor(colorIndex);
|
||||
if (setOpacity) ChartHelper.SetColorOpacity(ref color, opacity);
|
||||
}
|
||||
|
||||
public static float GetSymbolBorder(Serie serie, SerieData serieData, ThemeStyle theme, SerieState state = SerieState.Auto)
|
||||
public static void GetSymbolInfo(out Color32 borderColor, out float border, out float[] cornerRadius,
|
||||
Serie serie, SerieData serieData, ThemeStyle theme, SerieState state = SerieState.Auto)
|
||||
{
|
||||
var itemStyle = GetItemStyle(serie, serieData, state);
|
||||
if (itemStyle != null && itemStyle.borderWidth != 0) return itemStyle.borderWidth;
|
||||
else return serie.lineStyle.GetWidth(theme.serie.lineWidth) * 2;
|
||||
borderColor = ChartConst.clearColor32;
|
||||
if (state == SerieState.Auto)
|
||||
state = GetSerieState(serie, serieData);
|
||||
var stateStyle = GetStateStyle(serie, serieData, state);
|
||||
if (stateStyle == null)
|
||||
{
|
||||
var itemStyle = GetItemStyle(serie, serieData, SerieState.Normal);
|
||||
border = itemStyle.borderWidth != 0 ? itemStyle.borderWidth : serie.lineStyle.GetWidth(theme.serie.lineWidth);
|
||||
cornerRadius = itemStyle.cornerRadius;
|
||||
GetColor(ref borderColor, itemStyle.borderColor, itemStyle.borderColor, 1, theme, -1);
|
||||
switch (state)
|
||||
{
|
||||
case SerieState.Emphasis:
|
||||
borderColor = ChartHelper.GetHighlightColor(borderColor);
|
||||
break;
|
||||
case SerieState.Blur:
|
||||
borderColor = ChartHelper.GetBlurColor(borderColor);
|
||||
break;
|
||||
case SerieState.Select:
|
||||
borderColor = ChartHelper.GetSelectColor(borderColor);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
var itemStyle = stateStyle.itemStyle;
|
||||
border = itemStyle.borderWidth != 0 ? itemStyle.borderWidth : stateStyle.lineStyle.GetWidth(theme.serie.lineWidth);
|
||||
cornerRadius = itemStyle.cornerRadius;
|
||||
GetColor(ref borderColor, stateStyle.itemStyle.borderColor, ColorUtil.clearColor32, 1, theme, -1);
|
||||
}
|
||||
}
|
||||
|
||||
public static Color32 GetSymbolBorderColor(Serie serie, SerieData serieData, ThemeStyle theme, SerieState state = SerieState.Auto)
|
||||
public static float GetSysmbolSize(Serie serie, SerieData serieData, ThemeStyle theme, float defaultSize, SerieState state = SerieState.Auto)
|
||||
{
|
||||
var itemStyle = GetItemStyle(serie, serieData, state);
|
||||
if (itemStyle != null && !ChartHelper.IsClearColor(itemStyle.borderColor)) return itemStyle.borderColor;
|
||||
else return serie.itemStyle.borderColor;
|
||||
}
|
||||
|
||||
public static float[] GetSymbolCornerRadius(Serie serie, SerieData serieData, SerieState state = SerieState.Auto)
|
||||
{
|
||||
var itemStyle = GetItemStyle(serie, serieData, state);
|
||||
if (itemStyle != null) return itemStyle.cornerRadius;
|
||||
else return null;
|
||||
if (state == SerieState.Auto)
|
||||
state = GetSerieState(serie, serieData);
|
||||
var stateStyle = GetStateStyle(serie, serieData, state);
|
||||
var size = 0f;
|
||||
if (stateStyle == null)
|
||||
{
|
||||
var symbol = GetSerieSymbol(serie, serieData, SerieState.Normal);
|
||||
size = symbol.GetSize(serieData.data, defaultSize);
|
||||
switch (state)
|
||||
{
|
||||
case SerieState.Emphasis:
|
||||
case SerieState.Select:
|
||||
size *= theme.serie.selectedRate;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
var symbol = stateStyle.symbol;
|
||||
size = symbol.GetSize(serieData.data, defaultSize);
|
||||
}
|
||||
return size;
|
||||
}
|
||||
|
||||
public static string GetNumericFormatter(Serie serie, SerieData serieData, string defaultFormatter = null)
|
||||
|
||||
Reference in New Issue
Block a user