| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267 | using System.Collections.Generic;using UnityEngine;namespace XCharts.Runtime{    /// <summary>    /// 标线类型    /// </summary>    public enum MarkLineType    {        None,        /// <summary>        /// 最小值。        /// </summary>        Min,        /// <summary>        /// 最大值。        /// </summary>        Max,        /// <summary>        /// 平均值。        /// </summary>        Average,        /// <summary>        /// 中位数。        /// </summary>        Median    }    /// <summary>    /// Use a line in the chart to illustrate.    /// ||图表标线。    /// </summary>    [System.Serializable]    [ComponentHandler(typeof(MarkLineHandler), true)]    public class MarkLine : MainComponent    {        [SerializeField] private bool m_Show = true;        [SerializeField] private int m_SerieIndex = 0;        [SerializeField][Since("v3.9.0")] private bool m_OnTop = true;        [SerializeField] private AnimationStyle m_Animation = new AnimationStyle();        [SerializeField] private List<MarkLineData> m_Data = new List<MarkLineData>();        /// <summary>        /// Whether to display the marking line.        /// ||是否显示标线。        /// </summary>        public bool show        {            get { return m_Show; }            set { if (PropertyUtil.SetStruct(ref m_Show, value)) SetVerticesDirty(); }        }        /// <summary>        /// The serie index of markLine.        /// ||标线影响的Serie索引。        /// </summary>        public int serieIndex        {            get { return m_SerieIndex; }            set { if (PropertyUtil.SetStruct(ref m_SerieIndex, value)) SetVerticesDirty(); }        }        /// <summary>        /// whether the markline is on top.        /// ||是否在最上层。        /// </summary>         public bool onTop        {            get { return m_OnTop; }            set { if (PropertyUtil.SetStruct(ref m_OnTop, value)) SetVerticesDirty(); }        }        /// <summary>        /// The animation of markline.        /// ||标线的动画样式。        /// </summary>        public AnimationStyle animation        {            get { return m_Animation; }            set { if (PropertyUtil.SetClass(ref m_Animation, value)) SetVerticesDirty(); }        }        /// <summary>        /// A list of marked data. When the group of data item is 0, each data item represents a line;         /// When the group is not 0, two data items of the same group represent the starting point and         /// the ending point of the line respectively to form a line. In this case, the relevant style         /// parameters of the line are the parameters of the starting point.        /// ||标线的数据列表。当数据项的group为0时,每个数据项表示一条标线;当group不为0时,相同group的两个数据项分别表        /// 示标线的起始点和终止点来组成一条标线,此时标线的相关样式参数取起始点的参数。        /// </summary>        public List<MarkLineData> data        {            get { return m_Data; }            set { if (PropertyUtil.SetClass(ref m_Data, value)) SetVerticesDirty(); }        }        public override void SetDefaultValue()        {            data.Clear();            var item = new MarkLineData();            item.name = "average";            item.type = MarkLineType.Average;            item.lineStyle.type = LineStyle.Type.Dashed;            item.lineStyle.color = Color.clear;            item.startSymbol.show = true;            item.startSymbol.type = SymbolType.Circle;            item.startSymbol.size = 4;            item.endSymbol.show = true;            item.endSymbol.type = SymbolType.Arrow;            item.endSymbol.size = 5;            item.label.show = true;            item.label.numericFormatter = "f1";            item.label.formatter = "{c}";            data.Add(item);        }    }    /// <summary>    /// Data of marking line.     /// ||图表标线的数据。    /// </summary>    [System.Serializable]    public class MarkLineData : ChildComponent    {        [SerializeField] private MarkLineType m_Type = MarkLineType.None;        [SerializeField] private string m_Name;        [SerializeField] private int m_Dimension = 1;        [SerializeField] private float m_XPosition;        [SerializeField] private float m_YPosition;        [SerializeField] private double m_XValue;        [SerializeField] private double m_YValue;        [SerializeField] private int m_Group = 0;        [SerializeField] private bool m_ZeroPosition = false;        [SerializeField] private SymbolStyle m_StartSymbol = new SymbolStyle();        [SerializeField] private SymbolStyle m_EndSymbol = new SymbolStyle();        [SerializeField] private LineStyle m_LineStyle = new LineStyle();        [SerializeField] private LabelStyle m_Label = new LabelStyle();        //[SerializeField] private Emphasis m_Emphasis = new Emphasis();        public Vector3 runtimeStartPosition { get; internal set; }        public Vector3 runtimeEndPosition { get; internal set; }        public Vector3 runtimeCurrentEndPosition { get; internal set; }        public ChartLabel runtimeLabel { get; internal set; }        public double runtimeValue { get; internal set; }        public bool runtimeInGrid { get; internal set; }        /// <summary>        /// Name of the marker, which will display as a label.        /// ||标线名称,将会作为文字显示。label的formatter可通过{b}显示名称,通过{c}显示数值。        /// </summary>        public string name        {            get { return m_Name; }            set { if (PropertyUtil.SetClass(ref m_Name, value)) SetVerticesDirty(); }        }        /// <summary>        /// Special label types, are used to label maximum value, minimum value and so on.        /// ||特殊的标线类型,用于标注最大值最小值等。        /// </summary>        public MarkLineType type        {            get { return m_Type; }            set { if (PropertyUtil.SetStruct(ref m_Type, value)) SetVerticesDirty(); }        }        /// <summary>        /// From which dimension of data to calculate the maximum and minimum value and so on.        /// ||从哪个维度的数据计算最大最小值等。        /// </summary>        public int dimension        {            get { return m_Dimension; }            set { if (PropertyUtil.SetStruct(ref m_Dimension, value)) SetVerticesDirty(); }        }        /// <summary>        /// The x coordinate relative to the origin, in pixels.        /// ||相对原点的 x 坐标,单位像素。当type为None时有效。        /// </summary>        public float xPosition        {            get { return m_XPosition; }            set { if (PropertyUtil.SetStruct(ref m_XPosition, value)) SetVerticesDirty(); }        }        /// <summary>        /// The y coordinate relative to the origin, in pixels.        /// ||相对原点的 y 坐标,单位像素。当type为None时有效。        /// </summary>        public float yPosition        {            get { return m_YPosition; }            set { if (PropertyUtil.SetStruct(ref m_YPosition, value)) SetVerticesDirty(); }        }        /// <summary>        /// The value specified on the X-axis. A value specified when the X-axis is the category axis represents the index of the category axis data, otherwise a specific value.        /// ||X轴上的指定值。当X轴为类目轴时指定值表示类目轴数据的索引,否则为具体的值。当type为None时有效。        /// </summary>        public double xValue        {            get { return m_XValue; }            set { if (PropertyUtil.SetStruct(ref m_XValue, value)) SetVerticesDirty(); }        }        /// <summary>        /// That's the value on the Y-axis. The value specified when the Y axis is the category axis represents the index of the category axis data, otherwise the specific value.        /// ||Y轴上的指定值。当Y轴为类目轴时指定值表示类目轴数据的索引,否则为具体的值。当type为None时有效。        /// </summary>        public double yValue        {            get { return m_YValue; }            set { if (PropertyUtil.SetStruct(ref m_YValue, value)) SetVerticesDirty(); }        }        /// <summary>        /// Grouping. When the group is not 0, it means that this data is the starting point or end point of the marking line. Data consistent with the group form a marking line.        /// ||分组。当group不为0时,表示这个data是标线的起点或终点,group一致的data组成一条标线。        /// </summary>        public int group        {            get { return m_Group; }            set { if (PropertyUtil.SetStruct(ref m_Group, value)) SetVerticesDirty(); }        }        /// <summary>        /// Is the origin of the coordinate system.        /// ||是否为坐标系原点。        /// </summary>        public bool zeroPosition        {            get { return m_ZeroPosition; }            set { if (PropertyUtil.SetStruct(ref m_ZeroPosition, value)) SetVerticesDirty(); }        }        /// <summary>        /// The symbol of the start point of markline.        /// ||起始点的图形标记。        /// </summary>        public SymbolStyle startSymbol        {            get { return m_StartSymbol; }            set { if (PropertyUtil.SetClass(ref m_StartSymbol, value)) SetVerticesDirty(); }        }        /// <summary>        /// The symbol of the end point of markline.        /// ||结束点的图形标记。        /// </summary>        public SymbolStyle endSymbol        {            get { return m_EndSymbol; }            set { if (PropertyUtil.SetClass(ref m_EndSymbol, value)) SetVerticesDirty(); }        }        /// <summary>        /// The line style of markline.        /// ||标线样式。        /// </summary>        public LineStyle lineStyle        {            get { return m_LineStyle; }            set { if (PropertyUtil.SetClass(ref m_LineStyle, value)) SetVerticesDirty(); }        }        /// <summary>        /// Text styles of label. You can set position to Start, Middle, and End to display text in different locations.        /// ||文本样式。可设置position为Start、Middle和End在不同的位置显示文本。        /// </summary>        public LabelStyle label        {            get { return m_Label; }            set { if (PropertyUtil.SetClass(ref m_Label, value)) SetVerticesDirty(); }        }        // public Emphasis emphasis        // {        //     get { return m_Emphasis; }        //     set { if (PropertyUtil.SetClass(ref m_Emphasis, value)) SetVerticesDirty(); }        // }    }}
 |