123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- using System;
- using UnityEngine;
-
- namespace XCharts.Runtime
- {
- /// <summary>
- /// Split line of axis in grid area.
- /// |坐标轴在 grid 区域中的分隔线。
- /// </summary>
- [Serializable]
- public class AxisSplitLine : BaseLine
- {
- [SerializeField] private int m_Interval;
- [SerializeField] private float m_Distance;
- [SerializeField] private bool m_AutoColor;
- [SerializeField][Since("v3.3.0")] private bool m_ShowStartLine = true;
- [SerializeField][Since("v3.3.0")] private bool m_ShowEndLine = true;
-
- /// <summary>
- /// The distance between the split line and axis line.
- /// |刻度线与轴线的距离。
- /// </summary>
- public float distance { get { return m_Distance; } set { m_Distance = value; } }
- /// <summary>
- /// auto color.
- /// |自动设置颜色。
- /// </summary>
- public bool autoColor { get { return m_AutoColor; } set { m_AutoColor = value; } }
- /// <summary>
- /// Interval of Axis splitLine.
- /// |坐标轴分隔线的显示间隔。
- /// </summary>
- public int interval
- {
- get { return m_Interval; }
- set { if (PropertyUtil.SetStruct(ref m_Interval, value)) SetVerticesDirty(); }
- }
- /// <summary>
- /// Whether to show the first split line.
- /// |是否显示第一条分割线。
- /// </summary>
- public bool showStartLine
- {
- get { return m_ShowStartLine; }
- set { if (PropertyUtil.SetStruct(ref m_ShowStartLine, value)) SetVerticesDirty(); }
- }
- /// <summary>
- /// Whether to show the last split line.
- /// |是否显示最后一条分割线。
- /// </summary>
- public bool showEndLine
- {
- get { return m_ShowEndLine; }
- set { if (PropertyUtil.SetStruct(ref m_ShowEndLine, value)) SetVerticesDirty(); }
- }
-
- public override bool vertsDirty { get { return m_VertsDirty || m_LineStyle.anyDirty; } }
- public override void ClearVerticesDirty()
- {
- base.ClearVerticesDirty();
- m_LineStyle.ClearVerticesDirty();
- }
- public static AxisSplitLine defaultSplitLine
- {
- get
- {
- return new AxisSplitLine()
- {
- m_Show = false,
- };
- }
- }
-
- public AxisSplitLine Clone()
- {
- var axisSplitLine = new AxisSplitLine();
- axisSplitLine.show = show;
- axisSplitLine.interval = interval;
- axisSplitLine.showStartLine = showStartLine;
- axisSplitLine.showEndLine = showEndLine;
- axisSplitLine.lineStyle = lineStyle.Clone();
- return axisSplitLine;
- }
-
- public void Copy(AxisSplitLine splitLine)
- {
- base.Copy(splitLine);
- interval = splitLine.interval;
- showStartLine = splitLine.showStartLine;
- showEndLine = splitLine.showEndLine;
- }
-
- internal bool NeedShow(int index, int total)
- {
- if (!show) return false;
- if (interval != 0 && index % (interval + 1) != 0) return false;
- if (!showStartLine && index == 0) return false;
- if (!showEndLine && index == total - 1) return false;
- return true;
- }
- }
- }
|