diff --git a/CHANGELOG.md b/CHANGELOG.md
index e8fc55ab..d5fa1199 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,7 @@
# 更新日志
+* (2020.02.11) 增加`Radar`的`splitLine`参数配置分割线,去掉`lineStyle`参数
* (2020.02.11) 增加`Tooltip`的`backgroundImage`参数配置背景图
* (2020.02.11) 增加`Tooltip`的`paddingLeftRight`和`paddingTopBottom`参数配置文字和边框的间距
* (2020.02.11) 增加`Tooltip`的`lineStyle`参数配置指示线样式
diff --git a/Documentation/XCharts配置项手册.md b/Documentation/XCharts配置项手册.md
index 89ecafd9..bfd30455 100644
--- a/Documentation/XCharts配置项手册.md
+++ b/Documentation/XCharts配置项手册.md
@@ -31,6 +31,7 @@
* [AxisLabel 坐标轴刻度标签](#AxisLabel)
* [AxisLine 坐标轴轴线](#AxisLine)
* [AxisName 坐标轴名称](#AxisName)
+* [AxisSplitLine 坐标轴分割线条](#AxisSplitLine)
* [AxisSplitArea 坐标轴分割区域](#AxisSplitArea)
* [AxisTick 坐标轴刻度](#AxisTick)
* [Emphasis 高亮样式](#Emphasis)
@@ -143,7 +144,7 @@
* `Between`:显示在顶点之间。
* `radius`:雷达图的半径。
* `center`:雷达图的中心点。数组的第一项是横坐标,第二项是纵坐标。当值为0-1之间时表示百分比,设置成百分比时第一项是相对于容器宽度,第二项是相对于容器高度。
-* `lineStyle`:线条样式 [LineStyle](#LineStyle)。
+* `splitLine`:分割线条 [AxisSplitLine](#AxisSplitLine)。
* `splitArea`:分割区域 [AxisSplitArea](#AxisSplitArea)。
* `indicator`:是否显示指示器。
* `indicatorGap`:指示器和雷达的间距。
@@ -539,6 +540,7 @@
* `name`:系列名称。用于 `tooltip` 的显示,`legend` 的图例筛选。
* `radarIndex`:雷达图所使用的 `radar` 组件的 `index`。
* `symbol`:标记的图形 [SerieSymbol](#SerieSymbol)。
+* `lineStyle`:线条样式 [LineStyle](#LineStyle)。
* `animation`:起始动画 [SerieAnimation](#SerieAnimation)。
* `data`:系列中的数据项 [SerieData](#SerieData) 数组,可以设置`1`到`n`维数据。
@@ -714,7 +716,7 @@
## `LineStyle`
-* `show`:是否显示线条。在折线图中无效。
+* `show`:是否显示线条。当作为子组件,它的父组件有参数控制是否显示时,改参数无效。
* `type`:线条类型。支持以下五种类型:
* `None`:不显示分割线。
* `Solid`:实线。
diff --git a/Editor/PropertyDrawers/RadarDrawer.cs b/Editor/PropertyDrawers/RadarDrawer.cs
index f1132d85..994cb1b0 100644
--- a/Editor/PropertyDrawers/RadarDrawer.cs
+++ b/Editor/PropertyDrawers/RadarDrawer.cs
@@ -19,7 +19,7 @@ namespace XCharts
SerializedProperty m_Radius;
SerializedProperty m_SplitNumber;
SerializedProperty m_Center;
- SerializedProperty m_LineStyle;
+ SerializedProperty m_SplitLine;
SerializedProperty m_SplitArea;
SerializedProperty m_Indicator;
SerializedProperty m_IndicatorGap;
@@ -39,7 +39,7 @@ namespace XCharts
m_Radius = prop.FindPropertyRelative("m_Radius");
m_SplitNumber = prop.FindPropertyRelative("m_SplitNumber");
m_Center = prop.FindPropertyRelative("m_Center");
- m_LineStyle = prop.FindPropertyRelative("m_LineStyle");
+ m_SplitLine = prop.FindPropertyRelative("m_SplitLine");
m_SplitArea = prop.FindPropertyRelative("m_SplitArea");
m_Indicator = prop.FindPropertyRelative("m_Indicator");
m_IndicatorGap = prop.FindPropertyRelative("m_IndicatorGap");
@@ -85,8 +85,8 @@ namespace XCharts
EditorGUI.PropertyField(drawRect, m_SplitNumber);
drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
- EditorGUI.PropertyField(drawRect, m_LineStyle);
- drawRect.y += EditorGUI.GetPropertyHeight(m_LineStyle);
+ EditorGUI.PropertyField(drawRect, m_SplitLine);
+ drawRect.y += EditorGUI.GetPropertyHeight(m_SplitLine);
EditorGUI.PropertyField(drawRect, m_SplitArea);
drawRect.y += EditorGUI.GetPropertyHeight(m_SplitArea);
drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
@@ -112,7 +112,7 @@ namespace XCharts
propNum += 7;
if (m_IndicatorJsonAreaToggle) propNum += 4;
float height = propNum * EditorGUIUtility.singleLineHeight + (propNum - 1) * EditorGUIUtility.standardVerticalSpacing;
- height += EditorGUI.GetPropertyHeight(prop.FindPropertyRelative("m_LineStyle"));
+ height += EditorGUI.GetPropertyHeight(prop.FindPropertyRelative("m_SplitLine"));
height += EditorGUI.GetPropertyHeight(prop.FindPropertyRelative("m_SplitArea"));
if (ChartEditorHelper.IsToggle(m_IndicatorToggle, prop))
diff --git a/Editor/PropertyDrawers/SerieDrawer.cs b/Editor/PropertyDrawers/SerieDrawer.cs
index abe0624b..476f8064 100644
--- a/Editor/PropertyDrawers/SerieDrawer.cs
+++ b/Editor/PropertyDrawers/SerieDrawer.cs
@@ -194,6 +194,8 @@ namespace XCharts
drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
EditorGUI.PropertyField(drawRect, m_Symbol);
drawRect.y += EditorGUI.GetPropertyHeight(m_Symbol);
+ EditorGUI.PropertyField(drawRect, m_LineStyle);
+ drawRect.y += EditorGUI.GetPropertyHeight(m_LineStyle);
EditorGUI.PropertyField(drawRect, m_AreaStyle);
drawRect.y += EditorGUI.GetPropertyHeight(m_AreaStyle);
break;
@@ -451,6 +453,7 @@ namespace XCharts
case SerieType.Radar:
height += 4 * EditorGUIUtility.singleLineHeight + 3 * EditorGUIUtility.standardVerticalSpacing;
height += EditorGUI.GetPropertyHeight(prop.FindPropertyRelative("m_Symbol"));
+ height += EditorGUI.GetPropertyHeight(prop.FindPropertyRelative("m_LineStyle"));
height += EditorGUI.GetPropertyHeight(prop.FindPropertyRelative("m_AreaStyle"));
height += EditorGUI.GetPropertyHeight(prop.FindPropertyRelative("m_Emphasis"));
height += EditorGUI.GetPropertyHeight(prop.FindPropertyRelative("m_Animation"));
diff --git a/Runtime/API/RadarChart_API.cs b/Runtime/API/RadarChart_API.cs
index df8908fa..1c42afac 100644
--- a/Runtime/API/RadarChart_API.cs
+++ b/Runtime/API/RadarChart_API.cs
@@ -68,7 +68,7 @@ namespace XCharts
radar.center[0] = center.x;
radar.center[1] = center.y;
radar.splitArea.show = showSplitArea;
- radar.lineStyle.width = lineWidth;
+ radar.splitLine.lineStyle.width = lineWidth;
m_Radars.Add(radar);
return radar;
}
diff --git a/Runtime/Component/Main/Radar.cs b/Runtime/Component/Main/Radar.cs
index a2e629c1..6aa3713a 100644
--- a/Runtime/Component/Main/Radar.cs
+++ b/Runtime/Component/Main/Radar.cs
@@ -126,7 +126,7 @@ namespace XCharts
[SerializeField] private float m_Radius = 100;
[SerializeField] private int m_SplitNumber = 5;
[SerializeField] private float[] m_Center = new float[2] { 0.5f, 0.5f };
- [SerializeField] private LineStyle m_LineStyle = new LineStyle();
+ [SerializeField] private AxisSplitLine m_SplitLine = AxisSplitLine.defaultSplitLine;
[SerializeField] private AxisSplitArea m_SplitArea = AxisSplitArea.defaultSplitArea;
[SerializeField] private bool m_Indicator = true;
[SerializeField] private PositionType m_PositionType = PositionType.Vertice;
@@ -155,10 +155,10 @@ namespace XCharts
///
public float[] center { get { return m_Center; } set { m_Center = value; } }
///
- /// the line style of radar.
- /// 线条样式。
+ /// split line.
+ /// 分割线。
///
- public LineStyle lineStyle { get { return m_LineStyle; } set { m_LineStyle = value; } }
+ public AxisSplitLine splitLine { get { return m_SplitLine; } set { m_SplitLine = value; } }
///
/// Split area of axis in grid area.
/// 分割区域。
@@ -220,8 +220,9 @@ namespace XCharts
};
radar.center[0] = 0.5f;
radar.center[1] = 0.45f;
+ radar.splitLine.show = true;
radar.splitArea.show = true;
- radar.lineStyle.width = 0.6f;
+ radar.splitLine.lineStyle.width = 0.6f;
return radar;
}
}
@@ -234,6 +235,8 @@ namespace XCharts
m_Center[0] = other.center[0];
m_Center[1] = other.center[1];
m_Indicator = other.indicator;
+ //m_SplitLine.Copy(other.splitLine);
+ //m_SplitArea.Copy(other.splitArea);
indicatorList.Clear();
foreach (var d in other.indicatorList) indicatorList.Add(d.Clone());
}
diff --git a/Runtime/Component/Sub/AxisSplitLine.cs b/Runtime/Component/Sub/AxisSplitLine.cs
index 3ddb9062..6acd95d0 100644
--- a/Runtime/Component/Sub/AxisSplitLine.cs
+++ b/Runtime/Component/Sub/AxisSplitLine.cs
@@ -85,7 +85,7 @@ namespace XCharts
internal bool NeedShow(int index)
{
- return interval == 0 || index % (interval + 1) == 0;
+ return show && (interval == 0 || index % (interval + 1) == 0);
}
}
}
\ No newline at end of file
diff --git a/Runtime/Component/Sub/LineStyle.cs b/Runtime/Component/Sub/LineStyle.cs
index 67064716..aa0a1dd9 100644
--- a/Runtime/Component/Sub/LineStyle.cs
+++ b/Runtime/Component/Sub/LineStyle.cs
@@ -52,7 +52,7 @@ namespace XCharts
///
/// Whether show line.
- /// 是否显示线条。在折线图中无效。
+ /// 是否显示线条。当作为子组件,它的父组件有参数控制是否显示时,改参数无效。
///
public bool show { get { return m_Show; } set { m_Show = value; } }
///
diff --git a/Runtime/GaugeChart.cs b/Runtime/GaugeChart.cs
index 0ade3e77..684732d7 100644
--- a/Runtime/GaugeChart.cs
+++ b/Runtime/GaugeChart.cs
@@ -137,7 +137,7 @@ namespace XCharts
DrawProgressBar(vh, serie, currAngle);
DrawStageColor(vh, serie);
- DrawSplitLine(vh, serie);
+ DrawLineStyle(vh, serie);
DrawAxisTick(vh, serie);
DrawPointer(vh, serie, currAngle);
UpdateTitle(serie);
@@ -215,7 +215,7 @@ namespace XCharts
ChartDrawer.DrawPolygon(vh, p1, p3, p2, p4, pointerColor);
}
- private void DrawSplitLine(VertexHelper vh, Serie serie)
+ private void DrawLineStyle(VertexHelper vh, Serie serie)
{
if (serie.gaugeType != GaugeType.Pointer) return;
if (!serie.gaugeAxis.show || !serie.gaugeAxis.splitLine.show) return;
diff --git a/Runtime/Internal/BaseChart.cs b/Runtime/Internal/BaseChart.cs
index 67bfc0d1..a1e101a4 100644
--- a/Runtime/Internal/BaseChart.cs
+++ b/Runtime/Internal/BaseChart.cs
@@ -787,6 +787,31 @@ namespace XCharts
}
}
+ protected void DrawLineStyle(VertexHelper vh, LineStyle lineStyle,
+ Vector3 startPos, Vector3 endPos, Color color)
+ {
+ var type = lineStyle.type;
+ var width = lineStyle.width;
+ switch (type)
+ {
+ case LineStyle.Type.Dashed:
+ ChartDrawer.DrawDashLine(vh, startPos, endPos, width, color);
+ break;
+ case LineStyle.Type.Dotted:
+ ChartDrawer.DrawDotLine(vh, startPos, endPos, width, color);
+ break;
+ case LineStyle.Type.Solid:
+ ChartDrawer.DrawLine(vh, startPos, endPos, width, color);
+ break;
+ case LineStyle.Type.DashDot:
+ ChartDrawer.DrawDashDotLine(vh, startPos, endPos, width, color);
+ break;
+ case LineStyle.Type.DashDotDot:
+ ChartDrawer.DrawDashDotDotLine(vh, startPos, endPos, width, color);
+ break;
+ }
+ }
+
protected void DrawLabelBackground(VertexHelper vh, Serie serie, SerieData serieData)
{
var labelHalfWid = serieData.GetLabelWidth() / 2;
diff --git a/Runtime/Internal/CoordinateChart.cs b/Runtime/Internal/CoordinateChart.cs
index 25ad8557..1668f5f0 100644
--- a/Runtime/Internal/CoordinateChart.cs
+++ b/Runtime/Internal/CoordinateChart.cs
@@ -980,7 +980,7 @@ namespace XCharts
{
if (yAxis.splitLine.NeedShow(i))
{
- DrawSplitLine(vh, yAxis.splitLine.lineStyle, new Vector3(coordinateX, pY),
+ DrawLineStyle(vh, yAxis.splitLine.lineStyle, new Vector3(coordinateX, pY),
new Vector3(coordinateX + coordinateWidth, pY), yAxis.splitLine.GetColor(m_ThemeInfo));
}
}
@@ -1070,7 +1070,7 @@ namespace XCharts
{
if (xAxis.splitLine.NeedShow(i))
{
- DrawSplitLine(vh, xAxis.splitLine.lineStyle, new Vector3(pX, coordinateY),
+ DrawLineStyle(vh, xAxis.splitLine.lineStyle, new Vector3(pX, coordinateY),
new Vector3(pX, coordinateY + coordinateHeight), xAxis.splitLine.GetColor(m_ThemeInfo));
}
}
@@ -1230,31 +1230,6 @@ namespace XCharts
}
}
- protected void DrawSplitLine(VertexHelper vh, LineStyle lineStyle,
- Vector3 startPos, Vector3 endPos, Color color)
- {
- var type = lineStyle.type;
- var width = lineStyle.width;
- switch (type)
- {
- case LineStyle.Type.Dashed:
- ChartDrawer.DrawDashLine(vh, startPos, endPos, width, color);
- break;
- case LineStyle.Type.Dotted:
- ChartDrawer.DrawDotLine(vh, startPos, endPos, width, color);
- break;
- case LineStyle.Type.Solid:
- ChartDrawer.DrawLine(vh, startPos, endPos, width, color);
- break;
- case LineStyle.Type.DashDot:
- ChartDrawer.DrawDashDotLine(vh, startPos, endPos, width, color);
- break;
- case LineStyle.Type.DashDotDot:
- ChartDrawer.DrawDashDotDotLine(vh, startPos, endPos, width, color);
- break;
- }
- }
-
protected void DrawXTooltipIndicator(VertexHelper vh)
{
if (!m_Tooltip.show || !m_Tooltip.IsSelected()) return;
@@ -1275,12 +1250,12 @@ namespace XCharts
if (xAxis.IsValue()) pX = m_Tooltip.runtimePointerPos.x;
Vector2 sp = new Vector2(pX, coordinateY);
Vector2 ep = new Vector2(pX, coordinateY + coordinateHeight);
- DrawSplitLine(vh, m_Tooltip.lineStyle, sp, ep, m_Tooltip.GetLineColor(m_ThemeInfo));
+ DrawLineStyle(vh, m_Tooltip.lineStyle, sp, ep, m_Tooltip.GetLineColor(m_ThemeInfo));
if (m_Tooltip.type == Tooltip.Type.Corss)
{
sp = new Vector2(coordinateX, m_Tooltip.runtimePointerPos.y);
ep = new Vector2(coordinateX + coordinateWidth, m_Tooltip.runtimePointerPos.y);
- DrawSplitLine(vh, m_Tooltip.lineStyle, sp, ep, m_Tooltip.GetLineColor(m_ThemeInfo));
+ DrawLineStyle(vh, m_Tooltip.lineStyle, sp, ep, m_Tooltip.GetLineColor(m_ThemeInfo));
}
break;
case Tooltip.Type.Shadow:
@@ -1318,12 +1293,12 @@ namespace XCharts
float pY = coordinateY + m_Tooltip.runtimeYValues[i] * splitWidth + (yAxis.boundaryGap ? splitWidth / 2 : 0);
Vector2 sp = new Vector2(coordinateX, pY);
Vector2 ep = new Vector2(coordinateX + coordinateWidth, pY);
- DrawSplitLine(vh, m_Tooltip.lineStyle, sp, ep, m_Tooltip.GetLineColor(m_ThemeInfo));
+ DrawLineStyle(vh, m_Tooltip.lineStyle, sp, ep, m_Tooltip.GetLineColor(m_ThemeInfo));
if (m_Tooltip.type == Tooltip.Type.Corss)
{
sp = new Vector2(coordinateX, m_Tooltip.runtimePointerPos.y);
ep = new Vector2(coordinateX + coordinateWidth, m_Tooltip.runtimePointerPos.y);
- DrawSplitLine(vh, m_Tooltip.lineStyle, sp, ep, m_Tooltip.GetLineColor(m_ThemeInfo));
+ DrawLineStyle(vh, m_Tooltip.lineStyle, sp, ep, m_Tooltip.GetLineColor(m_ThemeInfo));
}
break;
case Tooltip.Type.Shadow:
diff --git a/Runtime/RadarChart.cs b/Runtime/RadarChart.cs
index 91916f67..6d2525fb 100644
--- a/Runtime/RadarChart.cs
+++ b/Runtime/RadarChart.cs
@@ -276,7 +276,7 @@ namespace XCharts
}
if (serie.lineStyle.show)
{
- ChartDrawer.DrawLine(vh, startPoint, toPoint, serie.lineStyle.width, lineColor);
+ DrawLineStyle(vh, serie.lineStyle, startPoint, toPoint, lineColor);
}
startPoint = toPoint;
}
@@ -288,7 +288,7 @@ namespace XCharts
}
if (serie.lineStyle.show)
{
- ChartDrawer.DrawLine(vh, startPoint, firstPoint, serie.lineStyle.width, lineColor);
+ DrawLineStyle(vh, serie.lineStyle, startPoint, firstPoint, lineColor);
}
if (serie.symbol.type != SerieSymbolType.None)
{
@@ -318,7 +318,7 @@ namespace XCharts
private void DrawRadar(VertexHelper vh, Radar radar)
{
- if (!radar.lineStyle.show && !radar.splitArea.show)
+ if (!radar.splitLine.show && !radar.splitArea.show)
{
return;
}
@@ -346,9 +346,9 @@ namespace XCharts
{
ChartDrawer.DrawPolygon(vh, p1, p2, p3, p4, color);
}
- if (radar.lineStyle.show)
+ if (radar.splitLine.NeedShow(i))
{
- ChartDrawer.DrawLine(vh, p2, p3, radar.lineStyle.width, lineColor);
+ DrawLineStyle(vh, radar.splitLine.lineStyle, p2, p3, lineColor);
}
p1 = p4;
p2 = p3;
@@ -360,16 +360,16 @@ namespace XCharts
float currAngle = j * angle;
p3 = new Vector3(p.x + outsideRadius * Mathf.Sin(currAngle),
p.y + outsideRadius * Mathf.Cos(currAngle));
- if (radar.lineStyle.show)
+ if (radar.splitLine.show)
{
- ChartDrawer.DrawLine(vh, p, p3, radar.lineStyle.width / 2, lineColor);
+ DrawLineStyle(vh, radar.splitLine.lineStyle, p, p3, lineColor);
}
}
}
private void DrawCricleRadar(VertexHelper vh, Radar radar)
{
- if (!radar.lineStyle.show && !radar.splitArea.show)
+ if (!radar.splitLine.show && !radar.splitArea.show)
{
return;
}
@@ -389,9 +389,9 @@ namespace XCharts
ChartDrawer.DrawDoughnut(vh, p, insideRadius, outsideRadius, color, Color.clear,
m_Settings.cicleSmoothness, 0, 360);
}
- if (radar.lineStyle.show)
+ if (radar.splitLine.show)
{
- ChartDrawer.DrawEmptyCricle(vh, p, outsideRadius, radar.lineStyle.width, lineColor,
+ ChartDrawer.DrawEmptyCricle(vh, p, outsideRadius, radar.splitLine.lineStyle.width, lineColor,
Color.clear, m_Settings.cicleSmoothness);
}
insideRadius = outsideRadius;
@@ -401,30 +401,18 @@ namespace XCharts
float currAngle = j * angle;
p1 = new Vector3(p.x + outsideRadius * Mathf.Sin(currAngle),
p.y + outsideRadius * Mathf.Cos(currAngle));
- if (radar.lineStyle.show)
+ if (radar.splitLine.show)
{
- ChartDrawer.DrawLine(vh, p, p1, radar.lineStyle.width / 2, lineColor);
+ ChartDrawer.DrawLine(vh, p, p1, radar.splitLine.lineStyle.width / 2, lineColor);
}
}
}
private Color GetLineColor(Radar radar)
{
- if (radar.lineStyle.color != Color.clear)
- {
- var color = radar.lineStyle.color;
- color.a *= radar.lineStyle.opacity;
- return color;
- }
- else
- {
- var color = (Color)m_ThemeInfo.axisLineColor;
- color.a *= radar.lineStyle.opacity;
- return color;
- }
+ return radar.splitLine.GetColor(m_ThemeInfo);
}
-
protected override void CheckTootipArea(Vector2 local)
{
if (m_IsEnterLegendButtom) return;