优化组件非配置参数变量的命名和访问权限

This commit is contained in:
monitor1394
2019-11-02 08:24:37 +08:00
parent 4792c785ac
commit 7de3274ce3
25 changed files with 417 additions and 462 deletions

View File

@@ -21,7 +21,7 @@ namespace XCharts
/// <returns></returns>
public string jsonData { get { return m_JsonData; } set { m_JsonData = value; ParseJsonData(value); } }
public void OnAfterDeserialize()
internal void OnAfterDeserialize()
{
if (m_DataFromJson)
{
@@ -30,7 +30,7 @@ namespace XCharts
}
}
public void OnBeforeSerialize()
internal void OnBeforeSerialize()
{
}

View File

@@ -208,22 +208,22 @@ namespace XCharts
/// the current minimun value.
/// 当前最小值。
/// </summary>
public float minValue { get; set; }
public float runtimeMinValue { get; internal set; }
/// <summary>
/// the current maximum value.
/// 当前最大值。
/// </summary>
public float maxValue { get; set; }
public float runtimeMaxValue { get; internal set; }
/// <summary>
/// the x offset of zero position.
/// 坐标轴原点在X轴的偏移。
/// </summary>
public float zeroXOffset { get; set; }
public float runtimeZeroXOffset { get; internal set; }
/// <summary>
/// the y offset of zero position.
/// 坐标轴原点在Y轴的偏移。
/// </summary>
public float zeroYOffset { get; set; }
public float runtimeZeroYOffset { get; internal set; }
private int filterStart;
private int filterEnd;
@@ -301,7 +301,7 @@ namespace XCharts
/// <param name="index">类目数据索引</param>
/// <param name="dataZoom">区域缩放</param>
/// <returns></returns>
public string GetData(int index, DataZoom dataZoom)
internal string GetData(int index, DataZoom dataZoom)
{
var showData = GetDataList(dataZoom);
if (index >= 0 && index < showData.Count)
@@ -315,7 +315,7 @@ namespace XCharts
/// </summary>
/// <param name="dataZoom">区域缩放</param>
/// <returns></returns>
public List<string> GetDataList(DataZoom dataZoom)
internal List<string> GetDataList(DataZoom dataZoom)
{
if (dataZoom != null && dataZoom.enable)
{
@@ -333,7 +333,7 @@ namespace XCharts
/// 更新dataZoom对应的类目数据列表
/// </summary>
/// <param name="dataZoom"></param>
public void UpdateFilterData(DataZoom dataZoom)
internal void UpdateFilterData(DataZoom dataZoom)
{
if (dataZoom != null && dataZoom.enable)
{
@@ -366,7 +366,7 @@ namespace XCharts
/// </summary>
/// <param name="dataZoom"></param>
/// <returns></returns>
public int GetSplitNumber(float coordinateWid, DataZoom dataZoom)
internal int GetSplitNumber(float coordinateWid, DataZoom dataZoom)
{
if (type == AxisType.Value)
{
@@ -398,7 +398,7 @@ namespace XCharts
/// <param name="coordinateWidth"></param>
/// <param name="dataZoom"></param>
/// <returns></returns>
public float GetSplitWidth(float coordinateWidth, DataZoom dataZoom)
internal float GetSplitWidth(float coordinateWidth, DataZoom dataZoom)
{
int split = GetSplitNumber(coordinateWidth, dataZoom);
int segment = (m_BoundaryGap ? split : split - 1);
@@ -411,7 +411,7 @@ namespace XCharts
/// </summary>
/// <param name="dataZoom"></param>
/// <returns></returns>
public int GetDataNumber(DataZoom dataZoom)
internal int GetDataNumber(DataZoom dataZoom)
{
return GetDataList(dataZoom).Count;
}
@@ -422,7 +422,7 @@ namespace XCharts
/// <param name="coordinateWidth"></param>
/// <param name="dataZoom"></param>
/// <returns></returns>
public float GetDataWidth(float coordinateWidth, int dataCount, DataZoom dataZoom)
internal float GetDataWidth(float coordinateWidth, int dataCount, DataZoom dataZoom)
{
if (dataCount < 1) dataCount = 1;
var categoryCount = GetDataNumber(dataZoom);
@@ -439,7 +439,7 @@ namespace XCharts
/// <param name="maxValue"></param>
/// <param name="dataZoom"></param>
/// <returns></returns>
public string GetLabelName(float coordinateWidth, int index, float minValue, float maxValue,
internal string GetLabelName(float coordinateWidth, int index, float minValue, float maxValue,
DataZoom dataZoom, bool forcePercent)
{
int split = GetSplitNumber(coordinateWidth, dataZoom);
@@ -483,7 +483,7 @@ namespace XCharts
/// </summary>
/// <param name="dataZoom"></param>
/// <returns></returns>
public int GetScaleNumber(float coordinateWidth, DataZoom dataZoom)
internal int GetScaleNumber(float coordinateWidth, DataZoom dataZoom)
{
if (type == AxisType.Value)
{
@@ -508,7 +508,7 @@ namespace XCharts
/// <param name="coordinateWidth"></param>
/// <param name="dataZoom"></param>
/// <returns></returns>
public float GetScaleWidth(float coordinateWidth, int index, DataZoom dataZoom)
internal float GetScaleWidth(float coordinateWidth, int index, DataZoom dataZoom)
{
int num = GetScaleNumber(coordinateWidth, dataZoom) - 1;
if (num <= 0) num = 1;
@@ -528,18 +528,18 @@ namespace XCharts
/// 更新刻度标签文字
/// </summary>
/// <param name="dataZoom"></param>
public void UpdateLabelText(float coordinateWidth, DataZoom dataZoom, bool forcePercent)
internal void UpdateLabelText(float coordinateWidth, DataZoom dataZoom, bool forcePercent)
{
for (int i = 0; i < axisLabelTextList.Count; i++)
{
if (axisLabelTextList[i] != null)
{
axisLabelTextList[i].text = GetLabelName(coordinateWidth, i, minValue, maxValue, dataZoom, forcePercent);
axisLabelTextList[i].text = GetLabelName(coordinateWidth, i, runtimeMinValue, runtimeMaxValue, dataZoom, forcePercent);
}
}
}
public void SetTooltipLabel(GameObject label)
internal void SetTooltipLabel(GameObject label)
{
m_TooltipLabel = label;
m_TooltipLabelRect = label.GetComponent<RectTransform>();
@@ -547,13 +547,13 @@ namespace XCharts
m_TooltipLabel.SetActive(true);
}
public void SetTooltipLabelColor(Color bgColor, Color textColor)
internal void SetTooltipLabelColor(Color bgColor, Color textColor)
{
m_TooltipLabel.GetComponent<Image>().color = bgColor;
m_TooltipLabelText.color = textColor;
}
public void SetTooltipLabelActive(bool flag)
internal void SetTooltipLabelActive(bool flag)
{
if (m_TooltipLabel && m_TooltipLabel.activeInHierarchy != flag)
{
@@ -561,7 +561,7 @@ namespace XCharts
}
}
public void UpdateTooptipLabelText(string text)
internal void UpdateTooptipLabelText(string text)
{
if (m_TooltipLabelText)
{
@@ -571,7 +571,7 @@ namespace XCharts
}
}
public void UpdateTooltipLabelPos(Vector2 pos)
internal void UpdateTooltipLabelPos(Vector2 pos)
{
if (m_TooltipLabel)
{
@@ -591,7 +591,7 @@ namespace XCharts
/// </summary>
/// <param name="minValue"></param>
/// <param name="maxValue"></param>
public void AdjustMinMaxValue(ref float minValue, ref float maxValue)
internal void AdjustMinMaxValue(ref float minValue, ref float maxValue)
{
if (minMaxType == Axis.AxisMinMaxType.Custom)
{
@@ -663,8 +663,8 @@ namespace XCharts
m_AxisLabel.Equals(other.axisLabel) &&
splitLineType == other.splitLineType &&
boundaryGap == other.boundaryGap &&
minValue == other.minValue &&
maxValue == other.maxValue &&
runtimeMinValue == other.runtimeMinValue &&
runtimeMaxValue == other.runtimeMaxValue &&
axisName.Equals(other.axisName) &&
ChartHelper.IsValueEqualsList<string>(m_Data, other.data);
}

View File

@@ -208,12 +208,12 @@ namespace XCharts
/// The start label.
/// 组件的开始信息文本。
/// </summary>
public Text startLabel { get; set; }
private Text m_StartLabel { get; set; }
/// <summary>
/// The end label.
/// 组件的结束信息文本。
/// </summary>
public Text endLabel { get; set; }
private Text m_EndLabel { get; set; }
public static DataZoom defaultDataZoom
{
@@ -297,15 +297,15 @@ namespace XCharts
/// 是否显示文本
/// </summary>
/// <param name="flag"></param>
public void SetLabelActive(bool flag)
internal void SetLabelActive(bool flag)
{
if (startLabel && startLabel.gameObject.activeInHierarchy != flag)
if (m_StartLabel && m_StartLabel.gameObject.activeInHierarchy != flag)
{
startLabel.gameObject.SetActive(flag);
m_StartLabel.gameObject.SetActive(flag);
}
if (endLabel && endLabel.gameObject.activeInHierarchy != flag)
if (m_EndLabel && m_EndLabel.gameObject.activeInHierarchy != flag)
{
endLabel.gameObject.SetActive(flag);
m_EndLabel.gameObject.SetActive(flag);
}
}
@@ -313,18 +313,18 @@ namespace XCharts
/// 设置开始文本内容
/// </summary>
/// <param name="text"></param>
public void SetStartLabelText(string text)
internal void SetStartLabelText(string text)
{
if (startLabel) startLabel.text = text;
if (m_StartLabel) m_StartLabel.text = text;
}
/// <summary>
/// 设置结束文本内容
/// </summary>
/// <param name="text"></param>
public void SetEndLabelText(string text)
internal void SetEndLabelText(string text)
{
if (endLabel) endLabel.text = text;
if (m_EndLabel) m_EndLabel.text = text;
}
/// <summary>
@@ -332,7 +332,7 @@ namespace XCharts
/// </summary>
/// <param name="gridBottom"></param>
/// <returns></returns>
public float GetHeight(float gridBottom)
internal float GetHeight(float gridBottom)
{
if (height <= 0)
{
@@ -342,5 +342,25 @@ namespace XCharts
}
else return height;
}
internal void SetStartLabel(Text startLabel)
{
m_StartLabel = startLabel;
}
internal void SetEndLabel(Text endLabel)
{
m_EndLabel = endLabel;
}
internal void UpdateStartLabelPosition(Vector3 pos)
{
m_StartLabel.transform.localPosition = pos;
}
internal void UpdateEndLabelPosition(Vector3 pos)
{
m_EndLabel.transform.localPosition = pos;
}
}
}

View File

@@ -162,20 +162,17 @@ namespace XCharts
/// the center position of radar in container.
/// 雷达图在容器中的具体中心点。
/// </summary>
/// <value></value>
public Vector2 centerPos { get; set; }
public Vector2 runtimeCenterPos { get; internal set; }
/// <summary>
/// the true radius of radar.
/// 雷达图的运行时实际半径。
/// </summary>
/// <value></value>
public float actualRadius { get; set; }
public float runtimeRadius { get; internal set; }
/// <summary>
/// the data position list of radar.
/// 雷达图的所有数据坐标点列表。
/// </summary>
/// <returns></returns>
public Dictionary<int, List<Vector3>> dataPosList = new Dictionary<int, List<Vector3>>();
public Dictionary<int, List<Vector3>> runtimeDataPosList = new Dictionary<int, List<Vector3>>();
public static Radar defaultRadar
{
@@ -344,23 +341,23 @@ namespace XCharts
return 0;
}
public void UpdateRadarCenter(float chartWidth, float chartHeight)
internal void UpdateRadarCenter(float chartWidth, float chartHeight)
{
if (center.Length < 2) return;
var centerX = center[0] <= 1 ? chartWidth * center[0] : center[0];
var centerY = center[1] <= 1 ? chartHeight * center[1] : center[1];
centerPos = new Vector2(centerX, centerY);
runtimeCenterPos = new Vector2(centerX, centerY);
if (radius <= 0)
{
actualRadius = 0;
runtimeRadius = 0;
}
else if (radius <= 1)
{
actualRadius = Mathf.Min(chartWidth, chartHeight) * radius;
runtimeRadius = Mathf.Min(chartWidth, chartHeight) * radius;
}
else
{
actualRadius = radius;
runtimeRadius = radius;
}
}
@@ -368,8 +365,8 @@ namespace XCharts
{
int indicatorNum = indicatorList.Count;
var angle = 2 * Mathf.PI / indicatorNum * index;
var x = centerPos.x + actualRadius * Mathf.Sin(angle);
var y = centerPos.y + actualRadius * Mathf.Cos(angle);
var x = runtimeCenterPos.x + runtimeRadius * Mathf.Sin(angle);
var y = runtimeCenterPos.y + runtimeRadius * Mathf.Cos(angle);
return new Vector3(x, y);
}
}

View File

@@ -426,12 +426,12 @@ namespace XCharts
/// The index of serie,start at 0.
/// 系列的索引从0开始。
/// </summary>
public int index { get; set; }
public int index { get; internal set; }
/// <summary>
/// Whether the serie is highlighted.
/// 该系列是否高亮,一般由图例悬停触发。
/// </summary>
public bool highlighted { get; set; }
public bool highlighted { get; internal set; }
/// <summary>
/// the count of data list.
/// 数据项个数。
@@ -444,25 +444,25 @@ namespace XCharts
/// <summary>
/// 饼图的中心点位置。
/// </summary>
public Vector3 pieCenterPos { get; set; }
public Vector3 runtimePieCenterPos { get; internal set; }
/// <summary>
/// 饼图的内径
/// </summary>
public float pieInsideRadius { get; set; }
public float runtimePieInsideRadius { get; internal set; }
/// <summary>
/// 饼图的外径
/// </summary>
public float pieOutsideRadius { get; set; }
public float runtimePieOutsideRadius { get; internal set; }
/// <summary>
/// 饼图的数据项最大值
/// </summary>
public float pieDataMax { get; set; }
public float runtimePieDataMax { get; internal set; }
/// <summary>
/// 饼图的数据项之和
/// </summary>
public float pieDataTotal { get; set; }
public float runtimePieDataTotal { get; internal set; }
public List<Vector3> GetUpSmoothList(int dataIndex, int size = 100)
internal List<Vector3> GetUpSmoothList(int dataIndex, int size = 100)
{
if (m_UpSmoothPoints.ContainsKey(dataIndex))
{
@@ -476,7 +476,7 @@ namespace XCharts
}
}
public List<Vector3> GetDownSmoothList(int dataIndex, int size = 100)
internal List<Vector3> GetDownSmoothList(int dataIndex, int size = 100)
{
if (m_DownSmoothPoints.ContainsKey(dataIndex))
{
@@ -490,7 +490,7 @@ namespace XCharts
}
}
public void ClearSmoothList(int dataIndex)
internal void ClearSmoothList(int dataIndex)
{
if (m_UpSmoothPoints.ContainsKey(dataIndex))
{
@@ -836,7 +836,7 @@ namespace XCharts
/// 根据dataZoom更新数据列表缓存
/// </summary>
/// <param name="dataZoom"></param>
public void UpdateFilterData(DataZoom dataZoom)
internal void UpdateFilterData(DataZoom dataZoom)
{
if (dataZoom != null && dataZoom.enable)
{
@@ -939,7 +939,7 @@ namespace XCharts
}
}
public Color GetAreaColor(ThemeInfo theme, int index, bool highlight)
internal Color GetAreaColor(ThemeInfo theme, int index, bool highlight)
{
var color = areaStyle.color != Color.clear ? areaStyle.color : (Color)theme.GetColor(index);
if (highlight)
@@ -951,7 +951,7 @@ namespace XCharts
return color;
}
public Color GetAreaToColor(ThemeInfo theme, int index, bool highlight)
internal Color GetAreaToColor(ThemeInfo theme, int index, bool highlight)
{
if (areaStyle.toColor != Color.clear)
{
@@ -970,7 +970,7 @@ namespace XCharts
}
}
public Color GetLineColor(ThemeInfo theme, int index, bool highlight)
internal Color GetLineColor(ThemeInfo theme, int index, bool highlight)
{
if (lineStyle.color != Color.clear)
{
@@ -988,7 +988,7 @@ namespace XCharts
}
}
public Color GetSymbolColor(ThemeInfo theme, int index, bool highlight)
internal Color GetSymbolColor(ThemeInfo theme, int index, bool highlight)
{
if (symbol.color != Color.clear)
{
@@ -1006,13 +1006,13 @@ namespace XCharts
}
}
public float GetBarWidth(float categoryWidth)
internal float GetBarWidth(float categoryWidth)
{
if (m_BarWidth > 1) return m_BarWidth;
else return m_BarWidth * categoryWidth;
}
public float GetBarGap(float categoryWidth)
internal float GetBarGap(float categoryWidth)
{
if (m_BarGap == -1) return 0;
else if (m_BarGap <= 1) return GetBarWidth(categoryWidth) * m_BarGap;
@@ -1073,7 +1073,7 @@ namespace XCharts
}
}
public bool IsNeedShowDataIcon()
internal bool IsNeedShowDataIcon()
{
foreach (var data in m_Data)
{

View File

@@ -143,7 +143,7 @@ namespace XCharts
/// </summary>
/// <param name="index"></param>
/// <returns></returns>
public Serie GetLastStackSerie(int index)
internal Serie GetLastStackSerie(int index)
{
var serie = GetSerie(index);
return GetLastStackSerie(serie);
@@ -154,7 +154,7 @@ namespace XCharts
/// </summary>
/// <param name="stack"></param>
/// <returns></returns>
public bool IsAnyGradientSerie(string stack)
internal bool IsAnyGradientSerie(string stack)
{
if (string.IsNullOrEmpty(stack)) return false;
foreach (var serie in m_Series)
@@ -172,7 +172,7 @@ namespace XCharts
/// </summary>
/// <param name="serie"></param>
/// <returns></returns>
public Serie GetLastStackSerie(Serie serie)
internal Serie GetLastStackSerie(Serie serie)
{
if (serie == null || string.IsNullOrEmpty(serie.stack)) return null;
for (int i = serie.index - 1; i >= 0; i--)
@@ -461,7 +461,7 @@ namespace XCharts
/// dataZoom由变化是更新系列的缓存数据
/// </summary>
/// <param name="dataZoom"></param>
public void UpdateFilterData(DataZoom dataZoom)
internal void UpdateFilterData(DataZoom dataZoom)
{
if (dataZoom != null && dataZoom.enable)
{
@@ -527,7 +527,7 @@ namespace XCharts
/// </summary>
/// <param name="axisIndex"></param>
/// <returns></returns>
public bool IsUsedAxisIndex(int axisIndex)
internal bool IsUsedAxisIndex(int axisIndex)
{
foreach (var serie in list)
{
@@ -555,7 +555,7 @@ namespace XCharts
/// <param name="axisIndex"></param>
/// <param name="minVaule"></param>
/// <param name="maxValue"></param>
public void GetXMinMaxValue(DataZoom dataZoom, int axisIndex, bool isValueAxis,
internal void GetXMinMaxValue(DataZoom dataZoom, int axisIndex, bool isValueAxis,
out float minVaule, out float maxValue)
{
GetMinMaxValue(dataZoom, axisIndex, isValueAxis, false, out minVaule, out maxValue);
@@ -568,7 +568,7 @@ namespace XCharts
/// <param name="axisIndex"></param>
/// <param name="minVaule"></param>
/// <param name="maxValue"></param>
public void GetYMinMaxValue(DataZoom dataZoom, int axisIndex, bool isValueAxis,
internal void GetYMinMaxValue(DataZoom dataZoom, int axisIndex, bool isValueAxis,
out float minVaule, out float maxValue)
{
GetMinMaxValue(dataZoom, axisIndex, isValueAxis, true, out minVaule, out maxValue);
@@ -576,7 +576,7 @@ namespace XCharts
private Dictionary<int, List<Serie>> _stackSeriesForMinMax = new Dictionary<int, List<Serie>>();
private Dictionary<int, float> _serieTotalValueForMinMax = new Dictionary<int, float>();
public void GetMinMaxValue(DataZoom dataZoom, int axisIndex, bool isValueAxis, bool yValue,
internal void GetMinMaxValue(DataZoom dataZoom, int axisIndex, bool isValueAxis, bool yValue,
out float minVaule, out float maxValue)
{
float min = int.MaxValue;
@@ -680,7 +680,7 @@ namespace XCharts
/// 是否由数据堆叠
/// </summary>
/// <returns></returns>
public bool IsStack()
internal bool IsStack()
{
_setForStack.Clear();
foreach (var serie in m_Series)
@@ -701,7 +701,7 @@ namespace XCharts
/// <param name="stackName"></param>
/// <param name="type"></param>
/// <returns></returns>
public bool IsStack(string stackName, SerieType type)
internal bool IsStack(string stackName, SerieType type)
{
if (string.IsNullOrEmpty(stackName)) return false;
int count = 0;
@@ -721,7 +721,7 @@ namespace XCharts
/// </summary>
/// <param name="type"></param>
/// <returns></returns>
public bool IsPercentStack(SerieType type)
internal bool IsPercentStack(SerieType type)
{
int count = 0;
bool isPercentStack = false;
@@ -746,7 +746,7 @@ namespace XCharts
/// <param name="stackName"></param>
/// <param name="type"></param>
/// <returns></returns>
public bool IsPercentStack(string stackName, SerieType type)
internal bool IsPercentStack(string stackName, SerieType type)
{
if (string.IsNullOrEmpty(stackName)) return false;
int count = 0;
@@ -770,7 +770,7 @@ namespace XCharts
/// 获得堆叠系列列表
/// </summary>
/// <returns></returns>
public Dictionary<int, List<Serie>> GetStackSeries()
internal Dictionary<int, List<Serie>> GetStackSeries()
{
int count = 0;
Dictionary<string, int> sets = new Dictionary<string, int>();
@@ -810,7 +810,7 @@ namespace XCharts
/// </summary>
/// <param name="Dictionary<int"></param>
/// <param name="stackSeries"></param>
public void GetStackSeries(ref Dictionary<int, List<Serie>> stackSeries)
internal void GetStackSeries(ref Dictionary<int, List<Serie>> stackSeries)
{
int count = 0;
sets.Clear();
@@ -860,7 +860,7 @@ namespace XCharts
/// 获得所有系列名,不包含空名字。
/// </summary>
/// <returns></returns>
public List<string> GetSerieNameList()
internal List<string> GetSerieNameList()
{
serieNameList.Clear();
for (int n = 0; n < m_Series.Count; n++)

View File

@@ -124,42 +124,42 @@ namespace XCharts
/// The data index currently indicated by Tooltip.
/// 当前提示框所指示的数据项索引。
/// </summary>
public List<int> dataIndex { get; set; }
public List<int> runtimeDataIndex { get; internal set; }
/// <summary>
/// the value for x indicator label.
/// 指示器X轴上要显示的值。
/// </summary>
public float[] xValues { get; set; }
public float[] runtimeXValues { get; internal set; }
/// <summary>
/// the value for y indicator label.
/// 指示器Y轴上要显示的值。
/// </summary>
public float[] yValues { get; set; }
public float[] runtimeYValues { get; internal set; }
/// <summary>
/// the current pointer position.
/// 当前鼠标位置。
/// </summary>
public Vector2 pointerPos { get; set; }
public Vector2 runtimePointerPos { get; internal set; }
/// <summary>
/// the width of tooltip.
/// 提示框宽。
/// </summary>
public float width { get { return m_ContentRect.sizeDelta.x; } }
public float runtimeWidth { get { return m_ContentRect.sizeDelta.x; } }
/// <summary>
/// the height of tooltip.
/// 提示框高。
/// </summary>
public float height { get { return m_ContentRect.sizeDelta.y; } }
public float runtimeHeight { get { return m_ContentRect.sizeDelta.y; } }
/// <summary>
/// Whether the tooltip has been initialized.
/// 提示框是否已初始化。
/// </summary>
public bool inited { get { return m_GameObject != null; } }
public bool runtimeInited { get { return m_GameObject != null; } }
/// <summary>
/// the gameObject of tooltip.
/// 提示框的gameObject。
/// </summary>
public GameObject gameObject { get { return m_GameObject; } }
public GameObject runtimeGameObject { get { return m_GameObject; } }
public static Tooltip defaultTooltip
{
@@ -168,9 +168,9 @@ namespace XCharts
var tooltip = new Tooltip
{
m_Show = true,
xValues = new float[2] { -1, -1 },
yValues = new float[2] { -1, -1 },
dataIndex = new List<int>() { -1, -1 },
runtimeXValues = new float[2] { -1, -1 },
runtimeYValues = new float[2] { -1, -1 },
runtimeDataIndex = new List<int>() { -1, -1 },
lastDataIndex = new List<int>() { -1, -1 }
};
return tooltip;
@@ -214,7 +214,8 @@ namespace XCharts
/// <param name="color"></param>
public void SetContentBackgroundColor(Color color)
{
m_Content.GetComponent<Image>().color = color;
if (m_Content != null && m_Content.GetComponent<Image>() != null)
m_Content.GetComponent<Image>().color = color;
}
/// <summary>
@@ -252,11 +253,11 @@ namespace XCharts
/// <summary>
/// 清除提示框指示数据
/// </summary>
public void ClearValue()
internal void ClearValue()
{
dataIndex[0] = dataIndex[1] = -1;
xValues[0] = xValues[1] = -1;
yValues[0] = yValues[1] = -1;
runtimeDataIndex[0] = runtimeDataIndex[1] = -1;
runtimeXValues[0] = runtimeXValues[1] = -1;
runtimeYValues[0] = runtimeYValues[1] = -1;
}
/// <summary>
@@ -308,17 +309,17 @@ namespace XCharts
/// <returns></returns>
public bool IsDataIndexChanged()
{
return dataIndex[0] != lastDataIndex[0] ||
dataIndex[1] != lastDataIndex[1];
return runtimeDataIndex[0] != lastDataIndex[0] ||
runtimeDataIndex[1] != lastDataIndex[1];
}
/// <summary>
/// 当前索引缓存
/// </summary>
public void UpdateLastDataIndex()
internal void UpdateLastDataIndex()
{
lastDataIndex[0] = dataIndex[0];
lastDataIndex[1] = dataIndex[1];
lastDataIndex[0] = runtimeDataIndex[0];
lastDataIndex[1] = runtimeDataIndex[1];
}
/// <summary>
@@ -327,7 +328,7 @@ namespace XCharts
/// <returns></returns>
public bool IsSelected()
{
return dataIndex[0] >= 0 || dataIndex[1] >= 0;
return runtimeDataIndex[0] >= 0 || runtimeDataIndex[1] >= 0;
}
/// <summary>
@@ -337,10 +338,10 @@ namespace XCharts
/// <returns></returns>
public bool IsSelected(int index)
{
return dataIndex[0] == index || dataIndex[1] == index;
return runtimeDataIndex[0] == index || runtimeDataIndex[1] == index;
}
public string GetFormatterContent(int dataIndex, Series series, string category, DataZoom dataZoom = null)
internal string GetFormatterContent(int dataIndex, Series series, string category, DataZoom dataZoom = null)
{
if (string.IsNullOrEmpty(m_Formatter))
{
@@ -383,7 +384,7 @@ namespace XCharts
}
}
public string GetFormatterContent(string serieName, string dataName, float dataValue)
internal string GetFormatterContent(string serieName, string dataName, float dataValue)
{
if (string.IsNullOrEmpty(m_Formatter))
return ChartCached.FloatToStr(dataValue, 0, m_ForceENotation);

View File

@@ -164,14 +164,14 @@ namespace XCharts
/// 鼠标悬停选中的index
/// </summary>
/// <value></value>
public int rtSelectedIndex { get; set; }
public float rtSelectedValue { get; set; }
public int runtimeSelectedIndex { get; internal set; }
public float runtimeSelectedValue { get; internal set; }
/// <summary>
/// the current pointer position.
/// 当前鼠标位置。
/// </summary>
public Vector2 pointerPos { get; set; }
public bool isVertical { get { return orient == Orient.Vertical; } }
public Vector2 runtimePointerPos { get; internal set; }
public bool runtimeIsVertical { get { return orient == Orient.Vertical; } }
public float rangeMin
{
get
@@ -198,7 +198,7 @@ namespace XCharts
}
}
public int rtSplitNumber
public int runtimeSplitNumber
{
get
{
@@ -207,18 +207,18 @@ namespace XCharts
}
}
public float rangeMinHeight { get { return (rangeMin - min) / (max - min) * itemHeight; } }
public float rangeMaxHeight { get { return (rangeMax - min) / (max - min) * itemHeight; } }
public float runtimeRangeMinHeight { get { return (rangeMin - min) / (max - min) * itemHeight; } }
public float runtimeRangeMaxHeight { get { return (rangeMax - min) / (max - min) * itemHeight; } }
private List<Color> m_RtInRange = new List<Color>();
public List<Color> rtInRange
public List<Color> runtimeInRange
{
get
{
if (splitNumber == 0 || m_InRange.Count >= splitNumber || m_InRange.Count < 1) return m_InRange;
else
{
if (m_RtInRange.Count != rtSplitNumber)
if (m_RtInRange.Count != runtimeSplitNumber)
{
m_RtInRange.Clear();
var total = max - min;
@@ -256,7 +256,7 @@ namespace XCharts
public Color GetColor(float value)
{
int splitNumber = rtInRange.Count;
int splitNumber = runtimeInRange.Count;
if (splitNumber <= 0) return Color.clear;
value = Mathf.Clamp(value, min, max);
@@ -264,13 +264,13 @@ namespace XCharts
var index = GetIndex(value);
var nowMin = min + index * diff;
var rate = (value - nowMin) / diff;
if (index == splitNumber - 1) return rtInRange[index];
else return Color.Lerp(rtInRange[index], rtInRange[index + 1], rate);
if (index == splitNumber - 1) return runtimeInRange[index];
else return Color.Lerp(runtimeInRange[index], runtimeInRange[index + 1], rate);
}
public int GetIndex(float value)
{
int splitNumber = rtInRange.Count;
int splitNumber = runtimeInRange.Count;
if (splitNumber <= 0) return -1;
value = Mathf.Clamp(value, min, max);
@@ -289,19 +289,19 @@ namespace XCharts
public bool IsInSelectedValue(float value)
{
if (rtSelectedIndex < 0) return true;
if (runtimeSelectedIndex < 0) return true;
else
{
return rtSelectedIndex == GetIndex(value);
return runtimeSelectedIndex == GetIndex(value);
}
}
public float GetValue(Vector3 pos, float chartWidth, float chartHeight)
{
var centerPos = location.GetPosition(chartWidth, chartHeight);
var pos1 = centerPos + (isVertical ? Vector3.down : Vector3.left) * itemHeight / 2;
var pos2 = centerPos + (isVertical ? Vector3.up : Vector3.right) * itemHeight / 2;
if (isVertical)
var pos1 = centerPos + (runtimeIsVertical ? Vector3.down : Vector3.left) * itemHeight / 2;
var pos2 = centerPos + (runtimeIsVertical ? Vector3.up : Vector3.right) * itemHeight / 2;
if (runtimeIsVertical)
{
if (pos.y < pos1.y) return min;
else if (pos.y > pos2.y) return max;
@@ -337,12 +337,12 @@ namespace XCharts
{
var pos1 = centerPos + Vector3.down * itemHeight / 2;
return local.x >= centerPos.x - itemWidth / 2 && local.x <= centerPos.x + itemWidth / 2 &&
local.y >= pos1.y + rangeMinHeight && local.y <= pos1.y + rangeMaxHeight;
local.y >= pos1.y + runtimeRangeMinHeight && local.y <= pos1.y + runtimeRangeMaxHeight;
}
else
{
var pos1 = centerPos + Vector3.left * itemHeight / 2;
return local.x >= pos1.x + rangeMinHeight && local.x <= pos1.x + rangeMaxHeight &&
return local.x >= pos1.x + runtimeRangeMinHeight && local.x <= pos1.x + runtimeRangeMaxHeight &&
local.y >= centerPos.y - itemWidth / 2 && local.y <= centerPos.y + itemWidth / 2;
}
}
@@ -354,7 +354,7 @@ namespace XCharts
{
var radius = triangleLen / 2;
var pos1 = centerPos + Vector3.down * itemHeight / 2;
var cpos = new Vector3(pos1.x + itemWidth / 2 + radius, pos1.y + rangeMinHeight - radius);
var cpos = new Vector3(pos1.x + itemWidth / 2 + radius, pos1.y + runtimeRangeMinHeight - radius);
return local.x >= cpos.x - radius && local.x <= cpos.x + radius &&
local.y >= cpos.y - radius && local.y <= cpos.y + radius;
@@ -363,7 +363,7 @@ namespace XCharts
{
var radius = triangleLen / 2;
var pos1 = centerPos + Vector3.left * itemHeight / 2;
var cpos = new Vector3(pos1.x + rangeMinHeight, pos1.y + itemWidth / 2 + radius);
var cpos = new Vector3(pos1.x + runtimeRangeMinHeight, pos1.y + itemWidth / 2 + radius);
return local.x >= cpos.x - radius && local.x <= cpos.x + radius &&
local.y >= cpos.y - radius && local.y <= cpos.y + radius;
}
@@ -376,7 +376,7 @@ namespace XCharts
{
var radius = triangleLen / 2;
var pos1 = centerPos + Vector3.down * itemHeight / 2;
var cpos = new Vector3(pos1.x + itemWidth / 2 + radius, pos1.y + rangeMaxHeight + radius);
var cpos = new Vector3(pos1.x + itemWidth / 2 + radius, pos1.y + runtimeRangeMaxHeight + radius);
return local.x >= cpos.x - radius && local.x <= cpos.x + radius &&
local.y >= cpos.y - radius && local.y <= cpos.y + radius;
@@ -385,7 +385,7 @@ namespace XCharts
{
var radius = triangleLen / 2;
var pos1 = centerPos + Vector3.left * itemHeight / 2;
var cpos = new Vector3(pos1.x + rangeMaxHeight + radius, pos1.y + itemWidth / 2 + radius);
var cpos = new Vector3(pos1.x + runtimeRangeMaxHeight + radius, pos1.y + itemWidth / 2 + radius);
return local.x >= cpos.x - radius && local.x <= cpos.x + radius &&
local.y >= cpos.y - radius && local.y <= cpos.y + radius;
}

View File

@@ -74,25 +74,25 @@ namespace XCharts
/// Location对应的Anchor锚点
/// </summary>
/// <value></value>
public TextAnchor textAnchor { get { return m_TextAnchor; } }
public TextAnchor runtimeTextAnchor { get { return m_TextAnchor; } }
/// <summary>
/// the minimum achor.
/// Location对应的anchorMin。
/// </summary>
/// <value></value>
public Vector2 anchorMin { get { return m_AnchorMin; } }
public Vector2 runtimeAnchorMin { get { return m_AnchorMin; } }
/// <summary>
/// the maximun achor.
/// Location对应的anchorMax.
/// </summary>
/// <value></value>
public Vector2 anchorMax { get { return m_AnchorMax; } }
public Vector2 runtimeAnchorMax { get { return m_AnchorMax; } }
/// <summary>
/// the povot.
/// Loation对应的中心点。
/// </summary>
/// <value></value>
public Vector2 pivot { get { return m_Pivot; } }
public Vector2 runtimePivot { get { return m_Pivot; } }
public static Location defaultLeft
{

View File

@@ -37,31 +37,26 @@ namespace XCharts
/// Easing method used for the first animation.
/// 动画的缓动效果。
/// </summary>
/// <value></value>
public Easing easing { get { return m_Easting; } set { m_Easting = value; } }
/// <summary>
/// The milliseconds duration of the first animation.
/// 设定的动画时长(毫秒)。
/// </summary>
/// <value></value>
public int duration { get { return m_Duration; } set { m_Duration = value; } }
/// <summary>
/// The milliseconds actual duration of the first animation.
/// 实际的动画时长(毫秒)。
/// </summary>
/// <value></value>
public int actualDuration { get { return m_ActualDuration; } }
/// <summary>
/// Whether to set graphic number threshold to animation. Animation will be disabled when graphic number is larger than threshold.
/// 是否开启动画的阈值,当单个系列显示的图形数量大于这个阈值时会关闭动画。
/// </summary>
/// <value></value>
public int threshold { get { return m_Threshold; } set { m_Threshold = value; } }
/// <summary>
/// The milliseconds delay before updating the first animation.
/// 动画延时(毫秒)。
/// </summary>
/// <value></value>
public int delay { get { return m_Delay; } set { m_Delay = value; if (m_Delay < 0) m_Delay = 0; } }
private Dictionary<int, float> m_DataAnimationState = new Dictionary<int, float>();
@@ -179,7 +174,7 @@ namespace XCharts
return dataIndex <= m_CurrDataProgress;
}
public void CheckProgress(float delta)
internal void CheckProgress(float delta)
{
if (!enable) return;
if (IsInDelay()) return;
@@ -195,7 +190,7 @@ namespace XCharts
}
}
public void CheckSymbol(float delta, float dest)
internal void CheckSymbol(float delta, float dest)
{
m_CurrSymbolProgress += delta;
if (m_CurrSymbolProgress > dest) m_CurrSymbolProgress = dest;

View File

@@ -133,34 +133,34 @@ namespace XCharts
/// <summary>
/// 饼图数据项的开始角度(运行时自动计算)
/// </summary>
public float pieStartAngle { get; set; }
public float runtimePieStartAngle { get; internal set; }
/// <summary>
/// 饼图数据项的结束角度(运行时自动计算)
/// </summary>
public float pieToAngle { get; set; }
public float runtimePieToAngle { get; internal set; }
/// <summary>
/// 饼图数据项的一半时的角度(运行时自动计算)
/// </summary>
public float pieHalfAngle { get; set; }
public float runtimePieHalfAngle { get; internal set; }
/// <summary>
/// 饼图数据项的当前角度(运行时自动计算)
/// </summary>
public float pieCurrAngle { get; set; }
public float runtimePieCurrAngle { get; internal set; }
/// <summary>
/// 饼图数据项的内半径
/// </summary>
public float pieInsideRadius { get; set; }
public float runtimePieInsideRadius { get; internal set; }
/// <summary>
/// 饼图数据项的外半径
/// </summary>
public float pieOutsideRadius
public float runtimePieOutsideRadius
{
get
{
if (radius > 0) return radius;
else return m_RtPieOutsideRadius;
}
set
internal set
{
m_RtPieOutsideRadius = value;
}
@@ -168,8 +168,8 @@ namespace XCharts
/// <summary>
/// 饼图数据项的偏移半径
/// </summary>
public float pieOffsetRadius { get; set; }
public Vector3 pieOffsetCenter { get; set; }
public float runtimePieOffsetRadius { get; internal set; }
public Vector3 runtiemPieOffsetCenter { get; internal set; }
public float GetData(int index)
{

View File

@@ -87,8 +87,8 @@ namespace XCharts
protected override void RefreshTooltip()
{
var xData = m_Tooltip.xValues[0];
var yData = m_Tooltip.yValues[0];
var xData = m_Tooltip.runtimeXValues[0];
var yData = m_Tooltip.runtimeYValues[0];
if (IsCategory() && (xData < 0 || yData < 0)) return;
sb.Length = 0;
for (int i = 0; i < m_Series.Count; i++)
@@ -117,13 +117,13 @@ namespace XCharts
}
m_Tooltip.UpdateContentText(sb.ToString().Trim());
var pos = m_Tooltip.GetContentPos();
if (pos.x + m_Tooltip.width > chartWidth)
if (pos.x + m_Tooltip.runtimeWidth > chartWidth)
{
pos.x = chartWidth - m_Tooltip.width;
pos.x = chartWidth - m_Tooltip.runtimeWidth;
}
if (pos.y - m_Tooltip.height < 0)
if (pos.y - m_Tooltip.runtimeHeight < 0)
{
pos.y = m_Tooltip.height;
pos.y = m_Tooltip.runtimeHeight;
}
m_Tooltip.UpdateContentPos(pos);
m_Tooltip.SetActive(true);

View File

@@ -7,7 +7,7 @@
namespace XCharts
{
public static class XAxisPool
internal static class XAxisPool
{
private static readonly ObjectPool<XAxis> s_ListPool = new ObjectPool<XAxis>(null, null);
@@ -22,7 +22,7 @@ namespace XCharts
}
}
public static class YAxisPool
internal static class YAxisPool
{
private static readonly ObjectPool<YAxis> s_ListPool = new ObjectPool<YAxis>(null, null);

View File

@@ -148,10 +148,10 @@ namespace XCharts
private void InitTitle()
{
m_Title.OnChanged();
TextAnchor anchor = m_Title.location.textAnchor;
Vector2 anchorMin = m_Title.location.anchorMin;
Vector2 anchorMax = m_Title.location.anchorMax;
Vector2 pivot = m_Title.location.pivot;
TextAnchor anchor = m_Title.location.runtimeTextAnchor;
Vector2 anchorMin = m_Title.location.runtimeAnchorMin;
Vector2 anchorMax = m_Title.location.runtimeAnchorMax;
Vector2 pivot = m_Title.location.runtimePivot;
Vector3 titlePosition = m_Title.location.GetPosition(chartWidth, chartHeight);
Vector3 subTitlePosition = -new Vector3(0, m_Title.textFontSize + m_Title.itemGap, 0);
float titleWid = chartWidth;
@@ -183,10 +183,10 @@ namespace XCharts
private void InitLegend()
{
m_Legend.OnChanged();
TextAnchor anchor = m_Legend.location.textAnchor;
Vector2 anchorMin = m_Legend.location.anchorMin;
Vector2 anchorMax = m_Legend.location.anchorMax;
Vector2 pivot = m_Legend.location.pivot;
TextAnchor anchor = m_Legend.location.runtimeTextAnchor;
Vector2 anchorMin = m_Legend.location.runtimeAnchorMin;
Vector2 anchorMax = m_Legend.location.runtimeAnchorMax;
Vector2 pivot = m_Legend.location.runtimePivot;
var legendObject = ChartHelper.AddObject(s_LegendObjectName, transform, anchorMin, anchorMax,
pivot, new Vector2(chartWidth, chartHeight));
@@ -409,7 +409,7 @@ namespace XCharts
private void CheckPointerPos()
{
var needCheck = (m_Tooltip.show && m_Tooltip.inited)
var needCheck = (m_Tooltip.show && m_Tooltip.runtimeInited)
|| raycastTarget;
if (needCheck)
{
@@ -429,7 +429,7 @@ namespace XCharts
private void CheckTooltip()
{
if (!m_Tooltip.show || !m_Tooltip.inited)
if (!m_Tooltip.show || !m_Tooltip.runtimeInited)
{
if (m_Tooltip.IsActive())
{
@@ -439,9 +439,9 @@ namespace XCharts
}
return;
}
for (int i = 0; i < m_Tooltip.dataIndex.Count; i++)
for (int i = 0; i < m_Tooltip.runtimeDataIndex.Count; i++)
{
m_Tooltip.dataIndex[i] = -1;
m_Tooltip.runtimeDataIndex[i] = -1;
}
Vector2 local = pointerPos;
if (canvas == null) return;
@@ -465,7 +465,7 @@ namespace XCharts
}
return;
}
m_Tooltip.pointerPos = local;
m_Tooltip.runtimePointerPos = local;
CheckTootipArea(local);
}

View File

@@ -154,14 +154,14 @@ namespace XCharts
if (!xAxis.show && !yAxis.show) continue;
if (isCartesian && xAxis.show && yAxis.show)
{
var yRate = (yAxis.maxValue - yAxis.minValue) / coordinateHeight;
var xRate = (xAxis.maxValue - xAxis.minValue) / coordinateWidth;
var yValue = yRate * (local.y - coordinateY - yAxis.zeroYOffset);
if (yAxis.minValue > 0) yValue += yAxis.minValue;
m_Tooltip.yValues[i] = yValue;
var xValue = xRate * (local.x - coordinateX - xAxis.zeroXOffset);
if (xAxis.minValue > 0) xValue += xAxis.minValue;
m_Tooltip.xValues[i] = xValue;
var yRate = (yAxis.runtimeMaxValue - yAxis.runtimeMinValue) / coordinateHeight;
var xRate = (xAxis.runtimeMaxValue - xAxis.runtimeMinValue) / coordinateWidth;
var yValue = yRate * (local.y - coordinateY - yAxis.runtimeZeroYOffset);
if (yAxis.runtimeMinValue > 0) yValue += yAxis.runtimeMinValue;
m_Tooltip.runtimeYValues[i] = yValue;
var xValue = xRate * (local.x - coordinateX - xAxis.runtimeZeroXOffset);
if (xAxis.runtimeMinValue > 0) xValue += xAxis.runtimeMinValue;
m_Tooltip.runtimeXValues[i] = xValue;
for (int j = 0; j < m_Series.Count; j++)
{
@@ -175,7 +175,7 @@ namespace XCharts
if (Mathf.Abs(xValue - xdata) / xRate < symbolSize
&& Mathf.Abs(yValue - ydata) / yRate < symbolSize)
{
m_Tooltip.dataIndex[i] = n;
m_Tooltip.runtimeDataIndex[i] = n;
serieData.highlighted = true;
}
else
@@ -195,8 +195,8 @@ namespace XCharts
if ((xAxis.boundaryGap && (local.x > pX && local.x <= pX + splitWid)) ||
(!xAxis.boundaryGap && (local.x > pX - splitWid / 2 && local.x <= pX + splitWid / 2)))
{
m_Tooltip.xValues[i] = j;
m_Tooltip.dataIndex[i] = j;
m_Tooltip.runtimeXValues[i] = j;
m_Tooltip.runtimeDataIndex[i] = j;
break;
}
}
@@ -207,16 +207,16 @@ namespace XCharts
if ((yAxis.boundaryGap && (local.y > pY && local.y <= pY + splitWid)) ||
(!yAxis.boundaryGap && (local.y > pY - splitWid / 2 && local.y <= pY + splitWid / 2)))
{
m_Tooltip.yValues[i] = j;
m_Tooltip.runtimeYValues[i] = j;
break;
}
}
}
else if (xAxis.IsCategory())
{
var value = (yAxis.maxValue - yAxis.minValue) * (local.y - coordinateY - yAxis.zeroYOffset) / coordinateHeight;
if (yAxis.minValue > 0) value += yAxis.minValue;
m_Tooltip.yValues[i] = value;
var value = (yAxis.runtimeMaxValue - yAxis.runtimeMinValue) * (local.y - coordinateY - yAxis.runtimeZeroYOffset) / coordinateHeight;
if (yAxis.runtimeMinValue > 0) value += yAxis.runtimeMinValue;
m_Tooltip.runtimeYValues[i] = value;
for (int j = 0; j < xAxis.GetDataNumber(m_DataZoom); j++)
{
float splitWid = xAxis.GetDataWidth(coordinateWidth, dataCount, m_DataZoom);
@@ -224,17 +224,17 @@ namespace XCharts
if ((xAxis.boundaryGap && (local.x > pX && local.x <= pX + splitWid)) ||
(!xAxis.boundaryGap && (local.x > pX - splitWid / 2 && local.x <= pX + splitWid / 2)))
{
m_Tooltip.xValues[i] = j;
m_Tooltip.dataIndex[i] = j;
m_Tooltip.runtimeXValues[i] = j;
m_Tooltip.runtimeDataIndex[i] = j;
break;
}
}
}
else if (yAxis.IsCategory())
{
var value = (xAxis.maxValue - xAxis.minValue) * (local.x - coordinateX - xAxis.zeroXOffset) / coordinateWidth;
if (xAxis.minValue > 0) value += xAxis.minValue;
m_Tooltip.xValues[i] = value;
var value = (xAxis.runtimeMaxValue - xAxis.runtimeMinValue) * (local.x - coordinateX - xAxis.runtimeZeroXOffset) / coordinateWidth;
if (xAxis.runtimeMinValue > 0) value += xAxis.runtimeMinValue;
m_Tooltip.runtimeXValues[i] = value;
for (int j = 0; j < yAxis.GetDataNumber(m_DataZoom); j++)
{
float splitWid = yAxis.GetDataWidth(coordinateHeight, dataCount, m_DataZoom);
@@ -242,8 +242,8 @@ namespace XCharts
if ((yAxis.boundaryGap && (local.y > pY && local.y <= pY + splitWid)) ||
(!yAxis.boundaryGap && (local.y > pY - splitWid / 2 && local.y <= pY + splitWid / 2)))
{
m_Tooltip.yValues[i] = j;
m_Tooltip.dataIndex[i] = j;
m_Tooltip.runtimeYValues[i] = j;
m_Tooltip.runtimeDataIndex[i] = j;
break;
}
}
@@ -276,17 +276,17 @@ namespace XCharts
bool isCartesian = IsValue();
if (isCartesian)
{
index = m_Tooltip.dataIndex[0];
index = m_Tooltip.runtimeDataIndex[0];
tempAxis = m_XAxises[0];
}
else if (m_XAxises[0].type == Axis.AxisType.Value)
{
index = (int)m_Tooltip.yValues[0];
index = (int)m_Tooltip.runtimeYValues[0];
tempAxis = m_YAxises[0];
}
else
{
index = (int)m_Tooltip.xValues[0];
index = (int)m_Tooltip.runtimeXValues[0];
tempAxis = m_XAxises[0];
}
if (index < 0)
@@ -341,13 +341,13 @@ namespace XCharts
m_Tooltip.UpdateContentText(m_Tooltip.GetFormatterContent(index, m_Series, category, m_DataZoom));
}
var pos = m_Tooltip.GetContentPos();
if (pos.x + m_Tooltip.width > chartWidth)
if (pos.x + m_Tooltip.runtimeWidth > chartWidth)
{
pos.x = chartWidth - m_Tooltip.width;
pos.x = chartWidth - m_Tooltip.runtimeWidth;
}
if (pos.y - m_Tooltip.height < 0)
if (pos.y - m_Tooltip.runtimeHeight < 0)
{
pos.y = m_Tooltip.height;
pos.y = m_Tooltip.runtimeHeight;
}
m_Tooltip.UpdateContentPos(pos);
m_Tooltip.SetActive(true);
@@ -375,14 +375,14 @@ namespace XCharts
var diff = axisIndex > 0 ? -axis.axisLabel.fontSize - axis.axisLabel.margin - 3.5f : axis.axisLabel.margin / 2 + 1;
if (axis.IsValue())
{
labelText = ChartCached.FloatToStr(m_Tooltip.xValues[axisIndex], 2);
labelPos = new Vector2(m_Tooltip.pointerPos.x, posY - diff);
labelText = ChartCached.FloatToStr(m_Tooltip.runtimeXValues[axisIndex], 2);
labelPos = new Vector2(m_Tooltip.runtimePointerPos.x, posY - diff);
}
else
{
labelText = axis.GetData((int)m_Tooltip.xValues[axisIndex], m_DataZoom);
labelText = axis.GetData((int)m_Tooltip.runtimeXValues[axisIndex], m_DataZoom);
float splitWidth = axis.GetSplitWidth(coordinateWidth, m_DataZoom);
int index = (int)m_Tooltip.xValues[axisIndex];
int index = (int)m_Tooltip.runtimeXValues[axisIndex];
float px = coordinateX + index * splitWidth + (axis.boundaryGap ? splitWidth / 2 : 0) + 0.5f;
labelPos = new Vector2(px, posY - diff);
}
@@ -393,14 +393,14 @@ namespace XCharts
var diff = axisIndex > 0 ? -axis.axisLabel.margin + 3 : axis.axisLabel.margin - 3;
if (axis.IsValue())
{
labelText = ChartCached.FloatToStr(m_Tooltip.yValues[axisIndex], 2);
labelPos = new Vector2(posX - diff, m_Tooltip.pointerPos.y);
labelText = ChartCached.FloatToStr(m_Tooltip.runtimeYValues[axisIndex], 2);
labelPos = new Vector2(posX - diff, m_Tooltip.runtimePointerPos.y);
}
else
{
labelText = axis.GetData((int)m_Tooltip.yValues[axisIndex], m_DataZoom);
labelText = axis.GetData((int)m_Tooltip.runtimeYValues[axisIndex], m_DataZoom);
float splitWidth = axis.GetSplitWidth(coordinateHeight, m_DataZoom);
int index = (int)m_Tooltip.yValues[axisIndex];
int index = (int)m_Tooltip.runtimeYValues[axisIndex];
float py = coordinateY + index * splitWidth + (axis.boundaryGap ? splitWidth / 2 : 0);
labelPos = new Vector2(posX - diff, py);
}
@@ -439,8 +439,8 @@ namespace XCharts
m_YAxises.Add(axis1);
m_YAxises.Add(axis2);
}
foreach (var axis in m_XAxises) axis.minValue = axis.maxValue = 0;
foreach (var axis in m_YAxises) axis.minValue = axis.maxValue = 0;
foreach (var axis in m_XAxises) axis.runtimeMinValue = axis.runtimeMaxValue = 0;
foreach (var axis in m_YAxises) axis.runtimeMinValue = axis.runtimeMaxValue = 0;
}
private void InitAxisY()
@@ -462,7 +462,7 @@ namespace XCharts
axisObj.transform.localPosition = Vector3.zero;
axisObj.SetActive(yAxis.show && yAxis.axisLabel.show);
ChartHelper.HideAllObject(axisObj);
if (yAxis.IsValue() && yAxis.minValue == 0 && yAxis.maxValue == 0) return;
if (yAxis.IsValue() && yAxis.runtimeMinValue == 0 && yAxis.runtimeMaxValue == 0) return;
var labelColor = yAxis.axisLabel.color == Color.clear ?
(Color)m_ThemeInfo.axisTextColor :
yAxis.axisLabel.color;
@@ -491,7 +491,7 @@ namespace XCharts
txt.transform.localPosition = GetLabelYPosition(totalWidth + (yAxis.boundaryGap ? labelWidth / 2 : 0), i, yAxisIndex, yAxis);
var isPercentStack = m_Series.IsPercentStack(SerieType.Bar);
txt.text = yAxis.GetLabelName(coordinateHeight, i, yAxis.minValue, yAxis.maxValue, m_DataZoom, isPercentStack);
txt.text = yAxis.GetLabelName(coordinateHeight, i, yAxis.runtimeMinValue, yAxis.runtimeMaxValue, m_DataZoom, isPercentStack);
txt.gameObject.SetActive(yAxis.show &&
(yAxis.axisLabel.interval == 0 || i % (yAxis.axisLabel.interval + 1) == 0));
yAxis.axisLabelTextList.Add(txt);
@@ -504,7 +504,7 @@ namespace XCharts
var fontSize = yAxis.axisName.fontSize;
var offset = yAxis.axisName.offset;
Text axisName = null;
var zeroPos = new Vector3(coordinateX + m_XAxises[yAxisIndex].zeroXOffset, coordinateY);
var zeroPos = new Vector3(coordinateX + m_XAxises[yAxisIndex].runtimeZeroXOffset, coordinateY);
switch (yAxis.axisName.location)
{
case AxisName.Location.Start:
@@ -538,10 +538,10 @@ namespace XCharts
axisName.text = yAxis.axisName.name;
}
//init tooltip label
if (m_Tooltip.gameObject)
if (m_Tooltip.runtimeGameObject)
{
Vector2 privot = yAxisIndex > 0 ? new Vector2(0, 0.5f) : new Vector2(1, 0.5f);
var labelParent = m_Tooltip.gameObject.transform;
var labelParent = m_Tooltip.runtimeGameObject.transform;
GameObject labelObj = ChartHelper.AddTooltipLabel(objName + "_label", labelParent, m_ThemeInfo.font, privot);
yAxis.SetTooltipLabel(labelObj);
yAxis.SetTooltipLabelColor(m_ThemeInfo.tooltipBackgroundColor, m_ThemeInfo.tooltipTextColor);
@@ -567,7 +567,7 @@ namespace XCharts
axisObj.transform.localPosition = Vector3.zero;
axisObj.SetActive(xAxis.show && xAxis.axisLabel.show);
ChartHelper.HideAllObject(axisObj);
if (xAxis.IsValue() && xAxis.minValue == 0 && xAxis.maxValue == 0) return;
if (xAxis.IsValue() && xAxis.runtimeMinValue == 0 && xAxis.runtimeMaxValue == 0) return;
var labelColor = xAxis.axisLabel.color == Color.clear ?
(Color)m_ThemeInfo.axisTextColor :
xAxis.axisLabel.color;
@@ -586,7 +586,7 @@ namespace XCharts
i, xAxisIndex, xAxis);
totalWidth += labelWidth;
var isPercentStack = m_Series.IsPercentStack(SerieType.Bar);
txt.text = xAxis.GetLabelName(coordinateWidth, i, xAxis.minValue, xAxis.maxValue, m_DataZoom, isPercentStack);
txt.text = xAxis.GetLabelName(coordinateWidth, i, xAxis.runtimeMinValue, xAxis.runtimeMaxValue, m_DataZoom, isPercentStack);
txt.gameObject.SetActive(xAxis.show &&
(xAxis.axisLabel.interval == 0 || i % (xAxis.axisLabel.interval + 1) == 0));
xAxis.axisLabelTextList.Add(txt);
@@ -598,7 +598,7 @@ namespace XCharts
var fontSize = xAxis.axisName.fontSize;
var offset = xAxis.axisName.offset;
Text axisName = null;
var zeroPos = new Vector3(coordinateX, coordinateY + m_YAxises[xAxisIndex].zeroYOffset);
var zeroPos = new Vector3(coordinateX, coordinateY + m_YAxises[xAxisIndex].runtimeZeroYOffset);
switch (xAxis.axisName.location)
{
case AxisName.Location.Start:
@@ -631,10 +631,10 @@ namespace XCharts
}
axisName.text = xAxis.axisName.name;
}
if (m_Tooltip.gameObject)
if (m_Tooltip.runtimeGameObject)
{
Vector2 privot = xAxisIndex > 0 ? new Vector2(0.5f, 1) : new Vector2(0.5f, 1);
var labelParent = m_Tooltip.gameObject.transform;
var labelParent = m_Tooltip.runtimeGameObject.transform;
GameObject labelObj = ChartHelper.AddTooltipLabel(ChartHelper.Cancat(objName, "_label"), labelParent, m_ThemeInfo.font, privot);
xAxis.SetTooltipLabel(labelObj);
xAxis.SetTooltipLabelColor(m_ThemeInfo.tooltipBackgroundColor, m_ThemeInfo.tooltipTextColor);
@@ -648,12 +648,14 @@ namespace XCharts
chartAnchorMax, chartPivot, new Vector2(chartWidth, chartHeight));
dataZoomObject.transform.localPosition = Vector3.zero;
ChartHelper.HideAllObject(dataZoomObject);
m_DataZoom.startLabel = ChartHelper.AddTextObject(s_DefaultDataZoom + "start",
var startLabel = ChartHelper.AddTextObject(s_DefaultDataZoom + "start",
dataZoomObject.transform, m_ThemeInfo.font, m_ThemeInfo.dataZoomTextColor, TextAnchor.MiddleRight,
Vector2.zero, Vector2.zero, new Vector2(1, 0.5f), new Vector2(200, 20), m_DataZoom.fontSize, 0, m_DataZoom.fontStyle);
m_DataZoom.endLabel = ChartHelper.AddTextObject(s_DefaultDataZoom + "end",
var endLabel = ChartHelper.AddTextObject(s_DefaultDataZoom + "end",
dataZoomObject.transform, m_ThemeInfo.font, m_ThemeInfo.dataZoomTextColor, TextAnchor.MiddleLeft,
Vector2.zero, Vector2.zero, new Vector2(0, 0.5f), new Vector2(200, 20), m_DataZoom.fontSize, 0, m_DataZoom.fontStyle);
m_DataZoom.SetStartLabel(startLabel);
m_DataZoom.SetEndLabel(endLabel);
m_DataZoom.SetLabelActive(false);
CheckRaycastTarget();
var xAxis = m_XAxises[m_DataZoom.xAxisIndex];
@@ -786,26 +788,26 @@ namespace XCharts
m_Series.GetYMinMaxValue(m_DataZoom, axisIndex, false, out tempMinValue, out tempMaxValue);
}
axis.AdjustMinMaxValue(ref tempMinValue, ref tempMaxValue);
if (tempMinValue != axis.minValue || tempMaxValue != axis.maxValue)
if (tempMinValue != axis.runtimeMinValue || tempMaxValue != axis.runtimeMaxValue)
{
m_CheckMinMaxValue = true;
axis.minValue = tempMinValue;
axis.maxValue = tempMaxValue;
axis.zeroXOffset = 0;
axis.zeroYOffset = 0;
axis.runtimeMinValue = tempMinValue;
axis.runtimeMaxValue = tempMaxValue;
axis.runtimeZeroXOffset = 0;
axis.runtimeZeroYOffset = 0;
if (tempMinValue != 0 || tempMaxValue != 0)
{
if (axis is XAxis && axis.IsValue())
{
axis.zeroXOffset = axis.minValue > 0 ? 0 :
axis.maxValue < 0 ? this.coordinateWidth :
Mathf.Abs(axis.minValue) * (this.coordinateWidth / (Mathf.Abs(axis.minValue) + Mathf.Abs(axis.maxValue)));
axis.runtimeZeroXOffset = axis.runtimeMinValue > 0 ? 0 :
axis.runtimeMaxValue < 0 ? this.coordinateWidth :
Mathf.Abs(axis.runtimeMinValue) * (this.coordinateWidth / (Mathf.Abs(axis.runtimeMinValue) + Mathf.Abs(axis.runtimeMaxValue)));
}
if (axis is YAxis && axis.IsValue())
{
axis.zeroYOffset = axis.minValue > 0 ? 0 :
axis.maxValue < 0 ? coordinateHeight :
Mathf.Abs(axis.minValue) * (coordinateHeight / (Mathf.Abs(axis.minValue) + Mathf.Abs(axis.maxValue)));
axis.runtimeZeroYOffset = axis.runtimeMinValue > 0 ? 0 :
axis.runtimeMaxValue < 0 ? coordinateHeight :
Mathf.Abs(axis.runtimeMinValue) * (coordinateHeight / (Mathf.Abs(axis.runtimeMinValue) + Mathf.Abs(axis.runtimeMaxValue)));
}
}
if (updateChart)
@@ -881,7 +883,7 @@ namespace XCharts
var size = yAxis.GetScaleNumber(coordinateWidth, m_DataZoom);
var totalWidth = coordinateY;
var xAxis = m_XAxises[yAxisIndex];
var zeroPos = new Vector3(coordinateX + xAxis.zeroXOffset, coordinateY + yAxis.zeroYOffset);
var zeroPos = new Vector3(coordinateX + xAxis.runtimeZeroXOffset, coordinateY + yAxis.runtimeZeroYOffset);
for (int i = 0; i < size; i++)
{
var scaleWidth = yAxis.GetScaleWidth(coordinateHeight, i, m_DataZoom);
@@ -901,7 +903,7 @@ namespace XCharts
}
if (yAxis.axisTick.show)
{
var startX = coordinateX + m_XAxises[yAxisIndex].zeroXOffset;
var startX = coordinateX + m_XAxises[yAxisIndex].runtimeZeroXOffset;
if (yAxis.IsValue() && yAxisIndex > 0) startX += coordinateWidth;
bool inside = yAxis.axisTick.inside;
if ((inside && yAxisIndex == 0) || (!inside && yAxisIndex == 1))
@@ -935,7 +937,7 @@ namespace XCharts
var size = xAxis.GetScaleNumber(coordinateWidth, m_DataZoom);
var totalWidth = coordinateX;
var yAxis = m_YAxises[xAxisIndex];
var zeroPos = new Vector3(coordinateX, coordinateY + yAxis.zeroYOffset);
var zeroPos = new Vector3(coordinateX, coordinateY + yAxis.runtimeZeroYOffset);
for (int i = 0; i < size; i++)
{
var scaleWidth = xAxis.GetScaleWidth(coordinateWidth, i, m_DataZoom);
@@ -955,7 +957,7 @@ namespace XCharts
}
if (xAxis.axisTick.show)
{
var startY = coordinateY + m_YAxises[xAxisIndex].zeroYOffset;
var startY = coordinateY + m_YAxises[xAxisIndex].runtimeZeroYOffset;
if (xAxis.IsValue() && xAxisIndex > 0) startY += coordinateHeight;
bool inside = xAxis.axisTick.inside;
if ((inside && xAxisIndex == 0) || (!inside && xAxisIndex == 1))
@@ -986,7 +988,7 @@ namespace XCharts
{
if (xAxis.show && xAxis.axisLine.show)
{
var lineY = coordinateY + (xAxis.axisLine.onZero ? m_YAxises[xAxisIndex].zeroYOffset : 0);
var lineY = coordinateY + (xAxis.axisLine.onZero ? m_YAxises[xAxisIndex].runtimeZeroYOffset : 0);
if (xAxis.IsValue() && xAxisIndex > 0) lineY += coordinateHeight;
var left = new Vector3(coordinateX - xAxis.axisLine.width, lineY);
var top = new Vector3(coordinateX + coordinateWidth + xAxis.axisLine.width, lineY);
@@ -1004,7 +1006,7 @@ namespace XCharts
{
if (yAxis.show && yAxis.axisLine.show)
{
var lineX = coordinateX + (yAxis.axisLine.onZero ? m_XAxises[yAxisIndex].zeroXOffset : 0);
var lineX = coordinateX + (yAxis.axisLine.onZero ? m_XAxises[yAxisIndex].runtimeZeroXOffset : 0);
if (yAxis.IsValue() && yAxisIndex > 0) lineX += coordinateWidth;
var top = new Vector3(lineX, coordinateY + coordinateHeight + yAxis.axisLine.width);
ChartDrawer.DrawLine(vh, new Vector3(lineX, coordinateY - yAxis.axisLine.width),
@@ -1056,8 +1058,8 @@ namespace XCharts
{
float value = SampleValue(ref showData, serie.sampleType, rate, serie.minShow, maxCount, totalAverage, i);
float pX = coordinateX + i * scaleWid;
float dataHig = (axis.maxValue - axis.minValue) == 0 ? 0 :
(value - axis.minValue) / (axis.maxValue - axis.minValue) * hig;
float dataHig = (axis.runtimeMaxValue - axis.runtimeMinValue) == 0 ? 0 :
(value - axis.runtimeMinValue) / (axis.runtimeMaxValue - axis.runtimeMinValue) * hig;
np = new Vector3(pX, m_DataZoom.bottom + dataHig);
if (i > 0)
{
@@ -1127,24 +1129,24 @@ namespace XCharts
{
case Tooltip.Type.Corss:
case Tooltip.Type.Line:
float pX = coordinateX + m_Tooltip.xValues[i] * splitWidth
float pX = coordinateX + m_Tooltip.runtimeXValues[i] * splitWidth
+ (xAxis.boundaryGap ? splitWidth / 2 : 0);
if (xAxis.IsValue()) pX = m_Tooltip.pointerPos.x;
if (xAxis.IsValue()) pX = m_Tooltip.runtimePointerPos.x;
Vector2 sp = new Vector2(pX, coordinateY);
Vector2 ep = new Vector2(pX, coordinateY + coordinateHeight);
DrawSplitLine(vh, xAxis, Axis.SplitLineType.Solid, sp, ep, m_ThemeInfo.tooltipLineColor);
if (m_Tooltip.type == Tooltip.Type.Corss)
{
sp = new Vector2(coordinateX, m_Tooltip.pointerPos.y);
ep = new Vector2(coordinateX + coordinateWidth, m_Tooltip.pointerPos.y);
sp = new Vector2(coordinateX, m_Tooltip.runtimePointerPos.y);
ep = new Vector2(coordinateX + coordinateWidth, m_Tooltip.runtimePointerPos.y);
DrawSplitLine(vh, yAxis, Axis.SplitLineType.Dashed, sp, ep, m_ThemeInfo.tooltipLineColor);
}
break;
case Tooltip.Type.Shadow:
float tooltipSplitWid = splitWidth < 1 ? 1 : splitWidth;
pX = coordinateX + splitWidth * m_Tooltip.xValues[i] -
pX = coordinateX + splitWidth * m_Tooltip.runtimeXValues[i] -
(xAxis.boundaryGap ? 0 : splitWidth / 2);
if (xAxis.IsValue()) pX = m_Tooltip.xValues[i];
if (xAxis.IsValue()) pX = m_Tooltip.runtimeXValues[i];
float pY = coordinateY + coordinateHeight;
Vector3 p1 = new Vector3(pX, coordinateY);
Vector3 p2 = new Vector3(pX, pY);
@@ -1172,21 +1174,21 @@ namespace XCharts
case Tooltip.Type.Corss:
case Tooltip.Type.Line:
float pY = coordinateY + m_Tooltip.yValues[i] * splitWidth + (yAxis.boundaryGap ? splitWidth / 2 : 0);
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, xAxis, Axis.SplitLineType.Solid, sp, ep, m_ThemeInfo.tooltipLineColor);
if (m_Tooltip.type == Tooltip.Type.Corss)
{
sp = new Vector2(coordinateX, m_Tooltip.pointerPos.y);
ep = new Vector2(coordinateX + coordinateWidth, m_Tooltip.pointerPos.y);
sp = new Vector2(coordinateX, m_Tooltip.runtimePointerPos.y);
ep = new Vector2(coordinateX + coordinateWidth, m_Tooltip.runtimePointerPos.y);
DrawSplitLine(vh, yAxis, Axis.SplitLineType.Dashed, sp, ep, m_ThemeInfo.tooltipLineColor);
}
break;
case Tooltip.Type.Shadow:
float tooltipSplitWid = splitWidth < 1 ? 1 : splitWidth;
float pX = coordinateX + coordinateWidth;
pY = coordinateY + splitWidth * m_Tooltip.yValues[i] -
pY = coordinateY + splitWidth * m_Tooltip.runtimeYValues[i] -
(yAxis.boundaryGap ? 0 : splitWidth / 2);
Vector3 p1 = new Vector3(coordinateX, pY);
Vector3 p2 = new Vector3(coordinateX, pY + tooltipSplitWid);
@@ -1289,10 +1291,8 @@ namespace XCharts
var start = coordinateX + coordinateWidth * m_DataZoom.start / 100;
var end = coordinateX + coordinateWidth * m_DataZoom.end / 100;
var hig = m_DataZoom.GetHeight(grid.bottom);
m_DataZoom.startLabel.transform.localPosition =
new Vector3(start - 10, m_DataZoom.bottom + hig / 2);
m_DataZoom.endLabel.transform.localPosition =
new Vector3(end + 10, m_DataZoom.bottom + hig / 2);
m_DataZoom.UpdateStartLabelPosition(new Vector3(start - 10, m_DataZoom.bottom + hig / 2));
m_DataZoom.UpdateEndLabelPosition(new Vector3(end + 10, m_DataZoom.bottom + hig / 2));
}
}
@@ -1313,12 +1313,12 @@ namespace XCharts
if (isYAxis)
{
var xAxis = m_XAxises[serie.axisIndex];
zeroPos = new Vector3(coordinateX + xAxis.zeroXOffset, coordinateY);
zeroPos = new Vector3(coordinateX + xAxis.runtimeZeroXOffset, coordinateY);
}
else
{
var yAxis = m_YAxises[serie.axisIndex];
zeroPos = new Vector3(coordinateX, coordinateY + yAxis.zeroYOffset);
zeroPos = new Vector3(coordinateX, coordinateY + yAxis.runtimeZeroYOffset);
}
}
}

View File

@@ -50,7 +50,7 @@ namespace XCharts
seriesHig.Add(0);
}
float value = showData[i].data[1];
float pX = seriesHig[i] + coordinateX + xAxis.zeroXOffset + yAxis.axisLine.width;
float pX = seriesHig[i] + coordinateX + xAxis.runtimeZeroXOffset + yAxis.axisLine.width;
float pY = coordinateY + +i * categoryWidth;
if (!yAxis.boundaryGap) pY -= categoryWidth / 2;
@@ -64,8 +64,8 @@ namespace XCharts
}
else
{
valueTotal = xAxis.maxValue - xAxis.minValue;
barHig = (xAxis.minValue > 0 ? value - xAxis.minValue : value)
valueTotal = xAxis.runtimeMaxValue - xAxis.runtimeMinValue;
barHig = (xAxis.runtimeMinValue > 0 ? value - xAxis.runtimeMinValue : value)
/ valueTotal * coordinateWidth;
seriesHig[i] += barHig;
}
@@ -160,7 +160,7 @@ namespace XCharts
}
float value = showData[i].data[1];
float pX = coordinateX + i * categoryWidth;
float zeroY = coordinateY + yAxis.zeroYOffset;
float zeroY = coordinateY + yAxis.runtimeZeroYOffset;
if (!xAxis.boundaryGap) pX -= categoryWidth / 2;
float pY = seriesHig[i] + zeroY + xAxis.axisLine.width;
@@ -174,8 +174,8 @@ namespace XCharts
}
else
{
valueTotal = yAxis.maxValue - yAxis.minValue;
barHig = (yAxis.minValue > 0 ? value - yAxis.minValue : value)
valueTotal = yAxis.runtimeMaxValue - yAxis.runtimeMinValue;
barHig = (yAxis.runtimeMinValue > 0 ? value - yAxis.runtimeMinValue : value)
/ valueTotal * coordinateHeight;
seriesHig[i] += barHig;
}

View File

@@ -24,9 +24,9 @@ namespace XCharts
if (!RectTransformUtility.ScreenPointToLocalPointInRectangle(rectTransform,
Input.mousePosition, canvas.worldCamera, out local))
{
if (m_VisualMap.rtSelectedIndex >= 0)
if (m_VisualMap.runtimeSelectedIndex >= 0)
{
m_VisualMap.rtSelectedIndex = -1;
m_VisualMap.runtimeSelectedIndex = -1;
RefreshChart();
}
return;
@@ -35,9 +35,9 @@ namespace XCharts
local.y < 0 || local.y > chartHeight ||
!m_VisualMap.IsInRangeRect(local, chartWidth, chartHeight))
{
if (m_VisualMap.rtSelectedIndex >= 0)
if (m_VisualMap.runtimeSelectedIndex >= 0)
{
m_VisualMap.rtSelectedIndex = -1;
m_VisualMap.runtimeSelectedIndex = -1;
RefreshChart();
}
return;
@@ -63,8 +63,8 @@ namespace XCharts
selectedIndex = m_VisualMap.GetIndex(value);
break;
}
m_VisualMap.rtSelectedValue = value;
m_VisualMap.rtSelectedIndex = selectedIndex;
m_VisualMap.runtimeSelectedValue = value;
m_VisualMap.runtimeSelectedIndex = selectedIndex;
RefreshChart();
}
@@ -161,8 +161,8 @@ namespace XCharts
}
if(animationIndex>= 0 && i> animationIndex) continue;
serieData.canShowLabel = true;
var emphasis = (m_Tooltip.show && i == (int)m_Tooltip.xValues[0] && j == (int)m_Tooltip.yValues[0])
|| m_VisualMap.rtSelectedIndex > 0;
var emphasis = (m_Tooltip.show && i == (int)m_Tooltip.runtimeXValues[0] && j == (int)m_Tooltip.runtimeYValues[0])
|| m_VisualMap.runtimeSelectedIndex > 0;
var rectWid = xWidth - 2 * borderWidth;
var rectHig = yWidth - 2 * borderWidth;
ChartDrawer.DrawPolygon(vh, pos, rectWid / 2, rectHig / 2, color);
@@ -199,10 +199,10 @@ namespace XCharts
var halfHig = m_VisualMap.itemHeight / 2;
var xRadius = 0f;
var yRadius = 0f;
var splitNum = m_VisualMap.rtInRange.Count;
var splitNum = m_VisualMap.runtimeInRange.Count;
var splitWid = m_VisualMap.itemHeight / (splitNum - 1);
var isVertical = false;
var colors = m_VisualMap.rtInRange;
var colors = m_VisualMap.runtimeInRange;
var triangeLen = m_Settings.visualMapTriangeLen;
switch (m_VisualMap.orient)
{
@@ -215,13 +215,13 @@ namespace XCharts
isVertical = false;
if (m_VisualMap.calculable)
{
var p0 = pos1 + Vector3.right * m_VisualMap.rangeMinHeight;
var p0 = pos1 + Vector3.right * m_VisualMap.runtimeRangeMinHeight;
var p1 = p0 + Vector3.up * halfWid;
var p2 = p0 + Vector3.up * (halfWid + triangeLen);
var p3 = p2 + Vector3.left * triangeLen;
var color = m_VisualMap.GetColor(m_VisualMap.rangeMin);
ChartDrawer.DrawTriangle(vh, p1, p2, p3, color);
p0 = pos1 + Vector3.right * m_VisualMap.rangeMaxHeight;
p0 = pos1 + Vector3.right * m_VisualMap.runtimeRangeMaxHeight;
p1 = p0 + Vector3.up * halfWid;
p2 = p0 + Vector3.up * (halfWid + triangeLen);
p3 = p2 + Vector3.right * triangeLen;
@@ -238,13 +238,13 @@ namespace XCharts
isVertical = true;
if (m_VisualMap.calculable)
{
var p0 = pos1 + Vector3.up * m_VisualMap.rangeMinHeight;
var p0 = pos1 + Vector3.up * m_VisualMap.runtimeRangeMinHeight;
var p1 = p0 + Vector3.right * halfWid;
var p2 = p0 + Vector3.right * (halfWid + triangeLen);
var p3 = p2 + Vector3.down * triangeLen;
var color = m_VisualMap.GetColor(m_VisualMap.rangeMin);
ChartDrawer.DrawTriangle(vh, p1, p2, p3, color);
p0 = pos1 + Vector3.up * m_VisualMap.rangeMaxHeight;
p0 = pos1 + Vector3.up * m_VisualMap.runtimeRangeMaxHeight;
p1 = p0 + Vector3.right * halfWid;
p2 = p0 + Vector3.right * (halfWid + triangeLen);
p3 = p2 + Vector3.up * triangeLen;
@@ -276,7 +276,7 @@ namespace XCharts
}
else if (rangeMin > splitMin && rangeMax >= splitMax)
{
var p0 = pos1 + dir * m_VisualMap.rangeMinHeight;
var p0 = pos1 + dir * m_VisualMap.runtimeRangeMinHeight;
var splitMaxPos = pos1 + dir * i * splitWid;
var splitPos = p0 + (splitMaxPos - p0) / 2;
var startColor = m_VisualMap.GetColor(m_VisualMap.rangeMin);
@@ -289,7 +289,7 @@ namespace XCharts
}
else if (rangeMax < splitMax && rangeMin <= splitMin)
{
var p0 = pos1 + dir * m_VisualMap.rangeMaxHeight;
var p0 = pos1 + dir * m_VisualMap.runtimeRangeMaxHeight;
var splitMinPos = pos1 + dir * (i - 1) * splitWid;
var splitPos = splitMinPos + (p0 - splitMinPos) / 2;
var startColor = colors[i - 1];
@@ -302,8 +302,8 @@ namespace XCharts
}
else
{
var p0 = pos1 + dir * m_VisualMap.rangeMinHeight;
var p1 = pos1 + dir * m_VisualMap.rangeMaxHeight;
var p0 = pos1 + dir * m_VisualMap.runtimeRangeMinHeight;
var p1 = pos1 + dir * m_VisualMap.runtimeRangeMaxHeight;
var splitPos = (p0 + p1) / 2;
var startColor = m_VisualMap.GetColor(m_VisualMap.rangeMin);
var toColor = m_VisualMap.GetColor(m_VisualMap.rangeMax);
@@ -328,38 +328,38 @@ namespace XCharts
if (m_VisualMap.rangeMin > m_VisualMap.min)
{
var p0 = pos1 + dir * m_VisualMap.rangeMinHeight;
var p0 = pos1 + dir * m_VisualMap.runtimeRangeMinHeight;
ChartDrawer.DrawPolygon(vh, pos1, p0, m_VisualMap.itemWidth / 2, m_ThemeInfo.visualMapBackgroundColor);
}
if (m_VisualMap.rangeMax < m_VisualMap.max)
{
var p1 = pos1 + dir * m_VisualMap.rangeMaxHeight;
var p1 = pos1 + dir * m_VisualMap.runtimeRangeMaxHeight;
ChartDrawer.DrawPolygon(vh, p1, pos2, m_VisualMap.itemWidth / 2, m_ThemeInfo.visualMapBackgroundColor);
}
if (m_VisualMap.hoverLink)
{
if (m_VisualMap.rtSelectedIndex >= 0)
if (m_VisualMap.runtimeSelectedIndex >= 0)
{
var p0 = pos1 + dir * m_VisualMap.rangeMinHeight;
var p1 = pos1 + dir * m_VisualMap.rangeMaxHeight;
var p0 = pos1 + dir * m_VisualMap.runtimeRangeMinHeight;
var p1 = pos1 + dir * m_VisualMap.runtimeRangeMaxHeight;
if (m_VisualMap.orient == Orient.Vertical)
{
var p2 = new Vector3(centerPos.x + halfWid, Mathf.Clamp(pointerPos.y + (triangeLen / 2), p0.y, p1.y));
var p3 = new Vector3(centerPos.x + halfWid, Mathf.Clamp(pointerPos.y - (triangeLen / 2), p0.y, p1.y));
var p4 = new Vector3(centerPos.x + halfWid + triangeLen / 2, pointerPos.y);
ChartDrawer.DrawTriangle(vh, p2, p3, p4, colors[m_VisualMap.rtSelectedIndex]);
ChartDrawer.DrawTriangle(vh, p2, p3, p4, colors[m_VisualMap.runtimeSelectedIndex]);
}
else
{
var p2 = new Vector3(Mathf.Clamp(pointerPos.x + (triangeLen / 2), p0.x, p1.x), centerPos.y + halfWid);
var p3 = new Vector3(Mathf.Clamp(pointerPos.x - (triangeLen / 2), p0.x, p1.x), centerPos.y + halfWid);
var p4 = new Vector3(pointerPos.x, centerPos.y + halfWid + triangeLen / 2);
ChartDrawer.DrawTriangle(vh, p2, p3, p4, colors[m_VisualMap.rtSelectedIndex]);
ChartDrawer.DrawTriangle(vh, p2, p3, p4, colors[m_VisualMap.runtimeSelectedIndex]);
}
}
else if (m_Tooltip.show && m_Tooltip.xValues[0] >= 0 && m_Tooltip.yValues[0] >= 0)
else if (m_Tooltip.show && m_Tooltip.runtimeXValues[0] >= 0 && m_Tooltip.runtimeYValues[0] >= 0)
{
// var p0 = pos1 + dir * m_VisualMap.rangeMinHeight;
// var p1 = pos1 + dir * m_VisualMap.rangeMaxHeight;

View File

@@ -88,7 +88,7 @@ namespace XCharts
Vector3 lp = Vector3.zero, np = Vector3.zero, llp = Vector3.zero, nnp = Vector3.zero;
var yAxis = m_YAxises[serie.axisIndex];
var xAxis = m_XAxises[serie.axisIndex];
var zeroPos = new Vector3(coordinateX, coordinateY + yAxis.zeroYOffset);
var zeroPos = new Vector3(coordinateX, coordinateY + yAxis.runtimeZeroYOffset);
var isStack = m_Series.IsStack(serie.stack, SerieType.Line);
if (!xAxis.show) xAxis = m_XAxises[(serie.axisIndex + 1) % m_XAxises.Count];
float scaleWid = xAxis.GetDataWidth(coordinateWidth, showData.Count, m_DataZoom);
@@ -168,7 +168,7 @@ namespace XCharts
serie.ClearSmoothList(i);
if (!serie.animation.NeedAnimation(i)) break;
bool isFinish = true;
if (serie.areaStyle.tooltipHighlight && m_Tooltip.show && i <= m_Tooltip.dataIndex[0])
if (serie.areaStyle.tooltipHighlight && m_Tooltip.show && i <= m_Tooltip.runtimeDataIndex[0])
{
areaColor = highlightAreaColor;
areaToColor = highlightAreaToColor;
@@ -294,18 +294,18 @@ namespace XCharts
float xValue = i > showData.Count - 1 ? 0 : showData[i].data[0];
float pX = coordinateX + xAxis.axisLine.width;
float pY = serieHig + coordinateY + xAxis.axisLine.width;
if ((xAxis.maxValue - xAxis.minValue) <= 0) xDataHig = 0;
else xDataHig = (xValue - xAxis.minValue) / (xAxis.maxValue - xAxis.minValue) * coordinateWidth;
if ((yAxis.maxValue - yAxis.minValue) <= 0) yDataHig = 0;
else yDataHig = (yValue - yAxis.minValue) / (yAxis.maxValue - yAxis.minValue) * coordinateHeight;
if ((xAxis.runtimeMaxValue - xAxis.runtimeMinValue) <= 0) xDataHig = 0;
else xDataHig = (xValue - xAxis.runtimeMinValue) / (xAxis.runtimeMaxValue - xAxis.runtimeMinValue) * coordinateWidth;
if ((yAxis.runtimeMaxValue - yAxis.runtimeMinValue) <= 0) yDataHig = 0;
else yDataHig = (yValue - yAxis.runtimeMinValue) / (yAxis.runtimeMaxValue - yAxis.runtimeMinValue) * coordinateHeight;
np = new Vector3(pX + xDataHig, pY + yDataHig);
}
else
{
float pX = startX + i * scaleWid;
float pY = serieHig + coordinateY + yAxis.axisLine.width;
if ((yAxis.maxValue - yAxis.minValue) <= 0) yDataHig = 0;
else yDataHig = (yValue - yAxis.minValue) / (yAxis.maxValue - yAxis.minValue) * coordinateHeight;
if ((yAxis.runtimeMaxValue - yAxis.runtimeMinValue) <= 0) yDataHig = 0;
else yDataHig = (yValue - yAxis.runtimeMinValue) / (yAxis.runtimeMaxValue - yAxis.runtimeMinValue) * coordinateHeight;
np = new Vector3(pX, pY + yDataHig);
}
return yDataHig;
@@ -327,7 +327,7 @@ namespace XCharts
Color areaColor, areaToColor;
var xAxis = m_XAxises[serie.axisIndex];
var yAxis = m_YAxises[serie.axisIndex];
var zeroPos = new Vector3(coordinateX + xAxis.zeroXOffset, coordinateY);
var zeroPos = new Vector3(coordinateX + xAxis.runtimeZeroXOffset, coordinateY);
var isStack = m_Series.IsStack(serie.stack, SerieType.Line);
if (!yAxis.show) yAxis = m_YAxises[(serie.axisIndex + 1) % m_YAxises.Count];
float scaleWid = yAxis.GetDataWidth(coordinateHeight, showData.Count, m_DataZoom);
@@ -356,7 +356,7 @@ namespace XCharts
float value = showData[i].data[1];
float pY = startY + i * scaleWid;
float pX = seriesHig[i] + coordinateX + yAxis.axisLine.width;
float dataHig = (value - xAxis.minValue) / (xAxis.maxValue - xAxis.minValue) * coordinateWidth;
float dataHig = (value - xAxis.runtimeMinValue) / (xAxis.runtimeMaxValue - xAxis.runtimeMinValue) * coordinateWidth;
np = new Vector3(pX + dataHig, pY);
serie.dataPoints.Add(np);
seriesHig[i] += dataHig;
@@ -368,7 +368,7 @@ namespace XCharts
float value = showData[i].data[1];
float pY = startY + i * scaleWid;
float pX = seriesHig[i] + coordinateX + yAxis.axisLine.width;
float dataHig = (value - xAxis.minValue) / (xAxis.maxValue - xAxis.minValue) * coordinateWidth;
float dataHig = (value - xAxis.runtimeMinValue) / (xAxis.runtimeMaxValue - xAxis.runtimeMinValue) * coordinateWidth;
np = new Vector3(pX + dataHig, pY);
serie.dataPoints.Add(np);
seriesHig[i] += dataHig;
@@ -384,7 +384,7 @@ namespace XCharts
serie.ClearSmoothList(i);
if (!serie.animation.NeedAnimation(i)) break;
bool isFinish = true;
if (serie.areaStyle.tooltipHighlight && m_Tooltip.show && i < m_Tooltip.dataIndex[0])
if (serie.areaStyle.tooltipHighlight && m_Tooltip.show && i < m_Tooltip.runtimeDataIndex[0])
{
areaColor = highlightAreaColor;
areaToColor = highlightAreaToColor;

View File

@@ -30,8 +30,8 @@ namespace XCharts
float yValue = serieData.data[1];
float pX = coordinateX + xAxis.axisLine.width;
float pY = coordinateY + yAxis.axisLine.width;
float xDataHig = (xValue - xAxis.minValue) / (xAxis.maxValue - xAxis.minValue) * coordinateWidth;
float yDataHig = (yValue - yAxis.minValue) / (yAxis.maxValue - yAxis.minValue) * coordinateHeight;
float xDataHig = (xValue - xAxis.runtimeMinValue) / (xAxis.runtimeMaxValue - xAxis.runtimeMinValue) * coordinateWidth;
float yDataHig = (yValue - yAxis.runtimeMinValue) / (yAxis.runtimeMaxValue - yAxis.runtimeMinValue) * coordinateHeight;
var pos = new Vector3(pX + xDataHig, pY + yDataHig);
var datas = serie.data[n].data;

View File

@@ -1,45 +0,0 @@
/******************************************/
/* */
/* Copyright (c) 2018 monitor1394 */
/* https://github.com/monitor1394 */
/* */
/******************************************/
using UnityEngine;
using System;
namespace XCharts
{
/// <summary>
/// 支持从json格式的字符串中导入数据
/// </summary>
public class JsonDataSupport : IJsonData, ISerializationCallbackReceiver
{
[SerializeField] protected string m_JsonData;
[SerializeField] protected bool m_DataFromJson;
/// <summary>
/// json格式的字符串数据
/// </summary>
/// <returns></returns>
public string jsonData { get { return m_JsonData; } set { m_JsonData = value; ParseJsonData(value); } }
public void OnAfterDeserialize()
{
if (m_DataFromJson)
{
ParseJsonData(m_JsonData);
m_DataFromJson = false;
}
}
public void OnBeforeSerialize()
{
}
public virtual void ParseJsonData(string json)
{
throw new Exception("no support yet");
}
}
}

View File

@@ -1,13 +0,0 @@
fileFormatVersion: 2
guid: 73e326ed8a76f90408bfa9feb1797433
timeCreated: 1555379601
licenseType: Free
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -11,7 +11,7 @@ using UnityEngine.Events;
namespace XCharts
{
public class ObjectPool<T> where T : new()
internal class ObjectPool<T> where T : new()
{
private readonly Stack<T> m_Stack = new Stack<T>();
private readonly UnityAction<T> m_ActionOnGet;

View File

@@ -65,8 +65,8 @@ namespace XCharts
}
bool isFinish = true;
if (serie.pieClickOffset) isClickOffset = true;
serie.pieDataMax = serie.yMax;
serie.pieDataTotal = serie.yTotal;
serie.runtimePieDataMax = serie.yMax;
serie.runtimePieDataTotal = serie.yTotal;
UpdatePieCenter(serie);
float totalDegree = 360;
@@ -85,73 +85,73 @@ namespace XCharts
float value = serieData.data[1];
serieNameCount = m_LegendRealShowName.IndexOf(serieData.legendName);
Color color = m_ThemeInfo.GetColor(serieNameCount);
serieData.pieStartAngle = startDegree;
serieData.pieToAngle = startDegree;
serieData.pieHalfAngle = startDegree;
serieData.pieCurrAngle = startDegree;
serieData.runtimePieStartAngle = startDegree;
serieData.runtimePieToAngle = startDegree;
serieData.runtimePieHalfAngle = startDegree;
serieData.runtimePieCurrAngle = startDegree;
if (!serieData.show)
{
continue;
}
float degree = serie.pieRoseType == RoseType.Area ?
(totalDegree / showdataCount) : (totalDegree * value / serie.pieDataTotal);
serieData.pieToAngle = startDegree + degree;
(totalDegree / showdataCount) : (totalDegree * value / serie.runtimePieDataTotal);
serieData.runtimePieToAngle = startDegree + degree;
serieData.pieOutsideRadius = serie.pieRoseType > 0 ?
serie.pieInsideRadius + (serie.pieOutsideRadius - serie.pieInsideRadius) * value / serie.pieDataMax :
serie.pieOutsideRadius;
serieData.runtimePieOutsideRadius = serie.pieRoseType > 0 ?
serie.runtimePieInsideRadius + (serie.runtimePieOutsideRadius - serie.runtimePieInsideRadius) * value / serie.runtimePieDataMax :
serie.runtimePieOutsideRadius;
if (serieData.highlighted)
{
isDataHighlight = true;
color *= 1.2f;
serieData.pieOutsideRadius += m_Settings.pieTooltipExtraRadius;
serieData.runtimePieOutsideRadius += m_Settings.pieTooltipExtraRadius;
}
var offset = serie.pieSpace;
if (serie.pieClickOffset && serieData.selected)
{
offset += m_Settings.pieSelectedOffset;
}
var halfDegree = (serieData.pieToAngle - startDegree) / 2;
serieData.pieHalfAngle = startDegree + halfDegree;
float currRad = serieData.pieHalfAngle * Mathf.Deg2Rad;
var halfDegree = (serieData.runtimePieToAngle - startDegree) / 2;
serieData.runtimePieHalfAngle = startDegree + halfDegree;
float currRad = serieData.runtimePieHalfAngle * Mathf.Deg2Rad;
float currSin = Mathf.Sin(currRad);
float currCos = Mathf.Cos(currRad);
var center = serie.pieCenterPos;
var center = serie.runtimePieCenterPos;
serieData.pieCurrAngle = serieData.pieToAngle;
serieData.pieOffsetCenter = center;
serieData.pieInsideRadius = serie.pieInsideRadius;
if (serie.animation.CheckDetailBreak(n, serieData.pieToAngle))
serieData.runtimePieCurrAngle = serieData.runtimePieToAngle;
serieData.runtiemPieOffsetCenter = center;
serieData.runtimePieInsideRadius = serie.runtimePieInsideRadius;
if (serie.animation.CheckDetailBreak(n, serieData.runtimePieToAngle))
{
isFinish = false;
serieData.pieCurrAngle = serie.animation.GetCurrDetail();
serieData.runtimePieCurrAngle = serie.animation.GetCurrDetail();
}
if (offset > 0)
{
serieData.pieOffsetRadius = serie.pieSpace / Mathf.Sin(halfDegree * Mathf.Deg2Rad);
serieData.pieInsideRadius -= serieData.pieOffsetRadius;
serieData.pieOutsideRadius -= serieData.pieOffsetRadius;
serieData.runtimePieOffsetRadius = serie.pieSpace / Mathf.Sin(halfDegree * Mathf.Deg2Rad);
serieData.runtimePieInsideRadius -= serieData.runtimePieOffsetRadius;
serieData.runtimePieOutsideRadius -= serieData.runtimePieOffsetRadius;
if (serie.pieClickOffset && serieData.selected)
{
serieData.pieOffsetRadius += m_Settings.pieSelectedOffset;
if (serieData.pieInsideRadius > 0) serieData.pieInsideRadius += m_Settings.pieSelectedOffset;
serieData.pieOutsideRadius += m_Settings.pieSelectedOffset;
serieData.runtimePieOffsetRadius += m_Settings.pieSelectedOffset;
if (serieData.runtimePieInsideRadius > 0) serieData.runtimePieInsideRadius += m_Settings.pieSelectedOffset;
serieData.runtimePieOutsideRadius += m_Settings.pieSelectedOffset;
}
serieData.pieOffsetCenter = new Vector3(center.x + serieData.pieOffsetRadius * currSin,
center.y + serieData.pieOffsetRadius * currCos);
serieData.runtiemPieOffsetCenter = new Vector3(center.x + serieData.runtimePieOffsetRadius * currSin,
center.y + serieData.runtimePieOffsetRadius * currCos);
ChartDrawer.DrawDoughnut(vh, serieData.pieOffsetCenter, serieData.pieInsideRadius, serieData.pieOutsideRadius,
color, m_ThemeInfo.backgroundColor, m_Settings.cicleSmoothness, startDegree, serieData.pieCurrAngle);
ChartDrawer.DrawDoughnut(vh, serieData.runtiemPieOffsetCenter, serieData.runtimePieInsideRadius, serieData.runtimePieOutsideRadius,
color, m_ThemeInfo.backgroundColor, m_Settings.cicleSmoothness, startDegree, serieData.runtimePieCurrAngle);
}
else
{
ChartDrawer.DrawDoughnut(vh, center, serieData.pieInsideRadius, serieData.pieOutsideRadius,
color, m_ThemeInfo.backgroundColor, m_Settings.cicleSmoothness, startDegree, serieData.pieCurrAngle);
ChartDrawer.DrawDoughnut(vh, center, serieData.runtimePieInsideRadius, serieData.runtimePieOutsideRadius,
color, m_ThemeInfo.backgroundColor, m_Settings.cicleSmoothness, startDegree, serieData.runtimePieCurrAngle);
}
serieData.canShowLabel = serieData.pieCurrAngle >= serieData.pieHalfAngle;
serieData.canShowLabel = serieData.runtimePieCurrAngle >= serieData.runtimePieHalfAngle;
isDrawPie = true;
startDegree = serieData.pieToAngle;
startDegree = serieData.runtimePieToAngle;
if (isFinish) serie.animation.SetDataFinish(n);
else break;
}
@@ -213,17 +213,17 @@ namespace XCharts
&& serie.label.position == SerieLabel.Position.Outside
&& serie.label.line)
{
var insideRadius = serieData.pieInsideRadius;
var outSideRadius = serieData.pieOutsideRadius;
var center = serie.pieCenterPos;
var currAngle = serieData.pieHalfAngle;
var insideRadius = serieData.runtimePieInsideRadius;
var outSideRadius = serieData.runtimePieOutsideRadius;
var center = serie.runtimePieCenterPos;
var currAngle = serieData.runtimePieHalfAngle;
if (serie.label.lineColor != Color.clear) color = serie.label.lineColor;
else if (serie.label.lineType == SerieLabel.LineType.HorizontalLine) color *= color;
float currSin = Mathf.Sin(currAngle * Mathf.Deg2Rad);
float currCos = Mathf.Cos(currAngle * Mathf.Deg2Rad);
var radius1 = serie.label.lineType == SerieLabel.LineType.HorizontalLine ?
serie.pieOutsideRadius : outSideRadius;
var radius2 = serie.pieOutsideRadius + serie.label.lineLength1;
serie.runtimePieOutsideRadius : outSideRadius;
var radius2 = serie.runtimePieOutsideRadius + serie.label.lineLength1;
var radius3 = insideRadius + (outSideRadius - insideRadius) / 2;
var pos0 = new Vector3(center.x + radius3 * currSin, center.y + radius3 * currCos);
var pos1 = new Vector3(center.x + radius1 * currSin, center.y + radius1 * currCos);
@@ -332,7 +332,7 @@ namespace XCharts
private void DrawLabel(Serie serie, int dataIndex, SerieData serieData, Color serieColor)
{
if (serieData.labelText == null) return;
var currAngle = serieData.pieHalfAngle;
var currAngle = serieData.runtimePieHalfAngle;
var isHighlight = (serieData.highlighted && serie.emphasis.label.show);
var showLabel = ((serie.label.show || isHighlight) && serieData.canShowLabel);
if (showLabel || serieData.showIcon)
@@ -387,30 +387,30 @@ namespace XCharts
protected void UpdateLabelPostion(Serie serie, SerieData serieData)
{
var currAngle = serieData.pieHalfAngle;
var currAngle = serieData.runtimePieHalfAngle;
var currRad = currAngle * Mathf.Deg2Rad;
var offsetRadius = serieData.pieOffsetRadius;
var insideRadius = serieData.pieInsideRadius;
var outsideRadius = serieData.pieOutsideRadius;
var offsetRadius = serieData.runtimePieOffsetRadius;
var insideRadius = serieData.runtimePieInsideRadius;
var outsideRadius = serieData.runtimePieOutsideRadius;
switch (serie.label.position)
{
case SerieLabel.Position.Center:
serieData.labelPosition = serie.pieCenterPos;
serieData.labelPosition = serie.runtimePieCenterPos;
break;
case SerieLabel.Position.Inside:
var labelRadius = offsetRadius + insideRadius + (outsideRadius - insideRadius) / 2;
var labelCenter = new Vector2(serie.pieCenterPos.x + labelRadius * Mathf.Sin(currRad),
serie.pieCenterPos.y + labelRadius * Mathf.Cos(currRad));
var labelCenter = new Vector2(serie.runtimePieCenterPos.x + labelRadius * Mathf.Sin(currRad),
serie.runtimePieCenterPos.y + labelRadius * Mathf.Cos(currRad));
serieData.labelPosition = labelCenter;
break;
case SerieLabel.Position.Outside:
if (serie.label.lineType == SerieLabel.LineType.HorizontalLine)
{
var radius1 = serie.pieOutsideRadius;
var radius1 = serie.runtimePieOutsideRadius;
var radius3 = insideRadius + (outsideRadius - insideRadius) / 2;
var currSin = Mathf.Sin(currRad);
var currCos = Mathf.Cos(currRad);
var pos0 = new Vector3(serie.pieCenterPos.x + radius3 * currSin, serie.pieCenterPos.y + radius3 * currCos);
var pos0 = new Vector3(serie.runtimePieCenterPos.x + radius3 * currSin, serie.runtimePieCenterPos.y + radius3 * currCos);
if (currAngle > 180)
{
currSin = Mathf.Sin((360 - currAngle) * Mathf.Deg2Rad);
@@ -423,9 +423,9 @@ namespace XCharts
}
else
{
labelRadius = serie.pieOutsideRadius + serie.label.lineLength1;
labelCenter = new Vector2(serie.pieCenterPos.x + labelRadius * Mathf.Sin(currRad),
serie.pieCenterPos.y + labelRadius * Mathf.Cos(currRad));
labelRadius = serie.runtimePieOutsideRadius + serie.label.lineLength1;
labelCenter = new Vector2(serie.runtimePieCenterPos.x + labelRadius * Mathf.Sin(currRad),
serie.runtimePieCenterPos.y + labelRadius * Mathf.Cos(currRad));
float labelWidth = serieData.labelText.preferredWidth;
if (currAngle > 180)
{
@@ -467,21 +467,21 @@ namespace XCharts
if (serie.pieCenter.Length < 2) return;
var centerX = serie.pieCenter[0] <= 1 ? chartWidth * serie.pieCenter[0] : serie.pieCenter[0];
var centerY = serie.pieCenter[1] <= 1 ? chartHeight * serie.pieCenter[1] : serie.pieCenter[1];
serie.pieCenterPos = new Vector2(centerX, centerY);
serie.runtimePieCenterPos = new Vector2(centerX, centerY);
var minWidth = Mathf.Min(chartWidth, chartHeight);
serie.pieInsideRadius = serie.pieRadius[0] <= 1 ? minWidth * serie.pieRadius[0] : serie.pieRadius[0];
serie.pieOutsideRadius = serie.pieRadius[1] <= 1 ? minWidth * serie.pieRadius[1] : serie.pieRadius[1];
serie.runtimePieInsideRadius = serie.pieRadius[0] <= 1 ? minWidth * serie.pieRadius[0] : serie.pieRadius[0];
serie.runtimePieOutsideRadius = serie.pieRadius[1] <= 1 ? minWidth * serie.pieRadius[1] : serie.pieRadius[1];
}
protected override void CheckTootipArea(Vector2 local)
{
if (m_IsEnterLegendButtom) return;
m_Tooltip.dataIndex.Clear();
m_Tooltip.runtimeDataIndex.Clear();
bool selected = false;
foreach (var serie in m_Series.list)
{
int index = GetPosPieIndex(serie, local);
m_Tooltip.dataIndex.Add(index);
m_Tooltip.runtimeDataIndex.Add(index);
if (serie.type != SerieType.Pie) continue;
bool refresh = false;
for (int j = 0; j < serie.data.Count; j++)
@@ -508,14 +508,14 @@ namespace XCharts
private int GetPosPieIndex(Serie serie, Vector2 local)
{
if (serie.type != SerieType.Pie) return -1;
var dist = Vector2.Distance(local, serie.pieCenterPos);
if (dist < serie.pieInsideRadius || dist > serie.pieOutsideRadius) return -1;
Vector2 dir = local - new Vector2(serie.pieCenterPos.x, serie.pieCenterPos.y);
var dist = Vector2.Distance(local, serie.runtimePieCenterPos);
if (dist < serie.runtimePieInsideRadius || dist > serie.runtimePieOutsideRadius) return -1;
Vector2 dir = local - new Vector2(serie.runtimePieCenterPos.x, serie.runtimePieCenterPos.y);
float angle = VectorAngle(Vector2.up, dir);
for (int i = 0; i < serie.data.Count; i++)
{
var serieData = serie.data[i];
if (angle >= serieData.pieStartAngle && angle <= serieData.pieToAngle)
if (angle >= serieData.runtimePieStartAngle && angle <= serieData.runtimePieToAngle)
{
return i;
}
@@ -541,7 +541,7 @@ namespace XCharts
bool showTooltip = false;
foreach (var serie in m_Series.list)
{
int index = m_Tooltip.dataIndex[serie.index];
int index = m_Tooltip.runtimeDataIndex[serie.index];
if (index < 0) continue;
showTooltip = true;
if (string.IsNullOrEmpty(tooltip.formatter))
@@ -565,13 +565,13 @@ namespace XCharts
}
var pos = m_Tooltip.GetContentPos();
if (pos.x + m_Tooltip.width > chartWidth)
if (pos.x + m_Tooltip.runtimeWidth > chartWidth)
{
pos.x = chartWidth - m_Tooltip.width;
pos.x = chartWidth - m_Tooltip.runtimeWidth;
}
if (pos.y - m_Tooltip.height < 0)
if (pos.y - m_Tooltip.runtimeHeight < 0)
{
pos.y = m_Tooltip.height;
pos.y = m_Tooltip.runtimeHeight;
}
m_Tooltip.UpdateContentPos(pos);
}

View File

@@ -110,7 +110,7 @@ namespace XCharts
var indicator = radar.indicatorList[i];
var pos = radar.GetIndicatorPosition(i);
TextAnchor anchor = TextAnchor.MiddleCenter;
var diff = pos.x - radar.centerPos.x;
var diff = pos.x - radar.runtimeCenterPos.x;
if (diff < -1f)
{
pos = new Vector3(pos.x - 5, pos.y);
@@ -124,7 +124,7 @@ namespace XCharts
else
{
anchor = TextAnchor.MiddleCenter;
float y = pos.y > radar.centerPos.y ? pos.y + txtHig / 2 : pos.y - txtHig / 2;
float y = pos.y > radar.runtimeCenterPos.y ? pos.y + txtHig / 2 : pos.y - txtHig / 2;
pos = new Vector3(pos.x + txtWid / 2, y);
}
var textColor = indicator.color == Color.clear ? (Color)m_ThemeInfo.axisTextColor : indicator.color;
@@ -212,7 +212,7 @@ namespace XCharts
var radar = m_Radars[serie.radarIndex];
int indicatorNum = radar.indicatorList.Count;
var angle = 2 * Mathf.PI / indicatorNum;
Vector3 p = radar.centerPos;
Vector3 p = radar.runtimeCenterPos;
serie.animation.InitProgress(1, 0, 1);
if (!IsActive(i))
{
@@ -223,13 +223,13 @@ namespace XCharts
{
var serieData = serie.data[j];
int key = i * 100 + j;
if (!radar.dataPosList.ContainsKey(key))
if (!radar.runtimeDataPosList.ContainsKey(key))
{
radar.dataPosList.Add(i * 100 + j, new List<Vector3>(serieData.data.Count));
radar.runtimeDataPosList.Add(i * 100 + j, new List<Vector3>(serieData.data.Count));
}
else
{
radar.dataPosList[key].Clear();
radar.runtimeDataPosList[key].Clear();
}
string dataName = serieData.name;
int serieIndex = 0;
@@ -253,11 +253,11 @@ namespace XCharts
continue;
}
var isHighlight = serie.highlighted || serieData.highlighted ||
(m_Tooltip.show && m_Tooltip.dataIndex[0] == i && m_Tooltip.dataIndex[1] == j);
(m_Tooltip.show && m_Tooltip.runtimeDataIndex[0] == i && m_Tooltip.runtimeDataIndex[1] == j);
var areaColor = serie.GetAreaColor(m_ThemeInfo, serieIndex, isHighlight);
var lineColor = serie.GetLineColor(m_ThemeInfo, serieIndex, isHighlight);
int dataCount = radar.indicatorList.Count;
List<Vector3> pointList = radar.dataPosList[key];
List<Vector3> pointList = radar.runtimeDataPosList[key];
for (int n = 0; n < dataCount; n++)
{
if (n >= serieData.data.Count) break;
@@ -269,8 +269,8 @@ namespace XCharts
serie.GetMinMaxData(n, out min, out max);
min = radar.GetIndicatorMin(n);
}
var radius = max < 0 ? radar.actualRadius - radar.actualRadius * value / max
: radar.actualRadius * value / max;
var radius = max < 0 ? radar.runtimeRadius - radar.runtimeRadius * value / max
: radar.runtimeRadius * value / max;
var currAngle = n * angle;
radius *= rate;
if (n == 0)
@@ -331,10 +331,10 @@ namespace XCharts
return;
}
float insideRadius = 0, outsideRadius = 0;
float block = radar.actualRadius / radar.splitNumber;
float block = radar.runtimeRadius / radar.splitNumber;
int indicatorNum = radar.indicatorList.Count;
Vector3 p1, p2, p3, p4;
Vector3 p = radar.centerPos;
Vector3 p = radar.runtimeCenterPos;
float angle = 2 * Mathf.PI / indicatorNum;
var lineColor = GetLineColor(radar);
for (int i = 0; i < radar.splitNumber; i++)
@@ -382,9 +382,9 @@ namespace XCharts
return;
}
float insideRadius = 0, outsideRadius = 0;
float block = radar.actualRadius / radar.splitNumber;
float block = radar.runtimeRadius / radar.splitNumber;
int indicatorNum = radar.indicatorList.Count;
Vector3 p = radar.centerPos;
Vector3 p = radar.runtimeCenterPos;
Vector3 p1;
float angle = 2 * Mathf.PI / indicatorNum;
var lineColor = GetLineColor(radar);
@@ -443,23 +443,23 @@ namespace XCharts
if (!IsActive(i)) continue;
var serie = m_Series.GetSerie(i);
var radar = m_Radars[serie.radarIndex];
var dist = Vector2.Distance(radar.centerPos, local);
if (dist > radar.actualRadius + serie.symbol.size)
var dist = Vector2.Distance(radar.runtimeCenterPos, local);
if (dist > radar.runtimeRadius + serie.symbol.size)
{
continue;
}
for (int n = 0; n < serie.data.Count; n++)
{
var posKey = i * 100 + n;
if (radar.dataPosList.ContainsKey(posKey))
if (radar.runtimeDataPosList.ContainsKey(posKey))
{
var posList = radar.dataPosList[posKey];
var posList = radar.runtimeDataPosList[posKey];
foreach (var pos in posList)
{
if (Vector2.Distance(pos, local) <= serie.symbol.size * 1.2f)
{
m_Tooltip.dataIndex[0] = i;
m_Tooltip.dataIndex[1] = n;
m_Tooltip.runtimeDataIndex[0] = i;
m_Tooltip.runtimeDataIndex[1] = n;
highlight = true;
break;
}
@@ -487,7 +487,7 @@ namespace XCharts
protected override void RefreshTooltip()
{
base.RefreshTooltip();
int serieIndex = m_Tooltip.dataIndex[0];
int serieIndex = m_Tooltip.runtimeDataIndex[0];
if (serieIndex < 0)
{
if (m_Tooltip.IsActive())
@@ -500,7 +500,7 @@ namespace XCharts
m_Tooltip.SetActive(true);
var serie = m_Series.GetSerie(serieIndex);
var radar = m_Radars[serie.radarIndex];
var serieData = serie.GetSerieData(m_Tooltip.dataIndex[1]);
var serieData = serie.GetSerieData(m_Tooltip.runtimeDataIndex[1]);
StringBuilder sb = new StringBuilder(serieData.name);
for (int i = 0; i < radar.indicatorList.Count; i++)
{
@@ -511,13 +511,13 @@ namespace XCharts
}
m_Tooltip.UpdateContentText(sb.ToString());
var pos = m_Tooltip.GetContentPos();
if (pos.x + m_Tooltip.width > chartWidth)
if (pos.x + m_Tooltip.runtimeWidth > chartWidth)
{
pos.x = chartWidth - m_Tooltip.width;
pos.x = chartWidth - m_Tooltip.runtimeWidth;
}
if (pos.y - m_Tooltip.height < 0)
if (pos.y - m_Tooltip.runtimeHeight < 0)
{
pos.y = m_Tooltip.height;
pos.y = m_Tooltip.runtimeHeight;
}
m_Tooltip.UpdateContentPos(pos);
}

View File

@@ -190,7 +190,7 @@ namespace XCharts
return btnObj.GetComponent<Button>();
}
public static GameObject AddTooltipContent(string name, Transform parent, Font font, int fontSize, FontStyle fontStyle)
internal static GameObject AddTooltipContent(string name, Transform parent, Font font, int fontSize, FontStyle fontStyle)
{
var anchorMax = new Vector2(0, 1);
var anchorMin = new Vector2(0, 1);
@@ -218,7 +218,7 @@ namespace XCharts
return iconObj;
}
public static GameObject AddSerieLabel(string name, Transform parent, Font font, Color textColor, Color backgroundColor,
internal static GameObject AddSerieLabel(string name, Transform parent, Font font, Color textColor, Color backgroundColor,
int fontSize, FontStyle fontStyle, float rotate, float width, float height)
{
var anchorMin = new Vector2(0.5f, 0.5f);
@@ -238,7 +238,7 @@ namespace XCharts
return labelObj;
}
public static GameObject AddTooltipLabel(string name, Transform parent, Font font, Vector2 pivot)
internal static GameObject AddTooltipLabel(string name, Transform parent, Font font, Vector2 pivot)
{
var anchorMax = new Vector2(0, 0);
var anchorMin = new Vector2(0, 0);