| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192 | using UnityEngine;namespace XCharts.Runtime{    /// <summary>    /// 标域类型    /// </summary>    public enum MarkAreaType    {        None,        /// <summary>        /// 最小值。        /// </summary>        Min,        /// <summary>        /// 最大值。        /// </summary>        Max,        /// <summary>        /// 平均值。        /// </summary>        Average,        /// <summary>        /// 中位数。        /// </summary>        Median    }    /// <summary>    /// Used to mark an area in chart. For example, mark a time interval.    /// ||图表标域,常用于标记图表中某个范围的数据。    /// </summary>    [System.Serializable]    [ComponentHandler(typeof(MarkAreaHandler), true)]    public class MarkArea : MainComponent    {        [SerializeField] private bool m_Show = true;        [SerializeField] private string m_Text = "";        [SerializeField] private int m_SerieIndex = 0;        [SerializeField] private MarkAreaData m_Start = new MarkAreaData();        [SerializeField] private MarkAreaData m_End = new MarkAreaData();        [SerializeField] private ItemStyle m_ItemStyle = new ItemStyle();        [SerializeField] private LabelStyle m_Label = new LabelStyle();        public ChartLabel runtimeLabel { get; internal set; }        public Vector3 runtimeLabelPosition { get; internal set; }        public Rect runtimeRect { get; internal set; }        /// <summary>        /// 是否显示标域。        /// </summary>        public bool show        {            get { return m_Show; }            set { if (PropertyUtil.SetStruct(ref m_Show, value)) SetVerticesDirty(); }        }        /// <summary>        /// The text of markArea.        /// 标域显示的文本。        /// </summary>        public string text        {            get { return m_Text; }            set { if (PropertyUtil.SetClass(ref m_Text, value)) SetComponentDirty(); }        }        /// <summary>        /// Serie index of markArea.        /// 标域影响的Serie索引。        /// </summary>        public int serieIndex        {            get { return m_SerieIndex; }            set { if (PropertyUtil.SetStruct(ref m_SerieIndex, value)) SetVerticesDirty(); }        }        /// <summary>        /// 标域范围的起始数据。        /// </summary>        public MarkAreaData start        {            get { return m_Start; }            set { if (PropertyUtil.SetClass(ref m_Start, value)) SetVerticesDirty(); }        }        /// <summary>        /// 标域范围的结束数据。        /// </summary>        public MarkAreaData end        {            get { return m_End; }            set { if (PropertyUtil.SetClass(ref m_End, value)) SetVerticesDirty(); }        }        /// <summary>        /// 标域样式。        /// </summary>        public ItemStyle itemStyle        {            get { return m_ItemStyle; }            set { if (PropertyUtil.SetClass(ref m_ItemStyle, value)) SetVerticesDirty(); }        }        /// <summary>        /// 标域文本样式。        /// </summary>        public LabelStyle label        {            get { return m_Label; }            set { if (PropertyUtil.SetClass(ref m_Label, value)) SetComponentDirty(); }        }        public override void SetDefaultValue()        {            m_ItemStyle = new ItemStyle();            m_ItemStyle.opacity = 0.6f;            m_Label = new LabelStyle();            m_Label.show = true;        }    }    /// <summary>    /// 标域的数据。    /// </summary>    [System.Serializable]    public class MarkAreaData : ChildComponent    {        [SerializeField] private MarkAreaType m_Type = MarkAreaType.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;        public double runtimeValue { get; internal set; }        /// <summary>        /// Name of the marker, which will display as a label.        /// ||标注名称。会作为文字显示。        /// </summary>        public string name        {            get { return m_Name; }            set { if (PropertyUtil.SetClass(ref m_Name, value)) SetVerticesDirty(); }        }        /// <summary>        /// Special markArea types, are used to label maximum value, minimum value and so on.        /// ||特殊的标域类型,用于标注最大值最小值等。        /// </summary>        public MarkAreaType 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(); }        }    }}
 |