优化数据存储类型由float全部转为double

This commit is contained in:
monitor1394
2021-07-08 07:19:31 +08:00
parent e873709443
commit 6f39e692ef
46 changed files with 435 additions and 369 deletions

View File

@@ -38,6 +38,7 @@
## master ## master
* (2021.07.08) Optimize data storage type from `float` to `double`
* (2021.07.05) Fixed `Piechart` `avoidLabelOverlap` parameter not working * (2021.07.05) Fixed `Piechart` `avoidLabelOverlap` parameter not working
* (2021.07.04) Fixed incorrect mouse area indication after `PieChart` selected sector * (2021.07.04) Fixed incorrect mouse area indication after `PieChart` selected sector
* (2021.07.04) Optimize when the `Label` of `PieChart` is `Inside`, the offset can be adjusted by the parameter `Margin` * (2021.07.04) Optimize when the `Label` of `PieChart` is `Inside`, the offset can be adjusted by the parameter `Margin`

View File

@@ -38,6 +38,7 @@
## master ## master
* (2021.07.08) 优化数据存储类型由`float`全部转为`double`
* (2021.07.05) 修复`PieChart``avoidLabelOverlap`参数不生效的问题 * (2021.07.05) 修复`PieChart``avoidLabelOverlap`参数不生效的问题
* (2021.07.04) 修复`PieChart`选中扇区后鼠标区域指示不准确的问题 * (2021.07.04) 修复`PieChart`选中扇区后鼠标区域指示不准确的问题
* (2021.07.04) 优化`PieChart``Label``Inside`时可通过参数`Margin`调节偏移 * (2021.07.04) 优化`PieChart``Label``Inside`时可通过参数`Margin`调节偏移

View File

@@ -70,15 +70,15 @@ namespace XCharts.Examples
serie = chart.AddSerie(SerieType.Radar, "test"); serie = chart.AddSerie(SerieType.Radar, "test");
serie.radarIndex = 0; serie.radarIndex = 0;
chart.AddData(0, new List<float> { 10, 20, 60, 40, 20 }, "data1"); chart.AddData(0, new List<double> { 10, 20, 60, 40, 20 }, "data1");
chart.AddData(0, new List<float> { 40, 60, 90, 80, 70 }, "data2"); chart.AddData(0, new List<double> { 40, 60, 90, 80, 70 }, "data2");
yield return new WaitForSeconds(1); yield return new WaitForSeconds(1);
} }
IEnumerator RadarUpdate() IEnumerator RadarUpdate()
{ {
chart.UpdateIndicator(0, 0, "new1", 0, 100); chart.UpdateIndicator(0, 0, "new1", 0, 100);
chart.UpdateData(0, 0, new List<float> { 15, 30, 50, 60, 50 }); chart.UpdateData(0, 0, new List<double> { 15, 30, 50, 60, 50 });
chart.UpdateDataName(0, 0, "new1"); chart.UpdateDataName(0, 0, "new1");
yield return new WaitForSeconds(1); yield return new WaitForSeconds(1);
} }
@@ -113,11 +113,11 @@ namespace XCharts.Examples
serie = chart.AddSerie(SerieType.Radar, "test1"); serie = chart.AddSerie(SerieType.Radar, "test1");
serie.radarIndex = 0; serie.radarIndex = 0;
chart.AddData(0, new List<float> { 10, 20, 60, 40, 20 }, "data1"); chart.AddData(0, new List<double> { 10, 20, 60, 40, 20 }, "data1");
serie1 = chart.AddSerie(SerieType.Radar, "test2"); serie1 = chart.AddSerie(SerieType.Radar, "test2");
serie1.radarIndex = 1; serie1.radarIndex = 1;
chart.AddData(1, new List<float> { 10, 20, 60, 40, 20 }, "data2"); chart.AddData(1, new List<double> { 10, 20, 60, 40, 20 }, "data2");
yield return new WaitForSeconds(1); yield return new WaitForSeconds(1);
} }
} }

View File

@@ -16,7 +16,7 @@ namespace XCharts.Examples
{ {
RadarChart chart; RadarChart chart;
int count = 0; int count = 0;
float max = 0; double max = 0;
void Awake() void Awake()
{ {

View File

@@ -5,6 +5,7 @@
/* */ /* */
/************************************************/ /************************************************/
using System;
using System.Collections.Generic; using System.Collections.Generic;
using UnityEngine; using UnityEngine;
@@ -23,16 +24,14 @@ namespace XCharts.Examples
chart.series.SetSerieSymbolSizeCallback(SymbolSize, SymbolSelectedSize); chart.series.SetSerieSymbolSizeCallback(SymbolSize, SymbolSelectedSize);
} }
float SymbolSize(List<float> data) float SymbolSize(List<double> data)
{ {
//return Mathf.Clamp(data[1] * 10,1,100); return (float)(Math.Sqrt(data[2]) / 6e2);
return (float)(Mathf.Sqrt(data[2]) / 6e2);
} }
float SymbolSelectedSize(List<float> data) float SymbolSelectedSize(List<double> data)
{ {
//return Mathf.Clamp(data[1] * 10,1,100); return (float)(Math.Sqrt(data[2]) / 5e2);
return (float)(Mathf.Sqrt(data[2]) / 5e2);
} }
} }
} }

View File

@@ -94,7 +94,7 @@ namespace XCharts.Examples
var rate = Random.Range(0, 101); var rate = Random.Range(0, 101);
if (rate > 70) value = Random.Range(8f, 10f); if (rate > 70) value = Random.Range(8f, 10f);
else value = Random.Range(1f, 8f); else value = Random.Range(1f, 8f);
var list = new List<float> { i, j, value }; var list = new List<double> { i, j, value };
//至少是一个三位数据x,y,value //至少是一个三位数据x,y,value
chart.AddData(0, list); chart.AddData(0, list);
} }

View File

