mirror of
https://github.com/XCharts-Team/XCharts.git
synced 2026-05-25 10:20:10 +00:00
[feature][symbol] add minSize and maxSize for SerieSymbol
This commit is contained in:
@@ -58,7 +58,8 @@
|
|||||||
|
|
||||||
## master
|
## master
|
||||||
|
|
||||||
* (2022.09.06) 增加`AxisSplitLine`的`showStartLine`和`showEndLine`参数
|
* (2022.09.06) 增加`SerieSymbol`的`minSize`和`maxSize`参数设置最大最小尺寸的支持
|
||||||
|
* (2022.09.06) 增加`AxisSplitLine`的`showStartLine`和`showEndLine`参数设置是否显示首位分割线的支持
|
||||||
* (2022.09.06) 增加`Heatmap`通过`symbol`设置不同的图案的支持
|
* (2022.09.06) 增加`Heatmap`通过`symbol`设置不同的图案的支持
|
||||||
* (2022.09.05) 增加`Heatmap`的`heatmapType`支持设置`Data`和`Count`两种不同映射方式的热力图
|
* (2022.09.05) 增加`Heatmap`的`heatmapType`支持设置`Data`和`Count`两种不同映射方式的热力图
|
||||||
* (2022.09.05) 优化`Tooltip`在热力图为数值轴时的指示
|
* (2022.09.05) 优化`Tooltip`在热力图为数值轴时的指示
|
||||||
|
|||||||
@@ -1174,6 +1174,8 @@ Inherits or Implemented: [SymbolStyle](#SymbolStyle),[ISerieDataComponent](#ISer
|
|||||||
|`interval`|||the interval of show symbol.
|
|`interval`|||the interval of show symbol.
|
||||||
|`forceShowLast`|false||whether to show the last symbol.
|
|`forceShowLast`|false||whether to show the last symbol.
|
||||||
|`repeat`|false||图形是否重复。
|
|`repeat`|false||图形是否重复。
|
||||||
|
|`minSize`|0f|v3.3.0|Minimum symbol size.
|
||||||
|
|`maxSize`|0f|v3.3.0|Maximum symbol size.
|
||||||
|
|
||||||
## `SerieTheme`
|
## `SerieTheme`
|
||||||
|
|
||||||
|
|||||||
@@ -1174,6 +1174,8 @@ Inherits or Implemented: [SymbolStyle](#SymbolStyle),[ISerieDataComponent](#ISer
|
|||||||
|`interval`|||显示图形标记的间隔。0表示显示所有标签,1表示隔一个隔显示一个标签,以此类推。
|
|`interval`|||显示图形标记的间隔。0表示显示所有标签,1表示隔一个隔显示一个标签,以此类推。
|
||||||
|`forceShowLast`|false||是否强制显示最后一个图形标记。
|
|`forceShowLast`|false||是否强制显示最后一个图形标记。
|
||||||
|`repeat`|false||图形是否重复。
|
|`repeat`|false||图形是否重复。
|
||||||
|
|`minSize`|0f|v3.3.0|图形最小尺寸。只在sizeType为SymbolSizeType.FromData时有效。
|
||||||
|
|`maxSize`|0f|v3.3.0|图形最大尺寸。只在sizeType为SymbolSizeType.FromData时有效。
|
||||||
|
|
||||||
## `SerieTheme`
|
## `SerieTheme`
|
||||||
|
|
||||||
|
|||||||
@@ -35,6 +35,8 @@ namespace XCharts.Editor
|
|||||||
case SymbolSizeType.FromData:
|
case SymbolSizeType.FromData:
|
||||||
PropertyField(prop, "m_DataIndex");
|
PropertyField(prop, "m_DataIndex");
|
||||||
PropertyField(prop, "m_DataScale");
|
PropertyField(prop, "m_DataScale");
|
||||||
|
PropertyField(prop, "m_MinSize");
|
||||||
|
PropertyField(prop, "m_MaxSize");
|
||||||
break;
|
break;
|
||||||
case SymbolSizeType.Function:
|
case SymbolSizeType.Function:
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -41,6 +41,8 @@ namespace XCharts.Runtime
|
|||||||
[SerializeField] private int m_Interval;
|
[SerializeField] private int m_Interval;
|
||||||
[SerializeField] private bool m_ForceShowLast = false;
|
[SerializeField] private bool m_ForceShowLast = false;
|
||||||
[SerializeField] private bool m_Repeat = false;
|
[SerializeField] private bool m_Repeat = false;
|
||||||
|
[SerializeField][Since("v3.3.0")] private float m_MinSize = 0f;
|
||||||
|
[SerializeField][Since("v3.3.0")] private float m_MaxSize = 0f;
|
||||||
|
|
||||||
public override void Reset()
|
public override void Reset()
|
||||||
{
|
{
|
||||||
@@ -53,6 +55,8 @@ namespace XCharts.Runtime
|
|||||||
m_Interval = 0;
|
m_Interval = 0;
|
||||||
m_ForceShowLast = false;
|
m_ForceShowLast = false;
|
||||||
m_Repeat = false;
|
m_Repeat = false;
|
||||||
|
m_MinSize = 0f;
|
||||||
|
m_MaxSize = 0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -126,6 +130,25 @@ namespace XCharts.Runtime
|
|||||||
get { return m_Repeat; }
|
get { return m_Repeat; }
|
||||||
set { if (PropertyUtil.SetStruct(ref m_Repeat, value)) SetAllDirty(); }
|
set { if (PropertyUtil.SetStruct(ref m_Repeat, value)) SetAllDirty(); }
|
||||||
}
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// Minimum symbol size.
|
||||||
|
/// |图形最小尺寸。只在sizeType为SymbolSizeType.FromData时有效。
|
||||||
|
/// </summary>
|
||||||
|
public float minSize
|
||||||
|
{
|
||||||
|
get { return m_MinSize; }
|
||||||
|
set { if (PropertyUtil.SetStruct(ref m_MinSize, value)) SetVerticesDirty(); }
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// Maximum symbol size.
|
||||||
|
/// |图形最大尺寸。只在sizeType为SymbolSizeType.FromData时有效。
|
||||||
|
/// </summary>
|
||||||
|
public float maxSize
|
||||||
|
{
|
||||||
|
get { return m_MaxSize; }
|
||||||
|
set { if (PropertyUtil.SetStruct(ref m_MaxSize, value)) SetVerticesDirty(); }
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 根据指定的sizeType获得标记的大小
|
/// 根据指定的sizeType获得标记的大小
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -140,7 +163,10 @@ namespace XCharts.Runtime
|
|||||||
case SymbolSizeType.FromData:
|
case SymbolSizeType.FromData:
|
||||||
if (data != null && dataIndex >= 0 && dataIndex < data.Count)
|
if (data != null && dataIndex >= 0 && dataIndex < data.Count)
|
||||||
{
|
{
|
||||||
return (float) data[dataIndex] * m_DataScale;
|
var value = (float) 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;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -187,9 +187,9 @@ namespace XCharts.Runtime
|
|||||||
var zeroX = m_SerieGrid.context.x;
|
var zeroX = m_SerieGrid.context.x;
|
||||||
var zeroY = m_SerieGrid.context.y;
|
var zeroY = m_SerieGrid.context.y;
|
||||||
var borderWidth = serie.itemStyle.show ? serie.itemStyle.borderWidth : 0;
|
var borderWidth = serie.itemStyle.show ? serie.itemStyle.borderWidth : 0;
|
||||||
var rectWid = xWidth - 2 * borderWidth;
|
var splitWid = xWidth - 2 * borderWidth;
|
||||||
var rectHig = yWidth - 2 * borderWidth;
|
var splitHig = yWidth - 2 * borderWidth;
|
||||||
var defaultSymbolSize = Mathf.Min(rectWid, rectHig) * 0.25f;
|
var defaultSymbolSize = Mathf.Min(splitWid, splitHig) * 0.25f;
|
||||||
|
|
||||||
serie.animation.InitProgress(0, xCount);
|
serie.animation.InitProgress(0, xCount);
|
||||||
var animationIndex = serie.animation.GetCurrIndex();
|
var animationIndex = serie.animation.GetCurrIndex();
|
||||||
@@ -237,9 +237,8 @@ namespace XCharts.Runtime
|
|||||||
serie.context.dataPoints.Add(pos);
|
serie.context.dataPoints.Add(pos);
|
||||||
serie.context.dataIndexs.Add(serieData.index);
|
serie.context.dataIndexs.Add(serieData.index);
|
||||||
serieData.context.position = pos;
|
serieData.context.position = pos;
|
||||||
|
|
||||||
serieData.context.canShowLabel = false;
|
serieData.context.canShowLabel = false;
|
||||||
serieData.context.rect = new Rect(pos.x - rectWid / 2, pos.y - rectHig / 2, rectWid, rectHig);
|
|
||||||
if ((value < rangeMin && rangeMin != visualMap.min) ||
|
if ((value < rangeMin && rangeMin != visualMap.min) ||
|
||||||
(value > rangeMax && rangeMax != visualMap.max))
|
(value > rangeMax && rangeMax != visualMap.max))
|
||||||
{
|
{
|
||||||
@@ -256,9 +255,22 @@ namespace XCharts.Runtime
|
|||||||
|
|
||||||
var highlight = (serieData.context.highlight) ||
|
var highlight = (serieData.context.highlight) ||
|
||||||
visualMap.context.pointerIndex > 0;
|
visualMap.context.pointerIndex > 0;
|
||||||
|
var rectWid = 0f;
|
||||||
|
var rectHig = 0f;
|
||||||
if (isRectSymbol)
|
if (isRectSymbol)
|
||||||
{
|
{
|
||||||
|
if (symbol.size == 0 && symbol.sizeType == SymbolSizeType.Custom)
|
||||||
|
{
|
||||||
|
rectWid = splitWid;
|
||||||
|
rectHig = splitHig;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var symbolSize = SerieHelper.GetSysmbolSize(serie, serieData, chart.theme, defaultSymbolSize, state);
|
||||||
|
rectWid = symbolSize;
|
||||||
|
rectHig = symbolSize;
|
||||||
|
}
|
||||||
|
serieData.context.rect = new Rect(pos.x - rectWid / 2, pos.y - rectHig / 2, rectWid, rectHig);
|
||||||
UGL.DrawRectangle(vh, serieData.context.rect, color);
|
UGL.DrawRectangle(vh, serieData.context.rect, color);
|
||||||
|
|
||||||
if (borderWidth > 0 && !ChartHelper.IsClearColor(borderColor))
|
if (borderWidth > 0 && !ChartHelper.IsClearColor(borderColor))
|
||||||
@@ -270,6 +282,7 @@ namespace XCharts.Runtime
|
|||||||
{
|
{
|
||||||
var symbolSize = SerieHelper.GetSysmbolSize(serie, serieData, chart.theme, defaultSymbolSize, state);
|
var symbolSize = SerieHelper.GetSysmbolSize(serie, serieData, chart.theme, defaultSymbolSize, state);
|
||||||
var emptyColor = SerieHelper.GetItemBackgroundColor(serie, serieData, chart.theme, serie.context.colorIndex, state);
|
var emptyColor = SerieHelper.GetItemBackgroundColor(serie, serieData, chart.theme, serie.context.colorIndex, state);
|
||||||
|
serieData.context.rect = new Rect(pos.x - symbolSize / 2, pos.y - symbolSize / 2, symbolSize, symbolSize);
|
||||||
chart.DrawSymbol(vh, symbol.type, symbolSize, symbolBorder, pos,
|
chart.DrawSymbol(vh, symbol.type, symbolSize, symbolBorder, pos,
|
||||||
color, color, emptyColor, borderColor, symbol.gap, cornerRadius);
|
color, color, emptyColor, borderColor, symbol.gap, cornerRadius);
|
||||||
}
|
}
|
||||||
@@ -319,9 +332,9 @@ namespace XCharts.Runtime
|
|||||||
var zeroX = m_SerieGrid.context.x;
|
var zeroX = m_SerieGrid.context.x;
|
||||||
var zeroY = m_SerieGrid.context.y;
|
var zeroY = m_SerieGrid.context.y;
|
||||||
var borderWidth = serie.itemStyle.show ? serie.itemStyle.borderWidth : 0;
|
var borderWidth = serie.itemStyle.show ? serie.itemStyle.borderWidth : 0;
|
||||||
var rectWid = xWidth - 2 * borderWidth;
|
var splitWid = xWidth - 2 * borderWidth;
|
||||||
var rectHig = yWidth - 2 * borderWidth;
|
var splitHig = yWidth - 2 * borderWidth;
|
||||||
var defaultSymbolSize = Mathf.Min(rectWid, rectHig) * 0.25f;
|
var defaultSymbolSize = Mathf.Min(splitWid, splitHig) * 0.25f;
|
||||||
|
|
||||||
serie.animation.InitProgress(0, xCount);
|
serie.animation.InitProgress(0, xCount);
|
||||||
var animationIndex = serie.animation.GetCurrIndex();
|
var animationIndex = serie.animation.GetCurrIndex();
|
||||||
@@ -403,9 +416,22 @@ namespace XCharts.Runtime
|
|||||||
|
|
||||||
var pos = new Vector3(zeroX + (i + 0.5f) * xWidth,
|
var pos = new Vector3(zeroX + (i + 0.5f) * xWidth,
|
||||||
zeroY + (j + 0.5f) * yWidth);
|
zeroY + (j + 0.5f) * yWidth);
|
||||||
var rect = new Rect(pos.x - rectWid / 2, pos.y - rectHig / 2, rectWid, rectHig);
|
|
||||||
|
var rectWid = 0f;
|
||||||
|
var rectHig = 0f;
|
||||||
if (isRectSymbol)
|
if (isRectSymbol)
|
||||||
{
|
{
|
||||||
|
if (symbol.size == 0 && symbol.sizeType == SymbolSizeType.Custom)
|
||||||
|
{
|
||||||
|
rectWid = splitWid;
|
||||||
|
rectHig = splitHig;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
rectWid = symbolSize;
|
||||||
|
rectHig = symbolSize;
|
||||||
|
}
|
||||||
|
var rect = new Rect(pos.x - rectWid / 2, pos.y - rectHig / 2, rectWid, rectHig);
|
||||||
UGL.DrawRectangle(vh, rect, color);
|
UGL.DrawRectangle(vh, rect, color);
|
||||||
|
|
||||||
if (borderWidth > 0 && !ChartHelper.IsClearColor(borderColor))
|
if (borderWidth > 0 && !ChartHelper.IsClearColor(borderColor))
|
||||||
|
|||||||
Reference in New Issue
Block a user