mirror of
https://github.com/XCharts-Team/XCharts.git
synced 2026-05-31 13:58:48 +00:00
3.0 - serie data context
This commit is contained in:
@@ -80,7 +80,7 @@ namespace XCharts
|
|||||||
|
|
||||||
public static void ResetItemPosition(Legend legend, Vector3 chartPos, float chartWidth, float chartHeight)
|
public static void ResetItemPosition(Legend legend, Vector3 chartPos, float chartWidth, float chartHeight)
|
||||||
{
|
{
|
||||||
legend.location.UpdateRuntimeData(chartWidth,chartHeight);
|
legend.location.UpdateRuntimeData(chartWidth, chartHeight);
|
||||||
var startX = 0f;
|
var startX = 0f;
|
||||||
var startY = 0f;
|
var startY = 0f;
|
||||||
var legendMaxWidth = chartWidth - legend.location.runtimeLeft - legend.location.runtimeRight;
|
var legendMaxWidth = chartWidth - legend.location.runtimeLeft - legend.location.runtimeRight;
|
||||||
@@ -252,7 +252,7 @@ namespace XCharts
|
|||||||
if (legendName.Equals(data.name))
|
if (legendName.Equals(data.name))
|
||||||
{
|
{
|
||||||
data.show = show;
|
data.show = show;
|
||||||
data.highlighted = false;
|
data.context.highlighted = false;
|
||||||
if (data.show) needShow = true;
|
if (data.show) needShow = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -276,8 +276,8 @@ namespace XCharts
|
|||||||
{
|
{
|
||||||
if (legendName.Equals(data.name))
|
if (legendName.Equals(data.name))
|
||||||
{
|
{
|
||||||
data.highlighted = heighlight;
|
data.context.highlighted = heighlight;
|
||||||
if (data.highlighted) show = true;
|
if (data.context.highlighted) show = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -291,11 +291,11 @@ namespace XCharts
|
|||||||
if (System.Math.Abs(dist) <= symbolSize)
|
if (System.Math.Abs(dist) <= symbolSize)
|
||||||
{
|
{
|
||||||
serie.context.pointerAxisDataIndexs.Add(i);
|
serie.context.pointerAxisDataIndexs.Add(i);
|
||||||
serieData.highlighted = true;
|
serieData.context.highlighted = true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
serieData.highlighted = false;
|
serieData.context.highlighted = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -110,7 +110,7 @@ namespace XCharts
|
|||||||
var numericFormatter = GetItemNumericFormatter(tooltip, serie, serieData);
|
var numericFormatter = GetItemNumericFormatter(tooltip, serie, serieData);
|
||||||
if (isCartesian)
|
if (isCartesian)
|
||||||
{
|
{
|
||||||
if (serieData != null && serieData.highlighted)
|
if (serieData != null && serieData.context.highlighted)
|
||||||
{
|
{
|
||||||
sb.Append(key).Append(!string.IsNullOrEmpty(key) ? " : " : "");
|
sb.Append(key).Append(!string.IsNullOrEmpty(key) ? " : " : "");
|
||||||
sb.Append("[").Append(ChartCached.FloatToStr(xValue, numericFormatter)).Append(",")
|
sb.Append("[").Append(ChartCached.FloatToStr(xValue, numericFormatter)).Append(",")
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ namespace XCharts
|
|||||||
|
|
||||||
public static bool CanShowLabel(Serie serie, SerieData serieData, LabelStyle label, int dimesion)
|
public static bool CanShowLabel(Serie serie, SerieData serieData, LabelStyle label, int dimesion)
|
||||||
{
|
{
|
||||||
return serie.show && serieData.canShowLabel && !serie.IsIgnoreValue(serieData, dimesion);
|
return serie.show && serieData.context.canShowLabel && !serie.IsIgnoreValue(serieData, dimesion);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string GetFormatterContent(Serie serie, SerieData serieData,
|
public static string GetFormatterContent(Serie serie, SerieData serieData,
|
||||||
@@ -125,7 +125,7 @@ namespace XCharts
|
|||||||
for (int i = 0; i < serie.dataCount; i++)
|
for (int i = 0; i < serie.dataCount; i++)
|
||||||
{
|
{
|
||||||
var serieData = serie.data[i];
|
var serieData = serie.data[i];
|
||||||
var serieLabel = SerieHelper.GetSerieLabel(serie, serieData, serieData.highlighted);
|
var serieLabel = SerieHelper.GetSerieLabel(serie, serieData, serieData.context.highlighted);
|
||||||
if (serieLabel.show && serieData.labelObject != null)
|
if (serieLabel.show && serieData.labelObject != null)
|
||||||
{
|
{
|
||||||
if (!serie.show || !serieData.show)
|
if (!serie.show || !serieData.show)
|
||||||
@@ -144,13 +144,13 @@ namespace XCharts
|
|||||||
{
|
{
|
||||||
var labelWidth = serieData.GetLabelWidth();
|
var labelWidth = serieData.GetLabelWidth();
|
||||||
if (serie.clockwise)
|
if (serie.clockwise)
|
||||||
serieData.labelObject.SetLabelPosition(serieData.labelPosition - new Vector3(labelWidth / 2, 0));
|
serieData.labelObject.SetLabelPosition(serieData.context.labelPosition - new Vector3(labelWidth / 2, 0));
|
||||||
else
|
else
|
||||||
serieData.labelObject.SetLabelPosition(serieData.labelPosition + new Vector3(labelWidth / 2, 0));
|
serieData.labelObject.SetLabelPosition(serieData.context.labelPosition + new Vector3(labelWidth / 2, 0));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
serieData.labelObject.SetLabelPosition(serieData.labelPosition);
|
serieData.labelObject.SetLabelPosition(serieData.context.labelPosition);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -160,7 +160,7 @@ namespace XCharts
|
|||||||
{
|
{
|
||||||
var serieData = serie.GetSerieData(0);
|
var serieData = serie.GetSerieData(0);
|
||||||
if (serieData == null) return;
|
if (serieData == null) return;
|
||||||
var serieLabel = SerieHelper.GetSerieLabel(serie, serieData, serieData.highlighted);
|
var serieLabel = SerieHelper.GetSerieLabel(serie, serieData, serieData.context.highlighted);
|
||||||
if (serieLabel.show && serieData.labelObject != null)
|
if (serieLabel.show && serieData.labelObject != null)
|
||||||
{
|
{
|
||||||
if (!serie.show || !serieData.show)
|
if (!serie.show || !serieData.show)
|
||||||
@@ -174,30 +174,30 @@ namespace XCharts
|
|||||||
serieData.SetLabelActive(true);
|
serieData.SetLabelActive(true);
|
||||||
serieData.labelObject.SetText(content);
|
serieData.labelObject.SetText(content);
|
||||||
serieData.labelObject.SetTextColor(GetLabelColor(serie, theme, colorIndex));
|
serieData.labelObject.SetTextColor(GetLabelColor(serie, theme, colorIndex));
|
||||||
serieData.labelObject.SetLabelPosition(serieData.labelPosition + serieLabel.offset);
|
serieData.labelObject.SetLabelPosition(serieData.context.labelPosition + serieLabel.offset);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void UpdatePieLabelPosition(Serie serie, SerieData serieData)
|
public static void UpdatePieLabelPosition(Serie serie, SerieData serieData)
|
||||||
{
|
{
|
||||||
if (serieData.labelObject == null) return;
|
if (serieData.labelObject == null) return;
|
||||||
var currAngle = serieData.runtimePieHalfAngle;
|
var currAngle = serieData.context.halfAngle;
|
||||||
var currRad = currAngle * Mathf.Deg2Rad;
|
var currRad = currAngle * Mathf.Deg2Rad;
|
||||||
var offsetRadius = serieData.runtimePieOffsetRadius;
|
var offsetRadius = serieData.context.offsetRadius;
|
||||||
var insideRadius = serieData.runtimePieInsideRadius;
|
var insideRadius = serieData.context.insideRadius;
|
||||||
var outsideRadius = serieData.runtimePieOutsideRadius;
|
var outsideRadius = serieData.context.outsideRadius;
|
||||||
var serieLabel = SerieHelper.GetSerieLabel(serie, serieData);
|
var serieLabel = SerieHelper.GetSerieLabel(serie, serieData);
|
||||||
var labelLine = SerieHelper.GetSerieLabelLine(serie, serieData);
|
var labelLine = SerieHelper.GetSerieLabelLine(serie, serieData);
|
||||||
switch (serieLabel.position)
|
switch (serieLabel.position)
|
||||||
{
|
{
|
||||||
case LabelStyle.Position.Center:
|
case LabelStyle.Position.Center:
|
||||||
serieData.labelPosition = serie.context.center;
|
serieData.context.labelPosition = serie.context.center;
|
||||||
break;
|
break;
|
||||||
case LabelStyle.Position.Inside:
|
case LabelStyle.Position.Inside:
|
||||||
var labelRadius = offsetRadius + insideRadius + (outsideRadius - insideRadius) / 2 + serieLabel.margin;
|
var labelRadius = offsetRadius + insideRadius + (outsideRadius - insideRadius) / 2 + serieLabel.margin;
|
||||||
var labelCenter = new Vector2(serie.context.center.x + labelRadius * Mathf.Sin(currRad),
|
var labelCenter = new Vector2(serie.context.center.x + labelRadius * Mathf.Sin(currRad),
|
||||||
serie.context.center.y + labelRadius * Mathf.Cos(currRad));
|
serie.context.center.y + labelRadius * Mathf.Cos(currRad));
|
||||||
serieData.labelPosition = labelCenter;
|
serieData.context.labelPosition = labelCenter;
|
||||||
break;
|
break;
|
||||||
case LabelStyle.Position.Outside:
|
case LabelStyle.Position.Outside:
|
||||||
if (labelLine.lineType == LabelLine.LineType.HorizontalLine)
|
if (labelLine.lineType == LabelLine.LineType.HorizontalLine)
|
||||||
@@ -215,14 +215,14 @@ namespace XCharts
|
|||||||
var r4 = Mathf.Sqrt(radius1 * radius1 - Mathf.Pow(currCos * radius3, 2)) - currSin * radius3;
|
var r4 = Mathf.Sqrt(radius1 * radius1 - Mathf.Pow(currCos * radius3, 2)) - currSin * radius3;
|
||||||
r4 += labelLine.lineLength1 + labelLine.lineWidth * 4;
|
r4 += labelLine.lineLength1 + labelLine.lineWidth * 4;
|
||||||
r4 += serieData.labelObject.label.GetPreferredWidth() / 2;
|
r4 += serieData.labelObject.label.GetPreferredWidth() / 2;
|
||||||
serieData.labelPosition = pos0 + (currAngle > 180 ? Vector3.left : Vector3.right) * r4;
|
serieData.context.labelPosition = pos0 + (currAngle > 180 ? Vector3.left : Vector3.right) * r4;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
labelRadius = serie.context.outsideRadius + labelLine.lineLength1;
|
labelRadius = serie.context.outsideRadius + labelLine.lineLength1;
|
||||||
labelCenter = new Vector2(serie.context.center.x + labelRadius * Mathf.Sin(currRad),
|
labelCenter = new Vector2(serie.context.center.x + labelRadius * Mathf.Sin(currRad),
|
||||||
serie.context.center.y + labelRadius * Mathf.Cos(currRad));
|
serie.context.center.y + labelRadius * Mathf.Cos(currRad));
|
||||||
serieData.labelPosition = labelCenter;
|
serieData.context.labelPosition = labelCenter;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -237,7 +237,7 @@ namespace XCharts
|
|||||||
for (int n = 0; n < data.Count; n++)
|
for (int n = 0; n < data.Count; n++)
|
||||||
{
|
{
|
||||||
var serieData = data[n];
|
var serieData = data[n];
|
||||||
if (serieData.labelPosition.x != 0 && serieData.labelPosition.x < serie.context.center.x)
|
if (serieData.context.labelPosition.x != 0 && serieData.context.labelPosition.x < serie.context.center.x)
|
||||||
{
|
{
|
||||||
splitCount = n;
|
splitCount = n;
|
||||||
break;
|
break;
|
||||||
@@ -257,7 +257,7 @@ namespace XCharts
|
|||||||
private static void CheckSerieDataLabel(Serie serie, SerieData serieData, bool isLeft, ComponentTheme theme,
|
private static void CheckSerieDataLabel(Serie serie, SerieData serieData, bool isLeft, ComponentTheme theme,
|
||||||
ref Vector3 lastCheckPos)
|
ref Vector3 lastCheckPos)
|
||||||
{
|
{
|
||||||
if (!serieData.canShowLabel)
|
if (!serieData.context.canShowLabel)
|
||||||
{
|
{
|
||||||
serieData.SetLabelActive(false);
|
serieData.SetLabelActive(false);
|
||||||
return;
|
return;
|
||||||
@@ -270,11 +270,11 @@ namespace XCharts
|
|||||||
if (serieLabel.position != LabelStyle.Position.Outside) return;
|
if (serieLabel.position != LabelStyle.Position.Outside) return;
|
||||||
if (lastCheckPos == Vector3.zero)
|
if (lastCheckPos == Vector3.zero)
|
||||||
{
|
{
|
||||||
lastCheckPos = serieData.labelPosition;
|
lastCheckPos = serieData.context.labelPosition;
|
||||||
}
|
}
|
||||||
else if (serieData.labelPosition.x != 0)
|
else if (serieData.context.labelPosition.x != 0)
|
||||||
{
|
{
|
||||||
if (lastCheckPos.y - serieData.labelPosition.y < fontSize)
|
if (lastCheckPos.y - serieData.context.labelPosition.y < fontSize)
|
||||||
{
|
{
|
||||||
var labelRadius = serie.context.outsideRadius + labelLine.lineLength1;
|
var labelRadius = serie.context.outsideRadius + labelLine.lineLength1;
|
||||||
var y1 = lastCheckPos.y - fontSize;
|
var y1 = lastCheckPos.y - fontSize;
|
||||||
@@ -283,9 +283,9 @@ namespace XCharts
|
|||||||
var diffX = labelRadius * labelRadius - diff * diff;
|
var diffX = labelRadius * labelRadius - diff * diff;
|
||||||
diffX = diffX <= 0 ? 0 : diffX;
|
diffX = diffX <= 0 ? 0 : diffX;
|
||||||
var x1 = serie.context.center.x + Mathf.Sqrt(diffX) * (isLeft ? -1 : 1);
|
var x1 = serie.context.center.x + Mathf.Sqrt(diffX) * (isLeft ? -1 : 1);
|
||||||
serieData.labelPosition = new Vector3(x1, y1);
|
serieData.context.labelPosition = new Vector3(x1, y1);
|
||||||
}
|
}
|
||||||
lastCheckPos = serieData.labelPosition;
|
lastCheckPos = serieData.context.labelPosition;
|
||||||
serieData.labelObject.SetPosition(SerieLabelHelper.GetRealLabelPosition(serieData, serieLabel, labelLine));
|
serieData.labelObject.SetPosition(SerieLabelHelper.GetRealLabelPosition(serieData, serieLabel, labelLine));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -294,16 +294,16 @@ namespace XCharts
|
|||||||
{
|
{
|
||||||
if (label.position == LabelStyle.Position.Outside && labelLine.lineType != LabelLine.LineType.HorizontalLine)
|
if (label.position == LabelStyle.Position.Outside && labelLine.lineType != LabelLine.LineType.HorizontalLine)
|
||||||
{
|
{
|
||||||
var currAngle = serieData.runtimePieHalfAngle;
|
var currAngle = serieData.context.halfAngle;
|
||||||
var offset = labelLine.lineLength2 + serieData.labelObject.GetLabelWidth() / 2;
|
var offset = labelLine.lineLength2 + serieData.labelObject.GetLabelWidth() / 2;
|
||||||
if (currAngle > 180)
|
if (currAngle > 180)
|
||||||
return serieData.labelPosition + new Vector3(-offset, 0, 0);
|
return serieData.context.labelPosition + new Vector3(-offset, 0, 0);
|
||||||
else
|
else
|
||||||
return serieData.labelPosition + new Vector3(offset, 0, 0);
|
return serieData.context.labelPosition + new Vector3(offset, 0, 0);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return serieData.labelPosition;
|
return serieData.context.labelPosition;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -389,7 +389,8 @@ namespace XCharts
|
|||||||
{
|
{
|
||||||
var serie = series[i];
|
var serie = series[i];
|
||||||
if ((isPolar && serie.polarIndex != axisIndex)
|
if ((isPolar && serie.polarIndex != axisIndex)
|
||||||
|| (!isPolar && serie.yAxisIndex != axisIndex)) continue;
|
|| (!isPolar && serie.yAxisIndex != axisIndex)
|
||||||
|
|| !serie.show) continue;
|
||||||
if (isPercentStack && SeriesHelper.IsPercentStack<Bar>(series, serie.serieName))
|
if (isPercentStack && SeriesHelper.IsPercentStack<Bar>(series, serie.serieName))
|
||||||
{
|
{
|
||||||
if (100 > max) max = 100;
|
if (100 > max) max = 100;
|
||||||
@@ -431,7 +432,8 @@ namespace XCharts
|
|||||||
{
|
{
|
||||||
var serie = ss.Value[i];
|
var serie = ss.Value[i];
|
||||||
if ((isPolar && serie.polarIndex != axisIndex)
|
if ((isPolar && serie.polarIndex != axisIndex)
|
||||||
|| (!isPolar && serie.yAxisIndex != axisIndex)) continue;
|
|| (!isPolar && serie.yAxisIndex != axisIndex)
|
||||||
|
|| !serie.show) continue;
|
||||||
var showData = serie.GetDataList(dataZoom);
|
var showData = serie.GetDataList(dataZoom);
|
||||||
if (SeriesHelper.IsPercentStack<Bar>(series, serie.stack))
|
if (SeriesHelper.IsPercentStack<Bar>(series, serie.stack))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -0,0 +1,48 @@
|
|||||||
|
/******************************************/
|
||||||
|
/* */
|
||||||
|
/* Copyright (c) 2021 monitor1394 */
|
||||||
|
/* https://github.com/monitor1394 */
|
||||||
|
/* */
|
||||||
|
/******************************************/
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace XCharts
|
||||||
|
{
|
||||||
|
[AttributeUsage(AttributeTargets.Class, AllowMultiple = true)]
|
||||||
|
public sealed class SerieConvertAttribute : Attribute
|
||||||
|
{
|
||||||
|
public readonly Type type0;
|
||||||
|
public readonly Type type1;
|
||||||
|
public readonly Type type2;
|
||||||
|
public readonly Type type3;
|
||||||
|
|
||||||
|
public SerieConvertAttribute(Type serie)
|
||||||
|
{
|
||||||
|
type0 = serie;
|
||||||
|
}
|
||||||
|
public SerieConvertAttribute(Type serie, Type serie2)
|
||||||
|
{
|
||||||
|
type0 = serie;
|
||||||
|
type1 = serie2;
|
||||||
|
}
|
||||||
|
public SerieConvertAttribute(Type serie, Type serie2, Type serie3)
|
||||||
|
{
|
||||||
|
type0 = serie;
|
||||||
|
type1 = serie2;
|
||||||
|
type2 = serie3;
|
||||||
|
}
|
||||||
|
public SerieConvertAttribute(Type serie, Type serie2, Type serie3, Type serie4)
|
||||||
|
{
|
||||||
|
type0 = serie;
|
||||||
|
type1 = serie2;
|
||||||
|
type2 = serie3;
|
||||||
|
type3 = serie4;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool Contains<T>() where T : CoordSystem
|
||||||
|
{
|
||||||
|
var type = typeof(T);
|
||||||
|
return (type == type0 || type == type1 || type == type2 || type == type3);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 74af4595d38cb43ca8f11348cc979137
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -185,21 +185,26 @@ namespace XCharts
|
|||||||
|
|
||||||
public bool SetText(string text)
|
public bool SetText(string text)
|
||||||
{
|
{
|
||||||
if (m_LabelRect == null) return false;
|
if (m_LabelRect == null || m_LabelText == null)
|
||||||
if (m_LabelText != null && !m_LabelText.GetText().Equals(text))
|
return false;
|
||||||
|
|
||||||
|
if (text == null)
|
||||||
|
text = "";
|
||||||
|
if (!m_LabelText.GetText().Equals(text))
|
||||||
{
|
{
|
||||||
m_LabelText.SetText(text);
|
m_LabelText.SetText(text);
|
||||||
if (m_LabelAutoSize)
|
if (m_LabelAutoSize)
|
||||||
{
|
{
|
||||||
var newSize = string.IsNullOrEmpty(text) ? Vector2.zero :
|
var newSize = string.IsNullOrEmpty(text) ? Vector2.zero :
|
||||||
new Vector2(m_LabelText.GetPreferredWidth() + m_LabelPaddingLeftRight * 2,
|
new Vector2(m_LabelText.GetPreferredWidth() + m_LabelPaddingLeftRight * 2,
|
||||||
m_LabelText.GetPreferredHeight() + m_LabelPaddingTopBottom * 2);
|
m_LabelText.GetPreferredHeight() + m_LabelPaddingTopBottom * 2);
|
||||||
var sizeChange = newSize.x != m_LabelRect.sizeDelta.x || newSize.y != m_LabelRect.sizeDelta.y;
|
var sizeChange = newSize.x != m_LabelRect.sizeDelta.x || newSize.y != m_LabelRect.sizeDelta.y;
|
||||||
if (sizeChange)
|
if (sizeChange)
|
||||||
{
|
{
|
||||||
m_LabelRect.sizeDelta = newSize;
|
m_LabelRect.sizeDelta = newSize;
|
||||||
if (m_LabelBackgroundRect != null)
|
if (m_LabelBackgroundRect != null)
|
||||||
m_LabelBackgroundRect.sizeDelta = newSize;
|
m_LabelBackgroundRect.sizeDelta = newSize;
|
||||||
|
|
||||||
AdjustIconPos();
|
AdjustIconPos();
|
||||||
}
|
}
|
||||||
return sizeChange;
|
return sizeChange;
|
||||||
|
|||||||
@@ -81,16 +81,16 @@ namespace XCharts
|
|||||||
serie.context.pointerEnter = false;
|
serie.context.pointerEnter = false;
|
||||||
foreach (var serieData in serie.data)
|
foreach (var serieData in serie.data)
|
||||||
{
|
{
|
||||||
if (serieData.runtimeRect.Contains(chart.pointerPos))
|
if (serieData.context.rect.Contains(chart.pointerPos))
|
||||||
{
|
{
|
||||||
serie.context.pointerItemDataIndex = serieData.index;
|
serie.context.pointerItemDataIndex = serieData.index;
|
||||||
serie.context.pointerEnter = true;
|
serie.context.pointerEnter = true;
|
||||||
serieData.highlighted = true;
|
serieData.context.highlighted = true;
|
||||||
chart.RefreshTopPainter();
|
chart.RefreshTopPainter();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
serieData.highlighted = false;
|
serieData.context.highlighted = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -137,11 +137,11 @@ namespace XCharts
|
|||||||
serie.context.dataPoints.Add(Vector3.zero);
|
serie.context.dataPoints.Add(Vector3.zero);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
var highlight = serie.data[i].highlighted
|
var highlight = serie.data[i].context.highlighted
|
||||||
|| serie.highlighted;
|
|| serie.highlighted;
|
||||||
var itemStyle = SerieHelper.GetItemStyle(serie, serieData, highlight);
|
var itemStyle = SerieHelper.GetItemStyle(serie, serieData, highlight);
|
||||||
|
|
||||||
serieData.canShowLabel = true;
|
serieData.context.canShowLabel = true;
|
||||||
double value = showData[i].GetCurrData(1, dataChangeDuration, xAxis.inverse, xMinValue, xMaxValue);
|
double value = showData[i].GetCurrData(1, dataChangeDuration, xAxis.inverse, xMinValue, xMaxValue);
|
||||||
float borderWidth = value == 0 ? 0 : itemStyle.runtimeBorderWidth;
|
float borderWidth = value == 0 ? 0 : itemStyle.runtimeBorderWidth;
|
||||||
if (showData[i].IsDataChanged()) dataChanging = true;
|
if (showData[i].IsDataChanged()) dataChanging = true;
|
||||||
@@ -155,7 +155,7 @@ namespace XCharts
|
|||||||
{
|
{
|
||||||
for (int n = 0; n < m_StackSerieData.Count - 1; n++)
|
for (int n = 0; n < m_StackSerieData.Count - 1; n++)
|
||||||
{
|
{
|
||||||
pX += m_StackSerieData[n][i].runtimeStackHig;
|
pX += m_StackSerieData[n][i].context.stackHeight;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -182,7 +182,7 @@ namespace XCharts
|
|||||||
/ valueTotal * grid.context.width);
|
/ valueTotal * grid.context.width);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
serieData.runtimeStackHig = barHig;
|
serieData.context.stackHeight = barHig;
|
||||||
var isBarEnd = false;
|
var isBarEnd = false;
|
||||||
float currHig = chart.CheckSerieBarAnimation(serie, i, barHig, out isBarEnd);
|
float currHig = chart.CheckSerieBarAnimation(serie, i, barHig, out isBarEnd);
|
||||||
if (!isBarEnd) isAllBarEnd = false;
|
if (!isBarEnd) isAllBarEnd = false;
|
||||||
@@ -210,7 +210,7 @@ namespace XCharts
|
|||||||
plb = chart.ClampInGrid(grid, plb);
|
plb = chart.ClampInGrid(grid, plb);
|
||||||
top = chart.ClampInGrid(grid, top);
|
top = chart.ClampInGrid(grid, top);
|
||||||
}
|
}
|
||||||
serieData.runtimeRect = Rect.MinMaxRect(plb.x, plb.y, prb.x, prt.y);
|
serieData.context.rect = Rect.MinMaxRect(plb.x, plb.y, prb.x, prt.y);
|
||||||
serie.context.dataPoints.Add(top);
|
serie.context.dataPoints.Add(top);
|
||||||
if (serie.show)
|
if (serie.show)
|
||||||
{
|
{
|
||||||
@@ -281,7 +281,7 @@ namespace XCharts
|
|||||||
serie.context.dataPoints.Add(Vector3.zero);
|
serie.context.dataPoints.Add(Vector3.zero);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
var highlight = serie.data[i].highlighted
|
var highlight = serie.data[i].context.highlighted
|
||||||
|| serie.highlighted;
|
|| serie.highlighted;
|
||||||
var itemStyle = SerieHelper.GetItemStyle(serie, serieData, highlight);
|
var itemStyle = SerieHelper.GetItemStyle(serie, serieData, highlight);
|
||||||
double value = serieData.GetCurrData(1, dataChangeDuration, yAxis.inverse, yMinValue, yMaxValue);
|
double value = serieData.GetCurrData(1, dataChangeDuration, yAxis.inverse, yMinValue, yMaxValue);
|
||||||
@@ -307,7 +307,7 @@ namespace XCharts
|
|||||||
{
|
{
|
||||||
for (int n = 0; n < m_StackSerieData.Count - 1; n++)
|
for (int n = 0; n < m_StackSerieData.Count - 1; n++)
|
||||||
{
|
{
|
||||||
pY += m_StackSerieData[n][i].runtimeStackHig;
|
pY += m_StackSerieData[n][i].context.stackHeight;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -335,7 +335,7 @@ namespace XCharts
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
serieData.runtimeStackHig = barHig;
|
serieData.context.stackHeight = barHig;
|
||||||
var isBarEnd = false;
|
var isBarEnd = false;
|
||||||
float currHig = chart.CheckSerieBarAnimation(serie, i, barHig, out isBarEnd);
|
float currHig = chart.CheckSerieBarAnimation(serie, i, barHig, out isBarEnd);
|
||||||
if (!isBarEnd) isAllBarEnd = false;
|
if (!isBarEnd) isAllBarEnd = false;
|
||||||
@@ -363,7 +363,7 @@ namespace XCharts
|
|||||||
prb = chart.ClampInGrid(grid, prb);
|
prb = chart.ClampInGrid(grid, prb);
|
||||||
top = chart.ClampInGrid(grid, top);
|
top = chart.ClampInGrid(grid, top);
|
||||||
}
|
}
|
||||||
serieData.runtimeRect = Rect.MinMaxRect(plb.x, plb.y, prb.x, prt.y);
|
serieData.context.rect = Rect.MinMaxRect(plb.x, plb.y, prb.x, prt.y);
|
||||||
serie.context.dataPoints.Add(top);
|
serie.context.dataPoints.Add(top);
|
||||||
if (serie.show && currHig != 0)
|
if (serie.show && currHig != 0)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ namespace XCharts
|
|||||||
serie.context.dataPoints.Add(Vector3.zero);
|
serie.context.dataPoints.Add(Vector3.zero);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
var highlight = serie.data[i].highlighted || serie.highlighted;
|
var highlight = serie.data[i].context.highlighted || serie.highlighted;
|
||||||
var itemStyle = SerieHelper.GetItemStyle(serie, serieData, highlight);
|
var itemStyle = SerieHelper.GetItemStyle(serie, serieData, highlight);
|
||||||
var open = serieData.GetCurrData(0, dataChangeDuration, yAxis.inverse, yMinValue, yMaxValue);
|
var open = serieData.GetCurrData(0, dataChangeDuration, yAxis.inverse, yMinValue, yMaxValue);
|
||||||
var close = serieData.GetCurrData(1, dataChangeDuration, yAxis.inverse, yMinValue, yMaxValue);
|
var close = serieData.GetCurrData(1, dataChangeDuration, yAxis.inverse, yMinValue, yMaxValue);
|
||||||
@@ -79,7 +79,7 @@ namespace XCharts
|
|||||||
barHig = (float)((close - open) / valueTotal * grid.context.height);
|
barHig = (float)((close - open) / valueTotal * grid.context.height);
|
||||||
pY += (float)((open - minCut) / valueTotal * grid.context.height);
|
pY += (float)((open - minCut) / valueTotal * grid.context.height);
|
||||||
}
|
}
|
||||||
serieData.runtimeStackHig = barHig;
|
serieData.context.stackHeight = barHig;
|
||||||
var isBarEnd = false;
|
var isBarEnd = false;
|
||||||
float currHig = chart.CheckSerieBarAnimation(serie, i, barHig, out isBarEnd);
|
float currHig = chart.CheckSerieBarAnimation(serie, i, barHig, out isBarEnd);
|
||||||
if (!isBarEnd) isAllBarEnd = false;
|
if (!isBarEnd) isAllBarEnd = false;
|
||||||
|
|||||||
@@ -298,7 +298,7 @@ namespace XCharts
|
|||||||
if (serie.dataCount > 0)
|
if (serie.dataCount > 0)
|
||||||
{
|
{
|
||||||
var serieData = serie.data[0];
|
var serieData = serie.data[0];
|
||||||
serieData.labelPosition = serie.context.center + serie.label.offset;
|
serieData.context.labelPosition = serie.context.center + serie.label.offset;
|
||||||
value = dest ? serieData.GetData(1)
|
value = dest ? serieData.GetData(1)
|
||||||
: serieData.GetCurrData(1, serie.animation.GetUpdateAnimationDuration());
|
: serieData.GetCurrData(1, serie.animation.GetUpdateAnimationDuration());
|
||||||
value = MathUtil.Clamp(value, serie.min, serie.max);
|
value = MathUtil.Clamp(value, serie.min, serie.max);
|
||||||
|
|||||||
@@ -40,16 +40,16 @@ namespace XCharts
|
|||||||
if (!grid.IsPointerEnter()) return;
|
if (!grid.IsPointerEnter()) return;
|
||||||
foreach (var serieData in serie.data)
|
foreach (var serieData in serie.data)
|
||||||
{
|
{
|
||||||
if (serieData.runtimeRect.Contains(chart.pointerPos))
|
if (serieData.context.rect.Contains(chart.pointerPos))
|
||||||
{
|
{
|
||||||
serie.context.pointerItemDataIndex = serieData.index;
|
serie.context.pointerItemDataIndex = serieData.index;
|
||||||
serie.context.pointerEnter = true;
|
serie.context.pointerEnter = true;
|
||||||
serieData.highlighted = true;
|
serieData.context.highlighted = true;
|
||||||
chart.RefreshTopPainter();
|
chart.RefreshTopPainter();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
serieData.highlighted = false;
|
serieData.context.highlighted = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -110,8 +110,8 @@ namespace XCharts
|
|||||||
var pos = new Vector3(zeroX + (i + (xAxis.boundaryGap ? 0.5f : 0)) * xWidth,
|
var pos = new Vector3(zeroX + (i + (xAxis.boundaryGap ? 0.5f : 0)) * xWidth,
|
||||||
zeroY + (j + (yAxis.boundaryGap ? 0.5f : 0)) * yWidth);
|
zeroY + (j + (yAxis.boundaryGap ? 0.5f : 0)) * yWidth);
|
||||||
serie.context.dataPoints.Add(pos);
|
serie.context.dataPoints.Add(pos);
|
||||||
serieData.canShowLabel = false;
|
serieData.context.canShowLabel = false;
|
||||||
serieData.runtimeRect = new Rect(pos.x - rectWid / 2, pos.y - rectHig / 2, rectWid, rectHig);
|
serieData.context.rect = new Rect(pos.x - rectWid / 2, pos.y - rectHig / 2, rectWid, rectHig);
|
||||||
if (value == 0) continue;
|
if (value == 0) continue;
|
||||||
if ((value < rangeMin && rangeMin != visualMap.min)
|
if ((value < rangeMin && rangeMin != visualMap.min)
|
||||||
|| (value > rangeMax && rangeMax != visualMap.max))
|
|| (value > rangeMax && rangeMax != visualMap.max))
|
||||||
@@ -121,8 +121,8 @@ namespace XCharts
|
|||||||
if (!visualMap.IsInSelectedValue(value)) continue;
|
if (!visualMap.IsInSelectedValue(value)) continue;
|
||||||
color = visualMap.GetColor(value);
|
color = visualMap.GetColor(value);
|
||||||
if (animationIndex >= 0 && i > animationIndex) continue;
|
if (animationIndex >= 0 && i > animationIndex) continue;
|
||||||
serieData.canShowLabel = true;
|
serieData.context.canShowLabel = true;
|
||||||
var emphasis = (serieData.highlighted)
|
var emphasis = (serieData.context.highlighted)
|
||||||
|| visualMap.context.pointerIndex > 0;
|
|| visualMap.context.pointerIndex > 0;
|
||||||
|
|
||||||
UGL.DrawRectangle(vh, pos, rectWid / 2, rectHig / 2, color);
|
UGL.DrawRectangle(vh, pos, rectWid / 2, rectHig / 2, color);
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ namespace XCharts
|
|||||||
{
|
{
|
||||||
[Serializable]
|
[Serializable]
|
||||||
[SerieHandler(typeof(LineHandler), true)]
|
[SerieHandler(typeof(LineHandler), true)]
|
||||||
|
[SerieConvert(typeof(Bar))]
|
||||||
[CoordOptions(typeof(GridCoord), typeof(PolarCoord))]
|
[CoordOptions(typeof(GridCoord), typeof(PolarCoord))]
|
||||||
public class Line : Serie, INeedSerieContainer
|
public class Line : Serie, INeedSerieContainer
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -137,7 +137,7 @@ namespace XCharts
|
|||||||
|
|
||||||
foreach (var serieData in serie.data)
|
foreach (var serieData in serie.data)
|
||||||
{
|
{
|
||||||
var dist = Vector3.Distance(chart.pointerPos, serieData.runtimePosition);
|
var dist = Vector3.Distance(chart.pointerPos, serieData.context.position);
|
||||||
var symbol = SerieHelper.GetSerieSymbol(serie, serieData);
|
var symbol = SerieHelper.GetSerieSymbol(serie, serieData);
|
||||||
var symbolSize = symbol.GetSize(serieData.data, themeSymbolSize);
|
var symbolSize = symbol.GetSize(serieData.data, themeSymbolSize);
|
||||||
|
|
||||||
@@ -145,12 +145,12 @@ namespace XCharts
|
|||||||
{
|
{
|
||||||
serie.context.pointerItemDataIndex = serieData.index;
|
serie.context.pointerItemDataIndex = serieData.index;
|
||||||
serie.context.pointerEnter = true;
|
serie.context.pointerEnter = true;
|
||||||
serieData.highlighted = true;
|
serieData.context.highlighted = true;
|
||||||
chart.RefreshTopPainter();
|
chart.RefreshTopPainter();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
serieData.highlighted = false;
|
serieData.context.highlighted = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -193,7 +193,7 @@ namespace XCharts
|
|||||||
if (ChartHelper.IsIngore(serie.context.dataPoints[i]))
|
if (ChartHelper.IsIngore(serie.context.dataPoints[i]))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
var highlight = serie.data[i].highlighted || serie.highlighted;
|
var highlight = serie.data[i].context.highlighted || serie.highlighted;
|
||||||
var symbolSize = highlight
|
var symbolSize = highlight
|
||||||
? symbol.GetSelectedSize(serie.data[i].data, theme.serie.lineSymbolSelectedSize)
|
? symbol.GetSelectedSize(serie.data[i].data, theme.serie.lineSymbolSelectedSize)
|
||||||
: symbol.GetSize(serie.data[i].data, theme.serie.lineSymbolSize);
|
: symbol.GetSize(serie.data[i].data, theme.serie.lineSymbolSize);
|
||||||
@@ -321,8 +321,8 @@ namespace XCharts
|
|||||||
var isIgnore = serie.IsIgnoreValue(serieData);
|
var isIgnore = serie.IsIgnoreValue(serieData);
|
||||||
if (isIgnore)
|
if (isIgnore)
|
||||||
{
|
{
|
||||||
serieData.runtimeStackHig = 0;
|
serieData.context.stackHeight = 0;
|
||||||
serieData.runtimePosition = Vector3.zero;
|
serieData.context.position = Vector3.zero;
|
||||||
if (serie.ignoreLineBreak && serie.context.dataIgnore.Count > 0)
|
if (serie.ignoreLineBreak && serie.context.dataIgnore.Count > 0)
|
||||||
{
|
{
|
||||||
serie.context.dataIgnore[serie.context.dataIgnore.Count - 1] = true;
|
serie.context.dataIgnore[serie.context.dataIgnore.Count - 1] = true;
|
||||||
@@ -335,10 +335,10 @@ namespace XCharts
|
|||||||
var relativedValue = DataHelper.SampleValue(ref showData, serie.sampleType, rate, serie.minShow,
|
var relativedValue = DataHelper.SampleValue(ref showData, serie.sampleType, rate, serie.minShow,
|
||||||
maxCount, totalAverage, i, dataChangeDuration, ref dataChanging, relativedAxis);
|
maxCount, totalAverage, i, dataChangeDuration, ref dataChanging, relativedAxis);
|
||||||
|
|
||||||
serieData.runtimeStackHig = GetDataPoint(isY, axis, relativedAxis, grid, xValue, relativedValue,
|
serieData.context.stackHeight = GetDataPoint(isY, axis, relativedAxis, grid, xValue, relativedValue,
|
||||||
i, scaleWid, isStack, ref np);
|
i, scaleWid, isStack, ref np);
|
||||||
|
|
||||||
serieData.runtimePosition = np;
|
serieData.context.position = np;
|
||||||
|
|
||||||
serie.context.dataPoints.Add(np);
|
serie.context.dataPoints.Add(np);
|
||||||
serie.context.dataIgnore.Add(false);
|
serie.context.dataIgnore.Add(false);
|
||||||
@@ -382,7 +382,7 @@ namespace XCharts
|
|||||||
if (isStack)
|
if (isStack)
|
||||||
{
|
{
|
||||||
for (int n = 0; n < m_StackSerieData.Count - 1; n++)
|
for (int n = 0; n < m_StackSerieData.Count - 1; n++)
|
||||||
yPos += m_StackSerieData[n][i].runtimeStackHig;
|
yPos += m_StackSerieData[n][i].context.stackHeight;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -392,7 +392,7 @@ namespace XCharts
|
|||||||
if (isStack)
|
if (isStack)
|
||||||
{
|
{
|
||||||
for (int n = 0; n < m_StackSerieData.Count - 1; n++)
|
for (int n = 0; n < m_StackSerieData.Count - 1; n++)
|
||||||
xPos += m_StackSerieData[n][i].runtimeStackHig;
|
xPos += m_StackSerieData[n][i].context.stackHeight;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
np = new Vector3(xPos, yPos);
|
np = new Vector3(xPos, yPos);
|
||||||
|
|||||||
@@ -83,12 +83,12 @@ namespace XCharts
|
|||||||
{
|
{
|
||||||
var serieData = serie.GetSerieData(i);
|
var serieData = serie.GetSerieData(i);
|
||||||
var symbol = SerieHelper.GetSerieSymbol(serie, serieData);
|
var symbol = SerieHelper.GetSerieSymbol(serie, serieData);
|
||||||
if (ChartHelper.IsIngore(serieData.runtimePosition))
|
if (ChartHelper.IsIngore(serieData.context.position))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
bool highlight = serieData.highlighted || serie.highlighted;
|
bool highlight = serieData.context.highlighted || serie.highlighted;
|
||||||
if ((!symbol.show || !symbol.ShowSymbol(i, count) || serie.IsPerformanceMode())
|
if ((!symbol.show || !symbol.ShowSymbol(i, count) || serie.IsPerformanceMode())
|
||||||
&& !serieData.highlighted)
|
&& !serieData.context.highlighted)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
var symbolSize = highlight
|
var symbolSize = highlight
|
||||||
@@ -102,7 +102,7 @@ namespace XCharts
|
|||||||
var cornerRadius = SerieHelper.GetSymbolCornerRadius(serie, serieData, highlight);
|
var cornerRadius = SerieHelper.GetSymbolCornerRadius(serie, serieData, highlight);
|
||||||
|
|
||||||
symbolSize = serie.animation.GetSysmbolSize(symbolSize);
|
symbolSize = serie.animation.GetSysmbolSize(symbolSize);
|
||||||
chart.DrawSymbol(vh, symbol.type, symbolSize, symbolBorder, serieData.runtimePosition,
|
chart.DrawSymbol(vh, symbol.type, symbolSize, symbolBorder, serieData.context.position,
|
||||||
symbolColor, symbolToColor, symbolEmptyColor, symbol.gap, cornerRadius);
|
symbolColor, symbolToColor, symbolEmptyColor, symbol.gap, cornerRadius);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -126,10 +126,10 @@ namespace XCharts
|
|||||||
var radius = (float)((value - min) / (max - min) * polarRadius);
|
var radius = (float)((value - min) / (max - min) * polarRadius);
|
||||||
|
|
||||||
angle = (angle + 360) % 360;
|
angle = (angle + 360) % 360;
|
||||||
serieData.runtimeAngle = angle;
|
serieData.context.angle = angle;
|
||||||
serieData.runtimePosition = ChartHelper.GetPos(m_Polar.context.center, radius, angle, true);
|
serieData.context.position = ChartHelper.GetPos(m_Polar.context.center, radius, angle, true);
|
||||||
|
|
||||||
return serieData.runtimePosition;
|
return serieData.context.position;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -160,9 +160,9 @@ namespace XCharts
|
|||||||
serie.context.checkValue = value;
|
serie.context.checkValue = value;
|
||||||
m_UpdateLabelText = true;
|
m_UpdateLabelText = true;
|
||||||
}
|
}
|
||||||
if (serieData.labelPosition != cenPos)
|
if (serieData.context.labelPosition != cenPos)
|
||||||
{
|
{
|
||||||
serieData.labelPosition = cenPos;
|
serieData.context.labelPosition = cenPos;
|
||||||
m_UpdateLabelText = true;
|
m_UpdateLabelText = true;
|
||||||
}
|
}
|
||||||
if (value <= 0) return;
|
if (value <= 0) return;
|
||||||
@@ -273,9 +273,9 @@ namespace XCharts
|
|||||||
serie.context.checkValue = value;
|
serie.context.checkValue = value;
|
||||||
m_UpdateLabelText = true;
|
m_UpdateLabelText = true;
|
||||||
}
|
}
|
||||||
if (serieData.labelPosition != cenPos)
|
if (serieData.context.labelPosition != cenPos)
|
||||||
{
|
{
|
||||||
serieData.labelPosition = cenPos;
|
serieData.context.labelPosition = cenPos;
|
||||||
m_UpdateLabelText = true;
|
m_UpdateLabelText = true;
|
||||||
}
|
}
|
||||||
if (value <= 0) return;
|
if (value <= 0) return;
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ namespace XCharts
|
|||||||
for (int n = 0; n < data.Count; n++)
|
for (int n = 0; n < data.Count; n++)
|
||||||
{
|
{
|
||||||
var serieData = data[n];
|
var serieData = data[n];
|
||||||
if (!serieData.canShowLabel || serie.IsIgnoreValue(serieData))
|
if (!serieData.context.canShowLabel || serie.IsIgnoreValue(serieData))
|
||||||
{
|
{
|
||||||
serieData.SetLabelActive(false);
|
serieData.SetLabelActive(false);
|
||||||
continue;
|
continue;
|
||||||
@@ -133,16 +133,16 @@ namespace XCharts
|
|||||||
if (dataIndex >= 0)
|
if (dataIndex >= 0)
|
||||||
{
|
{
|
||||||
if (lastDataIndex >= 0)
|
if (lastDataIndex >= 0)
|
||||||
serie.GetSerieData(lastDataIndex).highlighted = false;
|
serie.GetSerieData(lastDataIndex).context.highlighted = false;
|
||||||
if (lastDataIndex != dataIndex)
|
if (lastDataIndex != dataIndex)
|
||||||
chart.RefreshPainter(serie);
|
chart.RefreshPainter(serie);
|
||||||
serie.GetSerieData(dataIndex).highlighted = true;
|
serie.GetSerieData(dataIndex).context.highlighted = true;
|
||||||
serie.context.pointerItemDataIndex = dataIndex;
|
serie.context.pointerItemDataIndex = dataIndex;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (lastDataIndex >= 0)
|
if (lastDataIndex >= 0)
|
||||||
serie.GetSerieData(lastDataIndex).highlighted = false;
|
serie.GetSerieData(lastDataIndex).context.highlighted = false;
|
||||||
serie.context.pointerItemDataIndex = -1;
|
serie.context.pointerItemDataIndex = -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -151,7 +151,7 @@ namespace XCharts
|
|||||||
if (lastPointerEnter)
|
if (lastPointerEnter)
|
||||||
{
|
{
|
||||||
foreach (var serieData in serie.data)
|
foreach (var serieData in serie.data)
|
||||||
serieData.highlighted = false;
|
serieData.context.highlighted = false;
|
||||||
}
|
}
|
||||||
serie.context.pointerItemDataIndex = -1;
|
serie.context.pointerItemDataIndex = -1;
|
||||||
}
|
}
|
||||||
@@ -171,7 +171,7 @@ namespace XCharts
|
|||||||
foreach (var sd in serie.data)
|
foreach (var sd in serie.data)
|
||||||
{
|
{
|
||||||
if (sd.show && serie.pieRoseType == RoseType.Area) showdataCount++;
|
if (sd.show && serie.pieRoseType == RoseType.Area) showdataCount++;
|
||||||
sd.canShowLabel = false;
|
sd.context.canShowLabel = false;
|
||||||
}
|
}
|
||||||
float dataChangeDuration = serie.animation.GetUpdateAnimationDuration();
|
float dataChangeDuration = serie.animation.GetUpdateAnimationDuration();
|
||||||
bool isAllZeroValue = SerieHelper.IsAllZeroValue(serie, 1);
|
bool isAllZeroValue = SerieHelper.IsAllZeroValue(serie, 1);
|
||||||
@@ -194,10 +194,10 @@ namespace XCharts
|
|||||||
var serieData = data[n];
|
var serieData = data[n];
|
||||||
serieData.index = n;
|
serieData.index = n;
|
||||||
var value = isAllZeroValue ? zeroReplaceValue : serieData.GetCurrData(1, dataChangeDuration);
|
var value = isAllZeroValue ? zeroReplaceValue : serieData.GetCurrData(1, dataChangeDuration);
|
||||||
serieData.runtimePieStartAngle = startDegree;
|
serieData.context.startAngle = startDegree;
|
||||||
serieData.runtimePieToAngle = startDegree;
|
serieData.context.toAngle = startDegree;
|
||||||
serieData.runtimePieHalfAngle = startDegree;
|
serieData.context.halfAngle = startDegree;
|
||||||
serieData.runtimePieCurrAngle = startDegree;
|
serieData.context.currentAngle = startDegree;
|
||||||
if (!serieData.show)
|
if (!serieData.show)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
@@ -206,54 +206,57 @@ namespace XCharts
|
|||||||
? (totalDegree / showdataCount)
|
? (totalDegree / showdataCount)
|
||||||
: (float)(totalDegree * value / dataTotalFilterMinAngle);
|
: (float)(totalDegree * value / dataTotalFilterMinAngle);
|
||||||
if (serie.minAngle > 0 && degree < serie.minAngle) degree = serie.minAngle;
|
if (serie.minAngle > 0 && degree < serie.minAngle) degree = serie.minAngle;
|
||||||
serieData.runtimePieToAngle = startDegree + degree;
|
serieData.context.toAngle = startDegree + degree;
|
||||||
serieData.runtimePieOutsideRadius = serie.pieRoseType > 0 ?
|
if (serieData.radius > 0)
|
||||||
|
serieData.context.outsideRadius = serieData.radius;
|
||||||
|
else
|
||||||
|
serieData.context.outsideRadius = serie.pieRoseType > 0 ?
|
||||||
serie.context.insideRadius + (float)((serie.context.outsideRadius - serie.context.insideRadius) * value / serie.context.dataMax) :
|
serie.context.insideRadius + (float)((serie.context.outsideRadius - serie.context.insideRadius) * value / serie.context.dataMax) :
|
||||||
serie.context.outsideRadius;
|
serie.context.outsideRadius;
|
||||||
if (serieData.highlighted)
|
if (serieData.context.highlighted)
|
||||||
{
|
{
|
||||||
serieData.runtimePieOutsideRadius += chart.theme.serie.pieTooltipExtraRadius;
|
serieData.context.outsideRadius += chart.theme.serie.pieTooltipExtraRadius;
|
||||||
}
|
}
|
||||||
var offset = 0f;
|
var offset = 0f;
|
||||||
if (serie.pieClickOffset && serieData.selected)
|
if (serie.pieClickOffset && serieData.selected)
|
||||||
{
|
{
|
||||||
offset += chart.theme.serie.pieSelectedOffset;
|
offset += chart.theme.serie.pieSelectedOffset;
|
||||||
}
|
}
|
||||||
if (serie.animation.CheckDetailBreak(serieData.runtimePieToAngle))
|
if (serie.animation.CheckDetailBreak(serieData.context.toAngle))
|
||||||
{
|
{
|
||||||
serieData.runtimePieCurrAngle = serie.animation.GetCurrDetail();
|
serieData.context.currentAngle = serie.animation.GetCurrDetail();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
serieData.runtimePieCurrAngle = serieData.runtimePieToAngle;
|
serieData.context.currentAngle = serieData.context.toAngle;
|
||||||
}
|
}
|
||||||
var halfDegree = (serieData.runtimePieToAngle - startDegree) / 2;
|
var halfDegree = (serieData.context.toAngle - startDegree) / 2;
|
||||||
serieData.runtimePieHalfAngle = startDegree + halfDegree;
|
serieData.context.halfAngle = startDegree + halfDegree;
|
||||||
serieData.runtiemPieOffsetCenter = serie.context.center;
|
serieData.context.offsetCenter = serie.context.center;
|
||||||
serieData.runtimePieInsideRadius = serie.context.insideRadius;
|
serieData.context.insideRadius = serie.context.insideRadius;
|
||||||
if (offset > 0)
|
if (offset > 0)
|
||||||
{
|
{
|
||||||
var currRad = serieData.runtimePieHalfAngle * Mathf.Deg2Rad;
|
var currRad = serieData.context.halfAngle * Mathf.Deg2Rad;
|
||||||
var currSin = Mathf.Sin(currRad);
|
var currSin = Mathf.Sin(currRad);
|
||||||
var currCos = Mathf.Cos(currRad);
|
var currCos = Mathf.Cos(currRad);
|
||||||
serieData.runtimePieOffsetRadius = 0;
|
serieData.context.offsetRadius = 0;
|
||||||
serieData.runtimePieInsideRadius -= serieData.runtimePieOffsetRadius;
|
serieData.context.insideRadius -= serieData.context.offsetRadius;
|
||||||
serieData.runtimePieOutsideRadius -= serieData.runtimePieOffsetRadius;
|
serieData.context.outsideRadius -= serieData.context.offsetRadius;
|
||||||
if (serie.pieClickOffset && serieData.selected)
|
if (serie.pieClickOffset && serieData.selected)
|
||||||
{
|
{
|
||||||
serieData.runtimePieOffsetRadius += chart.theme.serie.pieSelectedOffset;
|
serieData.context.offsetRadius += chart.theme.serie.pieSelectedOffset;
|
||||||
if (serieData.runtimePieInsideRadius > 0)
|
if (serieData.context.insideRadius > 0)
|
||||||
{
|
{
|
||||||
serieData.runtimePieInsideRadius += chart.theme.serie.pieSelectedOffset;
|
serieData.context.insideRadius += chart.theme.serie.pieSelectedOffset;
|
||||||
}
|
}
|
||||||
serieData.runtimePieOutsideRadius += chart.theme.serie.pieSelectedOffset;
|
serieData.context.outsideRadius += chart.theme.serie.pieSelectedOffset;
|
||||||
}
|
}
|
||||||
serieData.runtiemPieOffsetCenter = new Vector3(
|
serieData.context.offsetCenter = new Vector3(
|
||||||
serie.context.center.x + serieData.runtimePieOffsetRadius * currSin,
|
serie.context.center.x + serieData.context.offsetRadius * currSin,
|
||||||
serie.context.center.y + serieData.runtimePieOffsetRadius * currCos);
|
serie.context.center.y + serieData.context.offsetRadius * currCos);
|
||||||
}
|
}
|
||||||
serieData.canShowLabel = serieData.runtimePieCurrAngle >= serieData.runtimePieHalfAngle;
|
serieData.context.canShowLabel = serieData.context.currentAngle >= serieData.context.halfAngle;
|
||||||
startDegree = serieData.runtimePieToAngle;
|
startDegree = serieData.context.toAngle;
|
||||||
SerieLabelHelper.UpdatePieLabelPosition(serie, serieData);
|
SerieLabelHelper.UpdatePieLabelPosition(serie, serieData);
|
||||||
}
|
}
|
||||||
SerieLabelHelper.AvoidLabelOverlap(serie, chart.theme.common);
|
SerieLabelHelper.AvoidLabelOverlap(serie, chart.theme.common);
|
||||||
@@ -308,36 +311,36 @@ namespace XCharts
|
|||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
var itemStyle = SerieHelper.GetItemStyle(serie, serieData, serieData.highlighted);
|
var itemStyle = SerieHelper.GetItemStyle(serie, serieData, serieData.context.highlighted);
|
||||||
if (serieData.IsDataChanged()) dataChanging = true;
|
if (serieData.IsDataChanged()) dataChanging = true;
|
||||||
var serieNameCount = chart.m_LegendRealShowName.IndexOf(serieData.legendName);
|
var serieNameCount = chart.m_LegendRealShowName.IndexOf(serieData.legendName);
|
||||||
var color = SerieHelper.GetItemColor(serie, serieData, chart.theme, serieNameCount,
|
var color = SerieHelper.GetItemColor(serie, serieData, chart.theme, serieNameCount,
|
||||||
serieData.highlighted);
|
serieData.context.highlighted);
|
||||||
var toColor = SerieHelper.GetItemToColor(serie, serieData, chart.theme, serieNameCount,
|
var toColor = SerieHelper.GetItemToColor(serie, serieData, chart.theme, serieNameCount,
|
||||||
serieData.highlighted);
|
serieData.context.highlighted);
|
||||||
var borderWidth = itemStyle.borderWidth;
|
var borderWidth = itemStyle.borderWidth;
|
||||||
var borderColor = itemStyle.borderColor;
|
var borderColor = itemStyle.borderColor;
|
||||||
|
|
||||||
if (serie.pieClickOffset && serieData.selected)
|
if (serie.pieClickOffset && serieData.selected)
|
||||||
{
|
{
|
||||||
var drawEndDegree = serieData.runtimePieCurrAngle;
|
var drawEndDegree = serieData.context.currentAngle;
|
||||||
var needRoundCap = serie.roundCap && serieData.runtimePieInsideRadius > 0;
|
var needRoundCap = serie.roundCap && serieData.context.insideRadius > 0;
|
||||||
UGL.DrawDoughnut(vh, serieData.runtiemPieOffsetCenter, serieData.runtimePieInsideRadius,
|
UGL.DrawDoughnut(vh, serieData.context.offsetCenter, serieData.context.insideRadius,
|
||||||
serieData.runtimePieOutsideRadius, color, toColor, Color.clear, serieData.runtimePieStartAngle,
|
serieData.context.outsideRadius, color, toColor, Color.clear, serieData.context.startAngle,
|
||||||
drawEndDegree, borderWidth, borderColor, serie.pieSpace / 2, chart.settings.cicleSmoothness,
|
drawEndDegree, borderWidth, borderColor, serie.pieSpace / 2, chart.settings.cicleSmoothness,
|
||||||
needRoundCap, true);
|
needRoundCap, true);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
var drawEndDegree = serieData.runtimePieCurrAngle;
|
var drawEndDegree = serieData.context.currentAngle;
|
||||||
var needRoundCap = serie.roundCap && serieData.runtimePieInsideRadius > 0;
|
var needRoundCap = serie.roundCap && serieData.context.insideRadius > 0;
|
||||||
UGL.DrawDoughnut(vh, serie.context.center, serieData.runtimePieInsideRadius,
|
UGL.DrawDoughnut(vh, serie.context.center, serieData.context.insideRadius,
|
||||||
serieData.runtimePieOutsideRadius, color, toColor, Color.clear, serieData.runtimePieStartAngle,
|
serieData.context.outsideRadius, color, toColor, Color.clear, serieData.context.startAngle,
|
||||||
drawEndDegree, borderWidth, borderColor, serie.pieSpace / 2, chart.settings.cicleSmoothness,
|
drawEndDegree, borderWidth, borderColor, serie.pieSpace / 2, chart.settings.cicleSmoothness,
|
||||||
needRoundCap, true);
|
needRoundCap, true);
|
||||||
DrawPieCenter(vh, serie, itemStyle, serieData.runtimePieInsideRadius);
|
DrawPieCenter(vh, serie, itemStyle, serieData.context.insideRadius);
|
||||||
}
|
}
|
||||||
if (!serie.animation.CheckDetailBreak(serieData.runtimePieToAngle)) serie.animation.SetDataFinish(n);
|
if (!serie.animation.CheckDetailBreak(serieData.context.toAngle)) serie.animation.SetDataFinish(n);
|
||||||
else break;
|
else break;
|
||||||
}
|
}
|
||||||
if (!serie.animation.IsFinish())
|
if (!serie.animation.IsFinish())
|
||||||
@@ -369,7 +372,7 @@ namespace XCharts
|
|||||||
{
|
{
|
||||||
foreach (var serieData in serie.data)
|
foreach (var serieData in serie.data)
|
||||||
{
|
{
|
||||||
if (serieData.highlighted) return true;
|
if (serieData.context.highlighted) return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -398,10 +401,10 @@ namespace XCharts
|
|||||||
&& serieLabel.position == LabelStyle.Position.Outside
|
&& serieLabel.position == LabelStyle.Position.Outside
|
||||||
&& labelLine.show)
|
&& labelLine.show)
|
||||||
{
|
{
|
||||||
var insideRadius = serieData.runtimePieInsideRadius;
|
var insideRadius = serieData.context.insideRadius;
|
||||||
var outSideRadius = serieData.runtimePieOutsideRadius;
|
var outSideRadius = serieData.context.outsideRadius;
|
||||||
var center = serie.context.center;
|
var center = serie.context.center;
|
||||||
var currAngle = serieData.runtimePieHalfAngle;
|
var currAngle = serieData.context.halfAngle;
|
||||||
if (!ChartHelper.IsClearColor(labelLine.lineColor)) color = labelLine.lineColor;
|
if (!ChartHelper.IsClearColor(labelLine.lineColor)) color = labelLine.lineColor;
|
||||||
else if (labelLine.lineType == LabelLine.LineType.HorizontalLine) color *= color;
|
else if (labelLine.lineType == LabelLine.LineType.HorizontalLine) color *= color;
|
||||||
float currSin = Mathf.Sin(currAngle * Mathf.Deg2Rad);
|
float currSin = Mathf.Sin(currAngle * Mathf.Deg2Rad);
|
||||||
@@ -414,7 +417,7 @@ namespace XCharts
|
|||||||
radius1 -= 0.1f;
|
radius1 -= 0.1f;
|
||||||
var pos0 = new Vector3(center.x + radius3 * currSin, center.y + radius3 * currCos);
|
var pos0 = new Vector3(center.x + radius3 * currSin, center.y + radius3 * currCos);
|
||||||
var pos1 = new Vector3(center.x + radius1 * currSin, center.y + radius1 * currCos);
|
var pos1 = new Vector3(center.x + radius1 * currSin, center.y + radius1 * currCos);
|
||||||
var pos2 = serieData.labelPosition;
|
var pos2 = serieData.context.labelPosition;
|
||||||
if (pos2.x == 0)
|
if (pos2.x == 0)
|
||||||
{
|
{
|
||||||
pos2 = new Vector3(center.x + radius2 * currSin, center.y + radius2 * currCos);
|
pos2 = new Vector3(center.x + radius2 * currSin, center.y + radius2 * currCos);
|
||||||
@@ -476,12 +479,12 @@ namespace XCharts
|
|||||||
private void DrawPieLabel(Serie serie, int dataIndex, SerieData serieData, Color serieColor)
|
private void DrawPieLabel(Serie serie, int dataIndex, SerieData serieData, Color serieColor)
|
||||||
{
|
{
|
||||||
if (serieData.labelObject == null) return;
|
if (serieData.labelObject == null) return;
|
||||||
var currAngle = serieData.runtimePieHalfAngle;
|
var currAngle = serieData.context.halfAngle;
|
||||||
var isHighlight = (serieData.highlighted && serie.emphasis.label.show);
|
var isHighlight = (serieData.context.highlighted && serie.emphasis.label.show);
|
||||||
var serieLabel = SerieHelper.GetSerieLabel(serie, serieData);
|
var serieLabel = SerieHelper.GetSerieLabel(serie, serieData);
|
||||||
var labelLine = SerieHelper.GetSerieLabelLine(serie, serieData);
|
var labelLine = SerieHelper.GetSerieLabelLine(serie, serieData);
|
||||||
var iconStyle = SerieHelper.GetIconStyle(serie, serieData);
|
var iconStyle = SerieHelper.GetIconStyle(serie, serieData);
|
||||||
var showLabel = ((serieLabel.show || isHighlight) && serieData.canShowLabel);
|
var showLabel = ((serieLabel.show || isHighlight) && serieData.context.canShowLabel);
|
||||||
if (showLabel)
|
if (showLabel)
|
||||||
{
|
{
|
||||||
serieData.SetLabelActive(showLabel);
|
serieData.SetLabelActive(showLabel);
|
||||||
@@ -553,11 +556,11 @@ namespace XCharts
|
|||||||
for (int i = 0; i < serie.data.Count; i++)
|
for (int i = 0; i < serie.data.Count; i++)
|
||||||
{
|
{
|
||||||
var serieData = serie.data[i];
|
var serieData = serie.data[i];
|
||||||
if (angle >= serieData.runtimePieStartAngle && angle <= serieData.runtimePieToAngle)
|
if (angle >= serieData.context.startAngle && angle <= serieData.context.toAngle)
|
||||||
{
|
{
|
||||||
var ndist = !serieData.selected ? dist :
|
var ndist = !serieData.selected ? dist :
|
||||||
Vector2.Distance(local, serieData.runtiemPieOffsetCenter);
|
Vector2.Distance(local, serieData.context.offsetCenter);
|
||||||
if (ndist >= serieData.runtimePieInsideRadius && ndist <= serieData.runtimePieOutsideRadius)
|
if (ndist >= serieData.context.insideRadius && ndist <= serieData.context.outsideRadius)
|
||||||
{
|
{
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -52,19 +52,19 @@ namespace XCharts
|
|||||||
if (serieData.labelObject == null) continue;
|
if (serieData.labelObject == null) continue;
|
||||||
var serieLabel = SerieHelper.GetSerieLabel(serie, serieData);
|
var serieLabel = SerieHelper.GetSerieLabel(serie, serieData);
|
||||||
var iconStyle = SerieHelper.GetIconStyle(serie, serieData);
|
var iconStyle = SerieHelper.GetIconStyle(serie, serieData);
|
||||||
var labelPos = serieData.labelPosition;
|
var labelPos = serieData.context.labelPosition;
|
||||||
if (serieLabel.margin != 0)
|
if (serieLabel.margin != 0)
|
||||||
{
|
{
|
||||||
labelPos += serieLabel.margin * (labelPos - center).normalized;
|
labelPos += serieLabel.margin * (labelPos - center).normalized;
|
||||||
}
|
}
|
||||||
serieData.labelObject.SetPosition(labelPos);
|
serieData.labelObject.SetPosition(labelPos);
|
||||||
serieData.labelObject.UpdateIcon(iconStyle);
|
serieData.labelObject.UpdateIcon(iconStyle);
|
||||||
if (serie.show && serieLabel.show && serieData.canShowLabel)
|
if (serie.show && serieLabel.show && serieData.context.canShowLabel)
|
||||||
{
|
{
|
||||||
var value = serieData.GetCurrData(1);
|
var value = serieData.GetCurrData(1);
|
||||||
var max = radar.GetIndicatorMax(n);
|
var max = radar.GetIndicatorMax(n);
|
||||||
SerieLabelHelper.ResetLabel(serieData.labelObject.label, serieLabel, chart.theme, i);
|
SerieLabelHelper.ResetLabel(serieData.labelObject.label, serieLabel, chart.theme, i);
|
||||||
serieData.SetLabelActive(serieData.labelPosition != Vector3.zero);
|
serieData.SetLabelActive(serieData.context.labelPosition != Vector3.zero);
|
||||||
serieData.labelObject.SetLabelPosition(serieLabel.offset);
|
serieData.labelObject.SetLabelPosition(serieLabel.offset);
|
||||||
var content = SerieLabelHelper.GetFormatterContent(serie, serieData, value, max,
|
var content = SerieLabelHelper.GetFormatterContent(serie, serieData, value, max,
|
||||||
serieLabel, Color.clear);
|
serieLabel, Color.clear);
|
||||||
@@ -247,7 +247,7 @@ namespace XCharts
|
|||||||
|
|
||||||
private bool IsHighlight(RadarCoord radar, Serie serie, SerieData serieData, Tooltip tooltip, int dataIndex, int dimension)
|
private bool IsHighlight(RadarCoord radar, Serie serie, SerieData serieData, Tooltip tooltip, int dataIndex, int dimension)
|
||||||
{
|
{
|
||||||
if (serie.highlighted || serieData.highlighted) return true;
|
if (serie.highlighted || serieData.context.highlighted) return true;
|
||||||
if (tooltip == null) return false;
|
if (tooltip == null) return false;
|
||||||
var selectedSerieIndex = tooltip.runtimeDataIndex[0];
|
var selectedSerieIndex = tooltip.runtimeDataIndex[0];
|
||||||
if (selectedSerieIndex < 0) return false;
|
if (selectedSerieIndex < 0) return false;
|
||||||
@@ -332,7 +332,7 @@ namespace XCharts
|
|||||||
}
|
}
|
||||||
if (!serieData.show)
|
if (!serieData.show)
|
||||||
{
|
{
|
||||||
serieData.labelPosition = Vector3.zero;
|
serieData.context.labelPosition = Vector3.zero;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
var isHighlight = IsHighlight(radar, serie, serieData, tooltip, j, 0);
|
var isHighlight = IsHighlight(radar, serie, serieData, tooltip, j, 0);
|
||||||
@@ -384,7 +384,7 @@ namespace XCharts
|
|||||||
startPoint = toPoint;
|
startPoint = toPoint;
|
||||||
lastColor = lineColor;
|
lastColor = lineColor;
|
||||||
}
|
}
|
||||||
serieData.labelPosition = startPoint;
|
serieData.context.labelPosition = startPoint;
|
||||||
pointList.Add(startPoint);
|
pointList.Add(startPoint);
|
||||||
|
|
||||||
if (serie.areaStyle.show && j == endIndex)
|
if (serie.areaStyle.show && j == endIndex)
|
||||||
@@ -406,7 +406,7 @@ namespace XCharts
|
|||||||
{
|
{
|
||||||
var serieData = serie.data[j];
|
var serieData = serie.data[j];
|
||||||
if (!serieData.show) continue;
|
if (!serieData.show) continue;
|
||||||
var isHighlight = serie.highlighted || serieData.highlighted ||
|
var isHighlight = serie.highlighted || serieData.context.highlighted ||
|
||||||
(tooltip.show && tooltip.runtimeDataIndex[0] == i && tooltip.runtimeDataIndex[1] == j);
|
(tooltip.show && tooltip.runtimeDataIndex[0] == i && tooltip.runtimeDataIndex[1] == j);
|
||||||
var serieIndex = serieData.index;
|
var serieIndex = serieData.index;
|
||||||
var symbolSize = isHighlight
|
var symbolSize = isHighlight
|
||||||
@@ -422,7 +422,7 @@ namespace XCharts
|
|||||||
symbolColor = radar.outRangeColor;
|
symbolColor = radar.outRangeColor;
|
||||||
symbolToColor = radar.outRangeColor;
|
symbolToColor = radar.outRangeColor;
|
||||||
}
|
}
|
||||||
chart.DrawSymbol(vh, serie.symbol.type, symbolSize, symbolBorder, serieData.labelPosition, symbolColor,
|
chart.DrawSymbol(vh, serie.symbol.type, symbolSize, symbolBorder, serieData.context.labelPosition, symbolColor,
|
||||||
symbolToColor, symbolEmptyColor, serie.symbol.gap, cornerRadius);
|
symbolToColor, symbolEmptyColor, serie.symbol.gap, cornerRadius);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -71,8 +71,6 @@ namespace XCharts
|
|||||||
var data = serie.data;
|
var data = serie.data;
|
||||||
serie.animation.InitProgress(data.Count, serie.startAngle, serie.startAngle + 360);
|
serie.animation.InitProgress(data.Count, serie.startAngle, serie.startAngle + 360);
|
||||||
SerieHelper.UpdateCenter(serie, chart.chartPosition, chart.chartWidth, chart.chartHeight);
|
SerieHelper.UpdateCenter(serie, chart.chartPosition, chart.chartWidth, chart.chartHeight);
|
||||||
//TitleStyleHelper.CheckTitle(serie, ref chart.m_ReinitTitle, ref m_UpdateTitleText);
|
|
||||||
//SerieLabelHelper.CheckLabel(serie, ref chart.m_ReinitLabel, ref m_UpdateLabelText);
|
|
||||||
var dataChangeDuration = serie.animation.GetUpdateAnimationDuration();
|
var dataChangeDuration = serie.animation.GetUpdateAnimationDuration();
|
||||||
var ringWidth = serie.context.outsideRadius - serie.context.insideRadius;
|
var ringWidth = serie.context.outsideRadius - serie.context.insideRadius;
|
||||||
var dataChanging = false;
|
var dataChanging = false;
|
||||||
@@ -86,9 +84,9 @@ namespace XCharts
|
|||||||
var degree = (float)(360 * value / max);
|
var degree = (float)(360 * value / max);
|
||||||
var startDegree = GetStartAngle(serie);
|
var startDegree = GetStartAngle(serie);
|
||||||
var toDegree = GetToAngle(serie, degree);
|
var toDegree = GetToAngle(serie, degree);
|
||||||
var itemStyle = SerieHelper.GetItemStyle(serie, serieData, serieData.highlighted);
|
var itemStyle = SerieHelper.GetItemStyle(serie, serieData, serieData.context.highlighted);
|
||||||
var itemColor = SerieHelper.GetItemColor(serie, serieData, chart.theme, j, serieData.highlighted);
|
var itemColor = SerieHelper.GetItemColor(serie, serieData, chart.theme, j, serieData.context.highlighted);
|
||||||
var itemToColor = SerieHelper.GetItemToColor(serie, serieData, chart.theme, j, serieData.highlighted);
|
var itemToColor = SerieHelper.GetItemToColor(serie, serieData, chart.theme, j, serieData.context.highlighted);
|
||||||
var outsideRadius = serie.context.outsideRadius - j * (ringWidth + serie.ringGap);
|
var outsideRadius = serie.context.outsideRadius - j * (ringWidth + serie.ringGap);
|
||||||
var insideRadius = outsideRadius - ringWidth;
|
var insideRadius = outsideRadius - ringWidth;
|
||||||
var centerRadius = (outsideRadius + insideRadius) / 2;
|
var centerRadius = (outsideRadius + insideRadius) / 2;
|
||||||
@@ -96,10 +94,10 @@ namespace XCharts
|
|||||||
var borderColor = itemStyle.borderColor;
|
var borderColor = itemStyle.borderColor;
|
||||||
var roundCap = serie.roundCap && insideRadius > 0;
|
var roundCap = serie.roundCap && insideRadius > 0;
|
||||||
|
|
||||||
serieData.runtimePieStartAngle = serie.clockwise ? startDegree : toDegree;
|
serieData.context.startAngle = serie.clockwise ? startDegree : toDegree;
|
||||||
serieData.runtimePieToAngle = serie.clockwise ? toDegree : startDegree;
|
serieData.context.toAngle = serie.clockwise ? toDegree : startDegree;
|
||||||
serieData.runtimePieInsideRadius = insideRadius;
|
serieData.context.insideRadius = insideRadius;
|
||||||
serieData.runtimePieOutsideRadius = outsideRadius;
|
serieData.context.outsideRadius = serieData.radius > 0 ? serieData.radius : outsideRadius;
|
||||||
if (itemStyle.backgroundColor.a != 0)
|
if (itemStyle.backgroundColor.a != 0)
|
||||||
{
|
{
|
||||||
UGL.DrawDoughnut(vh, serie.context.center, insideRadius, outsideRadius, itemStyle.backgroundColor,
|
UGL.DrawDoughnut(vh, serie.context.center, insideRadius, outsideRadius, itemStyle.backgroundColor,
|
||||||
@@ -201,23 +199,23 @@ namespace XCharts
|
|||||||
switch (serie.label.position)
|
switch (serie.label.position)
|
||||||
{
|
{
|
||||||
case LabelStyle.Position.Center:
|
case LabelStyle.Position.Center:
|
||||||
serieData.labelPosition = serie.context.center + serie.label.offset;
|
serieData.context.labelPosition = serie.context.center + serie.label.offset;
|
||||||
break;
|
break;
|
||||||
case LabelStyle.Position.Bottom:
|
case LabelStyle.Position.Bottom:
|
||||||
var px1 = Mathf.Sin(startAngle * Mathf.Deg2Rad) * centerRadius;
|
var px1 = Mathf.Sin(startAngle * Mathf.Deg2Rad) * centerRadius;
|
||||||
var py1 = Mathf.Cos(startAngle * Mathf.Deg2Rad) * centerRadius;
|
var py1 = Mathf.Cos(startAngle * Mathf.Deg2Rad) * centerRadius;
|
||||||
var xDiff = serie.clockwise ? -serie.label.margin : serie.label.margin;
|
var xDiff = serie.clockwise ? -serie.label.margin : serie.label.margin;
|
||||||
serieData.labelPosition = serie.context.center + new Vector3(px1 + xDiff, py1);
|
serieData.context.labelPosition = serie.context.center + new Vector3(px1 + xDiff, py1);
|
||||||
break;
|
break;
|
||||||
case LabelStyle.Position.Top:
|
case LabelStyle.Position.Top:
|
||||||
startAngle += serie.clockwise ? -serie.label.margin : serie.label.margin;
|
startAngle += serie.clockwise ? -serie.label.margin : serie.label.margin;
|
||||||
toAngle += serie.clockwise ? serie.label.margin : -serie.label.margin;
|
toAngle += serie.clockwise ? serie.label.margin : -serie.label.margin;
|
||||||
var px2 = Mathf.Sin(toAngle * Mathf.Deg2Rad) * centerRadius;
|
var px2 = Mathf.Sin(toAngle * Mathf.Deg2Rad) * centerRadius;
|
||||||
var py2 = Mathf.Cos(toAngle * Mathf.Deg2Rad) * centerRadius;
|
var py2 = Mathf.Cos(toAngle * Mathf.Deg2Rad) * centerRadius;
|
||||||
serieData.labelPosition = serie.context.center + new Vector3(px2, py2);
|
serieData.context.labelPosition = serie.context.center + new Vector3(px2, py2);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
serieData.labelObject.SetLabelPosition(serieData.labelPosition);
|
serieData.labelObject.SetLabelPosition(serieData.context.labelPosition);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void DrawBackground(VertexHelper vh, Serie serie, SerieData serieData, int index, float insideRadius, float outsideRadius)
|
private void DrawBackground(VertexHelper vh, Serie serie, SerieData serieData, int index, float insideRadius, float outsideRadius)
|
||||||
@@ -280,10 +278,10 @@ namespace XCharts
|
|||||||
for (int i = 0; i < serie.data.Count; i++)
|
for (int i = 0; i < serie.data.Count; i++)
|
||||||
{
|
{
|
||||||
var serieData = serie.data[i];
|
var serieData = serie.data[i];
|
||||||
if (dist >= serieData.runtimePieInsideRadius &&
|
if (dist >= serieData.context.insideRadius &&
|
||||||
dist <= serieData.runtimePieOutsideRadius &&
|
dist <= serieData.context.outsideRadius &&
|
||||||
angle >= serieData.runtimePieStartAngle &&
|
angle >= serieData.context.startAngle &&
|
||||||
angle <= serieData.runtimePieToAngle)
|
angle <= serieData.context.toAngle)
|
||||||
{
|
{
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -87,9 +87,9 @@ namespace XCharts
|
|||||||
var serieData = serie.GetSerieData(lastDataIndex);
|
var serieData = serie.GetSerieData(lastDataIndex);
|
||||||
var symbol = SerieHelper.GetSerieSymbol(serie, serieData);
|
var symbol = SerieHelper.GetSerieSymbol(serie, serieData);
|
||||||
var symbolSize = symbol.GetSize(serieData.data, themeSymbolSize);
|
var symbolSize = symbol.GetSize(serieData.data, themeSymbolSize);
|
||||||
if (Vector3.Distance(serieData.runtimePosition, chart.pointerPos) <= symbolSize)
|
if (Vector3.Distance(serieData.context.position, chart.pointerPos) <= symbolSize)
|
||||||
{
|
{
|
||||||
serieData.highlighted = true;
|
serieData.context.highlighted = true;
|
||||||
serie.context.pointerItemDataIndex = lastDataIndex;
|
serie.context.pointerItemDataIndex = lastDataIndex;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -98,7 +98,7 @@ namespace XCharts
|
|||||||
serie.context.pointerItemDataIndex = -1;
|
serie.context.pointerItemDataIndex = -1;
|
||||||
if (lastDataIndex >= 0)
|
if (lastDataIndex >= 0)
|
||||||
{
|
{
|
||||||
serie.GetSerieData(lastDataIndex).highlighted = false;
|
serie.GetSerieData(lastDataIndex).context.highlighted = false;
|
||||||
chart.RefreshPainter(serie);
|
chart.RefreshPainter(serie);
|
||||||
}
|
}
|
||||||
for (int i = serie.dataCount - 1; i >= 0; i--)
|
for (int i = serie.dataCount - 1; i >= 0; i--)
|
||||||
@@ -110,9 +110,9 @@ namespace XCharts
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
var symbolSize = symbol.GetSize(serieData.data, themeSymbolSize);
|
var symbolSize = symbol.GetSize(serieData.data, themeSymbolSize);
|
||||||
if (Vector3.Distance(serieData.runtimePosition, chart.pointerPos) <= symbolSize)
|
if (Vector3.Distance(serieData.context.position, chart.pointerPos) <= symbolSize)
|
||||||
{
|
{
|
||||||
serieData.highlighted = true;
|
serieData.context.highlighted = true;
|
||||||
serie.context.pointerItemDataIndex = i;
|
serie.context.pointerItemDataIndex = i;
|
||||||
serie.context.pointerEnter = true;
|
serie.context.pointerEnter = true;
|
||||||
chart.RefreshPainter(serie);
|
chart.RefreshPainter(serie);
|
||||||
@@ -165,7 +165,7 @@ namespace XCharts
|
|||||||
if (!symbol.ShowSymbol(serieData.index, maxCount))
|
if (!symbol.ShowSymbol(serieData.index, maxCount))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
var highlight = serie.highlighted || serieData.highlighted;
|
var highlight = serie.highlighted || serieData.context.highlighted;
|
||||||
var color = SerieHelper.GetItemColor(serie, serieData, theme, colorIndex, highlight);
|
var color = SerieHelper.GetItemColor(serie, serieData, theme, colorIndex, highlight);
|
||||||
var toColor = SerieHelper.GetItemToColor(serie, serieData, theme, colorIndex, highlight);
|
var toColor = SerieHelper.GetItemToColor(serie, serieData, theme, colorIndex, highlight);
|
||||||
var emptyColor = SerieHelper.GetItemBackgroundColor(serie, serieData, theme, colorIndex, highlight, false);
|
var emptyColor = SerieHelper.GetItemBackgroundColor(serie, serieData, theme, colorIndex, highlight, false);
|
||||||
@@ -187,11 +187,11 @@ namespace XCharts
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
serie.context.dataPoints.Add(pos);
|
serie.context.dataPoints.Add(pos);
|
||||||
serieData.runtimePosition = pos;
|
serieData.context.position = pos;
|
||||||
var datas = serieData.data;
|
var datas = serieData.data;
|
||||||
float symbolSize = 0;
|
float symbolSize = 0;
|
||||||
|
|
||||||
if (serie.highlighted || serieData.highlighted)
|
if (serie.highlighted || serieData.context.highlighted)
|
||||||
{
|
{
|
||||||
symbolSize = symbol.GetSelectedSize(datas, theme.serie.scatterSymbolSelectedSize);
|
symbolSize = symbol.GetSelectedSize(datas, theme.serie.scatterSymbolSelectedSize);
|
||||||
}
|
}
|
||||||
@@ -267,7 +267,7 @@ namespace XCharts
|
|||||||
if (!symbol.ShowSymbol(serieData.index, maxCount))
|
if (!symbol.ShowSymbol(serieData.index, maxCount))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
var highlight = serie.highlighted || serieData.highlighted;
|
var highlight = serie.highlighted || serieData.context.highlighted;
|
||||||
var color = SerieHelper.GetItemColor(serie, serieData, theme, colorIndex, highlight);
|
var color = SerieHelper.GetItemColor(serie, serieData, theme, colorIndex, highlight);
|
||||||
var toColor = SerieHelper.GetItemToColor(serie, serieData, theme, colorIndex, highlight);
|
var toColor = SerieHelper.GetItemToColor(serie, serieData, theme, colorIndex, highlight);
|
||||||
var emptyColor = SerieHelper.GetItemBackgroundColor(serie, serieData, theme, colorIndex, highlight, false);
|
var emptyColor = SerieHelper.GetItemBackgroundColor(serie, serieData, theme, colorIndex, highlight, false);
|
||||||
@@ -292,11 +292,11 @@ namespace XCharts
|
|||||||
pos = new Vector3(axis.context.x + xDataHig, axis.context.y + yDataHig);
|
pos = new Vector3(axis.context.x + xDataHig, axis.context.y + yDataHig);
|
||||||
}
|
}
|
||||||
serie.context.dataPoints.Add(pos);
|
serie.context.dataPoints.Add(pos);
|
||||||
serieData.runtimePosition = pos;
|
serieData.context.position = pos;
|
||||||
|
|
||||||
var datas = serieData.data;
|
var datas = serieData.data;
|
||||||
var symbolSize = 0f;
|
var symbolSize = 0f;
|
||||||
if (serie.highlighted || serieData.highlighted)
|
if (serie.highlighted || serieData.context.highlighted)
|
||||||
symbolSize = symbol.GetSelectedSize(datas, theme.serie.scatterSymbolSelectedSize);
|
symbolSize = symbol.GetSelectedSize(datas, theme.serie.scatterSymbolSelectedSize);
|
||||||
else
|
else
|
||||||
symbolSize = symbol.GetSize(datas, theme.serie.scatterSymbolSize);
|
symbolSize = symbol.GetSize(datas, theme.serie.scatterSymbolSize);
|
||||||
|
|||||||
@@ -175,7 +175,7 @@ namespace XCharts
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 系列。每个系列通过 type 决定自己的图表类型。
|
/// 系列。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[System.Serializable]
|
[System.Serializable]
|
||||||
public class Serie : BaseSerie, IComparable
|
public class Serie : BaseSerie, IComparable
|
||||||
@@ -1285,7 +1285,7 @@ namespace XCharts
|
|||||||
serieData.name = name;
|
serieData.name = name;
|
||||||
serieData.index = m_Data.Count;
|
serieData.index = m_Data.Count;
|
||||||
serieData.data = new List<double>() { parent.children.Count, value };
|
serieData.data = new List<double>() { parent.children.Count, value };
|
||||||
serieData.runtimeParent = parent;
|
serieData.context.parent = parent;
|
||||||
AddSerieData(serieData);
|
AddSerieData(serieData);
|
||||||
parent.children.Add(serieData.index);
|
parent.children.Add(serieData.index);
|
||||||
return serieData;
|
return serieData;
|
||||||
@@ -1296,7 +1296,7 @@ namespace XCharts
|
|||||||
serieData.name = name;
|
serieData.name = name;
|
||||||
serieData.index = m_Data.Count;
|
serieData.index = m_Data.Count;
|
||||||
serieData.data = new List<double>(value);
|
serieData.data = new List<double>(value);
|
||||||
serieData.runtimeParent = parent;
|
serieData.context.parent = parent;
|
||||||
AddSerieData(serieData);
|
AddSerieData(serieData);
|
||||||
parent.children.Add(serieData.index);
|
parent.children.Add(serieData.index);
|
||||||
return serieData;
|
return serieData;
|
||||||
@@ -1577,7 +1577,7 @@ namespace XCharts
|
|||||||
{
|
{
|
||||||
highlighted = false;
|
highlighted = false;
|
||||||
foreach (var serieData in m_Data)
|
foreach (var serieData in m_Data)
|
||||||
serieData.highlighted = false;
|
serieData.context.highlighted = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -1587,7 +1587,7 @@ namespace XCharts
|
|||||||
{
|
{
|
||||||
var serieData = GetSerieData(index);
|
var serieData = GetSerieData(index);
|
||||||
if (serieData != null)
|
if (serieData != null)
|
||||||
serieData.highlighted = flag;
|
serieData.context.highlighted = flag;
|
||||||
}
|
}
|
||||||
|
|
||||||
public float GetBarWidth(float categoryWidth)
|
public float GetBarWidth(float categoryWidth)
|
||||||
@@ -1619,7 +1619,7 @@ namespace XCharts
|
|||||||
{
|
{
|
||||||
if (index >= 0 && index < dataCount)
|
if (index >= 0 && index < dataCount)
|
||||||
{
|
{
|
||||||
return ChartHelper.IsIngore(data[index].runtimePosition);
|
return ChartHelper.IsIngore(data[index].context.position);
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -36,7 +36,6 @@ namespace XCharts
|
|||||||
/// 鼠标所在轴线上的数据项索引(可能有多个)
|
/// 鼠标所在轴线上的数据项索引(可能有多个)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public List<int> pointerAxisDataIndexs = new List<int>();
|
public List<int> pointerAxisDataIndexs = new List<int>();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 中心点
|
/// 中心点
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -7,13 +7,12 @@
|
|||||||
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using UnityEngine.UI;
|
|
||||||
|
|
||||||
namespace XCharts
|
namespace XCharts
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// A data item of serie.
|
/// A data item of serie.
|
||||||
/// 系列中的一个数据项。可存储数据名和1-n维的数据。
|
/// 系列中的一个数据项。可存储数据名和1-n维个数据。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[System.Serializable]
|
[System.Serializable]
|
||||||
public class SerieData : ChildComponent
|
public class SerieData : ChildComponent
|
||||||
@@ -36,7 +35,6 @@ namespace XCharts
|
|||||||
public ChartLabel labelObject { get; set; }
|
public ChartLabel labelObject { get; set; }
|
||||||
|
|
||||||
private bool m_Show = true;
|
private bool m_Show = true;
|
||||||
private float m_RtPieOutsideRadius;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// the name of data item.
|
/// the name of data item.
|
||||||
@@ -103,71 +101,7 @@ namespace XCharts
|
|||||||
/// 该数据项是否要显示。
|
/// 该数据项是否要显示。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool show { get { return m_Show; } set { m_Show = value; } }
|
public bool show { get { return m_Show; } set { m_Show = value; } }
|
||||||
/// <summary>
|
|
||||||
/// Whether the data item is highlighted.
|
|
||||||
/// 该数据项是否被高亮,一般由鼠标悬停或图例悬停触发高亮。
|
|
||||||
/// </summary>
|
|
||||||
public bool highlighted { get; set; }
|
|
||||||
public Vector3 labelPosition { get; set; }
|
|
||||||
private bool m_CanShowLabel = true;
|
|
||||||
/// <summary>
|
|
||||||
/// 是否可以显示Label
|
|
||||||
/// </summary>
|
|
||||||
public bool canShowLabel { get { return m_CanShowLabel; } set { m_CanShowLabel = value; } }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 饼图数据项的开始角度(运行时自动计算)
|
|
||||||
/// </summary>
|
|
||||||
public float runtimePieStartAngle { get; internal set; }
|
|
||||||
/// <summary>
|
|
||||||
/// 饼图数据项的结束角度(运行时自动计算)
|
|
||||||
/// </summary>
|
|
||||||
public float runtimePieToAngle { get; internal set; }
|
|
||||||
/// <summary>
|
|
||||||
/// 饼图数据项的一半时的角度(运行时自动计算)
|
|
||||||
/// </summary>
|
|
||||||
public float runtimePieHalfAngle { get; internal set; }
|
|
||||||
/// <summary>
|
|
||||||
/// 饼图数据项的当前角度(运行时自动计算)
|
|
||||||
/// </summary>
|
|
||||||
public float runtimePieCurrAngle { get; internal set; }
|
|
||||||
/// <summary>
|
|
||||||
/// 饼图数据项的内半径
|
|
||||||
/// </summary>
|
|
||||||
public float runtimePieInsideRadius { get; internal set; }
|
|
||||||
/// <summary>
|
|
||||||
/// 饼图数据项的外半径
|
|
||||||
/// </summary>
|
|
||||||
public float runtimePieOutsideRadius
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
if (radius > 0) return radius;
|
|
||||||
else return m_RtPieOutsideRadius;
|
|
||||||
}
|
|
||||||
internal set
|
|
||||||
{
|
|
||||||
m_RtPieOutsideRadius = value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/// <summary>
|
|
||||||
/// 饼图数据项的偏移半径
|
|
||||||
/// </summary>
|
|
||||||
public float runtimePieOffsetRadius { get; internal set; }
|
|
||||||
public Vector3 runtimePosition { get; set; }
|
|
||||||
/// <summary>
|
|
||||||
/// 绘制区域。
|
|
||||||
/// </summary>
|
|
||||||
public Rect runtimeRect { get; set; }
|
|
||||||
public Rect runtimeSubRect { get; set; }
|
|
||||||
public int runtimeLevel { get; set; }
|
|
||||||
public SerieData runtimeParent { get; set; }
|
|
||||||
public Color32 runtimeColor { get; set; }
|
|
||||||
public double runtimeArea { get; set; }
|
|
||||||
public float runtimeAngle { get; set; }
|
|
||||||
public Vector3 runtiemPieOffsetCenter { get; set; }
|
|
||||||
public float runtimeStackHig { get; set; }
|
|
||||||
public Image runtimeSymbol { get; set; }
|
|
||||||
private List<double> m_PreviousData = new List<double>();
|
private List<double> m_PreviousData = new List<double>();
|
||||||
private List<float> m_DataUpdateTime = new List<float>();
|
private List<float> m_DataUpdateTime = new List<float>();
|
||||||
private List<bool> m_DataUpdateFlag = new List<bool>();
|
private List<bool> m_DataUpdateFlag = new List<bool>();
|
||||||
@@ -177,11 +111,11 @@ namespace XCharts
|
|||||||
{
|
{
|
||||||
index = 0;
|
index = 0;
|
||||||
labelObject = null;
|
labelObject = null;
|
||||||
highlighted = false;
|
|
||||||
m_Name = string.Empty;
|
m_Name = string.Empty;
|
||||||
m_Show = true;
|
m_Show = true;
|
||||||
m_Selected = false;
|
m_Selected = false;
|
||||||
m_CanShowLabel = true;
|
context.canShowLabel = true;
|
||||||
|
context.highlighted = false;
|
||||||
m_Radius = 0;
|
m_Radius = 0;
|
||||||
m_Data.Clear();
|
m_Data.Clear();
|
||||||
m_PreviousData.Clear();
|
m_PreviousData.Clear();
|
||||||
|
|||||||
@@ -5,7 +5,6 @@
|
|||||||
/* */
|
/* */
|
||||||
/************************************************/
|
/************************************************/
|
||||||
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using UnityEngine.UI;
|
using UnityEngine.UI;
|
||||||
|
|
||||||
@@ -13,5 +12,53 @@ namespace XCharts
|
|||||||
{
|
{
|
||||||
public class SerieDataContext
|
public class SerieDataContext
|
||||||
{
|
{
|
||||||
|
public Vector3 labelPosition { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// 开始角度
|
||||||
|
/// </summary>
|
||||||
|
public float startAngle { get; internal set; }
|
||||||
|
/// <summary>
|
||||||
|
/// 结束角度
|
||||||
|
/// </summary>
|
||||||
|
public float toAngle { get; internal set; }
|
||||||
|
/// <summary>
|
||||||
|
/// 一半时的角度
|
||||||
|
/// </summary>
|
||||||
|
public float halfAngle { get; internal set; }
|
||||||
|
/// <summary>
|
||||||
|
/// 当前角度
|
||||||
|
/// </summary>
|
||||||
|
public float currentAngle { get; internal set; }
|
||||||
|
/// <summary>
|
||||||
|
/// 饼图数据项的内半径
|
||||||
|
/// </summary>
|
||||||
|
public float insideRadius { get; internal set; }
|
||||||
|
/// <summary>
|
||||||
|
/// 饼图数据项的偏移半径
|
||||||
|
/// </summary>
|
||||||
|
public float offsetRadius { get; internal set; }
|
||||||
|
public float outsideRadius { get; set; }
|
||||||
|
public Vector3 position { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// 绘制区域。
|
||||||
|
/// </summary>
|
||||||
|
public Rect rect { get; set; }
|
||||||
|
public Rect subRect { get; set; }
|
||||||
|
public int level { get; set; }
|
||||||
|
public SerieData parent { get; set; }
|
||||||
|
public Color32 color { get; set; }
|
||||||
|
public double area { get; set; }
|
||||||
|
public float angle { get; set; }
|
||||||
|
public Vector3 offsetCenter { get; set; }
|
||||||
|
public float stackHeight { get; set; }
|
||||||
|
|
||||||
|
public bool canShowLabel { get; set; }
|
||||||
|
public Image symbol { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// Whether the data item is highlighted.
|
||||||
|
/// 该数据项是否被高亮,一般由鼠标悬停或图例悬停触发高亮。
|
||||||
|
/// </summary>
|
||||||
|
public bool highlighted { get; set; }
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -222,9 +222,9 @@ namespace XCharts
|
|||||||
var serieLabel = SerieHelper.GetSerieLabel(serie, serieData);
|
var serieLabel = SerieHelper.GetSerieLabel(serie, serieData);
|
||||||
var iconStyle = SerieHelper.GetIconStyle(serie, serieData);
|
var iconStyle = SerieHelper.GetIconStyle(serie, serieData);
|
||||||
var isIgnore = serie.IsIgnoreIndex(serieData.index);
|
var isIgnore = serie.IsIgnoreIndex(serieData.index);
|
||||||
serieData.labelObject.SetPosition(serieData.runtimePosition);
|
serieData.labelObject.SetPosition(serieData.context.position);
|
||||||
serieData.labelObject.UpdateIcon(iconStyle);
|
serieData.labelObject.UpdateIcon(iconStyle);
|
||||||
if (serie.show && serieLabel.show && serieData.canShowLabel && !isIgnore)
|
if (serie.show && serieLabel.show && serieData.context.canShowLabel && !isIgnore)
|
||||||
{
|
{
|
||||||
var value = serieData.GetData(1);
|
var value = serieData.GetData(1);
|
||||||
var content = SerieLabelHelper.GetFormatterContent(serie, serieData, value, total,
|
var content = SerieLabelHelper.GetFormatterContent(serie, serieData, value, total,
|
||||||
@@ -235,7 +235,7 @@ namespace XCharts
|
|||||||
&& !serie.areaStyle.show;
|
&& !serie.areaStyle.show;
|
||||||
SerieLabelHelper.ResetLabel(serieData.labelObject.label, serieLabel, chart.theme, colorIndex);
|
SerieLabelHelper.ResetLabel(serieData.labelObject.label, serieLabel, chart.theme, colorIndex);
|
||||||
serieData.SetLabelActive(!isIgnore);
|
serieData.SetLabelActive(!isIgnore);
|
||||||
serieData.labelObject.SetPosition(serieData.runtimePosition + (invert ? -serieLabel.offset : serieLabel.offset));
|
serieData.labelObject.SetPosition(serieData.context.position + (invert ? -serieLabel.offset : serieLabel.offset));
|
||||||
serieData.labelObject.SetText(content);
|
serieData.labelObject.SetText(content);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
Reference in New Issue
Block a user