@@ -234,7 +234,7 @@ namespace XCharts
/// <param name="data">the data to add</param> /// <param name="data">the data to add</param>
/// <param name="dataName">the name of data</param> /// <param name="dataName">the name of data</param>
/// <returns>Returns True on success</returns> /// <returns>Returns True on success</returns>
public virtual SerieData AddData(string serieName, float data, string dataName = null) public virtual SerieData AddData(string serieName, double data, string dataName = null)
{ {
var serieData = m_Series.AddData(serieName, data, dataName); var serieData = m_Series.AddData(serieName, data, dataName);
if (serieData != null) if (serieData != null)
@@ -257,7 +257,7 @@ namespace XCharts
/// <param name="data">the data to add</param> /// <param name="data">the data to add</param>
/// <param name="dataName">the name of data</param> /// <param name="dataName">the name of data</param>
/// <returns>Returns True on success</returns> /// <returns>Returns True on success</returns>
public virtual SerieData AddData(int serieIndex, float data, string dataName = null) public virtual SerieData AddData(int serieIndex, double data, string dataName = null)
{ {
var serieData = m_Series.AddData(serieIndex, data, dataName); var serieData = m_Series.AddData(serieIndex, data, dataName);
if (serieData != null) if (serieData != null)
@@ -280,7 +280,7 @@ namespace XCharts
/// <param name="multidimensionalData">the (x,y,z,...) data</param> /// <param name="multidimensionalData">the (x,y,z,...) data</param>
/// <param name="dataName">the name of data</param> /// <param name="dataName">the name of data</param>
/// <returns>Returns True on success</returns> /// <returns>Returns True on success</returns>
public virtual SerieData AddData(string serieName, List<float> multidimensionalData, string dataName = null) public virtual SerieData AddData(string serieName, List<double> multidimensionalData, string dataName = null)
{ {
var serieData = m_Series.AddData(serieName, multidimensionalData, dataName); var serieData = m_Series.AddData(serieName, multidimensionalData, dataName);
if (serieData != null) if (serieData != null)
@@ -303,7 +303,7 @@ namespace XCharts
/// <param name="multidimensionalData">the (x,y,z,...) data</param> /// <param name="multidimensionalData">the (x,y,z,...) data</param>
/// <param name="dataName">the name of data</param> /// <param name="dataName">the name of data</param>
/// <returns>Returns True on success</returns> /// <returns>Returns True on success</returns>
public virtual SerieData AddData(int serieIndex, List<float> multidimensionalData, string dataName = null) public virtual SerieData AddData(int serieIndex, List<double> multidimensionalData, string dataName = null)
{ {
var serieData = m_Series.AddData(serieIndex, multidimensionalData, dataName); var serieData = m_Series.AddData(serieIndex, multidimensionalData, dataName);
if (serieData != null) if (serieData != null)
@@ -327,7 +327,7 @@ namespace XCharts
/// <param name="yValue">y data</param> /// <param name="yValue">y data</param>
/// <param name="dataName">the name of data</param> /// <param name="dataName">the name of data</param>
/// <returns>Returns True on success</returns> /// <returns>Returns True on success</returns>
public virtual SerieData AddData(string serieName, float xValue, float yValue, string dataName = null) public virtual SerieData AddData(string serieName, double xValue, double yValue, string dataName = null)
{ {
var serieData = m_Series.AddXYData(serieName, xValue, yValue, dataName); var serieData = m_Series.AddXYData(serieName, xValue, yValue, dataName);
if (serieData != null) if (serieData != null)
@@ -351,7 +351,7 @@ namespace XCharts
/// <param name="yValue">y data</param> /// <param name="yValue">y data</param>
/// <param name="dataName">the name of data</param> /// <param name="dataName">the name of data</param>
/// <returns>Returns True on success</returns> /// <returns>Returns True on success</returns>
public virtual SerieData AddData(int serieIndex, float xValue, float yValue, string dataName = null) public virtual SerieData AddData(int serieIndex, double xValue, double yValue, string dataName = null)
{ {
var serieData = m_Series.AddXYData(serieIndex, xValue, yValue, dataName); var serieData = m_Series.AddXYData(serieIndex, xValue, yValue, dataName);
if (serieData != null) if (serieData != null)
@@ -365,7 +365,7 @@ namespace XCharts
} }
return serieData; return serieData;
} }
public virtual SerieData AddData(int serieIndex, float open, float close, float lowest, float heighest, string dataName = null) public virtual SerieData AddData(int serieIndex, double open, double close, double lowest, double heighest, string dataName = null)
{ {
var serieData = m_Series.AddData(serieIndex, open, close, lowest, heighest, dataName); var serieData = m_Series.AddData(serieIndex, open, close, lowest, heighest, dataName);
if (serieData != null) if (serieData != null)
@@ -387,7 +387,7 @@ namespace XCharts
/// <param name="serieName">the name of serie</param> /// <param name="serieName">the name of serie</param>
/// <param name="dataIndex">the index of data</param> /// <param name="dataIndex">the index of data</param>
/// <param name="value">the data will be update</param> /// <param name="value">the data will be update</param>
public virtual bool UpdateData(string serieName, int dataIndex, float value) public virtual bool UpdateData(string serieName, int dataIndex, double value)
{ {
if (m_Series.UpdateData(serieName, dataIndex, value)) if (m_Series.UpdateData(serieName, dataIndex, value))
{ {
@@ -404,7 +404,7 @@ namespace XCharts
/// <param name="serieIndex">the index of serie</param> /// <param name="serieIndex">the index of serie</param>
/// <param name="dataIndex">the index of data</param> /// <param name="dataIndex">the index of data</param>
/// <param name="value">the data will be update</param> /// <param name="value">the data will be update</param>
public virtual bool UpdateData(int serieIndex, int dataIndex, float value) public virtual bool UpdateData(int serieIndex, int dataIndex, double value)
{ {
if (m_Series.UpdateData(serieIndex, dataIndex, value)) if (m_Series.UpdateData(serieIndex, dataIndex, value))
{ {
@@ -420,7 +420,7 @@ namespace XCharts
/// <param name="serieName"></param> /// <param name="serieName"></param>
/// <param name="dataIndex"></param> /// <param name="dataIndex"></param>
/// <param name="multidimensionalData">一个数据项的多维数据列表,而不是多个数据项的数据</param> /// <param name="multidimensionalData">一个数据项的多维数据列表,而不是多个数据项的数据</param>
public virtual bool UpdateData(string serieName, int dataIndex, List<float> multidimensionalData) public virtual bool UpdateData(string serieName, int dataIndex, List<double> multidimensionalData)
{ {
if (m_Series.UpdateData(serieName, dataIndex, multidimensionalData)) if (m_Series.UpdateData(serieName, dataIndex, multidimensionalData))
{ {
@@ -436,7 +436,7 @@ namespace XCharts
/// <param name="serieIndex"></param> /// <param name="serieIndex"></param>
/// <param name="dataIndex"></param> /// <param name="dataIndex"></param>
/// <param name="multidimensionalData">一个数据项的多维数据列表,而不是多个数据项的数据</param> /// <param name="multidimensionalData">一个数据项的多维数据列表,而不是多个数据项的数据</param>
public virtual bool UpdateData(int serieIndex, int dataIndex, List<float> multidimensionalData) public virtual bool UpdateData(int serieIndex, int dataIndex, List<double> multidimensionalData)
{ {
if (m_Series.UpdateData(serieIndex, dataIndex, multidimensionalData)) if (m_Series.UpdateData(serieIndex, dataIndex, multidimensionalData))
{ {
@@ -453,7 +453,7 @@ namespace XCharts
/// <param name="dataIndex"></param> /// <param name="dataIndex"></param>
/// <param name="dimension">指定维数从0开始</param> /// <param name="dimension">指定维数从0开始</param>
/// <param name="value"></param> /// <param name="value"></param>
public virtual bool UpdateData(string serieName, int dataIndex, int dimension, float value) public virtual bool UpdateData(string serieName, int dataIndex, int dimension, double value)
{ {
if (m_Series.UpdateData(serieName, dataIndex, dimension, value)) if (m_Series.UpdateData(serieName, dataIndex, dimension, value))
{ {
@@ -470,7 +470,7 @@ namespace XCharts
/// <param name="dataIndex"></param> /// <param name="dataIndex"></param>
/// <param name="dimension">指定维数从0开始</param> /// <param name="dimension">指定维数从0开始</param>
/// <param name="value"></param> /// <param name="value"></param>
public virtual bool UpdateData(int serieIndex, int dataIndex, int dimension, float value) public virtual bool UpdateData(int serieIndex, int dataIndex, int dimension, double value)
{ {
if (m_Series.UpdateData(serieIndex, dataIndex, dimension, value)) if (m_Series.UpdateData(serieIndex, dataIndex, dimension, value))
{ {

View File

@@ -16,7 +16,7 @@ namespace XCharts
/// <param name="dataIndex"></param> /// <param name="dataIndex"></param>
/// <param name="value"></param> /// <param name="value"></param>
/// <returns></returns> /// <returns></returns>
public bool UpdateMax(int serieIndex, int dataIndex, float value) public bool UpdateMax(int serieIndex, int dataIndex, double value)
{ {
var serie = m_Series.GetSerie(serieIndex); var serie = m_Series.GetSerie(serieIndex);
if (serie != null) if (serie != null)
@@ -32,7 +32,7 @@ namespace XCharts
/// <param name="serieIndex"></param> /// <param name="serieIndex"></param>
/// <param name="value"></param> /// <param name="value"></param>
/// <returns></returns> /// <returns></returns>
public bool UpdateMax(int serieIndex, float value) public bool UpdateMax(int serieIndex, double value)
{ {
var serie = m_Series.GetSerie(serieIndex); var serie = m_Series.GetSerie(serieIndex);
if (serie != null) if (serie != null)
@@ -52,7 +52,7 @@ namespace XCharts
/// </summary> /// </summary>
/// <param name="value"></param> /// <param name="value"></param>
/// <returns></returns> /// <returns></returns>
public bool UpdateMax(float value) public bool UpdateMax(double value)
{ {
return UpdateMax(0, 0, value); return UpdateMax(0, 0, value);
} }
@@ -66,7 +66,7 @@ namespace XCharts
/// <param name="max">the max data</param> /// <param name="max">the max data</param>
/// <param name="dataName">the name of data</param> /// <param name="dataName">the name of data</param>
/// <returns>Returns True on success</returns> /// <returns>Returns True on success</returns>
public override SerieData AddData(string serieName, float value, float max, string dataName = null) public override SerieData AddData(string serieName, double value, double max, string dataName = null)
{ {
return base.AddData(serieName, value, max, dataName); return base.AddData(serieName, value, max, dataName);
} }
@@ -80,7 +80,7 @@ namespace XCharts
/// <param name="max">the max data</param> /// <param name="max">the max data</param>
/// <param name="dataName">the name of data</param> /// <param name="dataName">the name of data</param>
/// <returns>Returns True on success</returns> /// <returns>Returns True on success</returns>
public override SerieData AddData(int serieIndex, float value, float max, string dataName = null) public override SerieData AddData(int serieIndex, double value, double max, string dataName = null)
{ {
return base.AddData(serieIndex, value, max, dataName); return base.AddData(serieIndex, value, max, dataName);
} }

View File

@@ -397,7 +397,7 @@ namespace XCharts
/// the current minimun value. /// the current minimun value.
/// 当前最小值。 /// 当前最小值。
/// </summary> /// </summary>
public float runtimeMinValue public double runtimeMinValue
{ {
get { return m_RuntimeMinValue; } get { return m_RuntimeMinValue; }
internal set internal set
@@ -412,7 +412,7 @@ namespace XCharts
/// the current maximum value. /// the current maximum value.
/// 当前最大值。 /// 当前最大值。
/// </summary> /// </summary>
public float runtimeMaxValue public double runtimeMaxValue
{ {
get { return m_RuntimeMaxValue; } get { return m_RuntimeMaxValue; }
internal set internal set
@@ -433,8 +433,8 @@ namespace XCharts
/// 坐标轴原点在Y轴的偏移。 /// 坐标轴原点在Y轴的偏移。
/// </summary> /// </summary>
public float runtimeZeroYOffset { get; internal set; } public float runtimeZeroYOffset { get; internal set; }
public int runtimeMinLogIndex { get { return logBaseE ? (int)Mathf.Log(runtimeMinValue) : (int)Mathf.Log(runtimeMinValue, logBase); } } public int runtimeMinLogIndex { get { return logBaseE ? (int)Math.Log(runtimeMinValue) : (int)Math.Log(runtimeMinValue, logBase); } }
public int runtimeMaxLogIndex { get { return logBaseE ? (int)Mathf.Log(runtimeMaxValue) : (int)Mathf.Log(runtimeMaxValue, logBase); } } public int runtimeMaxLogIndex { get { return logBaseE ? (int)Math.Log(runtimeMaxValue) : (int)Math.Log(runtimeMaxValue, logBase); } }
public bool runtimeLastCheckInverse { get; set; } public bool runtimeLastCheckInverse { get; set; }
public double runtimeMinMaxRange { get { return m_MinMaxValueRange; } set { m_MinMaxValueRange = value; } } public double runtimeMinMaxRange { get { return m_MinMaxValueRange; } set { m_MinMaxValueRange = value; } }
public List<string> runtimeData { get { return m_RuntimeData; } } public List<string> runtimeData { get { return m_RuntimeData; } }
@@ -447,12 +447,12 @@ namespace XCharts
private GameObject m_TooltipLabel; private GameObject m_TooltipLabel;
private ChartText m_TooltipLabelText; private ChartText m_TooltipLabelText;
private RectTransform m_TooltipLabelRect; private RectTransform m_TooltipLabelRect;
private float m_RuntimeMinValue; private double m_RuntimeMinValue;
private float m_RuntimeLastMinValue; private double m_RuntimeLastMinValue;
private bool m_RuntimeMinValueChanged; private bool m_RuntimeMinValueChanged;
private float m_RuntimeMinValueUpdateTime; private float m_RuntimeMinValueUpdateTime;
private float m_RuntimeMaxValue; private double m_RuntimeMaxValue;
private float m_RuntimeLastMaxValue; private double m_RuntimeLastMaxValue;
private bool m_RuntimeMaxValueChanged; private bool m_RuntimeMaxValueChanged;
private float m_RuntimeMaxValueUpdateTime; private float m_RuntimeMaxValueUpdateTime;
private bool m_RuntimeMinValueFirstChanged = true; private bool m_RuntimeMinValueFirstChanged = true;
@@ -809,7 +809,7 @@ namespace XCharts
} }
} }
internal void UpdateMinValue(float value, bool check) internal void UpdateMinValue(double value, bool check)
{ {
if (value != m_RuntimeMaxValue) if (value != m_RuntimeMaxValue)
{ {
@@ -837,7 +837,7 @@ namespace XCharts
} }
} }
internal void UpdateMaxValue(float value, bool check) internal void UpdateMaxValue(double value, bool check)
{ {
if (value != m_RuntimeMaxValue) if (value != m_RuntimeMaxValue)
{ {
@@ -865,7 +865,7 @@ namespace XCharts
} }
} }
public float GetCurrMinValue(float duration) public double GetCurrMinValue(float duration)
{ {
if (!Application.isPlaying) return m_RuntimeMinValue; if (!Application.isPlaying) return m_RuntimeMinValue;
if (m_RuntimeMinValue == 0 && m_RuntimeMaxValue == 0) return 0; if (m_RuntimeMinValue == 0 && m_RuntimeMaxValue == 0) return 0;
@@ -875,7 +875,7 @@ namespace XCharts
var total = duration / 1000; var total = duration / 1000;
if (duration > 0 && time <= total) if (duration > 0 && time <= total)
{ {
var curr = Mathf.Lerp(m_RuntimeLastMinValue, m_RuntimeMinValue, time / total); var curr = MathUtil.Lerp(m_RuntimeLastMinValue, m_RuntimeMinValue, time / total);
return curr; return curr;
} }
else else
@@ -885,7 +885,7 @@ namespace XCharts
} }
} }
public float GetCurrMaxValue(float duration) public double GetCurrMaxValue(float duration)
{ {
if (!Application.isPlaying) return m_RuntimeMaxValue; if (!Application.isPlaying) return m_RuntimeMaxValue;
if (m_RuntimeMinValue == 0 && m_RuntimeMaxValue == 0) return 0; if (m_RuntimeMinValue == 0 && m_RuntimeMaxValue == 0) return 0;
@@ -895,7 +895,7 @@ namespace XCharts
var total = duration / 1000; var total = duration / 1000;
if (duration > 0 && time < total) if (duration > 0 && time < total)
{ {
var curr = Mathf.Lerp(m_RuntimeLastMaxValue, m_RuntimeMaxValue, time / total); var curr = MathUtil.Lerp(m_RuntimeLastMaxValue, m_RuntimeMaxValue, time / total);
return curr; return curr;
} }
else else
@@ -918,10 +918,10 @@ namespace XCharts
} }
} }
public float GetLogValue(float value) public float GetLogValue(double value)
{ {
if (value <= 0 || value == 1) return 0; if (value <= 0 || value == 1) return 0;
return logBaseE ? Mathf.Log(value) : Mathf.Log(value, logBase); return logBaseE ? (float)Math.Log(value) : (float)Math.Log(value, logBase);
} }
public bool IsLeft() public bool IsLeft()

View File

@@ -400,17 +400,17 @@ namespace XCharts
/// <summary> /// <summary>
/// 运行时实际范围的开始值 /// 运行时实际范围的开始值
/// </summary> /// </summary>
public float runtimeStartValue { get; internal set; } public double runtimeStartValue { get; internal set; }
/// <summary> /// <summary>
/// 运行时实际范围的结束值 /// 运行时实际范围的结束值
/// </summary> /// </summary>
public float runtimeEndValue { get; internal set; } public double runtimeEndValue { get; internal set; }
public bool runtimeInvert { get; set; } public bool runtimeInvert { get; set; }
class AxisIndexValueInfo class AxisIndexValueInfo
{ {
public float min; public double min;
public float max; public double max;
} }
private Dictionary<int, AxisIndexValueInfo> m_XAxisIndexInfos = new Dictionary<int, AxisIndexValueInfo>(); private Dictionary<int, AxisIndexValueInfo> m_XAxisIndexInfos = new Dictionary<int, AxisIndexValueInfo>();
private Dictionary<int, AxisIndexValueInfo> m_YAxisIndexInfos = new Dictionary<int, AxisIndexValueInfo>(); private Dictionary<int, AxisIndexValueInfo> m_YAxisIndexInfos = new Dictionary<int, AxisIndexValueInfo>();
@@ -660,7 +660,7 @@ namespace XCharts
runtimeHeight = chartHeight - runtimeTop - runtimeBottom; runtimeHeight = chartHeight - runtimeTop - runtimeBottom;
} }
internal void SetXAxisIndexValueInfo(int xAxisIndex, float min, float max) internal void SetXAxisIndexValueInfo(int xAxisIndex, double min, double max)
{ {
if (!m_XAxisIndexInfos.ContainsKey(xAxisIndex)) if (!m_XAxisIndexInfos.ContainsKey(xAxisIndex))
{ {
@@ -677,7 +677,7 @@ namespace XCharts
} }
} }
internal void SetYAxisIndexValueInfo(int yAxisIndex, float min, float max) internal void SetYAxisIndexValueInfo(int yAxisIndex, double min, double max)
{ {
if (!m_YAxisIndexInfos.ContainsKey(yAxisIndex)) if (!m_YAxisIndexInfos.ContainsKey(yAxisIndex))
{ {
@@ -704,7 +704,7 @@ namespace XCharts
return m_YAxisIndexInfos.ContainsKey(axisIndex); return m_YAxisIndexInfos.ContainsKey(axisIndex);
} }
internal void GetXAxisIndexValue(int axisIndex, out float min, out float max) internal void GetXAxisIndexValue(int axisIndex, out double min, out double max)
{ {
min = 0; min = 0;
max = 0; max = 0;
@@ -715,7 +715,7 @@ namespace XCharts
max = info.max; max = info.max;
} }
} }
internal void GetYAxisIndexValue(int axisIndex, out float min, out float max) internal void GetYAxisIndexValue(int axisIndex, out double min, out double max)
{ {
min = 0; min = 0;
max = 0; max = 0;
@@ -1128,8 +1128,8 @@ namespace XCharts
float scaleWid = dataZoom.runtimeWidth / (showData.Count - 1); float scaleWid = dataZoom.runtimeWidth / (showData.Count - 1);
Vector3 lp = Vector3.zero; Vector3 lp = Vector3.zero;
Vector3 np = Vector3.zero; Vector3 np = Vector3.zero;
float minValue = 0; double minValue = 0;
float maxValue = 0; double maxValue = 0;
SeriesHelper.GetYMinMaxValue(chart.series, null, 0, chart.IsValue(), axis.inverse, out minValue, out maxValue); SeriesHelper.GetYMinMaxValue(chart.series, null, 0, chart.IsValue(), axis.inverse, out minValue, out maxValue);
AxisHelper.AdjustMinMaxValue(axis, ref minValue, ref maxValue, true); AxisHelper.AdjustMinMaxValue(axis, ref minValue, ref maxValue, true);
@@ -1143,11 +1143,11 @@ namespace XCharts
var dataChanging = false; var dataChanging = false;
for (int i = 0; i < maxCount; i += rate) for (int i = 0; i < maxCount; i += rate)
{ {
float value = chart.SampleValue(ref showData, serie.sampleType, rate, serie.minShow, maxCount, totalAverage, i, double value = chart.SampleValue(ref showData, serie.sampleType, rate, serie.minShow, maxCount, totalAverage, i,
serie.animation.GetUpdateAnimationDuration(), ref dataChanging, axis); serie.animation.GetUpdateAnimationDuration(), ref dataChanging, axis);
float pX = dataZoom.runtimeX + i * scaleWid; float pX = dataZoom.runtimeX + i * scaleWid;
float dataHig = (maxValue - minValue) == 0 ? 0 : float dataHig = (float)((maxValue - minValue) == 0 ? 0 :
(value - minValue) / (maxValue - minValue) * dataZoom.runtimeHeight; (value - minValue) / (maxValue - minValue) * dataZoom.runtimeHeight);
np = new Vector3(pX, chart.chartY + dataZoom.bottom + dataHig); np = new Vector3(pX, chart.chartY + dataZoom.bottom + dataHig);
if (i > 0) if (i > 0)
{ {
@@ -1209,8 +1209,8 @@ namespace XCharts
float scaleWid = dataZoom.runtimeHeight / (showData.Count - 1); float scaleWid = dataZoom.runtimeHeight / (showData.Count - 1);
Vector3 lp = Vector3.zero; Vector3 lp = Vector3.zero;
Vector3 np = Vector3.zero; Vector3 np = Vector3.zero;
float minValue = 0; double minValue = 0;
float maxValue = 0; double maxValue = 0;
SeriesHelper.GetYMinMaxValue(chart.series, null, 0, chart.IsValue(), axis.inverse, out minValue, out maxValue); SeriesHelper.GetYMinMaxValue(chart.series, null, 0, chart.IsValue(), axis.inverse, out minValue, out maxValue);
AxisHelper.AdjustMinMaxValue(axis, ref minValue, ref maxValue, true); AxisHelper.AdjustMinMaxValue(axis, ref minValue, ref maxValue, true);
@@ -1224,11 +1224,11 @@ namespace XCharts
var dataChanging = false; var dataChanging = false;
for (int i = 0; i < maxCount; i += rate) for (int i = 0; i < maxCount; i += rate)
{ {
float value = chart.SampleValue(ref showData, serie.sampleType, rate, serie.minShow, maxCount, totalAverage, i, double value = chart.SampleValue(ref showData, serie.sampleType, rate, serie.minShow, maxCount, totalAverage, i,
serie.animation.GetUpdateAnimationDuration(), ref dataChanging, axis); serie.animation.GetUpdateAnimationDuration(), ref dataChanging, axis);
float pY = dataZoom.runtimeY + i * scaleWid; float pY = dataZoom.runtimeY + i * scaleWid;
float dataHig = (maxValue - minValue) == 0 ? 0 : float dataHig = (maxValue - minValue) == 0 ? 0 :
(value - minValue) / (maxValue - minValue) * dataZoom.runtimeWidth; (float)((value - minValue) / (maxValue - minValue) * dataZoom.runtimeWidth);
np = new Vector3(chart.chartX + chart.chartWidth - dataZoom.right - dataHig, pY); np = new Vector3(chart.chartX + chart.chartWidth - dataZoom.right - dataHig, pY);
if (i > 0) if (i > 0)
{ {

View File

@@ -54,8 +54,8 @@ namespace XCharts
public class Indicator public class Indicator
{ {
[SerializeField] private string m_Name; [SerializeField] private string m_Name;
[SerializeField] private float m_Max; [SerializeField] private double m_Max;
[SerializeField] private float m_Min; [SerializeField] private double m_Min;
[SerializeField] private TextStyle m_TextStyle = new TextStyle(); [SerializeField] private TextStyle m_TextStyle = new TextStyle();
/// <summary> /// <summary>
@@ -67,12 +67,12 @@ namespace XCharts
/// The maximum value of indicator, with default value of 0, but we recommend to set it manually. /// The maximum value of indicator, with default value of 0, but we recommend to set it manually.
/// 指示器的最大值,默认为 0 无限制。 /// 指示器的最大值,默认为 0 无限制。
/// </summary> /// </summary>
public float max { get { return m_Max; } set { m_Max = value; } } public double max { get { return m_Max; } set { m_Max = value; } }
/// <summary> /// <summary>
/// The minimum value of indicator, with default value of 0. /// The minimum value of indicator, with default value of 0.
/// 指示器的最小值,默认为 0 无限制。 /// 指示器的最小值,默认为 0 无限制。
/// </summary> /// </summary>
public float min { get { return m_Min; } set { m_Min = value; } } public double min { get { return m_Min; } set { m_Min = value; } }
/// <summary> /// <summary>
/// the style of text. /// the style of text.
/// 文本样式。 /// 文本样式。
@@ -276,7 +276,7 @@ namespace XCharts
return true; return true;
} }
public float GetIndicatorMin(int index) public double GetIndicatorMin(int index)
{ {
if (index >= 0 && index < m_IndicatorList.Count) if (index >= 0 && index < m_IndicatorList.Count)
{ {
@@ -284,7 +284,7 @@ namespace XCharts
} }
return 0; return 0;
} }
public float GetIndicatorMax(int index) public double GetIndicatorMax(int index)
{ {
if (index >= 0 && index < m_IndicatorList.Count) if (index >= 0 && index < m_IndicatorList.Count)
{ {

View File

@@ -324,7 +324,7 @@ namespace XCharts
[SerializeField] private bool m_ShowDataIcon; [SerializeField] private bool m_ShowDataIcon;
[SerializeField] private bool m_Clip = false; [SerializeField] private bool m_Clip = false;
[SerializeField] private bool m_Ignore = false; [SerializeField] private bool m_Ignore = false;
[SerializeField] private float m_IgnoreValue = 0; [SerializeField] private double m_IgnoreValue = 0;
[SerializeField] private bool m_ShowAsPositiveNumber = false; [SerializeField] private bool m_ShowAsPositiveNumber = false;
[SerializeField] private bool m_Large = true; [SerializeField] private bool m_Large = true;
[SerializeField] private int m_LargeThreshold = 200; [SerializeField] private int m_LargeThreshold = 200;
@@ -354,8 +354,8 @@ namespace XCharts
[NonSerialized] internal int m_FilterStart; [NonSerialized] internal int m_FilterStart;
[NonSerialized] internal int m_FilterEnd; [NonSerialized] internal int m_FilterEnd;
[NonSerialized] internal float m_FilterStartValue; [NonSerialized] internal double m_FilterStartValue;
[NonSerialized] internal float m_FilterEndValue; [NonSerialized] internal double m_FilterEndValue;
[NonSerialized] internal int m_FilterMinShow; [NonSerialized] internal int m_FilterMinShow;
[NonSerialized] internal bool m_NeedUpdateFilterData; [NonSerialized] internal bool m_NeedUpdateFilterData;
[NonSerialized] internal List<SerieData> m_FilterData = new List<SerieData>(); [NonSerialized] internal List<SerieData> m_FilterData = new List<SerieData>();
@@ -763,7 +763,7 @@ namespace XCharts
/// <summary> /// <summary>
/// 忽略数据的默认值。当ignore为true才有效。 /// 忽略数据的默认值。当ignore为true才有效。
/// </summary> /// </summary>
public float ignoreValue public double ignoreValue
{ {
get { return m_IgnoreValue; } get { return m_IgnoreValue; }
set { if (PropertyUtil.SetStruct(ref m_IgnoreValue, value)) SetVerticesDirty(); } set { if (PropertyUtil.SetStruct(ref m_IgnoreValue, value)) SetVerticesDirty(); }
@@ -1137,18 +1137,18 @@ namespace XCharts
/// <summary> /// <summary>
/// 运行时的最大数据值 /// 运行时的最大数据值
/// </summary> /// </summary>
public float runtimeDataMax { get; internal set; } public double runtimeDataMax { get; internal set; }
/// <summary> /// <summary>
/// 运行时的最小数据值 /// 运行时的最小数据值
/// </summary> /// </summary>
public float runtimeDataMin { get; internal set; } public double runtimeDataMin { get; internal set; }
/// <summary> /// <summary>
/// 饼图的数据项之和 /// 饼图的数据项之和
/// </summary> /// </summary>
public float runtimePieDataTotal { get; internal set; } public double runtimePieDataTotal { get; internal set; }
public float runtimeWaveSpeed { get; internal set; } public float runtimeWaveSpeed { get; internal set; }
public Painter runtimeCanvas { get; internal set; } public Painter runtimeCanvas { get; internal set; }
public float runtimeCheckValue { get; set; } public double runtimeCheckValue { get; set; }
public int runtimeGridIndex { get; internal set; } public int runtimeGridIndex { get; internal set; }
public float runtimeX { get; internal set; } public float runtimeX { get; internal set; }
public float runtimeY { get; internal set; } public float runtimeY { get; internal set; }
@@ -1214,11 +1214,11 @@ namespace XCharts
/// <summary> /// <summary>
/// 维度Y对应数据中最大值。 /// 维度Y对应数据中最大值。
/// </summary> /// </summary>
public float yMax public double yMax
{ {
get get
{ {
float max = float.MinValue; var max = double.MinValue;
foreach (var sdata in data) foreach (var sdata in data)
{ {
if (sdata.show && sdata.data[1] > max) if (sdata.show && sdata.data[1] > max)
@@ -1233,11 +1233,11 @@ namespace XCharts
/// <summary> /// <summary>
/// 维度X对应数据中的最大值。 /// 维度X对应数据中的最大值。
/// </summary> /// </summary>
public float xMax public double xMax
{ {
get get
{ {
float max = float.MinValue; var max = double.MinValue;
foreach (var sdata in data) foreach (var sdata in data)
{ {
if (sdata.show && sdata.data[0] > max) if (sdata.show && sdata.data[0] > max)
@@ -1252,11 +1252,11 @@ namespace XCharts
/// <summary> /// <summary>
/// 维度Y对应数据的最小值。 /// 维度Y对应数据的最小值。
/// </summary> /// </summary>
public float yMin public double yMin
{ {
get get
{ {
float min = float.MaxValue; var min = double.MaxValue;
foreach (var sdata in data) foreach (var sdata in data)
{ {
if (sdata.show && sdata.data[1] < min) if (sdata.show && sdata.data[1] < min)
@@ -1271,11 +1271,11 @@ namespace XCharts
/// <summary> /// <summary>
/// 维度X对应数据的最小值。 /// 维度X对应数据的最小值。
/// </summary> /// </summary>
public float xMin public double xMin
{ {
get get
{ {
float min = float.MaxValue; var min = double.MaxValue;
foreach (var sdata in data) foreach (var sdata in data)
{ {
if (sdata.show && sdata.data[0] < min) if (sdata.show && sdata.data[0] < min)
@@ -1290,11 +1290,11 @@ namespace XCharts
/// <summary> /// <summary>
/// 维度Y数据的总和。 /// 维度Y数据的总和。
/// </summary> /// </summary>
public float yTotal public double yTotal
{ {
get get
{ {
float total = 0; double total = 0;
foreach (var sdata in data) foreach (var sdata in data)
{ {
if (sdata.show) if (sdata.show)
@@ -1308,11 +1308,11 @@ namespace XCharts
/// <summary> /// <summary>
/// 维度X数据的总和。 /// 维度X数据的总和。
/// </summary> /// </summary>
public float xTotal public double xTotal
{ {
get get
{ {
float total = 0; double total = 0;
foreach (var sdata in data) foreach (var sdata in data)
{ {
if (sdata.show) if (sdata.show)
@@ -1373,7 +1373,7 @@ namespace XCharts
/// </summary> /// </summary>
/// <param name="value"></param> /// <param name="value"></param>
/// <param name="dataName"></param> /// <param name="dataName"></param>
public SerieData AddYData(float value, string dataName = null) public SerieData AddYData(double value, string dataName = null)
{ {
CheckMaxCache(); CheckMaxCache();
int xValue = m_Data.Count; int xValue = m_Data.Count;
@@ -1414,7 +1414,7 @@ namespace XCharts
/// <param name="yValue"></param> /// <param name="yValue"></param>
/// <param name="dataName"></param> /// <param name="dataName"></param>
/// <param name="maxDataNumber"></param> /// <param name="maxDataNumber"></param>
public SerieData AddXYData(float xValue, float yValue, string dataName = null) public SerieData AddXYData(double xValue, double yValue, string dataName = null)
{ {
CheckMaxCache(); CheckMaxCache();
var serieData = SerieDataPool.Get(); var serieData = SerieDataPool.Get();
@@ -1439,7 +1439,7 @@ namespace XCharts
/// <param name="heighest"></param> /// <param name="heighest"></param>
/// <param name="dataName"></param> /// <param name="dataName"></param>
/// <returns></returns> /// <returns></returns>
public SerieData AddData(float open, float close, float lowest, float heighest, string dataName = null) public SerieData AddData(double open, double close, double lowest, double heighest, string dataName = null)
{ {
CheckMaxCache(); CheckMaxCache();
var serieData = SerieDataPool.Get(); var serieData = SerieDataPool.Get();
@@ -1464,7 +1464,7 @@ namespace XCharts
/// <param name="valueList"></param> /// <param name="valueList"></param>
/// <param name="dataName"></param> /// <param name="dataName"></param>
/// <param name="maxDataNumber"></param> /// <param name="maxDataNumber"></param>
public SerieData AddData(List<float> valueList, string dataName = null) public SerieData AddData(List<double> valueList, string dataName = null)
{ {
if (valueList == null || valueList.Count == 0) return null; if (valueList == null || valueList.Count == 0) return null;
if (valueList.Count == 1) if (valueList.Count == 1)
@@ -1512,7 +1512,7 @@ namespace XCharts
/// <param name="dimension"></param> /// <param name="dimension"></param>
/// <param name="dataZoom"></param> /// <param name="dataZoom"></param>
/// <returns></returns> /// <returns></returns>
public float GetData(int index, int dimension, DataZoom dataZoom = null) public double GetData(int index, int dimension, DataZoom dataZoom = null)
{ {
if (index < 0 || dimension < 0) return 0; if (index < 0 || dimension < 0) return 0;
var serieData = GetSerieData(index, dataZoom); var serieData = GetSerieData(index, dataZoom);
@@ -1521,7 +1521,7 @@ namespace XCharts
var value = serieData.GetData(dimension); var value = serieData.GetData(dimension);
if (showAsPositiveNumber) if (showAsPositiveNumber)
{ {
value = Mathf.Abs(value); value = Math.Abs(value);
} }
return value; return value;
} }
@@ -1537,7 +1537,7 @@ namespace XCharts
/// <param name="index"></param> /// <param name="index"></param>
/// <param name="dataZoom"></param> /// <param name="dataZoom"></param>
/// <returns></returns> /// <returns></returns>
public float GetYData(int index, DataZoom dataZoom = null) public double GetYData(int index, DataZoom dataZoom = null)
{ {
if (index < 0) return 0; if (index < 0) return 0;
var serieData = GetDataList(dataZoom); var serieData = GetDataList(dataZoom);
@@ -1546,14 +1546,14 @@ namespace XCharts
var value = serieData[index].data[1]; var value = serieData[index].data[1];
if (showAsPositiveNumber) if (showAsPositiveNumber)
{ {
value = Mathf.Abs(value); value = Math.Abs(value);
} }
return value; return value;
} }
return 0; return 0;
} }
public float GetYCurrData(int index, DataZoom dataZoom = null) public double GetYCurrData(int index, DataZoom dataZoom = null)
{ {
if (index < 0) return 0; if (index < 0) return 0;
var serieData = GetDataList(dataZoom); var serieData = GetDataList(dataZoom);
@@ -1562,7 +1562,7 @@ namespace XCharts
var value = serieData[index].GetCurrData(1, animation.GetUpdateAnimationDuration()); var value = serieData[index].GetCurrData(1, animation.GetUpdateAnimationDuration());
if (showAsPositiveNumber) if (showAsPositiveNumber)
{ {
value = Mathf.Abs(value); value = Math.Abs(value);
} }
return value; return value;
} }
@@ -1576,7 +1576,7 @@ namespace XCharts
/// <param name="yData">对应的数据值</param> /// <param name="yData">对应的数据值</param>
/// <param name="dataName">对应的数据名</param> /// <param name="dataName">对应的数据名</param>
/// <param name="dataZoom">区域缩放</param> /// <param name="dataZoom">区域缩放</param>
public void GetYData(int index, out float yData, out string dataName, DataZoom dataZoom = null) public void GetYData(int index, out double yData, out string dataName, DataZoom dataZoom = null)
{ {
yData = 0; yData = 0;
dataName = null; dataName = null;
@@ -1587,7 +1587,7 @@ namespace XCharts
yData = serieData[index].data[1]; yData = serieData[index].data[1];
if (showAsPositiveNumber) if (showAsPositiveNumber)
{ {
yData = Mathf.Abs(yData); yData = Math.Abs(yData);
} }
dataName = serieData[index].name; dataName = serieData[index].name;
} }
@@ -1616,7 +1616,7 @@ namespace XCharts
/// <param name="dataZoom"></param> /// <param name="dataZoom"></param>
/// <param name="xValue"></param> /// <param name="xValue"></param>
/// <param name="yVlaue"></param> /// <param name="yVlaue"></param>
public void GetXYData(int index, DataZoom dataZoom, out float xValue, out float yVlaue) public void GetXYData(int index, DataZoom dataZoom, out double xValue, out double yVlaue)
{ {
xValue = 0; xValue = 0;
yVlaue = 0; yVlaue = 0;
@@ -1629,15 +1629,15 @@ namespace XCharts
yVlaue = serieData.data[1]; yVlaue = serieData.data[1];
if (showAsPositiveNumber) if (showAsPositiveNumber)
{ {
xValue = Mathf.Abs(xValue); xValue = Math.Abs(xValue);
yVlaue = Mathf.Abs(yVlaue); yVlaue = Math.Abs(yVlaue);
} }
} }
} }
public float GetDataTotal(int dimension) public double GetDataTotal(int dimension)
{ {
float total = 0; double total = 0;
foreach (var sdata in data) foreach (var sdata in data)
{ {
if (sdata.show) if (sdata.show)
@@ -1670,7 +1670,7 @@ namespace XCharts
/// </summary> /// </summary>
/// <param name="index"></param> /// <param name="index"></param>
/// <param name="value"></param> /// <param name="value"></param>
public bool UpdateYData(int index, float value) public bool UpdateYData(int index, double value)
{ {
UpdateData(index, 1, value); UpdateData(index, 1, value);
return true; return true;
@@ -1695,7 +1695,7 @@ namespace XCharts
/// <param name="index">要更新数据的索引</param> /// <param name="index">要更新数据的索引</param>
/// <param name="dimension">要更新数据的维数</param> /// <param name="dimension">要更新数据的维数</param>
/// <param name="value">新的数据值</param> /// <param name="value">新的数据值</param>
public bool UpdateData(int index, int dimension, float value) public bool UpdateData(int index, int dimension, double value)
{ {
if (index >= 0 && index < m_Data.Count) if (index >= 0 && index < m_Data.Count)
{ {
@@ -1716,7 +1716,7 @@ namespace XCharts
/// </summary> /// </summary>
/// <param name="index"></param> /// <param name="index"></param>
/// <param name="values"></param> /// <param name="values"></param>
public bool UpdateData(int index, List<float> values) public bool UpdateData(int index, List<double> values)
{ {
if (index >= 0 && index < m_Data.Count && values != null) if (index >= 0 && index < m_Data.Count && values != null)
{ {
@@ -1847,9 +1847,9 @@ namespace XCharts
return IsIgnoreValue(serieData.GetData(dimension)); return IsIgnoreValue(serieData.GetData(dimension));
} }
public bool IsIgnoreValue(float value) public bool IsIgnoreValue(double value)
{ {
return m_Ignore && Mathf.Approximately(value, m_IgnoreValue); return m_Ignore && MathUtil.Approximately(value, m_IgnoreValue);
} }
public bool IsIgnorePoint(int index) public bool IsIgnorePoint(int index)
@@ -1940,8 +1940,8 @@ namespace XCharts
for (int j = 0; j < data.Length; j++) for (int j = 0; j < data.Length; j++)
{ {
var txt = data[j].Trim().Replace("]", ""); var txt = data[j].Trim().Replace("]", "");
float value; double value;
var flag = float.TryParse(txt, out value); var flag = double.TryParse(txt, out value);
if (flag) if (flag)
{ {
serieData.data.Add(value); serieData.data.Add(value);
@@ -1962,8 +1962,8 @@ namespace XCharts
{ {
if (a.StartsWith("value:")) if (a.StartsWith("value:"))
{ {
float value = float.Parse(a.Substring(6, a.Length - 6)); double value = double.Parse(a.Substring(6, a.Length - 6));
serieData.data = new List<float>() { i, value }; serieData.data = new List<double>() { i, value };
} }
else if (a.StartsWith("name:")) else if (a.StartsWith("name:"))
{ {
@@ -1984,12 +1984,12 @@ namespace XCharts
string[] datas = temp.Split(','); string[] datas = temp.Split(',');
for (int i = 0; i < datas.Length; i++) for (int i = 0; i < datas.Length; i++)
{ {
float value; double value;
var flag = float.TryParse(datas[i].Trim(), out value); var flag = double.TryParse(datas[i].Trim(), out value);
if (flag) if (flag)
{ {
var serieData = new SerieData(); var serieData = new SerieData();
serieData.data = new List<float>() { i, value }; serieData.data = new List<double>() { i, value };
AddSerieDataHeadOrTail(serieData); AddSerieDataHeadOrTail(serieData);
} }
} }

View File

@@ -116,7 +116,7 @@ namespace XCharts
/// <param name="serieIndex"></param> /// <param name="serieIndex"></param>
/// <param name="dataIndex"></param> /// <param name="dataIndex"></param>
/// <returns></returns> /// <returns></returns>
public float GetData(int serieIndex, int dataIndex) public double GetData(int serieIndex, int dataIndex)
{ {
if (serieIndex >= 0 && serieIndex < Count) if (serieIndex >= 0 && serieIndex < Count)
{ {
@@ -128,7 +128,7 @@ namespace XCharts
} }
} }
public float GetCurrData(int serieIndex, int dataIndex) public double GetCurrData(int serieIndex, int dataIndex)
{ {
if (serieIndex >= 0 && serieIndex < Count) if (serieIndex >= 0 && serieIndex < Count)
{ {
@@ -321,7 +321,7 @@ namespace XCharts
/// <param name="value"></param> /// <param name="value"></param>
/// <param name="dataName"></param> /// <param name="dataName"></param>
/// <returns>添加成功返回SerieData否则返回null</returns> /// <returns>添加成功返回SerieData否则返回null</returns>
public SerieData AddData(string serieName, float value, string dataName = null) public SerieData AddData(string serieName, double value, string dataName = null)
{ {
var serie = GetSerie(serieName); var serie = GetSerie(serieName);
if (serie != null) if (serie != null)
@@ -338,7 +338,7 @@ namespace XCharts
/// <param name="value"></param> /// <param name="value"></param>
/// <param name="dataName"></param> /// <param name="dataName"></param>
/// <returns>添加成功返回SerieData否则返回null</returns> /// <returns>添加成功返回SerieData否则返回null</returns>
public SerieData AddData(int index, float value, string dataName = null) public SerieData AddData(int index, double value, string dataName = null)
{ {
var serie = GetSerie(index); var serie = GetSerie(index);
if (serie != null) if (serie != null)
@@ -358,7 +358,7 @@ namespace XCharts
/// <param name="heighest"></param> /// <param name="heighest"></param>
/// <param name="dataName"></param> /// <param name="dataName"></param>
/// <returns></returns> /// <returns></returns>
public SerieData AddData(int index, float open, float close, float lowest, float heighest, string dataName = null) public SerieData AddData(int index, double open, double close, double lowest, double heighest, string dataName = null)
{ {
var serie = GetSerie(index); var serie = GetSerie(index);
if (serie != null) if (serie != null)
@@ -368,7 +368,7 @@ namespace XCharts
return null; return null;
} }
public SerieData AddData(string serieName, float open, float close, float lowest, float heighest, string dataName = null) public SerieData AddData(string serieName, double open, double close, double lowest, double heighest, string dataName = null)
{ {
var serie = GetSerie(serieName); var serie = GetSerie(serieName);
if (serie != null) if (serie != null)
@@ -385,7 +385,7 @@ namespace XCharts
/// <param name="multidimensionalData"></param> /// <param name="multidimensionalData"></param>
/// <param name="dataName"></param> /// <param name="dataName"></param>
/// <returns>添加成功返回SerieData否则返回null</returns> /// <returns>添加成功返回SerieData否则返回null</returns>
public SerieData AddData(string serieName, List<float> multidimensionalData, string dataName = null) public SerieData AddData(string serieName, List<double> multidimensionalData, string dataName = null)
{ {
var serie = GetSerie(serieName); var serie = GetSerie(serieName);
if (serie != null) if (serie != null)
@@ -402,7 +402,7 @@ namespace XCharts
/// <param name="multidimensionalData"></param> /// <param name="multidimensionalData"></param>
/// <param name="dataName"></param> /// <param name="dataName"></param>
/// <returns>添加成功返回SerieData否则返回null</returns> /// <returns>添加成功返回SerieData否则返回null</returns>
public SerieData AddData(int serieIndex, List<float> multidimensionalData, string dataName = null) public SerieData AddData(int serieIndex, List<double> multidimensionalData, string dataName = null)
{ {
var serie = GetSerie(serieIndex); var serie = GetSerie(serieIndex);
if (serie != null) if (serie != null)
@@ -420,7 +420,7 @@ namespace XCharts
/// <param name="yValue"></param> /// <param name="yValue"></param>
/// <param name="dataName"></param> /// <param name="dataName"></param>
/// <returns>添加成功返回SerieData否则返回null</returns> /// <returns>添加成功返回SerieData否则返回null</returns>
public SerieData AddXYData(string serieName, float xValue, float yValue, string dataName = null) public SerieData AddXYData(string serieName, double xValue, double yValue, string dataName = null)
{ {
var serie = GetSerie(serieName); var serie = GetSerie(serieName);
if (serie != null) if (serie != null)
@@ -438,7 +438,7 @@ namespace XCharts
/// <param name="yValue"></param> /// <param name="yValue"></param>
/// <param name="dataName"></param> /// <param name="dataName"></param>
/// <returns>添加成功返回SerieData否则返回null</returns> /// <returns>添加成功返回SerieData否则返回null</returns>
public SerieData AddXYData(int index, float xValue, float yValue, string dataName = null) public SerieData AddXYData(int index, double xValue, double yValue, string dataName = null)
{ {
var serie = GetSerie(index); var serie = GetSerie(index);
if (serie != null) if (serie != null)
@@ -454,7 +454,7 @@ namespace XCharts
/// <param name="name"></param> /// <param name="name"></param>
/// <param name="value"></param> /// <param name="value"></param>
/// <param name="dataIndex"></param> /// <param name="dataIndex"></param>
public bool UpdateData(string serieName, int dataIndex, float value) public bool UpdateData(string serieName, int dataIndex, double value)
{ {
var serie = GetSerie(serieName); var serie = GetSerie(serieName);
if (serie != null) if (serie != null)
@@ -502,7 +502,7 @@ namespace XCharts
/// <param name="serieIndex"></param> /// <param name="serieIndex"></param>
/// <param name="dataIndex"></param> /// <param name="dataIndex"></param>
/// <param name="value"></param> /// <param name="value"></param>
public bool UpdateData(int serieIndex, int dataIndex, float value) public bool UpdateData(int serieIndex, int dataIndex, double value)
{ {
var serie = GetSerie(serieIndex); var serie = GetSerie(serieIndex);
if (serie != null) if (serie != null)
@@ -512,7 +512,7 @@ namespace XCharts
return false; return false;
} }
public bool UpdateData(string serieName, int dataIndex, List<float> values) public bool UpdateData(string serieName, int dataIndex, List<double> values)
{ {
var serie = GetSerie(serieName); var serie = GetSerie(serieName);
if (serie != null) if (serie != null)
@@ -521,7 +521,7 @@ namespace XCharts
} }
return false; return false;
} }
public bool UpdateData(int serieIndex, int dataIndex, List<float> values) public bool UpdateData(int serieIndex, int dataIndex, List<double> values)
{ {
var serie = GetSerie(serieIndex); var serie = GetSerie(serieIndex);
if (serie != null) if (serie != null)
@@ -538,7 +538,7 @@ namespace XCharts
/// <param name="dataIndex">数据项</param> /// <param name="dataIndex">数据项</param>
/// <param name="dimension">数据维数从0开始</param> /// <param name="dimension">数据维数从0开始</param>
/// <param name="value">值</param> /// <param name="value">值</param>
public bool UpdateData(int serieIndex, int dataIndex, int dimension, float value) public bool UpdateData(int serieIndex, int dataIndex, int dimension, double value)
{ {
var serie = GetSerie(serieIndex); var serie = GetSerie(serieIndex);
if (serie != null) if (serie != null)
@@ -555,7 +555,7 @@ namespace XCharts
/// <param name="dataIndex"></param> /// <param name="dataIndex"></param>
/// <param name="dimension">数据维数从0开始</param> /// <param name="dimension">数据维数从0开始</param>
/// <param name="value"></param> /// <param name="value"></param>
public bool UpdateData(string serieName, int dataIndex, int dimension, float value) public bool UpdateData(string serieName, int dataIndex, int dimension, double value)
{ {
var serie = GetSerie(serieName); var serie = GetSerie(serieName);
if (serie != null) if (serie != null)

View File

@@ -257,14 +257,14 @@ namespace XCharts
/// the value for x indicator label. /// the value for x indicator label.
/// 指示器X轴上要显示的值。 /// 指示器X轴上要显示的值。
/// </summary> /// </summary>
public float[] runtimeXValues { get { return m_RuntimeXValue; } internal set { m_RuntimeXValue = value; } } public double[] runtimeXValues { get { return m_RuntimeXValue; } internal set { m_RuntimeXValue = value; } }
private float[] m_RuntimeXValue = new float[2] { -1, -1 }; private double[] m_RuntimeXValue = new double[2] { -1, -1 };
/// <summary> /// <summary>
/// the value for y indicator label. /// the value for y indicator label.
/// 指示器Y轴上要显示的值。 /// 指示器Y轴上要显示的值。
/// </summary> /// </summary>
public float[] runtimeYValues { get { return m_RuntimeYValue; } internal set { m_RuntimeYValue = value; } } public double[] runtimeYValues { get { return m_RuntimeYValue; } internal set { m_RuntimeYValue = value; } }
private float[] m_RuntimeYValue = new float[2] { -1, -1 }; private double[] m_RuntimeYValue = new double[2] { -1, -1 };
/// <summary> /// <summary>
/// the current pointer position. /// the current pointer position.
/// 当前鼠标位置。 /// 当前鼠标位置。

View File

@@ -53,19 +53,19 @@ namespace XCharts
[System.Serializable] [System.Serializable]
public class Pieces public class Pieces
{ {
[SerializeField] private float m_Min; [SerializeField] private double m_Min;
[SerializeField] private float m_Max; [SerializeField] private double m_Max;
[SerializeField] private string m_Label; [SerializeField] private string m_Label;
[SerializeField] private Color32 m_Color; [SerializeField] private Color32 m_Color;
/// <summary> /// <summary>
/// 范围最小值 /// 范围最小值
/// </summary> /// </summary>
public float min { get { return m_Min; } set { m_Min = value; } } public double min { get { return m_Min; } set { m_Min = value; } }
/// <summary> /// <summary>
/// 范围最大值 /// 范围最大值
/// </summary> /// </summary>
public float max { get { return m_Max; } set { m_Max = value; } } public double max { get { return m_Max; } set { m_Max = value; } }
/// <summary> /// <summary>
/// 文字描述 /// 文字描述
/// </summary> /// </summary>
@@ -75,10 +75,10 @@ namespace XCharts
/// </summary> /// </summary>
public Color32 color { get { return m_Color; } set { m_Color = value; } } public Color32 color { get { return m_Color; } set { m_Color = value; } }
public bool Contains(float value, float minMaxRange) public bool Contains(double value, double minMaxRange)
{ {
var cmin = Mathf.Abs(m_Min) < 1 ? minMaxRange * m_Min : m_Min; var cmin = System.Math.Abs(m_Min) < 1 ? minMaxRange * m_Min : m_Min;
var cmax = Mathf.Abs(m_Max) < 1 ? minMaxRange * m_Max : m_Max; var cmax = System.Math.Abs(m_Max) < 1 ? minMaxRange * m_Max : m_Max;
return value >= cmin && value < cmax; return value >= cmin && value < cmax;
} }
} }
@@ -87,10 +87,10 @@ namespace XCharts
[SerializeField] private bool m_Show = true; [SerializeField] private bool m_Show = true;
[SerializeField] private Type m_Type = Type.Continuous; [SerializeField] private Type m_Type = Type.Continuous;
[SerializeField] private SelectedMode m_SelectedMode = SelectedMode.Multiple; [SerializeField] private SelectedMode m_SelectedMode = SelectedMode.Multiple;
[SerializeField] private float m_Min = 0; [SerializeField] private double m_Min = 0;
[SerializeField] private float m_Max = 100f; [SerializeField] private double m_Max = 100;
[SerializeField] private float[] m_Range = new float[2] { 0, 100f }; [SerializeField] private double[] m_Range = new double[2] { 0, 100 };
[SerializeField] private string[] m_Text = new string[2] { "", "" }; [SerializeField] private string[] m_Text = new string[2] { "", "" };
[SerializeField] private float[] m_TextGap = new float[2] { 10f, 10f }; [SerializeField] private float[] m_TextGap = new float[2] { 10f, 10f };
[SerializeField] private int m_SplitNumber = 5; [SerializeField] private int m_SplitNumber = 5;
@@ -156,7 +156,7 @@ namespace XCharts
/// ///
/// 允许的最小值。`autoMinMax`为`false`时必须指定。[visualMap.min, visualMap.max] 形成了视觉映射的『定义域』。 /// 允许的最小值。`autoMinMax`为`false`时必须指定。[visualMap.min, visualMap.max] 形成了视觉映射的『定义域』。
/// </summary> /// </summary>
public float min public double min
{ {
get { return m_Min; } get { return m_Min; }
set { if (PropertyUtil.SetStruct(ref m_Min, value)) SetVerticesDirty(); } set { if (PropertyUtil.SetStruct(ref m_Min, value)) SetVerticesDirty(); }
@@ -166,7 +166,7 @@ namespace XCharts
/// ///
/// 允许的最大值。`autoMinMax`为`false`时必须指定。[visualMap.min, visualMax.max] 形成了视觉映射的『定义域』。 /// 允许的最大值。`autoMinMax`为`false`时必须指定。[visualMap.min, visualMax.max] 形成了视觉映射的『定义域』。
/// </summary> /// </summary>
public float max public double max
{ {
get { return m_Max; } get { return m_Max; }
set { m_Max = (value < min ? min + 1 : value); SetVerticesDirty(); } set { m_Max = (value < min ? min + 1 : value); SetVerticesDirty(); }
@@ -176,7 +176,7 @@ namespace XCharts
/// ///
/// 指定手柄对应数值的位置。range 应在[min,max]范围内。 /// 指定手柄对应数值的位置。range 应在[min,max]范围内。
/// </summary> /// </summary>
public float[] range { get { return m_Range; } } public double[] range { get { return m_Range; } }
/// <summary> /// <summary>
/// Text on both ends. /// Text on both ends.
/// 两端的文本,如 ['High', 'Low']。 /// 两端的文本,如 ['High', 'Low']。
@@ -356,14 +356,14 @@ namespace XCharts
/// </summary> /// </summary>
/// <value></value> /// <value></value>
public int runtimeSelectedIndex { get; set; } public int runtimeSelectedIndex { get; set; }
public float runtimeSelectedValue { get; set; } public double runtimeSelectedValue { get; set; }
/// <summary> /// <summary>
/// the current pointer position. /// the current pointer position.
/// 当前鼠标位置。 /// 当前鼠标位置。
/// </summary> /// </summary>
public Vector2 runtimePointerPos { get; set; } public Vector2 runtimePointerPos { get; set; }
public bool runtimeIsVertical { get { return orient == Orient.Vertical; } } public bool runtimeIsVertical { get { return orient == Orient.Vertical; } }
public float rangeMin public double rangeMin
{ {
get get
{ {
@@ -376,7 +376,7 @@ namespace XCharts
} }
} }
public float rangeMax public double rangeMax
{ {
get get
{ {
@@ -398,8 +398,8 @@ namespace XCharts
} }
} }
public float runtimeRangeMinHeight { get { return (rangeMin - min) / (max - min) * itemHeight; } } public float runtimeRangeMinHeight { get { return (float)((rangeMin - min) / (max - min) * itemHeight); } }
public float runtimeRangeMaxHeight { get { return (rangeMax - min) / (max - min) * itemHeight; } } public float runtimeRangeMaxHeight { get { return (float)((rangeMax - min) / (max - min) * itemHeight); } }
public bool runtimeMinDrag { get; internal set; } public bool runtimeMinDrag { get; internal set; }
public bool runtimeMaxDrag { get; internal set; } public bool runtimeMaxDrag { get; internal set; }
@@ -440,7 +440,7 @@ namespace XCharts
} }
else else
{ {
var rate = (rtValue - inValue) / diff1; var rate = (float)((rtValue - inValue) / diff1);
m_RtInRange.Add(Color32.Lerp(m_InRange[inCount], m_InRange[inCount + 1], rate)); m_RtInRange.Add(Color32.Lerp(m_InRange[inCount], m_InRange[inCount + 1], rate));
} }
} }
@@ -450,7 +450,7 @@ namespace XCharts
} }
} }
public Color32 GetColor(float value) public Color32 GetColor(double value)
{ {
switch (type) switch (type)
{ {
@@ -463,7 +463,7 @@ namespace XCharts
} }
} }
private Color32 GetPiecesColor(float value) private Color32 GetPiecesColor(double value)
{ {
foreach (var piece in m_Pieces) foreach (var piece in m_Pieces)
{ {
@@ -476,7 +476,7 @@ namespace XCharts
else return ChartConst.clearColor32; else return ChartConst.clearColor32;
} }
private Color32 GetContinuousColor(float value) private Color32 GetContinuousColor(double value)
{ {
if (value < m_Min || value > m_Max) if (value < m_Min || value > m_Max)
{ {
@@ -498,15 +498,15 @@ namespace XCharts
var nowMin = m_Min + index * diff; var nowMin = m_Min + index * diff;
var rate = (value - nowMin) / diff; var rate = (value - nowMin) / diff;
if (index == splitNumber - 1) return runtimeInRange[index]; if (index == splitNumber - 1) return runtimeInRange[index];
else return Color32.Lerp(runtimeInRange[index], runtimeInRange[index + 1], rate); else return Color32.Lerp(runtimeInRange[index], runtimeInRange[index + 1], (float)rate);
} }
} }
public int GetIndex(float value) public int GetIndex(double value)
{ {
int splitNumber = runtimeInRange.Count; int splitNumber = runtimeInRange.Count;
if (splitNumber <= 0) return -1; if (splitNumber <= 0) return -1;
value = Mathf.Clamp(value, m_Min, m_Max); value = MathUtil.Clamp(value, m_Min, m_Max);
var diff = (m_Max - m_Min) / (splitNumber - 1); var diff = (m_Max - m_Min) / (splitNumber - 1);
var index = -1; var index = -1;
@@ -526,7 +526,7 @@ namespace XCharts
return m_Type == VisualMap.Type.Piecewise; return m_Type == VisualMap.Type.Piecewise;
} }
public bool IsInSelectedValue(float value) public bool IsInSelectedValue(double value)
{ {
if (runtimeSelectedIndex < 0) return true; if (runtimeSelectedIndex < 0) return true;
else else
@@ -535,7 +535,7 @@ namespace XCharts
} }
} }
public float GetValue(Vector3 pos, Rect chartRect) public double GetValue(Vector3 pos, Rect chartRect)
{ {
var centerPos = new Vector3(chartRect.x, chartRect.y) + location.GetPosition(chartRect.width, chartRect.height); var centerPos = new Vector3(chartRect.x, chartRect.y) + location.GetPosition(chartRect.width, chartRect.height);
var pos1 = centerPos + (runtimeIsVertical ? Vector3.down : Vector3.left) * itemHeight / 2; var pos1 = centerPos + (runtimeIsVertical ? Vector3.down : Vector3.left) * itemHeight / 2;
@@ -726,7 +726,7 @@ namespace XCharts
var halfHig = visualMap.itemHeight / 2; var halfHig = visualMap.itemHeight / 2;
var centerPos = chart.chartPosition + visualMap.location.GetPosition(chart.chartWidth, chart.chartHeight); var centerPos = chart.chartPosition + visualMap.location.GetPosition(chart.chartWidth, chart.chartHeight);
var selectedIndex = -1; var selectedIndex = -1;
var value = 0f; double value = 0;
switch (visualMap.orient) switch (visualMap.orient)
{ {
case Orient.Horizonal: case Orient.Horizonal:

View File

@@ -249,11 +249,11 @@ namespace XCharts
} }
} }
public string GetFormatterContent(int labelIndex, float value, float minValue, float maxValue, bool isLog = false) public string GetFormatterContent(int labelIndex, double value, double minValue, double maxValue, bool isLog = false)
{ {
if (showAsPositiveNumber && value < 0) if (showAsPositiveNumber && value < 0)
{ {
value = Mathf.Abs(value); value = Math.Abs(value);
} }
if (m_FormatterFunction != null) if (m_FormatterFunction != null)
{ {
@@ -283,7 +283,7 @@ namespace XCharts
} }
} }
public string GetFormatterDateTime(int labelIndex, float value) public string GetFormatterDateTime(int labelIndex, double value)
{ {
if (m_FormatterFunction != null) if (m_FormatterFunction != null)
{ {

View File

@@ -358,14 +358,14 @@ namespace XCharts
else return dataIndex <= m_CurrDataProgress; else return dataIndex <= m_CurrDataProgress;
} }
internal void CheckProgress(float total) internal void CheckProgress(double total)
{ {
if (IsFinish()) return; if (IsFinish()) return;
if (!m_IsInit || m_IsPause || m_IsEnd) return; if (!m_IsInit || m_IsPause || m_IsEnd) return;
if (IsInDelay()) return; if (IsInDelay()) return;
m_ActualDuration = (int)((Time.time - startTime) * 1000) - fadeInDelay; m_ActualDuration = (int)((Time.time - startTime) * 1000) - fadeInDelay;
var duration = GetCurrAnimationDuration(); var duration = GetCurrAnimationDuration();
var delta = total / duration * Time.deltaTime; var delta = (float)(total / duration * Time.deltaTime);
if (m_FadeOut) if (m_FadeOut)
{ {
m_CurrDetailProgress -= delta; m_CurrDetailProgress -= delta;

View File

@@ -30,7 +30,7 @@ namespace XCharts
[SerializeField] private Emphasis m_Emphasis = new Emphasis(); [SerializeField] private Emphasis m_Emphasis = new Emphasis();
[SerializeField] private bool m_EnableSymbol = false; [SerializeField] private bool m_EnableSymbol = false;
[SerializeField] private SerieSymbol m_Symbol = new SerieSymbol(); [SerializeField] private SerieSymbol m_Symbol = new SerieSymbol();
[SerializeField] private List<float> m_Data = new List<float>(); [SerializeField] private List<double> m_Data = new List<double>();
public ChartLabel labelObject { get; set; } public ChartLabel labelObject { get; set; }
@@ -106,7 +106,7 @@ namespace XCharts
/// An arbitrary dimension data list of data item. /// An arbitrary dimension data list of data item.
/// 可指定任意维数的数值列表。 /// 可指定任意维数的数值列表。
/// </summary> /// </summary>
public List<float> data { get { return m_Data; } set { m_Data = value; } } public List<double> data { get { return m_Data; } set { m_Data = value; } }
/// <summary> /// <summary>
/// [default:true] Whether the data item is showed. /// [default:true] Whether the data item is showed.
/// 该数据项是否要显示。 /// 该数据项是否要显示。
@@ -171,7 +171,7 @@ namespace XCharts
public float runtimeAngle { get; set; } public float runtimeAngle { get; set; }
public Vector3 runtiemPieOffsetCenter { get; set; } public Vector3 runtiemPieOffsetCenter { get; set; }
public float runtimeStackHig { get; set; } public float runtimeStackHig { get; set; }
private List<float> m_PreviousData = new List<float>(); 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>();
private List<Vector2> m_PolygonPoints = new List<Vector2>(); private List<Vector2> m_PolygonPoints = new List<Vector2>();
@@ -200,7 +200,7 @@ namespace XCharts
m_Emphasis.Reset(); m_Emphasis.Reset();
} }
public float GetData(int index, bool inverse = false) public double GetData(int index, bool inverse = false)
{ {
if (index >= 0 && index < m_Data.Count) if (index >= 0 && index < m_Data.Count)
{ {
@@ -209,7 +209,7 @@ namespace XCharts
else return 0; else return 0;
} }
public float GetData(int index, float min, float max) public double GetData(int index, double min, double max)
{ {
if (index >= 0 && index < m_Data.Count) if (index >= 0 && index < m_Data.Count)
{ {
@@ -221,7 +221,7 @@ namespace XCharts
else return 0; else return 0;
} }
public float GetPreviousData(int index, bool inverse = false) public double GetPreviousData(int index, bool inverse = false)
{ {
if (index >= 0 && index < m_PreviousData.Count) if (index >= 0 && index < m_PreviousData.Count)
{ {
@@ -230,24 +230,24 @@ namespace XCharts
else return 0; else return 0;
} }
public float GetFirstData(float animationDuration = 500f) public double GetFirstData(float animationDuration = 500f)
{ {
if (m_Data.Count > 0) return GetCurrData(0, animationDuration); if (m_Data.Count > 0) return GetCurrData(0, animationDuration);
return 0; return 0;
} }
public float GetLastData() public double GetLastData()
{ {
if (m_Data.Count > 0) return m_Data[m_Data.Count - 1]; if (m_Data.Count > 0) return m_Data[m_Data.Count - 1];
return 0; return 0;
} }
public float GetCurrData(int index, float animationDuration = 500f, bool inverse = false) public double GetCurrData(int index, float animationDuration = 500f, bool inverse = false)
{ {
return GetCurrData(index, animationDuration, inverse, 0, 0); return GetCurrData(index, animationDuration, inverse, 0, 0);
} }
public float GetCurrData(int index, float animationDuration, bool inverse, float min, float max) public double GetCurrData(int index, float animationDuration, bool inverse, double min, double max)
{ {
if (index < m_DataUpdateFlag.Count && m_DataUpdateFlag[index] && animationDuration > 0) if (index < m_DataUpdateFlag.Count && m_DataUpdateFlag[index] && animationDuration > 0)
{ {
@@ -259,7 +259,7 @@ namespace XCharts
if (rate < 1) if (rate < 1)
{ {
CheckLastData(); CheckLastData();
var curr = Mathf.Lerp(GetPreviousData(index), GetData(index), rate); var curr = MathUtil.Lerp(GetPreviousData(index), GetData(index), rate);
if (min != 0 || max != 0) if (min != 0 || max != 0)
{ {
if (inverse) if (inverse)
@@ -299,10 +299,10 @@ namespace XCharts
/// the maxinum value. /// the maxinum value.
/// 最大值。 /// 最大值。
/// </summary> /// </summary>
public float GetMaxData(bool inverse = false) public double GetMaxData(bool inverse = false)
{ {
if (m_Data.Count == 0) return 0; if (m_Data.Count == 0) return 0;
float temp = float.MinValue; var temp = double.MinValue;
for (int i = 0; i < m_Data.Count; i++) for (int i = 0; i < m_Data.Count; i++)
{ {
var value = GetData(i, inverse); var value = GetData(i, inverse);
@@ -310,15 +310,15 @@ namespace XCharts
} }
return temp; return temp;
} }
/// <summary> /// <summary>
/// the mininum value. /// the mininum value.
/// 最小值。 /// 最小值。
/// </summary> /// </summary>
public float GetMinData(bool inverse = false) public double GetMinData(bool inverse = false)
{ {
if (m_Data.Count == 0) return 0; if (m_Data.Count == 0) return 0;
float temp = float.MaxValue; var temp = double.MaxValue;
for (int i = 0; i < m_Data.Count; i++) for (int i = 0; i < m_Data.Count; i++)
{ {
var value = GetData(i, inverse); var value = GetData(i, inverse);
@@ -327,7 +327,7 @@ namespace XCharts
return temp; return temp;
} }
public bool UpdateData(int dimension, float value, bool updateAnimation, float animationDuration = 500f) public bool UpdateData(int dimension, double value, bool updateAnimation, float animationDuration = 500f)
{ {
if (dimension >= 0 && dimension < data.Count) if (dimension >= 0 && dimension < data.Count)
{ {

View File

@@ -70,7 +70,7 @@ namespace XCharts
/// </summary> /// </summary>
/// <param name="data"></param> /// <param name="data"></param>
/// <returns></returns> /// <returns></returns>
public delegate float SymbolSizeCallback(List<float> data); public delegate float SymbolSizeCallback(List<double> data);
/// <summary> /// <summary>
/// 系列数据项的标记的图形 /// 系列数据项的标记的图形
@@ -249,7 +249,7 @@ namespace XCharts
/// </summary> /// </summary>
/// <param name="data"></param> /// <param name="data"></param>
/// <returns></returns> /// <returns></returns>
public float GetSize(List<float> data, float themeSize) public float GetSize(List<double> data, float themeSize)
{ {
switch (m_SizeType) switch (m_SizeType)
{ {
@@ -258,7 +258,7 @@ namespace XCharts
case SerieSymbolSizeType.FromData: case SerieSymbolSizeType.FromData:
if (data != null && dataIndex >= 0 && dataIndex < data.Count) if (data != null && dataIndex >= 0 && dataIndex < data.Count)
{ {
return data[dataIndex] * m_DataScale; return (float)data[dataIndex] * m_DataScale;
} }
else else
{ {
@@ -276,7 +276,7 @@ namespace XCharts
/// </summary> /// </summary>
/// <param name="data"></param> /// <param name="data"></param>
/// <returns></returns> /// <returns></returns>
public float GetSelectedSize(List<float> data, float themeSelectedSize) public float GetSelectedSize(List<double> data, float themeSelectedSize)
{ {
switch (m_SizeType) switch (m_SizeType)
{ {
@@ -285,7 +285,7 @@ namespace XCharts
case SerieSymbolSizeType.FromData: case SerieSymbolSizeType.FromData:
if (data != null && dataIndex >= 0 && dataIndex < data.Count) if (data != null && dataIndex >= 0 && dataIndex < data.Count)
{ {
return data[dataIndex] * m_SelectedDataScale; return (float)data[dataIndex] * m_SelectedDataScale;
} }
else else
{ {

View File

@@ -72,7 +72,7 @@ namespace XCharts
var rate = Random.Range(0, 101); var rate = Random.Range(0, 101);
if (rate > 70) value = Random.Range(8f, 10f); if (rate > 70) value = Random.Range(8f, 10f);
else value = Random.Range(1f, 8f); else value = Random.Range(1f, 8f);
var list = new List<float> { i, j, value }; var list = new List<double> { i, j, value };
AddData(0, list); AddData(0, list);
} }
} }

View File

@@ -112,14 +112,14 @@ namespace XCharts
/// <param name="maxValue"></param> /// <param name="maxValue"></param>
/// <param name="dataZoom"></param> /// <param name="dataZoom"></param>
/// <returns></returns> /// <returns></returns>
public static string GetLabelName(Axis axis, float coordinateWidth, int index, float minValue, float maxValue, public static string GetLabelName(Axis axis, float coordinateWidth, int index, double minValue, double maxValue,
DataZoom dataZoom, bool forcePercent) DataZoom dataZoom, bool forcePercent)
{ {
int split = GetSplitNumber(axis, coordinateWidth, dataZoom); int split = GetSplitNumber(axis, coordinateWidth, dataZoom);
if (axis.type == Axis.AxisType.Value) if (axis.type == Axis.AxisType.Value)
{ {
if (minValue == 0 && maxValue == 0) return string.Empty; if (minValue == 0 && maxValue == 0) return string.Empty;
var value = 0f; double value = 0;
if (forcePercent) maxValue = 100; if (forcePercent) maxValue = 100;
if (axis.interval > 0) if (axis.interval > 0)
{ {
@@ -155,7 +155,7 @@ namespace XCharts
else if (axis.type == Axis.AxisType.Time) else if (axis.type == Axis.AxisType.Time)
{ {
if (minValue == 0 && maxValue == 0) return string.Empty; if (minValue == 0 && maxValue == 0) return string.Empty;
var value = 0f; double value = 0;
if (axis.interval > 0) if (axis.interval > 0)
{ {
if (index == split) value = maxValue; if (index == split) value = maxValue;
@@ -323,7 +323,7 @@ namespace XCharts
/// </summary> /// </summary>
/// <param name="minValue"></param> /// <param name="minValue"></param>
/// <param name="maxValue"></param> /// <param name="maxValue"></param>
public static void AdjustMinMaxValue(Axis axis, ref float minValue, ref float maxValue, bool needFormat, int ceilRate = 0) public static void AdjustMinMaxValue(Axis axis, ref double minValue, ref double maxValue, bool needFormat, int ceilRate = 0)
{ {
if (axis.type == Axis.AxisType.Log) if (axis.type == Axis.AxisType.Log)
{ {

View File

@@ -43,8 +43,8 @@ namespace XCharts
public static void UpdateDataZoomRuntimeStartEndValue(DataZoom dataZoom, Serie serie) public static void UpdateDataZoomRuntimeStartEndValue(DataZoom dataZoom, Serie serie)
{ {
if (dataZoom == null || serie == null) return; if (dataZoom == null || serie == null) return;
float min = 0; double min = 0;
float max = 0; double max = 0;
SerieHelper.GetMinMaxData(serie, out min, out max, null); SerieHelper.GetMinMaxData(serie, out min, out max, null);
dataZoom.runtimeStartValue = min + (max - min) * dataZoom.start / 100; dataZoom.runtimeStartValue = min + (max - min) * dataZoom.start / 100;
dataZoom.runtimeEndValue = min + (max - min) * dataZoom.end / 100; dataZoom.runtimeEndValue = min + (max - min) * dataZoom.end / 100;
@@ -55,8 +55,8 @@ namespace XCharts
foreach (var dataZoom in chart.dataZooms) foreach (var dataZoom in chart.dataZooms)
{ {
if (!dataZoom.enable) continue; if (!dataZoom.enable) continue;
float min = float.MaxValue; double min = double.MaxValue;
float max = float.MinValue; double max = double.MinValue;
foreach (var serie in chart.series.list) foreach (var serie in chart.series.list)
{ {
if (!serie.show || serie.type != serieType) continue; if (!serie.show || serie.type != serieType) continue;
@@ -70,8 +70,8 @@ namespace XCharts
} }
else else
{ {
var serieMinValue = 0f; double serieMinValue = 0;
var serieMaxValue = 0f; double serieMaxValue = 0;
SerieHelper.GetMinMaxData(serie, out serieMinValue, out serieMaxValue, null, 2); SerieHelper.GetMinMaxData(serie, out serieMinValue, out serieMaxValue, null, 2);
if (serieMinValue < min) min = serieMinValue; if (serieMinValue < min) min = serieMinValue;
if (serieMaxValue > max) max = serieMaxValue; if (serieMaxValue > max) max = serieMaxValue;

View File

@@ -181,7 +181,7 @@ namespace XCharts
return s_RegexNewLine.Replace(content.Trim(), PH_NN); return s_RegexNewLine.Replace(content.Trim(), PH_NN);
} }
public static void ReplaceAxisLabelContent(ref string content, string numericFormatter, float value) public static void ReplaceAxisLabelContent(ref string content, string numericFormatter, double value)
{ {
var mc = s_RegexForAxisLabel.Matches(content); var mc = s_RegexForAxisLabel.Matches(content);
foreach (var m in mc) foreach (var m in mc)
@@ -213,7 +213,7 @@ namespace XCharts
content = TrimAndReplaceLine(content); content = TrimAndReplaceLine(content);
} }
public static void ReplaceSerieLabelContent(ref string content, string numericFormatter, float value, float total, public static void ReplaceSerieLabelContent(ref string content, string numericFormatter, double value, double total,
string serieName, string dataName, Color color) string serieName, string dataName, Color color)
{ {
var mc = s_RegexForSerieLabel.Matches(content); var mc = s_RegexForSerieLabel.Matches(content);

View File

@@ -22,11 +22,11 @@ namespace XCharts
/// <param name="min">最小值</param> /// <param name="min">最小值</param>
/// <param name="max">最大值</param> /// <param name="max">最大值</param>
/// <param name="dataZoom">缩放组件默认null</param> /// <param name="dataZoom">缩放组件默认null</param>
public static void GetMinMaxData(Serie serie, int dimension, out float min, out float max, public static void GetMinMaxData(Serie serie, int dimension, out double min, out double max,
DataZoom dataZoom = null) DataZoom dataZoom = null)
{ {
max = float.MinValue; max = double.MinValue;
min = float.MaxValue; min = double.MaxValue;
var dataList = serie.GetDataList(dataZoom); var dataList = serie.GetDataList(dataZoom);
for (int i = 0; i < dataList.Count; i++) for (int i = 0; i < dataList.Count; i++)
{ {
@@ -48,10 +48,10 @@ namespace XCharts
/// <param name="min"></param> /// <param name="min"></param>
/// <param name="max"></param> /// <param name="max"></param>
/// <param name="dataZoom"></param> /// <param name="dataZoom"></param>
public static void GetMinMaxData(Serie serie, out float min, out float max, DataZoom dataZoom = null, int dimension = 0) public static void GetMinMaxData(Serie serie, out double min, out double max, DataZoom dataZoom = null, int dimension = 0)
{ {
max = float.MinValue; max = double.MinValue;
min = float.MaxValue; min = double.MaxValue;
var dataList = serie.GetDataList(dataZoom); var dataList = serie.GetDataList(dataZoom);
for (int i = 0; i < dataList.Count; i++) for (int i = 0; i < dataList.Count; i++)
{ {
@@ -406,7 +406,7 @@ namespace XCharts
/// <returns></returns> /// <returns></returns>
public static void UpdateMinMaxData(Serie serie, int dimension, int ceilRate = 0, DataZoom dataZoom = null) public static void UpdateMinMaxData(Serie serie, int dimension, int ceilRate = 0, DataZoom dataZoom = null)
{ {
float min = 0, max = 0; double min = 0, max = 0;
GetMinMaxData(serie, dimension, out min, out max, dataZoom); GetMinMaxData(serie, dimension, out min, out max, dataZoom);
if (ceilRate < 0) if (ceilRate < 0)
{ {
@@ -422,7 +422,7 @@ namespace XCharts
public static void GetAllMinMaxData(Serie serie, int ceilRate = 0, DataZoom dataZoom = null) public static void GetAllMinMaxData(Serie serie, int ceilRate = 0, DataZoom dataZoom = null)
{ {
float min = 0, max = 0; double min = 0, max = 0;
GetMinMaxData(serie, out min, out max, dataZoom); GetMinMaxData(serie, out min, out max, dataZoom);
if (ceilRate < 0) if (ceilRate < 0)
{ {
@@ -448,7 +448,7 @@ namespace XCharts
{ {
if (dataZoom.IsXAxisIndexValue(serie.xAxisIndex)) if (dataZoom.IsXAxisIndexValue(serie.xAxisIndex))
{ {
float min = 0, max = 0; double min = 0, max = 0;
dataZoom.GetXAxisIndexValue(serie.xAxisIndex, out min, out max); dataZoom.GetXAxisIndexValue(serie.xAxisIndex, out min, out max);
UpdateFilterData_XAxisValue(serie, dataZoom, 0, min, max); UpdateFilterData_XAxisValue(serie, dataZoom, 0, min, max);
} }
@@ -461,7 +461,7 @@ namespace XCharts
{ {
if (dataZoom.IsYAxisIndexValue(serie.yAxisIndex)) if (dataZoom.IsYAxisIndexValue(serie.yAxisIndex))
{ {
float min = 0, max = 0; double min = 0, max = 0;
dataZoom.GetYAxisIndexValue(serie.yAxisIndex, out min, out max); dataZoom.GetYAxisIndexValue(serie.yAxisIndex, out min, out max);
UpdateFilterData_XAxisValue(serie, dataZoom, 0, min, max); UpdateFilterData_XAxisValue(serie, dataZoom, 0, min, max);
} }
@@ -472,7 +472,7 @@ namespace XCharts
} }
} }
private static void UpdateFilterData_XAxisValue(Serie serie, DataZoom dataZoom, int dimension, float min, float max) private static void UpdateFilterData_XAxisValue(Serie serie, DataZoom dataZoom, int dimension, double min, double max)
{ {
var data = serie.data; var data = serie.data;
var startValue = min + (max - min) * dataZoom.start / 100; var startValue = min + (max - min) * dataZoom.start / 100;

View File

@@ -89,7 +89,7 @@ namespace XCharts
} }
public static string GetFormatterContent(Serie serie, SerieData serieData, public static string GetFormatterContent(Serie serie, SerieData serieData,
float dataValue, float dataTotal, SerieLabel serieLabel, Color color) double dataValue, double dataTotal, SerieLabel serieLabel, Color color)
{ {
if (serieLabel == null) if (serieLabel == null)
{ {

View File

@@ -5,6 +5,7 @@
/* */ /* */
/************************************************/ /************************************************/
using System;
using System.Collections.Generic; using System.Collections.Generic;
using UnityEngine; using UnityEngine;
@@ -410,7 +411,7 @@ namespace XCharts
/// <param name="minVaule"></param> /// <param name="minVaule"></param>
/// <param name="maxValue"></param> /// <param name="maxValue"></param>
public static void GetXMinMaxValue(Series series, DataZoom dataZoom, int axisIndex, bool isValueAxis, public static void GetXMinMaxValue(Series series, DataZoom dataZoom, int axisIndex, bool isValueAxis,
bool inverse, out float minVaule, out float maxValue, bool isPolar = false) bool inverse, out double minVaule, out double maxValue, bool isPolar = false)
{ {
GetMinMaxValue(series, dataZoom, axisIndex, isValueAxis, inverse, false, out minVaule, out maxValue, isPolar); GetMinMaxValue(series, dataZoom, axisIndex, isValueAxis, inverse, false, out minVaule, out maxValue, isPolar);
} }
@@ -423,18 +424,18 @@ namespace XCharts
/// <param name="minVaule"></param> /// <param name="minVaule"></param>
/// <param name="maxValue"></param> /// <param name="maxValue"></param>
public static void GetYMinMaxValue(Series series, DataZoom dataZoom, int axisIndex, bool isValueAxis, public static void GetYMinMaxValue(Series series, DataZoom dataZoom, int axisIndex, bool isValueAxis,
bool inverse, out float minVaule, out float maxValue, bool isPolar = false) bool inverse, out double minVaule, out double maxValue, bool isPolar = false)
{ {
GetMinMaxValue(series, dataZoom, axisIndex, isValueAxis, inverse, true, out minVaule, out maxValue, isPolar); GetMinMaxValue(series, dataZoom, axisIndex, isValueAxis, inverse, true, out minVaule, out maxValue, isPolar);
} }
private static Dictionary<int, List<Serie>> _stackSeriesForMinMax = new Dictionary<int, List<Serie>>(); private static Dictionary<int, List<Serie>> _stackSeriesForMinMax = new Dictionary<int, List<Serie>>();
private static Dictionary<int, float> _serieTotalValueForMinMax = new Dictionary<int, float>(); private static Dictionary<int, double> _serieTotalValueForMinMax = new Dictionary<int, double>();
public static void GetMinMaxValue(Series series, DataZoom dataZoom, int axisIndex, bool isValueAxis, public static void GetMinMaxValue(Series series, DataZoom dataZoom, int axisIndex, bool isValueAxis,
bool inverse, bool yValue, out float minVaule, out float maxValue, bool isPolar = false) bool inverse, bool yValue, out double minVaule, out double maxValue, bool isPolar = false)
{ {
float min = float.MaxValue; double min = double.MaxValue;
float max = float.MinValue; double max = double.MinValue;
var isPercentStack = SeriesHelper.IsPercentStack(series, SerieType.Bar); var isPercentStack = SeriesHelper.IsPercentStack(series, SerieType.Bar);
if (!SeriesHelper.IsStack(series) || (isValueAxis && !yValue)) if (!SeriesHelper.IsStack(series) || (isValueAxis && !yValue))
{ {
@@ -499,7 +500,7 @@ namespace XCharts
{ {
if (!_serieTotalValueForMinMax.ContainsKey(j)) if (!_serieTotalValueForMinMax.ContainsKey(j))
_serieTotalValueForMinMax[j] = 0; _serieTotalValueForMinMax[j] = 0;
var currData = 0f; double currData = 0;
if (serie.type == SerieType.Candlestick) if (serie.type == SerieType.Candlestick)
{ {
currData = showData[j].GetMaxData(false); currData = showData[j].GetMaxData(false);
@@ -513,8 +514,8 @@ namespace XCharts
} }
} }
} }
float tmax = float.MinValue; double tmax = double.MinValue;
float tmin = float.MaxValue; double tmin = double.MaxValue;
foreach (var tt in _serieTotalValueForMinMax) foreach (var tt in _serieTotalValueForMinMax)
{ {
if (tt.Value > tmax) tmax = tt.Value; if (tt.Value > tmax) tmax = tt.Value;
@@ -524,15 +525,15 @@ namespace XCharts
if (tmin < min) min = tmin; if (tmin < min) min = tmin;
} }
} }
if (max == float.MinValue && min == float.MaxValue) if (max == double.MinValue && min == double.MaxValue)
{ {
minVaule = 0; minVaule = 0;
maxValue = 0; maxValue = 0;
} }
else else
{ {
minVaule = min > 1 ? Mathf.Floor(min) : min; minVaule = min > 1 ? Math.Floor(min) : min;
maxValue = max > 1 ? Mathf.Ceil(max) : max; maxValue = max > 1 ? Math.Ceiling(max) : max;
} }
} }

View File

@@ -26,7 +26,7 @@ namespace XCharts
var dataIndex = dataIndexList[i]; var dataIndex = dataIndexList[i];
var serieData = serie.GetSerieData(dataIndex); var serieData = serie.GetSerieData(dataIndex);
var numericFormatter = GetItemNumericFormatter(tooltip, serie, serieData); var numericFormatter = GetItemNumericFormatter(tooltip, serie, serieData);
float xValue, yValue; double xValue, yValue;
serie.GetXYData(dataIndex, null, out xValue, out yValue); serie.GetXYData(dataIndex, null, out xValue, out yValue);
sb.Append("<color=#").Append(theme.GetColorStr(serie.index)).Append(">● </color>"); sb.Append("<color=#").Append(theme.GetColorStr(serie.index)).Append(">● </color>");
@@ -50,7 +50,7 @@ namespace XCharts
var serieData = serie.GetSerieData(index); var serieData = serie.GetSerieData(index);
var numericFormatter = GetItemNumericFormatter(tooltip, serie, serieData); var numericFormatter = GetItemNumericFormatter(tooltip, serie, serieData);
float value = serieData.GetData(1); var value = serieData.GetData(1);
sb.Length = 0; sb.Length = 0;
if (!string.IsNullOrEmpty(serie.name)) if (!string.IsNullOrEmpty(serie.name))
{ {
@@ -67,7 +67,7 @@ namespace XCharts
{ {
var serieData = serie.GetSerieData(index); var serieData = serie.GetSerieData(index);
var numericFormatter = GetItemNumericFormatter(tooltip, serie, serieData); var numericFormatter = GetItemNumericFormatter(tooltip, serie, serieData);
float value = serieData.GetFirstData(); var value = serieData.GetFirstData();
sb.Length = 0; sb.Length = 0;
if (!string.IsNullOrEmpty(serieData.name)) if (!string.IsNullOrEmpty(serieData.name))
{ {
@@ -86,7 +86,7 @@ namespace XCharts
if (serie.index != index || serie.type != SerieType.Gauge) return; if (serie.index != index || serie.type != SerieType.Gauge) return;
var serieData = serie.GetSerieData(0); var serieData = serie.GetSerieData(0);
var numericFormatter = GetItemNumericFormatter(tooltip, serie, serieData); var numericFormatter = GetItemNumericFormatter(tooltip, serie, serieData);
float value = serieData.data[1]; var value = serieData.data[1];
sb.Length = 0; sb.Length = 0;
if (!string.IsNullOrEmpty(serie.name)) if (!string.IsNullOrEmpty(serie.name))
{ {
@@ -158,8 +158,8 @@ namespace XCharts
sb.Append(serieData.name); sb.Append(serieData.name);
for (int i = 0; i < radar.indicatorList.Count; i++) for (int i = 0; i < radar.indicatorList.Count; i++)
{ {
string key = radar.indicatorList[i].name; var key = radar.indicatorList[i].name;
float value = serieData.GetData(i); var value = serieData.GetData(i);
if ((i == 0 && !string.IsNullOrEmpty(serieData.name)) || i > 0) sb.Append(FormatterHelper.PH_NN); if ((i == 0 && !string.IsNullOrEmpty(serieData.name)) || i > 0) sb.Append(FormatterHelper.PH_NN);
sb.AppendFormat("{0}: {1}", key, ChartCached.FloatToStr(value, numericFormatter)); sb.AppendFormat("{0}: {1}", key, ChartCached.FloatToStr(value, numericFormatter));
} }
@@ -193,7 +193,7 @@ namespace XCharts
ChartTheme theme, bool isCartesian, DataZoom dataZoom = null) ChartTheme theme, bool isCartesian, DataZoom dataZoom = null)
{ {
string key = serie.name; string key = serie.name;
float xValue, yValue; double xValue, yValue;
serie.GetXYData(index, dataZoom, out xValue, out yValue); serie.GetXYData(index, dataZoom, out xValue, out yValue);
var isIngore = serie.IsIgnorePoint(index); var isIngore = serie.IsIgnorePoint(index);
if(isIngore) return; if(isIngore) return;
@@ -318,7 +318,7 @@ namespace XCharts
var serieData = serie.GetSerieData(dataIndex); var serieData = serie.GetSerieData(dataIndex);
var itemFormatter = GetItemFormatter(tooltip, serie, serieData); var itemFormatter = GetItemFormatter(tooltip, serie, serieData);
var numericFormatter = GetItemNumericFormatter(tooltip, serie, serieData); var numericFormatter = GetItemNumericFormatter(tooltip, serie, serieData);
float xValue, yValue; double xValue, yValue;
serie.GetXYData(dataIndex, null, out xValue, out yValue); serie.GetXYData(dataIndex, null, out xValue, out yValue);
if (string.IsNullOrEmpty(itemFormatter)) if (string.IsNullOrEmpty(itemFormatter))
{ {

View File

@@ -15,8 +15,8 @@ namespace XCharts
public static void AutoSetLineMinMax(VisualMap visualMap, Serie serie, XAxis xAxis, YAxis yAxis) public static void AutoSetLineMinMax(VisualMap visualMap, Serie serie, XAxis xAxis, YAxis yAxis)
{ {
if (!IsNeedGradient(visualMap) || !visualMap.autoMinMax) return; if (!IsNeedGradient(visualMap) || !visualMap.autoMinMax) return;
float min = 0; double min = 0;
float max = 0; double max = 0;
if (visualMap.dimension == 0) if (visualMap.dimension == 0)
{ {
min = xAxis.IsCategory() ? 0 : xAxis.runtimeMinValue; min = xAxis.IsCategory() ? 0 : xAxis.runtimeMinValue;
@@ -31,7 +31,7 @@ namespace XCharts
} }
} }
public static void SetMinMax(VisualMap visualMap, float min, float max) public static void SetMinMax(VisualMap visualMap, double min, double max)
{ {
if (visualMap.enable && (visualMap.min != min || visualMap.max != max)) if (visualMap.enable && (visualMap.min != min || visualMap.max != max))
{ {
@@ -67,9 +67,9 @@ namespace XCharts
public static Color32 GetLineGradientColor(VisualMap visualMap, Vector3 pos, CoordinateChart chart, Axis axis, public static Color32 GetLineGradientColor(VisualMap visualMap, Vector3 pos, CoordinateChart chart, Axis axis,
Color32 defaultColor) Color32 defaultColor)
{ {
float value = 0; double value = 0;
var min = 0f; double min = 0;
var max = 0f; double max = 0;
if (visualMap.dimension == 0) if (visualMap.dimension == 0)
{ {
min = axis.runtimeMinValue; min = axis.runtimeMinValue;
@@ -124,7 +124,7 @@ namespace XCharts
var grid = chart.GetAxisGridOrDefault(axis); var grid = chart.GetAxisGridOrDefault(axis);
var value = min + (pos.x - grid.runtimeX) / grid.runtimeWidth * (max - min); var value = min + (pos.x - grid.runtimeX) / grid.runtimeWidth * (max - min);
var rate = (value - min) / (max - min); var rate = (value - min) / (max - min);
var color = itemStyle.GetGradientColor(rate, defaultColor); var color = itemStyle.GetGradientColor((float)rate, defaultColor);
if (ChartHelper.IsClearColor(color)) return defaultColor; if (ChartHelper.IsClearColor(color)) return defaultColor;
else return color; else return color;
} }
@@ -137,7 +137,7 @@ namespace XCharts
var grid = chart.GetAxisGridOrDefault(axis); var grid = chart.GetAxisGridOrDefault(axis);
var value = min + (pos.x - grid.runtimeX) / grid.runtimeWidth * (max - min); var value = min + (pos.x - grid.runtimeX) / grid.runtimeWidth * (max - min);
var rate = (value - min) / (max - min); var rate = (value - min) / (max - min);
var color = lineStyle.GetGradientColor(rate, defaultColor); var color = lineStyle.GetGradientColor((float)rate, defaultColor);
if (ChartHelper.IsClearColor(color)) return defaultColor; if (ChartHelper.IsClearColor(color)) return defaultColor;
else return color; else return color;
} }

View File

@@ -10,6 +10,7 @@ using UnityEngine.UI;
using System.Collections.Generic; using System.Collections.Generic;
using System.Text; using System.Text;
using XUGL; using XUGL;
using System;
namespace XCharts namespace XCharts
{ {
@@ -286,8 +287,8 @@ namespace XCharts
var symbol = SerieHelper.GetSerieSymbol(serie, serieData); var symbol = SerieHelper.GetSerieSymbol(serie, serieData);
var symbolSize = symbol.GetSize(serieData == null ? null : serieData.data, var symbolSize = symbol.GetSize(serieData == null ? null : serieData.data,
m_Theme.serie.lineSymbolSize); m_Theme.serie.lineSymbolSize);
if (Mathf.Abs(xValue - xdata) / xRate < symbolSize if (Math.Abs(xValue - xdata) / xRate < symbolSize
&& Mathf.Abs(yValue - ydata) / yRate < symbolSize) && Math.Abs(yValue - ydata) / yRate < symbolSize)
{ {
tooltip.runtimeDataIndex[i] = n; tooltip.runtimeDataIndex[i] = n;
RefreshPainter(serie); RefreshPainter(serie);
@@ -900,8 +901,8 @@ namespace XCharts
axis.runtimeMaxValue = SeriesHelper.GetMaxSerieDataCount(m_Series) - 1; axis.runtimeMaxValue = SeriesHelper.GetMaxSerieDataCount(m_Series) - 1;
return; return;
} }
float tempMinValue = 0; double tempMinValue = 0;
float tempMaxValue = 0; double tempMaxValue = 0;
GetSeriesMinMaxValue(axis, axisIndex, out tempMinValue, out tempMaxValue); GetSeriesMinMaxValue(axis, axisIndex, out tempMinValue, out tempMaxValue);
if (tempMinValue != axis.runtimeMinValue || tempMaxValue != axis.runtimeMaxValue) if (tempMinValue != axis.runtimeMinValue || tempMaxValue != axis.runtimeMaxValue)
{ {
@@ -919,13 +920,13 @@ namespace XCharts
{ {
axis.runtimeZeroXOffset = axis.runtimeMinValue > 0 ? 0 : axis.runtimeZeroXOffset = axis.runtimeMinValue > 0 ? 0 :
axis.runtimeMaxValue < 0 ? grid.runtimeWidth : axis.runtimeMaxValue < 0 ? grid.runtimeWidth :
Mathf.Abs(axis.runtimeMinValue) * (grid.runtimeWidth / (Mathf.Abs(axis.runtimeMinValue) + Mathf.Abs(axis.runtimeMaxValue))); (float)(Math.Abs(axis.runtimeMinValue) * (grid.runtimeWidth / (Math.Abs(axis.runtimeMinValue) + Math.Abs(axis.runtimeMaxValue))));
} }
if (grid != null && axis is YAxis && axis.IsValue()) if (grid != null && axis is YAxis && axis.IsValue())
{ {
axis.runtimeZeroYOffset = axis.runtimeMinValue > 0 ? 0 : axis.runtimeZeroYOffset = axis.runtimeMinValue > 0 ? 0 :
axis.runtimeMaxValue < 0 ? grid.runtimeHeight : axis.runtimeMaxValue < 0 ? grid.runtimeHeight :
Mathf.Abs(axis.runtimeMinValue) * (grid.runtimeHeight / (Mathf.Abs(axis.runtimeMinValue) + Mathf.Abs(axis.runtimeMaxValue))); (float)(Math.Abs(axis.runtimeMinValue) * (grid.runtimeHeight / (Math.Abs(axis.runtimeMinValue) + Math.Abs(axis.runtimeMaxValue))));
} }
} }
var dataZoom = DataZoomHelper.GetAxisRelatedDataZoom(axis, dataZooms); var dataZoom = DataZoomHelper.GetAxisRelatedDataZoom(axis, dataZooms);
@@ -947,7 +948,7 @@ namespace XCharts
} }
} }
protected virtual void GetSeriesMinMaxValue(Axis axis, int axisIndex, out float tempMinValue, out float tempMaxValue) protected virtual void GetSeriesMinMaxValue(Axis axis, int axisIndex, out double tempMinValue, out double tempMaxValue)
{ {
if (IsValue()) if (IsValue())
{ {
@@ -1344,8 +1345,8 @@ namespace XCharts
{ {
case Tooltip.Type.Corss: case Tooltip.Type.Corss:
case Tooltip.Type.Line: case Tooltip.Type.Line:
float pX = grid.runtimeX + tooltip.runtimeXValues[i] * splitWidth float pX = (float)(grid.runtimeX + tooltip.runtimeXValues[i] * splitWidth
+ (xAxis.boundaryGap ? splitWidth / 2 : 0); + (xAxis.boundaryGap ? splitWidth / 2 : 0));
if (xAxis.IsValue()) pX = tooltip.runtimePointerPos.x; if (xAxis.IsValue()) pX = tooltip.runtimePointerPos.x;
Vector2 sp = new Vector2(pX, grid.runtimeY); Vector2 sp = new Vector2(pX, grid.runtimeY);
Vector2 ep = new Vector2(pX, grid.runtimeY + grid.runtimeHeight); Vector2 ep = new Vector2(pX, grid.runtimeY + grid.runtimeHeight);
@@ -1360,9 +1361,9 @@ namespace XCharts
break; break;
case Tooltip.Type.Shadow: case Tooltip.Type.Shadow:
float tooltipSplitWid = splitWidth < 1 ? 1 : splitWidth; float tooltipSplitWid = splitWidth < 1 ? 1 : splitWidth;
pX = grid.runtimeX + splitWidth * tooltip.runtimeXValues[i] - pX = (float)(grid.runtimeX + splitWidth * tooltip.runtimeXValues[i] -
(xAxis.boundaryGap ? 0 : splitWidth / 2); (xAxis.boundaryGap ? 0 : splitWidth / 2));
if (xAxis.IsValue()) pX = tooltip.runtimeXValues[i]; if (xAxis.IsValue()) pX = (float)tooltip.runtimeXValues[i];
float pY = grid.runtimeY + grid.runtimeHeight; float pY = grid.runtimeY + grid.runtimeHeight;
Vector3 p1 = new Vector3(pX, grid.runtimeY); Vector3 p1 = new Vector3(pX, grid.runtimeY);
Vector3 p2 = new Vector3(pX, pY); Vector3 p2 = new Vector3(pX, pY);
@@ -1396,7 +1397,7 @@ namespace XCharts
{ {
case Tooltip.Type.Corss: case Tooltip.Type.Corss:
case Tooltip.Type.Line: case Tooltip.Type.Line:
float pY = grid.runtimeY + tooltip.runtimeYValues[i] * splitWidth + (yAxis.boundaryGap ? splitWidth / 2 : 0); float pY = (float)(grid.runtimeY + tooltip.runtimeYValues[i] * splitWidth + (yAxis.boundaryGap ? splitWidth / 2 : 0));
Vector2 sp = new Vector2(grid.runtimeX, pY); Vector2 sp = new Vector2(grid.runtimeX, pY);
Vector2 ep = new Vector2(grid.runtimeX + grid.runtimeWidth, pY); Vector2 ep = new Vector2(grid.runtimeX + grid.runtimeWidth, pY);
var lineColor = TooltipHelper.GetLineColor(tooltip, m_Theme); var lineColor = TooltipHelper.GetLineColor(tooltip, m_Theme);
@@ -1411,8 +1412,8 @@ namespace XCharts
case Tooltip.Type.Shadow: case Tooltip.Type.Shadow:
float tooltipSplitWid = splitWidth < 1 ? 1 : splitWidth; float tooltipSplitWid = splitWidth < 1 ? 1 : splitWidth;
float pX = grid.runtimeX + grid.runtimeWidth; float pX = grid.runtimeX + grid.runtimeWidth;
pY = grid.runtimeY + splitWidth * tooltip.runtimeYValues[i] - pY = (float)(grid.runtimeY + splitWidth * tooltip.runtimeYValues[i] -
(yAxis.boundaryGap ? 0 : splitWidth / 2); (yAxis.boundaryGap ? 0 : splitWidth / 2));
Vector3 p1 = new Vector3(grid.runtimeX, pY); Vector3 p1 = new Vector3(grid.runtimeX, pY);
Vector3 p2 = new Vector3(grid.runtimeX, pY + tooltipSplitWid); Vector3 p2 = new Vector3(grid.runtimeX, pY + tooltipSplitWid);
Vector3 p3 = new Vector3(pX, pY + tooltipSplitWid); Vector3 p3 = new Vector3(pX, pY + tooltipSplitWid);
@@ -1559,7 +1560,7 @@ namespace XCharts
serieData.labelObject.UpdateIcon(serieData.iconStyle); serieData.labelObject.UpdateIcon(serieData.iconStyle);
if (serie.show && serieLabel.show && serieData.canShowLabel && !isIgnore) if (serie.show && serieLabel.show && serieData.canShowLabel && !isIgnore)
{ {
float value = 0f; double value = 0;
if (serie.type == SerieType.Heatmap) if (serie.type == SerieType.Heatmap)
{ {

View File

@@ -44,8 +44,8 @@ namespace XCharts
var isPercentStack = SeriesHelper.IsPercentStack(m_Series, serie.stack, SerieType.Bar); var isPercentStack = SeriesHelper.IsPercentStack(m_Series, serie.stack, SerieType.Bar);
bool dataChanging = false; bool dataChanging = false;
float dataChangeDuration = serie.animation.GetUpdateAnimationDuration(); float dataChangeDuration = serie.animation.GetUpdateAnimationDuration();
float xMinValue = xAxis.GetCurrMinValue(dataChangeDuration); double xMinValue = xAxis.GetCurrMinValue(dataChangeDuration);
float xMaxValue = xAxis.GetCurrMaxValue(dataChangeDuration); double xMaxValue = xAxis.GetCurrMaxValue(dataChangeDuration);
var isAllBarEnd = true; var isAllBarEnd = true;
for (int i = serie.minShow; i < maxCount; i++) for (int i = serie.minShow; i < maxCount; i++)
{ {
@@ -61,7 +61,7 @@ namespace XCharts
var itemStyle = SerieHelper.GetItemStyle(serie, serieData, highlight); var itemStyle = SerieHelper.GetItemStyle(serie, serieData, highlight);
serieData.canShowLabel = true; serieData.canShowLabel = true;
float 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;
float axisLineWidth = value == 0 ? 0 float axisLineWidth = value == 0 ? 0
@@ -79,11 +79,11 @@ namespace XCharts
} }
var barHig = 0f; var barHig = 0f;
var valueTotal = 0f; double valueTotal = 0f;
if (isPercentStack) if (isPercentStack)
{ {
valueTotal = Internal_GetBarSameStackTotalValue(serie.stack, i, SerieType.Bar); valueTotal = Internal_GetBarSameStackTotalValue(serie.stack, i, SerieType.Bar);
barHig = valueTotal != 0 ? (value / valueTotal * grid.runtimeWidth) : 0; barHig = valueTotal != 0 ? (float)((value / valueTotal * grid.runtimeWidth)) : 0;
} }
else else
{ {
@@ -97,8 +97,8 @@ namespace XCharts
{ {
valueTotal = xMaxValue - xMinValue; valueTotal = xMaxValue - xMinValue;
if (valueTotal != 0) if (valueTotal != 0)
barHig = (xMinValue > 0 ? value - xMinValue : value) barHig = (float)((xMinValue > 0 ? value - xMinValue : value)
/ valueTotal * grid.runtimeWidth; / valueTotal * grid.runtimeWidth);
} }
} }
serieData.runtimeStackHig = barHig; serieData.runtimeStackHig = barHig;
@@ -193,8 +193,8 @@ namespace XCharts
var isPercentStack = SeriesHelper.IsPercentStack(m_Series, serie.stack, SerieType.Bar); var isPercentStack = SeriesHelper.IsPercentStack(m_Series, serie.stack, SerieType.Bar);
bool dataChanging = false; bool dataChanging = false;
float dataChangeDuration = serie.animation.GetUpdateAnimationDuration(); float dataChangeDuration = serie.animation.GetUpdateAnimationDuration();
float yMinValue = yAxis.GetCurrMinValue(dataChangeDuration); double yMinValue = yAxis.GetCurrMinValue(dataChangeDuration);
float yMaxValue = yAxis.GetCurrMaxValue(dataChangeDuration); double yMaxValue = yAxis.GetCurrMaxValue(dataChangeDuration);
var isAllBarEnd = true; var isAllBarEnd = true;
for (int i = serie.minShow; i < maxCount; i++) for (int i = serie.minShow; i < maxCount; i++)
{ {
@@ -208,7 +208,7 @@ namespace XCharts
|| serie.data[i].highlighted || serie.data[i].highlighted
|| serie.highlighted; || serie.highlighted;
var itemStyle = SerieHelper.GetItemStyle(serie, serieData, highlight); var itemStyle = SerieHelper.GetItemStyle(serie, serieData, highlight);
float value = serieData.GetCurrData(1, dataChangeDuration, yAxis.inverse, yMinValue, yMaxValue); double value = serieData.GetCurrData(1, dataChangeDuration, yAxis.inverse, yMinValue, yMaxValue);
float borderWidth = value == 0 ? 0 : itemStyle.runtimeBorderWidth; float borderWidth = value == 0 ? 0 : itemStyle.runtimeBorderWidth;
if (serieData.IsDataChanged()) dataChanging = true; if (serieData.IsDataChanged()) dataChanging = true;
float pX = grid.runtimeX + i * categoryWidth; float pX = grid.runtimeX + i * categoryWidth;
@@ -240,7 +240,7 @@ namespace XCharts
if (yAxis.IsLog()) if (yAxis.IsLog())
{ {
int minIndex = yAxis.runtimeMinLogIndex; int minIndex = yAxis.runtimeMinLogIndex;
float nowIndex = yAxis.GetLogValue(value); var nowIndex = yAxis.GetLogValue(value);
barHig = (nowIndex - minIndex) / yAxis.splitNumber * grid.runtimeHeight; barHig = (nowIndex - minIndex) / yAxis.splitNumber * grid.runtimeHeight;
} }
else else
@@ -621,10 +621,10 @@ namespace XCharts
return gap; return gap;
} }
public float Internal_GetBarSameStackTotalValue(string stack, int dataIndex, SerieType type) public double Internal_GetBarSameStackTotalValue(string stack, int dataIndex, SerieType type)
{ {
if (string.IsNullOrEmpty(stack)) return 0; if (string.IsNullOrEmpty(stack)) return 0;
float total = 0; double total = 0;
foreach (var serie in m_Series.list) foreach (var serie in m_Series.list)
{ {
if (serie.type == type) if (serie.type == type)

View File

@@ -31,8 +31,8 @@ namespace XCharts
bool dataChanging = false; bool dataChanging = false;
float dataChangeDuration = serie.animation.GetUpdateAnimationDuration(); float dataChangeDuration = serie.animation.GetUpdateAnimationDuration();
float yMinValue = yAxis.GetCurrMinValue(dataChangeDuration); double yMinValue = yAxis.GetCurrMinValue(dataChangeDuration);
float yMaxValue = yAxis.GetCurrMaxValue(dataChangeDuration); double yMaxValue = yAxis.GetCurrMaxValue(dataChangeDuration);
var isAllBarEnd = true; var isAllBarEnd = true;
var isYAxis = false; var isYAxis = false;
for (int i = serie.minShow; i < maxCount; i++) for (int i = serie.minShow; i < maxCount; i++)

View File

@@ -134,7 +134,7 @@ namespace XCharts
} }
else else
{ {
float yValue = SampleValue(ref showData, serie.sampleType, rate, serie.minShow, maxCount, totalAverage, double yValue = SampleValue(ref showData, serie.sampleType, rate, serie.minShow, maxCount, totalAverage,
i, dataChangeDuration, ref dataChanging, yAxis); i, dataChangeDuration, ref dataChanging, yAxis);
showData[i].runtimeStackHig = GetDataPoint(xAxis, yAxis, showData, yValue, startX, i, scaleWid, isStack, showData[i].runtimeStackHig = GetDataPoint(xAxis, yAxis, showData, yValue, startX, i, scaleWid, isStack,
ref np, dataChangeDuration); ref np, dataChangeDuration);
@@ -155,7 +155,7 @@ namespace XCharts
} }
else else
{ {
float yValue = showData[i].GetCurrData(1, dataChangeDuration, yAxis.inverse, yAxis.runtimeMinValue, yAxis.runtimeMaxValue); double yValue = showData[i].GetCurrData(1, dataChangeDuration, yAxis.inverse, yAxis.runtimeMinValue, yAxis.runtimeMaxValue);
showData[i].runtimeStackHig = GetDataPoint(xAxis, yAxis, showData, yValue, startX, i, scaleWid, isStack, ref np, showData[i].runtimeStackHig = GetDataPoint(xAxis, yAxis, showData, yValue, startX, i, scaleWid, isStack, ref np,
dataChangeDuration); dataChangeDuration);
serie.dataPoints.Add(np); serie.dataPoints.Add(np);
@@ -188,7 +188,7 @@ namespace XCharts
} }
else else
{ {
float yValue = showData[i].GetCurrData(1, dataChangeDuration, yAxis.inverse, yAxis.runtimeMinValue, yAxis.runtimeMaxValue); double yValue = showData[i].GetCurrData(1, dataChangeDuration, yAxis.inverse, yAxis.runtimeMinValue, yAxis.runtimeMaxValue);
showData[i].runtimeStackHig = GetDataPoint(xAxis, yAxis, showData, yValue, startX, i, scaleWid, isStack, ref firstLastPos, dataChangeDuration); showData[i].runtimeStackHig = GetDataPoint(xAxis, yAxis, showData, yValue, startX, i, scaleWid, isStack, ref firstLastPos, dataChangeDuration);
} }
} }
@@ -206,7 +206,7 @@ namespace XCharts
} }
else else
{ {
float yValue = showData[i].GetCurrData(1, dataChangeDuration, yAxis.inverse, yAxis.runtimeMinValue, yAxis.runtimeMaxValue); double yValue = showData[i].GetCurrData(1, dataChangeDuration, yAxis.inverse, yAxis.runtimeMinValue, yAxis.runtimeMaxValue);
showData[i].runtimeStackHig = GetDataPoint(xAxis, yAxis, showData, yValue, startX, i, scaleWid, isStack, ref lastNextPos, dataChangeDuration); showData[i].runtimeStackHig = GetDataPoint(xAxis, yAxis, showData, yValue, startX, i, scaleWid, isStack, ref lastNextPos, dataChangeDuration);
} }
} }
@@ -334,12 +334,12 @@ namespace XCharts
return lp; return lp;
} }
internal float DataAverage(ref List<SerieData> showData, SampleType sampleType, int minCount, int maxCount, int rate) internal double DataAverage(ref List<SerieData> showData, SampleType sampleType, int minCount, int maxCount, int rate)
{ {
var totalAverage = 0f; double totalAverage = 0;
if (rate > 1 && sampleType == SampleType.Peak) if (rate > 1 && sampleType == SampleType.Peak)
{ {
var total = 0f; double total = 0;
for (int i = minCount; i < maxCount; i++) for (int i = minCount; i < maxCount; i++)
{ {
total += showData[i].data[1]; total += showData[i].data[1];
@@ -349,13 +349,13 @@ namespace XCharts
return totalAverage; return totalAverage;
} }
internal float SampleValue(ref List<SerieData> showData, SampleType sampleType, int rate, internal double SampleValue(ref List<SerieData> showData, SampleType sampleType, int rate,
int minCount, int maxCount, float totalAverage, int index, float dataChangeDuration, int minCount, int maxCount, double totalAverage, int index, float dataChangeDuration,
ref bool dataChanging, Axis axis) ref bool dataChanging, Axis axis)
{ {
var inverse = axis.inverse; var inverse = axis.inverse;
var minValue = axis.runtimeMinValue; double minValue = axis.runtimeMinValue;
var MaxValue = axis.runtimeMaxValue; double MaxValue = axis.runtimeMaxValue;
if (rate <= 1 || index == minCount) if (rate <= 1 || index == minCount)
{ {
if (showData[index].IsDataChanged()) dataChanging = true; if (showData[index].IsDataChanged()) dataChanging = true;
@@ -365,7 +365,7 @@ namespace XCharts
{ {
case SampleType.Sum: case SampleType.Sum:
case SampleType.Average: case SampleType.Average:
float total = 0; double total = 0;
for (int i = index; i > index - rate; i--) for (int i = index; i > index - rate; i--)
{ {
total += showData[i].GetCurrData(1, dataChangeDuration, inverse, minValue, MaxValue); total += showData[i].GetCurrData(1, dataChangeDuration, inverse, minValue, MaxValue);
@@ -374,7 +374,7 @@ namespace XCharts
if (sampleType == SampleType.Average) return total / rate; if (sampleType == SampleType.Average) return total / rate;
else return total; else return total;
case SampleType.Max: case SampleType.Max:
float max = float.MinValue; double max = double.MinValue;
for (int i = index; i > index - rate; i--) for (int i = index; i > index - rate; i--)
{ {
var value = showData[i].GetCurrData(1, dataChangeDuration, inverse, minValue, MaxValue); var value = showData[i].GetCurrData(1, dataChangeDuration, inverse, minValue, MaxValue);
@@ -383,7 +383,7 @@ namespace XCharts
} }
return max; return max;
case SampleType.Min: case SampleType.Min:
float min = float.MaxValue; double min = double.MaxValue;
for (int i = index; i > index - rate; i--) for (int i = index; i > index - rate; i--)
{ {
var value = showData[i].GetCurrData(1, dataChangeDuration, inverse, minValue, MaxValue); var value = showData[i].GetCurrData(1, dataChangeDuration, inverse, minValue, MaxValue);
@@ -392,8 +392,8 @@ namespace XCharts
} }
return min; return min;
case SampleType.Peak: case SampleType.Peak:
max = float.MinValue; max = double.MinValue;
min = float.MaxValue; min = double.MaxValue;
total = 0; total = 0;
for (int i = index; i > index - rate; i--) for (int i = index; i > index - rate; i--)
{ {
@@ -411,7 +411,7 @@ namespace XCharts
return showData[index].GetCurrData(1, dataChangeDuration, inverse, minValue, MaxValue); return showData[index].GetCurrData(1, dataChangeDuration, inverse, minValue, MaxValue);
} }
private float GetDataPoint(Axis xAxis, Axis yAxis, List<SerieData> showData, float yValue, float startX, int i, private float GetDataPoint(Axis xAxis, Axis yAxis, List<SerieData> showData, double yValue, float startX, int i,
float scaleWid, bool isStack, ref Vector3 np, float duration, bool isIngoreValue = false) float scaleWid, bool isStack, ref Vector3 np, float duration, bool isIngoreValue = false)
{ {
if (isIngoreValue) if (isIngoreValue)
@@ -420,15 +420,15 @@ namespace XCharts
return 0; return 0;
} }
float xDataHig, yDataHig; float xDataHig, yDataHig;
float xMinValue = xAxis.GetCurrMinValue(duration); double xMinValue = xAxis.GetCurrMinValue(duration);
float xMaxValue = xAxis.GetCurrMaxValue(duration); double xMaxValue = xAxis.GetCurrMaxValue(duration);
float yMinValue = yAxis.GetCurrMinValue(duration); double yMinValue = yAxis.GetCurrMinValue(duration);
float yMaxValue = yAxis.GetCurrMaxValue(duration); double yMaxValue = yAxis.GetCurrMaxValue(duration);
if (xAxis.IsValue() || xAxis.IsLog()) if (xAxis.IsValue() || xAxis.IsLog())
{ {
var grid = GetAxisGridOrDefault(xAxis); var grid = GetAxisGridOrDefault(xAxis);
var axisLineWidth = xAxis.axisLine.GetWidth(m_Theme.axis.lineWidth); var axisLineWidth = xAxis.axisLine.GetWidth(m_Theme.axis.lineWidth);
float xValue = i > showData.Count - 1 ? 0 : showData[i].GetData(0, xAxis.inverse); double xValue = i > showData.Count - 1 ? 0 : showData[i].GetData(0, xAxis.inverse);
float pX = grid.runtimeX + axisLineWidth; float pX = grid.runtimeX + axisLineWidth;
float pY = grid.runtimeY + axisLineWidth; float pY = grid.runtimeY + axisLineWidth;
if (isStack) if (isStack)
@@ -447,7 +447,7 @@ namespace XCharts
else else
{ {
if ((xMaxValue - xMinValue) <= 0) xDataHig = 0; if ((xMaxValue - xMinValue) <= 0) xDataHig = 0;
else xDataHig = (xValue - xMinValue) / (xMaxValue - xMinValue) * grid.runtimeWidth; else xDataHig = (float)((xValue - xMinValue) / (xMaxValue - xMinValue)) * grid.runtimeWidth;
} }
if (yAxis.IsLog()) if (yAxis.IsLog())
{ {
@@ -459,7 +459,7 @@ namespace XCharts
{ {
double valueTotal = yMaxValue - yMinValue; double valueTotal = yMaxValue - yMinValue;
if (valueTotal <= 0) yDataHig = 0; if (valueTotal <= 0) yDataHig = 0;
else yDataHig = (float)((yValue - yMinValue) / valueTotal * grid.runtimeHeight); else yDataHig = (float)((yValue - yMinValue) / valueTotal) * grid.runtimeHeight;
} }
np = new Vector3(pX + xDataHig, pY + yDataHig); np = new Vector3(pX + xDataHig, pY + yDataHig);
} }
@@ -530,11 +530,11 @@ namespace XCharts
if (rate < 1) rate = 1; if (rate < 1) rate = 1;
var dataChanging = false; var dataChanging = false;
float dataChangeDuration = serie.animation.GetUpdateAnimationDuration(); float dataChangeDuration = serie.animation.GetUpdateAnimationDuration();
float xMinValue = xAxis.GetCurrMinValue(dataChangeDuration); double xMinValue = xAxis.GetCurrMinValue(dataChangeDuration);
float xMaxValue = xAxis.GetCurrMaxValue(dataChangeDuration); double xMaxValue = xAxis.GetCurrMaxValue(dataChangeDuration);
for (i = serie.minShow; i < maxCount; i += rate) for (i = serie.minShow; i < maxCount; i += rate)
{ {
float value = showData[i].GetCurrData(1, dataChangeDuration, xAxis.inverse, xAxis.runtimeMinValue, xAxis.runtimeMaxValue); double value = showData[i].GetCurrData(1, dataChangeDuration, xAxis.inverse, xAxis.runtimeMinValue, xAxis.runtimeMaxValue);
float pY = startY + i * scaleWid; float pY = startY + i * scaleWid;
float pX = grid.runtimeX + yAxis.axisLine.GetWidth(m_Theme.axis.lineWidth); float pX = grid.runtimeX + yAxis.axisLine.GetWidth(m_Theme.axis.lineWidth);
if (isStack) if (isStack)
@@ -553,7 +553,7 @@ namespace XCharts
} }
else else
{ {
dataHig = (value - xMinValue) / (xMaxValue - xMinValue) * grid.runtimeWidth; dataHig = (float)((value - xMinValue) / (xMaxValue - xMinValue) * grid.runtimeWidth);
} }
showData[i].runtimeStackHig = dataHig; showData[i].runtimeStackHig = dataHig;
np = new Vector3(pX + dataHig, pY); np = new Vector3(pX + dataHig, pY);
@@ -567,7 +567,7 @@ namespace XCharts
if (maxCount % rate != 0) if (maxCount % rate != 0)
{ {
i = maxCount - 1; i = maxCount - 1;
float value = showData[i].GetCurrData(1, dataChangeDuration, xAxis.inverse, xAxis.runtimeMinValue, xAxis.runtimeMaxValue); double value = showData[i].GetCurrData(1, dataChangeDuration, xAxis.inverse, xAxis.runtimeMinValue, xAxis.runtimeMaxValue);
float pY = startY + i * scaleWid; float pY = startY + i * scaleWid;
float pX = grid.runtimeX + yAxis.axisLine.GetWidth(m_Theme.axis.lineWidth); float pX = grid.runtimeX + yAxis.axisLine.GetWidth(m_Theme.axis.lineWidth);
if (isStack) if (isStack)
@@ -586,7 +586,7 @@ namespace XCharts
} }
else else
{ {
dataHig = (value - xMinValue) / (xMaxValue - xMinValue) * grid.runtimeWidth; dataHig = (float)((value - xMinValue) / (xMaxValue - xMinValue)) * grid.runtimeWidth;
} }
showData[i].runtimeStackHig = dataHig; showData[i].runtimeStackHig = dataHig;
np = new Vector3(pX + dataHig, pY); np = new Vector3(pX + dataHig, pY);
@@ -664,9 +664,9 @@ namespace XCharts
} }
} }
private float GetStackValue(List<List<SerieData>> stackDataList, int dataIndex, float dataChangeDuration, Axis xAxis) private double GetStackValue(List<List<SerieData>> stackDataList, int dataIndex, float dataChangeDuration, Axis xAxis)
{ {
float value = 0; double value = 0;
foreach (var dataList in stackDataList) foreach (var dataList in stackDataList)
{ {
value += dataList[dataIndex].GetCurrData(1, dataChangeDuration, xAxis.inverse, xAxis.runtimeMinValue, xAxis.runtimeMaxValue); value += dataList[dataIndex].GetCurrData(1, dataChangeDuration, xAxis.inverse, xAxis.runtimeMinValue, xAxis.runtimeMaxValue);

View File

@@ -38,8 +38,8 @@ namespace XCharts
var toColor = SerieHelper.GetItemToColor(serie, serieData, m_Theme, colorIndex, highlight); var toColor = SerieHelper.GetItemToColor(serie, serieData, m_Theme, colorIndex, highlight);
var symbolBorder = SerieHelper.GetSymbolBorder(serie, serieData, m_Theme, highlight); var symbolBorder = SerieHelper.GetSymbolBorder(serie, serieData, m_Theme, highlight);
var cornerRadius = SerieHelper.GetSymbolCornerRadius(serie, serieData, highlight); var cornerRadius = SerieHelper.GetSymbolCornerRadius(serie, serieData, highlight);
float xValue = serieData.GetCurrData(0, dataChangeDuration, xAxis.inverse); double xValue = serieData.GetCurrData(0, dataChangeDuration, xAxis.inverse);
float yValue = serieData.GetCurrData(1, dataChangeDuration, yAxis.inverse); double yValue = serieData.GetCurrData(1, dataChangeDuration, yAxis.inverse);
if (serieData.IsDataChanged()) dataChanging = true; if (serieData.IsDataChanged()) dataChanging = true;
float pX = grid.runtimeX + xAxis.axisLine.GetWidth(m_Theme.axis.lineWidth); float pX = grid.runtimeX + xAxis.axisLine.GetWidth(m_Theme.axis.lineWidth);
float pY = grid.runtimeY + yAxis.axisLine.GetWidth(m_Theme.axis.lineWidth); float pY = grid.runtimeY + yAxis.axisLine.GetWidth(m_Theme.axis.lineWidth);
@@ -88,7 +88,7 @@ namespace XCharts
} }
} }
private float GetDataHig(Axis axis, float value, float totalWidth) private float GetDataHig(Axis axis, double value, float totalWidth)
{ {
if (axis.IsLog()) if (axis.IsLog())
{ {

View File

@@ -196,11 +196,11 @@ namespace XCharts
var destAngle = GetCurrAngle(serie, true); var destAngle = GetCurrAngle(serie, true);
serie.animation.InitProgress(0, serie.startAngle, destAngle); serie.animation.InitProgress(0, serie.startAngle, destAngle);
var currAngle = serie.animation.IsFinish() ? GetCurrAngle(serie, false) : serie.animation.GetCurrDetail(); var currAngle = serie.animation.IsFinish() ? GetCurrAngle(serie, false) : serie.animation.GetCurrDetail();
DrawProgressBar(vh, serie, currAngle); DrawProgressBar(vh, serie, (float)currAngle);
DrawStageColor(vh, serie); DrawStageColor(vh, serie);
DrawLineStyle(vh, serie); DrawLineStyle(vh, serie);
DrawAxisTick(vh, serie); DrawAxisTick(vh, serie);
DrawPointer(vh, serie, currAngle); DrawPointer(vh, serie, (float)currAngle);
TitleStyleHelper.CheckTitle(serie, ref chart.m_ReinitTitle, ref m_UpdateTitleText); TitleStyleHelper.CheckTitle(serie, ref chart.m_ReinitTitle, ref m_UpdateTitleText);
SerieLabelHelper.CheckLabel(serie, ref chart.m_ReinitLabel, ref m_UpdateLabelText); SerieLabelHelper.CheckLabel(serie, ref chart.m_ReinitLabel, ref m_UpdateLabelText);
CheckAnimation(serie); CheckAnimation(serie);
@@ -325,11 +325,11 @@ namespace XCharts
{ {
if (serie.animation.HasFadeOut()) if (serie.animation.HasFadeOut())
{ {
return serie.animation.GetCurrDetail(); return (float)serie.animation.GetCurrDetail();
} }
float rangeValue = serie.max - serie.min; float rangeValue = serie.max - serie.min;
float rangeAngle = serie.endAngle - serie.startAngle; float rangeAngle = serie.endAngle - serie.startAngle;
float value = 0; double value = 0;
float angle = serie.startAngle; float angle = serie.startAngle;
if (serie.dataCount > 0) if (serie.dataCount > 0)
{ {
@@ -337,11 +337,11 @@ namespace XCharts
serieData.labelPosition = serie.runtimeCenterPos + serie.label.offset; serieData.labelPosition = serie.runtimeCenterPos + 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 = Mathf.Clamp(value, serie.min, serie.max); value = MathUtil.Clamp(value, serie.min, serie.max);
} }
if (rangeValue > 0) if (rangeValue > 0)
{ {
angle += rangeAngle * (value - serie.min) / rangeValue; angle += rangeAngle * (float)(value - serie.min) / rangeValue;
} }
return angle; return angle;
} }
@@ -382,7 +382,7 @@ namespace XCharts
? serie.runtimeInsideRadius * serie.gaugePointer.length ? serie.runtimeInsideRadius * serie.gaugePointer.length
: serie.gaugePointer.length; : serie.gaugePointer.length;
if (Vector3.Distance(local, serie.runtimeCenterPos) > len) continue; if (Vector3.Distance(local, serie.runtimeCenterPos) > len) continue;
var currAngle = serie.animation.IsFinish() ? GetCurrAngle(serie, false) : serie.animation.GetCurrDetail(); var currAngle = (float)(serie.animation.IsFinish() ? GetCurrAngle(serie, false) : serie.animation.GetCurrDetail());
var p1 = ChartHelper.GetPosition(serie.runtimeCenterPos, currAngle, len); var p1 = ChartHelper.GetPosition(serie.runtimeCenterPos, currAngle, len);
var p2 = ChartHelper.GetPosition(serie.runtimeCenterPos, currAngle + 180, serie.gaugePointer.width); var p2 = ChartHelper.GetPosition(serie.runtimeCenterPos, currAngle + 180, serie.gaugePointer.width);
var p3 = ChartHelper.GetPosition(serie.runtimeCenterPos, currAngle - 90, serie.gaugePointer.width / 2); var p3 = ChartHelper.GetPosition(serie.runtimeCenterPos, currAngle - 90, serie.gaugePointer.width / 2);

View File

@@ -224,7 +224,7 @@ namespace XCharts
if (value <= 0) return; if (value <= 0) return;
var colorIndex = chart.m_LegendRealShowName.IndexOf(serie.name); var colorIndex = chart.m_LegendRealShowName.IndexOf(serie.name);
var realHig = (value - serie.min) / (serie.max - serie.min) * radius * 2; var realHig = (float)((value - serie.min) / (serie.max - serie.min) * radius * 2);
serie.animation.InitProgress(1, 0, realHig); serie.animation.InitProgress(1, 0, realHig);
var hig = serie.animation.IsFinish() ? realHig : serie.animation.GetCurrDetail(); var hig = serie.animation.IsFinish() ? realHig : serie.animation.GetCurrDetail();
@@ -338,7 +338,7 @@ namespace XCharts
var colorIndex = chart.m_LegendRealShowName.IndexOf(serie.name); var colorIndex = chart.m_LegendRealShowName.IndexOf(serie.name);
var realHig = (value - serie.min) / (serie.max - serie.min) * vessel.runtimeHeight; var realHig = (value - serie.min) / (serie.max - serie.min) * vessel.runtimeHeight;
serie.animation.InitProgress(1, 0, realHig); serie.animation.InitProgress(1, 0, (float)realHig);
var hig = serie.animation.IsFinish() ? realHig : serie.animation.GetCurrDetail(); var hig = serie.animation.IsFinish() ? realHig : serie.animation.GetCurrDetail();
var color = SerieHelper.GetItemColor(serie, serieData, chart.theme, colorIndex, false); var color = SerieHelper.GetItemColor(serie, serieData, chart.theme, colorIndex, false);
var toColor = SerieHelper.GetItemToColor(serie, serieData, chart.theme, colorIndex, false); var toColor = SerieHelper.GetItemToColor(serie, serieData, chart.theme, colorIndex, false);
@@ -351,7 +351,7 @@ namespace XCharts
} }
else else
{ {
var startY = cenPos.y - vessel.runtimeHeight / 2 + hig; var startY = (float)(cenPos.y - vessel.runtimeHeight / 2 + hig);
var waveStartPos = new Vector3(cenPos.x - vessel.runtimeWidth / 2, startY); var waveStartPos = new Vector3(cenPos.x - vessel.runtimeWidth / 2, startY);
var waveEndPos = new Vector3(cenPos.x + vessel.runtimeWidth / 2, startY); var waveEndPos = new Vector3(cenPos.x + vessel.runtimeWidth / 2, startY);
var startX = waveStartPos.x; var startX = waveStartPos.x;

View File

@@ -199,7 +199,7 @@ namespace XCharts
{ {
var serieData = data[n]; var serieData = data[n];
serieData.index = n; serieData.index = n;
float value = isAllZeroValue ? zeroReplaceValue : serieData.GetCurrData(1, dataChangeDuration); var value = isAllZeroValue ? zeroReplaceValue : serieData.GetCurrData(1, dataChangeDuration);
serieData.runtimePieStartAngle = startDegree; serieData.runtimePieStartAngle = startDegree;
serieData.runtimePieToAngle = startDegree; serieData.runtimePieToAngle = startDegree;
serieData.runtimePieHalfAngle = startDegree; serieData.runtimePieHalfAngle = startDegree;
@@ -210,12 +210,11 @@ namespace XCharts
} }
float degree = serie.pieRoseType == RoseType.Area float degree = serie.pieRoseType == RoseType.Area
? (totalDegree / showdataCount) ? (totalDegree / showdataCount)
: (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.runtimePieToAngle = startDegree + degree;
serieData.runtimePieOutsideRadius = serie.pieRoseType > 0 ? serieData.runtimePieOutsideRadius = serie.pieRoseType > 0 ?
serie.runtimeInsideRadius + serie.runtimeInsideRadius + (float)((serie.runtimeOutsideRadius - serie.runtimeInsideRadius) * value / serie.runtimeDataMax) :
(serie.runtimeOutsideRadius - serie.runtimeInsideRadius) * value / serie.runtimeDataMax :
serie.runtimeOutsideRadius; serie.runtimeOutsideRadius;
if (serieData.highlighted) if (serieData.highlighted)
{ {
@@ -266,7 +265,7 @@ namespace XCharts
SerieLabelHelper.AvoidLabelOverlap(serie, chart.theme.common); SerieLabelHelper.AvoidLabelOverlap(serie, chart.theme.common);
} }
private float GetTotalAngle(Serie serie, float dataTotal, ref float totalAngle) private double GetTotalAngle(Serie serie, double dataTotal, ref float totalAngle)
{ {
totalAngle = 360f; totalAngle = 360f;
if (serie.minAngle > 0) if (serie.minAngle > 0)

View File

@@ -334,15 +334,15 @@ namespace XCharts
for (int n = 0; n < dataCount; n++) for (int n = 0; n < dataCount; n++)
{ {
if (n >= serieData.data.Count) break; if (n >= serieData.data.Count) break;
float max = radar.GetIndicatorMax(n); var max = radar.GetIndicatorMax(n);
float value = serieData.GetCurrData(n, dataChangeDuration); var value = serieData.GetCurrData(n, dataChangeDuration);
if (serieData.IsDataChanged()) dataChanging = true; if (serieData.IsDataChanged()) dataChanging = true;
if (max == 0) if (max == 0)
{ {
max = serie.runtimeDataMax; max = serie.runtimeDataMax;
} }
var radius = max < 0 ? radar.runtimeDataRadius - radar.runtimeDataRadius * value / max var radius = (float)(max < 0 ? radar.runtimeDataRadius - radar.runtimeDataRadius * value / max
: radar.runtimeDataRadius * value / max; : radar.runtimeDataRadius * value / max);
var currAngle = (n + (radar.positionType == Radar.PositionType.Between ? 0.5f : 0)) * angle; var currAngle = (n + (radar.positionType == Radar.PositionType.Between ? 0.5f : 0)) * angle;
radius *= rate; radius *= rate;
if (n == 0) if (n == 0)
@@ -505,8 +505,8 @@ namespace XCharts
{ {
max = serie.runtimeDataMax; max = serie.runtimeDataMax;
} }
var radius = max < 0 ? radar.runtimeDataRadius - radar.runtimeDataRadius * value / max var radius = (float)(max < 0 ? radar.runtimeDataRadius - radar.runtimeDataRadius * value / max
: radar.runtimeDataRadius * value / max; : radar.runtimeDataRadius * value / max);
var currAngle = (index + (radar.positionType == Radar.PositionType.Between ? 0.5f : 0)) * angle; var currAngle = (index + (radar.positionType == Radar.PositionType.Between ? 0.5f : 0)) * angle;
radius *= rate; radius *= rate;
if (index == startIndex) if (index == startIndex)

View File

@@ -81,7 +81,7 @@ namespace XCharts
if (serieData.IsDataChanged()) dataChanging = true; if (serieData.IsDataChanged()) dataChanging = true;
var value = serieData.GetFirstData(dataChangeDuration); var value = serieData.GetFirstData(dataChangeDuration);
var max = serieData.GetLastData(); var max = serieData.GetLastData();
var degree = 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.highlighted);

View File

@@ -16,7 +16,7 @@ namespace XCharts
/// <param name="value">当前label对应的数值数据Value轴或Time轴有效</param> /// <param name="value">当前label对应的数值数据Value轴或Time轴有效</param>
/// <param name="category">当前label对应的类目数据Category轴有效</param> /// <param name="category">当前label对应的类目数据Category轴有效</param>
/// <returns>最终显示的文本内容</returns> /// <returns>最终显示的文本内容</returns>
public delegate string DelegateAxisLabelFormatter(int labelIndex, float value, string category); public delegate string DelegateAxisLabelFormatter(int labelIndex, double value, string category);
/// <summary> /// <summary>
/// The delegate function for SerieLabels formatter. /// The delegate function for SerieLabels formatter.
/// SerieLabel的formatter自定义委托。 /// SerieLabel的formatter自定义委托。
@@ -24,5 +24,5 @@ namespace XCharts
/// <param name="dataIndex">数据索引</param> /// <param name="dataIndex">数据索引</param>
/// <param name="value">数值</param> /// <param name="value">数值</param>
/// <returns>最终显示的文本内容</returns> /// <returns>最终显示的文本内容</returns>
public delegate string DelegateSerieLabelFormatter(int dataIndex, float value); public delegate string DelegateSerieLabelFormatter(int dataIndex, double value);
} }

View File

@@ -28,10 +28,10 @@ namespace XCharts
private static Dictionary<string, string> s_AxisLabel = new Dictionary<string, string>(); private static Dictionary<string, string> s_AxisLabel = new Dictionary<string, string>();
private static Dictionary<float, Dictionary<string, string>> s_NumberToStr = new Dictionary<float, Dictionary<string, string>>(); private static Dictionary<double, Dictionary<string, string>> s_NumberToStr = new Dictionary<double, Dictionary<string, string>>();
private static Dictionary<int, Dictionary<string, string>> s_PrecisionToStr = new Dictionary<int, Dictionary<string, string>>(); private static Dictionary<int, Dictionary<string, string>> s_PrecisionToStr = new Dictionary<int, Dictionary<string, string>>();
public static string FloatToStr(float value, string numericFormatter = "F", int precision = 0) public static string FloatToStr(double value, string numericFormatter = "F", int precision = 0)
{ {
if (precision > 0 && numericFormatter.Length == 1) if (precision > 0 && numericFormatter.Length == 1)
{ {
@@ -51,7 +51,7 @@ namespace XCharts
} }
} }
public static string NumberToStr(float value, string formatter) public static string NumberToStr(double value, string formatter)
{ {
if (!s_NumberToStr.ContainsKey(value)) if (!s_NumberToStr.ContainsKey(value))
{ {

View File

@@ -725,7 +725,7 @@ namespace XCharts
return (Color32)color; return (Color32)color;
} }
public static float GetMaxDivisibleValue(float max, int ceilRate) public static double GetMaxDivisibleValue(double max, int ceilRate)
{ {
if (max == 0) return 0; if (max == 0) return 0;
if (max > -1 && max < 1) if (max > -1 && max < 1)
@@ -742,20 +742,20 @@ namespace XCharts
} }
if (ceilRate == 0) if (ceilRate == 0)
{ {
var bigger = Mathf.Ceil(Mathf.Abs(max)); var bigger = Math.Ceiling(Math.Abs(max));
int n = 1; int n = 1;
while (bigger / (Mathf.Pow(10, n)) > 10) while (bigger / (Mathf.Pow(10, n)) > 10)
{ {
n++; n++;
} }
float mm = bigger; double mm = bigger;
if (mm > 10 && n < 38) if (mm > 10 && n < 38)
{ {
mm = bigger - bigger % (Mathf.Pow(10, n)); mm = bigger - bigger % (Mathf.Pow(10, n));
mm += max > 0 ? Mathf.Pow(10, n) : -Mathf.Pow(10, n); mm += max > 0 ? Mathf.Pow(10, n) : -Mathf.Pow(10, n);
} }
if (max < 0) return -Mathf.Ceil(mm); if (max < 0) return -Math.Ceiling(mm);
else return Mathf.Ceil(mm); else return Math.Ceiling(mm);
} }
else else
{ {
@@ -765,7 +765,7 @@ namespace XCharts
} }
} }
public static float GetMinDivisibleValue(float min, int ceilRate) public static double GetMinDivisibleValue(double min, int ceilRate)
{ {
if (min == 0) return 0; if (min == 0) return 0;
if (min > -1 && min < 1) if (min > -1 && min < 1)
@@ -782,20 +782,20 @@ namespace XCharts
} }
if (ceilRate == 0) if (ceilRate == 0)
{ {
var bigger = Mathf.Floor(Mathf.Abs(min)); var bigger = Math.Floor(Math.Abs(min));
int n = 1; int n = 1;
while (bigger / (Mathf.Pow(10, n)) > 10) while (bigger / (Mathf.Pow(10, n)) > 10)
{ {
n++; n++;
} }
float mm = bigger; double mm = bigger;
if (mm > 10 && n < 38) if (mm > 10 && n < 38)
{ {
mm = bigger - bigger % (Mathf.Pow(10, n)); mm = bigger - bigger % (Mathf.Pow(10, n));
mm += min < 0 ? Mathf.Pow(10, n) : -Mathf.Pow(10, n); mm += min < 0 ? Mathf.Pow(10, n) : -Mathf.Pow(10, n);
} }
if (min < 0) return -Mathf.Floor(mm); if (min < 0) return -Math.Floor(mm);
else return Mathf.Floor(mm); else return Math.Floor(mm);
} }
else else
{ {
@@ -805,11 +805,11 @@ namespace XCharts
} }
} }
public static float GetMaxLogValue(float value, float logBase, bool isLogBaseE, out int splitNumber) public static double GetMaxLogValue(double value, float logBase, bool isLogBaseE, out int splitNumber)
{ {
splitNumber = 0; splitNumber = 0;
if (value <= 0) return 0; if (value <= 0) return 0;
float max = 0; double max = 0;
while (max < value) while (max < value)
{ {
if (isLogBaseE) if (isLogBaseE)
@@ -825,7 +825,7 @@ namespace XCharts
return max; return max;
} }
public static float GetMinLogValue(float value, float logBase, bool isLogBaseE, out int splitNumber) public static float GetMinLogValue(double value, float logBase, bool isLogBaseE, out int splitNumber)
{ {
splitNumber = 0; splitNumber = 0;
if (value > 1) return 1; if (value > 1) return 1;
@@ -845,7 +845,7 @@ namespace XCharts
return min; return min;
} }
public static int GetFloatAccuracy(float value) public static int GetFloatAccuracy(double value)
{ {
if (value > 1 || value < -1) return 0; if (value > 1 || value < -1) return 0;
int count = 1; int count = 1;

View File

@@ -0,0 +1,52 @@
/************************************************/
/* */
/* Copyright (c) 2018 - 2021 monitor1394 */
/* https://github.com/monitor1394 */
/* */
/************************************************/
using System.Text;
using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
namespace XCharts
{
public static class MathUtil
{
public static double Abs(double d)
{
return d > 0 ? d : -d;
}
public static double Clamp(double d, double min, double max)
{
if (d >= min && d <= max) return d;
else if (d < min) return min;
else return max;
}
public static bool Approximately(double a, double b)
{
return Math.Abs(b - a) < Math.Max(0.000001f * Math.Max(Math.Abs(a), Math.Abs(b)), Mathf.Epsilon * 8);
}
public static double Clamp01(double value)
{
if (value < 0F)
return 0F;
else if (value > 1F)
return 1F;
else
return value;
}
public static double Lerp(double a, double b, double t)
{
return a + (b - a) * Clamp01(t);
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 094dc7b90e3a049b48f15f990c050db1
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -5,6 +5,7 @@
/* */ /* */
/************************************************/ /************************************************/
using System;
using System.Collections.Generic; using System.Collections.Generic;
using UnityEngine; using UnityEngine;
using UnityEngine.UI; using UnityEngine.UI;
@@ -76,7 +77,7 @@ namespace XCharts
for (int i = 0; i <= 13; i++) for (int i = 0; i <= 13; i++)
{ {
m_AngleAxes[0].AddData("bar" + i); m_AngleAxes[0].AddData("bar" + i);
AddData(0, Random.Range(0, 10)); AddData(0, UnityEngine.Random.Range(0, 10));
} }
} }
#endif #endif
@@ -268,8 +269,8 @@ namespace XCharts
private void UpdateAxisMinMaxValue(Axis axis, bool updateChart = true) private void UpdateAxisMinMaxValue(Axis axis, bool updateChart = true)
{ {
if (axis.IsCategory() || !axis.show) return; if (axis.IsCategory() || !axis.show) return;
float tempMinValue = 0; double tempMinValue = 0;
float tempMaxValue = 0; double tempMaxValue = 0;
if (axis is RadiusAxis) if (axis is RadiusAxis)
{ {
SeriesHelper.GetXMinMaxValue(m_Series, null, axis.polarIndex, true, axis.inverse, out tempMinValue, SeriesHelper.GetXMinMaxValue(m_Series, null, axis.polarIndex, true, axis.inverse, out tempMinValue,
@@ -457,8 +458,8 @@ namespace XCharts
var datas = serie.data; var datas = serie.data;
if (datas.Count <= 0) return; if (datas.Count <= 0) return;
float dataChangeDuration = serie.animation.GetUpdateAnimationDuration(); float dataChangeDuration = serie.animation.GetUpdateAnimationDuration();
float min = m_RadiusAxis.GetCurrMinValue(dataChangeDuration); double min = m_RadiusAxis.GetCurrMinValue(dataChangeDuration);
float max = m_RadiusAxis.GetCurrMaxValue(dataChangeDuration); double max = m_RadiusAxis.GetCurrMaxValue(dataChangeDuration);
var firstSerieData = datas[0]; var firstSerieData = datas[0];
var startPos = GetPolarPos(m_Polar, m_AngleAxis, firstSerieData, min, max, radius); var startPos = GetPolarPos(m_Polar, m_AngleAxis, firstSerieData, min, max, radius);
var nextPos = Vector3.zero; var nextPos = Vector3.zero;
@@ -550,20 +551,20 @@ namespace XCharts
} }
} }
private Vector3 GetPolarPos(Polar m_Polar, AngleAxis m_AngleAxis, SerieData serieData, float min, float max, float polarRadius) private Vector3 GetPolarPos(Polar m_Polar, AngleAxis m_AngleAxis, SerieData serieData, double min, double max, float polarRadius)
{ {
var angle = 0f; var angle = 0f;
if (!m_AngleAxis.clockwise) if (!m_AngleAxis.clockwise)
{ {
angle = m_AngleAxis.runtimeStartAngle - serieData.GetData(1); angle = m_AngleAxis.runtimeStartAngle - (float)serieData.GetData(1);
} }
else else
{ {
angle = m_AngleAxis.runtimeStartAngle + serieData.GetData(1); angle = m_AngleAxis.runtimeStartAngle + (float)serieData.GetData(1);
} }
angle = (angle + 360) % 360; angle = (angle + 360) % 360;
var value = serieData.GetData(0); var value = serieData.GetData(0);
var radius = (value - min) / (max - min) * polarRadius; var radius = (float)((value - min) / (max - min) * polarRadius);
serieData.runtimeAngle = angle; serieData.runtimeAngle = angle;
serieData.runtimePosition = ChartHelper.GetPos(m_Polar.runtimeCenterPos, radius, angle, true); serieData.runtimePosition = ChartHelper.GetPos(m_Polar.runtimeCenterPos, radius, angle, true);
return serieData.runtimePosition; return serieData.runtimePosition;
@@ -612,7 +613,7 @@ namespace XCharts
for (int j = 0; j < count; j++) for (int j = 0; j < count; j++)
{ {
var serieData = serie.data[j]; var serieData = serie.data[j];
var flag = Mathf.Abs(serieData.runtimeAngle - angle) < Mathf.Abs(diff / 2); var flag = Math.Abs(serieData.runtimeAngle - angle) < Math.Abs(diff / 2);
if (serieData.highlighted != flag) if (serieData.highlighted != flag)
{ {
refresh = true; refresh = true;
@@ -704,9 +705,9 @@ namespace XCharts
var dist = Vector2.Distance(pointerPos, cenPos); var dist = Vector2.Distance(pointerPos, cenPos);
if (dist > radius) dist = radius; if (dist > radius) dist = radius;
float min = m_RadiusAxis.runtimeMinValue; double min = m_RadiusAxis.runtimeMinValue;
float max = m_RadiusAxis.runtimeMaxValue; double max = m_RadiusAxis.runtimeMaxValue;
var value = (float)(min + dist / radius * m_RadiusAxis.runtimeMinMaxRange); var value = min + dist / radius * m_RadiusAxis.runtimeMinMaxRange;
m_RadiusAxis.UpdateTooptipLabelText(ChartCached.FloatToStr(value)); m_RadiusAxis.UpdateTooptipLabelText(ChartCached.FloatToStr(value));
m_RadiusAxis.UpdateTooltipLabelPos(ChartHelper.GetPos(cenPos, dist, m_AngleAxis.runtimeStartAngle, true)); m_RadiusAxis.UpdateTooltipLabelPos(ChartHelper.GetPos(cenPos, dist, m_AngleAxis.runtimeStartAngle, true));
} }

View File

@@ -125,7 +125,7 @@ namespace XCharts
serie.symbol.size = 4; serie.symbol.size = 4;
serie.symbol.selectedSize = 6; serie.symbol.selectedSize = 6;
serie.showDataName = true; serie.showDataName = true;
List<float> data = new List<float>(); List<double> data = new List<double>();
for (int i = 0; i < 5; i++) for (int i = 0; i < 5; i++)
{ {
data.Add(Random.Range(20, 90)); data.Add(Random.Range(20, 90));

View File

@@ -105,7 +105,7 @@ namespace XChartsDemo
if (chart is RingChart) if (chart is RingChart)
{ {
var serieData = chart.series.GetSerie(0).GetSerieData(0); var serieData = chart.series.GetSerie(0).GetSerieData(0);
chart.UpdateData(0, 0, 0, Random.Range(0, serieData.GetData(1))); chart.UpdateData(0, 0, 0, Random.Range(0, (float)serieData.GetData(1)));
} }
else else
{ {