mirror of
https://github.com/XCharts-Team/XCharts.git
synced 2026-05-29 20:58:47 +00:00
[feature][axis] support minor tick and minor split line
This commit is contained in:
@@ -57,6 +57,9 @@
|
|||||||
|
|
||||||
## master
|
## master
|
||||||
|
|
||||||
|
* (2022.07.19) 增加`Axis`的`MinorSplitLine`设置坐标轴次分割线
|
||||||
|
* (2022.07.19) 增加`Axis`的`MinorTick`设置坐标轴次刻度
|
||||||
|
* (2022.07.17) 增加`Radar`的`smooth`参数设置平滑曲线
|
||||||
* (2022.07.15) 增加`DataZoom`对`Time`时间轴的支持
|
* (2022.07.15) 增加`DataZoom`对`Time`时间轴的支持
|
||||||
|
|
||||||
## 3.1.0
|
## 3.1.0
|
||||||
|
|||||||
@@ -130,11 +130,14 @@ Inherits or Implemented: [MainComponentHandler](#MainComponentHandler)
|
|||||||
| `GetAxisValueDistance()` |public static float GetAxisValueDistance(GridCoord grid, Axis axis, float scaleWidth, double value)</br>获得数值value在坐标轴上相对起点的距离 |
|
| `GetAxisValueDistance()` |public static float GetAxisValueDistance(GridCoord grid, Axis axis, float scaleWidth, double value)</br>获得数值value在坐标轴上相对起点的距离 |
|
||||||
| `GetAxisValueLength()` |public static float GetAxisValueLength(GridCoord grid, Axis axis, float scaleWidth, double value)</br>获得数值value在坐标轴上对应的长度 |
|
| `GetAxisValueLength()` |public static float GetAxisValueLength(GridCoord grid, Axis axis, float scaleWidth, double value)</br>获得数值value在坐标轴上对应的长度 |
|
||||||
| `GetAxisValuePosition()` |public static float GetAxisValuePosition(GridCoord grid, Axis axis, float scaleWidth, double value)</br>获得数值value在坐标轴上的坐标位置 |
|
| `GetAxisValuePosition()` |public static float GetAxisValuePosition(GridCoord grid, Axis axis, float scaleWidth, double value)</br>获得数值value在坐标轴上的坐标位置 |
|
||||||
|
| `GetAxisXOrY()` |public static float GetAxisXOrY(GridCoord grid, Axis axis, Axis relativedAxis)</br> |
|
||||||
| `GetDataWidth()` |public static float GetDataWidth(Axis axis, float coordinateWidth, int dataCount, DataZoom dataZoom)</br>获得一个类目数据在坐标系中代表的宽度 |
|
| `GetDataWidth()` |public static float GetDataWidth(Axis axis, float coordinateWidth, int dataCount, DataZoom dataZoom)</br>获得一个类目数据在坐标系中代表的宽度 |
|
||||||
| `GetEachWidth()` |public static float GetEachWidth(Axis axis, float coordinateWidth, DataZoom dataZoom = null)</br> |
|
| `GetEachWidth()` |public static float GetEachWidth(Axis axis, float coordinateWidth, DataZoom dataZoom = null)</br> |
|
||||||
| `GetScaleNumber()` |public static int GetScaleNumber(Axis axis, float coordinateWidth, DataZoom dataZoom = null)</br>获得分割线条数 |
|
| `GetScaleNumber()` |public static int GetScaleNumber(Axis axis, float coordinateWidth, DataZoom dataZoom = null)</br>获得分割线条数 |
|
||||||
| `GetScaleWidth()` |public static float GetScaleWidth(Axis axis, float coordinateWidth, int index, DataZoom dataZoom = null)</br>获得分割段宽度 |
|
| `GetScaleWidth()` |public static float GetScaleWidth(Axis axis, float coordinateWidth, int index, DataZoom dataZoom = null)</br>获得分割段宽度 |
|
||||||
| `GetSplitNumber()` |public static int GetSplitNumber(Axis axis, float coordinateWid, DataZoom dataZoom)</br>获得分割段数 |
|
| `GetSplitNumber()` |public static int GetSplitNumber(Axis axis, float coordinateWid, DataZoom dataZoom)</br>获得分割段数 |
|
||||||
|
| `GetXAxisXOrY()` |public static float GetXAxisXOrY(GridCoord grid, Axis xAxis, Axis relativedAxis)</br> |
|
||||||
|
| `GetYAxisXOrY()` |public static float GetYAxisXOrY(GridCoord grid, Axis yAxis, Axis relativedAxis)</br> |
|
||||||
| `NeedShowSplit()` |public static bool NeedShowSplit(Axis axis)</br> |
|
| `NeedShowSplit()` |public static bool NeedShowSplit(Axis axis)</br> |
|
||||||
|
|
||||||
## `BarChart`
|
## `BarChart`
|
||||||
|
|||||||
@@ -130,11 +130,14 @@ Inherits or Implemented: [MainComponentHandler](#MainComponentHandler)
|
|||||||
| `GetAxisValueDistance()` |public static float GetAxisValueDistance(GridCoord grid, Axis axis, float scaleWidth, double value)</br>获得数值value在坐标轴上相对起点的距离 |
|
| `GetAxisValueDistance()` |public static float GetAxisValueDistance(GridCoord grid, Axis axis, float scaleWidth, double value)</br>获得数值value在坐标轴上相对起点的距离 |
|
||||||
| `GetAxisValueLength()` |public static float GetAxisValueLength(GridCoord grid, Axis axis, float scaleWidth, double value)</br>获得数值value在坐标轴上对应的长度 |
|
| `GetAxisValueLength()` |public static float GetAxisValueLength(GridCoord grid, Axis axis, float scaleWidth, double value)</br>获得数值value在坐标轴上对应的长度 |
|
||||||
| `GetAxisValuePosition()` |public static float GetAxisValuePosition(GridCoord grid, Axis axis, float scaleWidth, double value)</br>获得数值value在坐标轴上的坐标位置 |
|
| `GetAxisValuePosition()` |public static float GetAxisValuePosition(GridCoord grid, Axis axis, float scaleWidth, double value)</br>获得数值value在坐标轴上的坐标位置 |
|
||||||
|
| `GetAxisXOrY()` |public static float GetAxisXOrY(GridCoord grid, Axis axis, Axis relativedAxis)</br> |
|
||||||
| `GetDataWidth()` |public static float GetDataWidth(Axis axis, float coordinateWidth, int dataCount, DataZoom dataZoom)</br>获得一个类目数据在坐标系中代表的宽度 |
|
| `GetDataWidth()` |public static float GetDataWidth(Axis axis, float coordinateWidth, int dataCount, DataZoom dataZoom)</br>获得一个类目数据在坐标系中代表的宽度 |
|
||||||
| `GetEachWidth()` |public static float GetEachWidth(Axis axis, float coordinateWidth, DataZoom dataZoom = null)</br> |
|
| `GetEachWidth()` |public static float GetEachWidth(Axis axis, float coordinateWidth, DataZoom dataZoom = null)</br> |
|
||||||
| `GetScaleNumber()` |public static int GetScaleNumber(Axis axis, float coordinateWidth, DataZoom dataZoom = null)</br>获得分割线条数 |
|
| `GetScaleNumber()` |public static int GetScaleNumber(Axis axis, float coordinateWidth, DataZoom dataZoom = null)</br>获得分割线条数 |
|
||||||
| `GetScaleWidth()` |public static float GetScaleWidth(Axis axis, float coordinateWidth, int index, DataZoom dataZoom = null)</br>获得分割段宽度 |
|
| `GetScaleWidth()` |public static float GetScaleWidth(Axis axis, float coordinateWidth, int index, DataZoom dataZoom = null)</br>获得分割段宽度 |
|
||||||
| `GetSplitNumber()` |public static int GetSplitNumber(Axis axis, float coordinateWid, DataZoom dataZoom)</br>获得分割段数 |
|
| `GetSplitNumber()` |public static int GetSplitNumber(Axis axis, float coordinateWid, DataZoom dataZoom)</br>获得分割段数 |
|
||||||
|
| `GetXAxisXOrY()` |public static float GetXAxisXOrY(GridCoord grid, Axis xAxis, Axis relativedAxis)</br> |
|
||||||
|
| `GetYAxisXOrY()` |public static float GetYAxisXOrY(GridCoord grid, Axis yAxis, Axis relativedAxis)</br> |
|
||||||
| `NeedShowSplit()` |public static bool NeedShowSplit(Axis axis)</br> |
|
| `NeedShowSplit()` |public static bool NeedShowSplit(Axis axis)</br> |
|
||||||
|
|
||||||
## `BarChart`
|
## `BarChart`
|
||||||
|
|||||||
@@ -76,6 +76,8 @@
|
|||||||
- [ArrowStyle](#ArrowStyle)
|
- [ArrowStyle](#ArrowStyle)
|
||||||
- [AxisLabel](#AxisLabel)
|
- [AxisLabel](#AxisLabel)
|
||||||
- [AxisLine](#AxisLine)
|
- [AxisLine](#AxisLine)
|
||||||
|
- [AxisMinorSplitLine](#AxisMinorSplitLine)
|
||||||
|
- [AxisMinorTick](#AxisMinorTick)
|
||||||
- [AxisName](#AxisName)
|
- [AxisName](#AxisName)
|
||||||
- [AxisSplitArea](#AxisSplitArea)
|
- [AxisSplitArea](#AxisSplitArea)
|
||||||
- [AxisSplitLine](#AxisSplitLine)
|
- [AxisSplitLine](#AxisSplitLine)
|
||||||
@@ -263,8 +265,10 @@ The axis in rectangular coordinate.
|
|||||||
|`axisLine`|||axis Line. [AxisLine](#AxisLine)|
|
|`axisLine`|||axis Line. [AxisLine](#AxisLine)|
|
||||||
|`axisName`|||axis name. [AxisName](#AxisName)|
|
|`axisName`|||axis name. [AxisName](#AxisName)|
|
||||||
|`axisTick`|||axis tick. [AxisTick](#AxisTick)|
|
|`axisTick`|||axis tick. [AxisTick](#AxisTick)|
|
||||||
|
|`minorTick`|||axis minor tick. [AxisMinorTick](#AxisMinorTick)|
|
||||||
|`axisLabel`|||axis label. [AxisLabel](#AxisLabel)|
|
|`axisLabel`|||axis label. [AxisLabel](#AxisLabel)|
|
||||||
|`splitLine`|||axis split line. [AxisSplitLine](#AxisSplitLine)|
|
|`splitLine`|||axis split line. [AxisSplitLine](#AxisSplitLine)|
|
||||||
|
|`minorSplitLine`|||axis minor split line. [AxisMinorSplitLine](#AxisMinorSplitLine)|
|
||||||
|`splitArea`|||axis split area. [AxisSplitArea](#AxisSplitArea)|
|
|`splitArea`|||axis split area. [AxisSplitArea](#AxisSplitArea)|
|
||||||
|
|
||||||
## `AxisLabel`
|
## `AxisLabel`
|
||||||
@@ -295,6 +299,28 @@ Settings related to axis line.
|
|||||||
|`showArrow`|||Whether to show the arrow symbol of axis.
|
|`showArrow`|||Whether to show the arrow symbol of axis.
|
||||||
|`arrow`|||the arrow of line. [ArrowStyle](#ArrowStyle)|
|
|`arrow`|||the arrow of line. [ArrowStyle](#ArrowStyle)|
|
||||||
|
|
||||||
|
## `AxisMinorSplitLine`
|
||||||
|
|
||||||
|
Inherits or Implemented: [BaseLine](#BaseLine)
|
||||||
|
|
||||||
|
Minor split line of axis in grid area.
|
||||||
|
|
||||||
|
|field|default|since|comment|
|
||||||
|
|--|--|--|--|
|
||||||
|
|`distance`|||The distance between the split line and axis line.
|
||||||
|
|`autoColor`|||auto color.
|
||||||
|
|
||||||
|
## `AxisMinorTick`
|
||||||
|
|
||||||
|
Inherits or Implemented: [BaseLine](#BaseLine)
|
||||||
|
|
||||||
|
Settings related to axis minor tick.
|
||||||
|
|
||||||
|
|field|default|since|comment|
|
||||||
|
|--|--|--|--|
|
||||||
|
|`splitNumber`|5||Number of segments that the axis is split into.
|
||||||
|
|`autoColor`|||
|
||||||
|
|
||||||
## `AxisName`
|
## `AxisName`
|
||||||
|
|
||||||
Inherits or Implemented: [ChildComponent](#ChildComponent)
|
Inherits or Implemented: [ChildComponent](#ChildComponent)
|
||||||
@@ -384,7 +410,8 @@ Inherits or Implemented: [ComponentTheme](#ComponentTheme)
|
|||||||
|`splitLineType`|||the type of split line.</br>`LineStyle.Type`:</br>- `Solid`: 实线</br>- `Dashed`: 虚线</br>- `Dotted`: 点线</br>- `DashDot`: 点划线</br>- `DashDotDot`: 双点划线</br>- `None`: 双点划线</br>|
|
|`splitLineType`|||the type of split line.</br>`LineStyle.Type`:</br>- `Solid`: 实线</br>- `Dashed`: 虚线</br>- `Dotted`: 点线</br>- `DashDot`: 点划线</br>- `DashDotDot`: 双点划线</br>- `None`: 双点划线</br>|
|
||||||
|`splitLineWidth`|1f||the width of split line.
|
|`splitLineWidth`|1f||the width of split line.
|
||||||
|`splitLineLength`|0f||the length of split line.
|
|`splitLineLength`|0f||the length of split line.
|
||||||
|`splitLineColor`|||the color of line.
|
|`splitLineColor`|||the color of split line.
|
||||||
|
|`minorSplitLineColor`|||the color of minor split line.
|
||||||
|`tickWidth`|1f||the width of tick.
|
|`tickWidth`|1f||the width of tick.
|
||||||
|`tickLength`|5f||the length of tick.
|
|`tickLength`|5f||the length of tick.
|
||||||
|`tickColor`|||the color of tick.
|
|`tickColor`|||the color of tick.
|
||||||
@@ -994,6 +1021,9 @@ Polar coordinate can be used in scatter and line chart. Every polar coordinate h
|
|||||||
|
|
||||||
Inherits or Implemented: [Serie](#Serie),[INeedSerieContainer](#INeedSerieContainer)
|
Inherits or Implemented: [Serie](#Serie),[INeedSerieContainer](#INeedSerieContainer)
|
||||||
|
|
||||||
|
|field|default|since|comment|
|
||||||
|
|--|--|--|--|
|
||||||
|
|`smooth`|false|3.2.0|Whether use smooth curve.
|
||||||
|
|
||||||
## `RadarAxisTheme`
|
## `RadarAxisTheme`
|
||||||
|
|
||||||
|
|||||||
@@ -76,6 +76,8 @@
|
|||||||
- [ArrowStyle](#ArrowStyle)
|
- [ArrowStyle](#ArrowStyle)
|
||||||
- [AxisLabel](#AxisLabel)
|
- [AxisLabel](#AxisLabel)
|
||||||
- [AxisLine](#AxisLine)
|
- [AxisLine](#AxisLine)
|
||||||
|
- [AxisMinorSplitLine](#AxisMinorSplitLine)
|
||||||
|
- [AxisMinorTick](#AxisMinorTick)
|
||||||
- [AxisName](#AxisName)
|
- [AxisName](#AxisName)
|
||||||
- [AxisSplitArea](#AxisSplitArea)
|
- [AxisSplitArea](#AxisSplitArea)
|
||||||
- [AxisSplitLine](#AxisSplitLine)
|
- [AxisSplitLine](#AxisSplitLine)
|
||||||
@@ -263,8 +265,10 @@ Inherits or Implemented: [MainComponent](#MainComponent)
|
|||||||
|`axisLine`|||坐标轴轴线。 [AxisLine](#AxisLine)|
|
|`axisLine`|||坐标轴轴线。 [AxisLine](#AxisLine)|
|
||||||
|`axisName`|||坐标轴名称。 [AxisName](#AxisName)|
|
|`axisName`|||坐标轴名称。 [AxisName](#AxisName)|
|
||||||
|`axisTick`|||坐标轴刻度。 [AxisTick](#AxisTick)|
|
|`axisTick`|||坐标轴刻度。 [AxisTick](#AxisTick)|
|
||||||
|
|`minorTick`|||坐标轴次刻度。 [AxisMinorTick](#AxisMinorTick)|
|
||||||
|`axisLabel`|||坐标轴刻度标签。 [AxisLabel](#AxisLabel)|
|
|`axisLabel`|||坐标轴刻度标签。 [AxisLabel](#AxisLabel)|
|
||||||
|`splitLine`|||坐标轴分割线。 [AxisSplitLine](#AxisSplitLine)|
|
|`splitLine`|||坐标轴分割线。 [AxisSplitLine](#AxisSplitLine)|
|
||||||
|
|`minorSplitLine`|||坐标轴次分割线。 [AxisMinorSplitLine](#AxisMinorSplitLine)|
|
||||||
|`splitArea`|||坐标轴分割区域。 [AxisSplitArea](#AxisSplitArea)|
|
|`splitArea`|||坐标轴分割区域。 [AxisSplitArea](#AxisSplitArea)|
|
||||||
|
|
||||||
## `AxisLabel`
|
## `AxisLabel`
|
||||||
@@ -295,6 +299,28 @@ Inherits or Implemented: [BaseLine](#BaseLine)
|
|||||||
|`showArrow`|||是否显示箭头。
|
|`showArrow`|||是否显示箭头。
|
||||||
|`arrow`|||轴线箭头。 [ArrowStyle](#ArrowStyle)|
|
|`arrow`|||轴线箭头。 [ArrowStyle](#ArrowStyle)|
|
||||||
|
|
||||||
|
## `AxisMinorSplitLine`
|
||||||
|
|
||||||
|
Inherits or Implemented: [BaseLine](#BaseLine)
|
||||||
|
|
||||||
|
坐标轴在 grid 区域中的次分隔线。次分割线会对齐次刻度线 minorTick。
|
||||||
|
|
||||||
|
|field|default|since|comment|
|
||||||
|
|--|--|--|--|
|
||||||
|
|`distance`|||刻度线与轴线的距离。
|
||||||
|
|`autoColor`|||自动设置颜色。
|
||||||
|
|
||||||
|
## `AxisMinorTick`
|
||||||
|
|
||||||
|
Inherits or Implemented: [BaseLine](#BaseLine)
|
||||||
|
|
||||||
|
坐标轴次刻度相关设置。注意:次刻度无法再类目轴中使用。
|
||||||
|
|
||||||
|
|field|default|since|comment|
|
||||||
|
|--|--|--|--|
|
||||||
|
|`splitNumber`|5||分隔线之间分割的刻度数。
|
||||||
|
|`autoColor`|||
|
||||||
|
|
||||||
## `AxisName`
|
## `AxisName`
|
||||||
|
|
||||||
Inherits or Implemented: [ChildComponent](#ChildComponent)
|
Inherits or Implemented: [ChildComponent](#ChildComponent)
|
||||||
@@ -385,6 +411,7 @@ Inherits or Implemented: [ComponentTheme](#ComponentTheme)
|
|||||||
|`splitLineWidth`|1f||分割线线宽。
|
|`splitLineWidth`|1f||分割线线宽。
|
||||||
|`splitLineLength`|0f||分割线线长。
|
|`splitLineLength`|0f||分割线线长。
|
||||||
|`splitLineColor`|||分割线线颜色。
|
|`splitLineColor`|||分割线线颜色。
|
||||||
|
|`minorSplitLineColor`|||次分割线线颜色。
|
||||||
|`tickWidth`|1f||刻度线线宽。
|
|`tickWidth`|1f||刻度线线宽。
|
||||||
|`tickLength`|5f||刻度线线长。
|
|`tickLength`|5f||刻度线线长。
|
||||||
|`tickColor`|||坐标轴线颜色。
|
|`tickColor`|||坐标轴线颜色。
|
||||||
@@ -994,6 +1021,9 @@ Inherits or Implemented: [CoordSystem](#CoordSystem),[ISerieContainer](#ISerieCo
|
|||||||
|
|
||||||
Inherits or Implemented: [Serie](#Serie),[INeedSerieContainer](#INeedSerieContainer)
|
Inherits or Implemented: [Serie](#Serie),[INeedSerieContainer](#INeedSerieContainer)
|
||||||
|
|
||||||
|
|field|default|since|comment|
|
||||||
|
|--|--|--|--|
|
||||||
|
|`smooth`|false|3.2.0|是否平滑曲线。平滑曲线时不支持区域填充颜色。
|
||||||
|
|
||||||
## `RadarAxisTheme`
|
## `RadarAxisTheme`
|
||||||
|
|
||||||
|
|||||||
@@ -47,6 +47,18 @@ namespace XCharts.Editor
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[CustomPropertyDrawer(typeof(AxisMinorSplitLine), true)]
|
||||||
|
public class AxisMinorSplitLineDrawer : BaseLineDrawer
|
||||||
|
{
|
||||||
|
public override string ClassName { get { return "MinorSplitLine"; } }
|
||||||
|
protected override void DrawExtendeds(SerializedProperty prop)
|
||||||
|
{
|
||||||
|
base.DrawExtendeds(prop);
|
||||||
|
//PropertyField(prop, "m_Distance");
|
||||||
|
//PropertyField(prop, "m_AutoColor");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
[CustomPropertyDrawer(typeof(AxisTick), true)]
|
[CustomPropertyDrawer(typeof(AxisTick), true)]
|
||||||
public class AxisTickDrawer : BaseLineDrawer
|
public class AxisTickDrawer : BaseLineDrawer
|
||||||
{
|
{
|
||||||
@@ -63,4 +75,16 @@ namespace XCharts.Editor
|
|||||||
PropertyField(prop, "m_AutoColor");
|
PropertyField(prop, "m_AutoColor");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[CustomPropertyDrawer(typeof(AxisMinorTick), true)]
|
||||||
|
public class AxisMinorTickDrawer : BaseLineDrawer
|
||||||
|
{
|
||||||
|
public override string ClassName { get { return "MinorTick"; } }
|
||||||
|
protected override void DrawExtendeds(SerializedProperty prop)
|
||||||
|
{
|
||||||
|
base.DrawExtendeds(prop);
|
||||||
|
PropertyField(prop, "m_SplitNumber");
|
||||||
|
//PropertyField(prop, "m_AutoColor");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -70,7 +70,6 @@ namespace XCharts.Editor
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
PropertyField("m_Interval");
|
PropertyField("m_Interval");
|
||||||
PropertyField("m_BoundaryGap");
|
|
||||||
}
|
}
|
||||||
DrawExtendeds();
|
DrawExtendeds();
|
||||||
PropertyField("m_AxisLine");
|
PropertyField("m_AxisLine");
|
||||||
@@ -79,6 +78,11 @@ namespace XCharts.Editor
|
|||||||
PropertyField("m_AxisLabel");
|
PropertyField("m_AxisLabel");
|
||||||
PropertyField("m_SplitLine");
|
PropertyField("m_SplitLine");
|
||||||
PropertyField("m_SplitArea");
|
PropertyField("m_SplitArea");
|
||||||
|
if (type != Axis.AxisType.Category)
|
||||||
|
{
|
||||||
|
PropertyField("m_MinorTick");
|
||||||
|
PropertyField("m_MinorSplitLine");
|
||||||
|
}
|
||||||
PropertyListField("m_Icons", true);
|
PropertyListField("m_Icons", true);
|
||||||
if (type == Axis.AxisType.Category)
|
if (type == Axis.AxisType.Category)
|
||||||
{
|
{
|
||||||
@@ -93,12 +97,10 @@ namespace XCharts.Editor
|
|||||||
}
|
}
|
||||||
|
|
||||||
[ComponentEditor(typeof(XAxis))]
|
[ComponentEditor(typeof(XAxis))]
|
||||||
public class XAxisEditor : AxisEditor
|
public class XAxisEditor : AxisEditor { }
|
||||||
{ }
|
|
||||||
|
|
||||||
[ComponentEditor(typeof(YAxis))]
|
[ComponentEditor(typeof(YAxis))]
|
||||||
public class YAxisEditor : AxisEditor
|
public class YAxisEditor : AxisEditor { }
|
||||||
{ }
|
|
||||||
|
|
||||||
[ComponentEditor(typeof(SingleAxis))]
|
[ComponentEditor(typeof(SingleAxis))]
|
||||||
public class SingleAxisEditor : AxisEditor
|
public class SingleAxisEditor : AxisEditor
|
||||||
@@ -128,12 +130,10 @@ namespace XCharts.Editor
|
|||||||
}
|
}
|
||||||
|
|
||||||
[ComponentEditor(typeof(RadiusAxis))]
|
[ComponentEditor(typeof(RadiusAxis))]
|
||||||
public class RadiusAxisEditor : AxisEditor
|
public class RadiusAxisEditor : AxisEditor { }
|
||||||
{ }
|
|
||||||
|
|
||||||
[ComponentEditor(typeof(ParallelAxis))]
|
[ComponentEditor(typeof(ParallelAxis))]
|
||||||
public class ParallelAxisEditor : AxisEditor
|
public class ParallelAxisEditor : AxisEditor { }
|
||||||
{ }
|
|
||||||
|
|
||||||
[CustomPropertyDrawer(typeof(AxisLabel), true)]
|
[CustomPropertyDrawer(typeof(AxisLabel), true)]
|
||||||
public class AxisLabelDrawer : BasePropertyDrawer
|
public class AxisLabelDrawer : BasePropertyDrawer
|
||||||
|
|||||||
@@ -98,8 +98,10 @@ namespace XCharts.Runtime
|
|||||||
[SerializeField] protected AxisLine m_AxisLine = AxisLine.defaultAxisLine;
|
[SerializeField] protected AxisLine m_AxisLine = AxisLine.defaultAxisLine;
|
||||||
[SerializeField] protected AxisName m_AxisName = AxisName.defaultAxisName;
|
[SerializeField] protected AxisName m_AxisName = AxisName.defaultAxisName;
|
||||||
[SerializeField] protected AxisTick m_AxisTick = AxisTick.defaultTick;
|
[SerializeField] protected AxisTick m_AxisTick = AxisTick.defaultTick;
|
||||||
|
[SerializeField] protected AxisMinorTick m_MinorTick = AxisMinorTick.defaultMinorTick;
|
||||||
[SerializeField] protected AxisLabel m_AxisLabel = AxisLabel.defaultAxisLabel;
|
[SerializeField] protected AxisLabel m_AxisLabel = AxisLabel.defaultAxisLabel;
|
||||||
[SerializeField] protected AxisSplitLine m_SplitLine = AxisSplitLine.defaultSplitLine;
|
[SerializeField] protected AxisSplitLine m_SplitLine = AxisSplitLine.defaultSplitLine;
|
||||||
|
[SerializeField] protected AxisMinorSplitLine m_MinorSplitLine = AxisMinorSplitLine.defaultMinorSplitLine;
|
||||||
[SerializeField] protected AxisSplitArea m_SplitArea = AxisSplitArea.defaultSplitArea;
|
[SerializeField] protected AxisSplitArea m_SplitArea = AxisSplitArea.defaultSplitArea;
|
||||||
|
|
||||||
public AxisContext context = new AxisContext();
|
public AxisContext context = new AxisContext();
|
||||||
@@ -352,6 +354,24 @@ namespace XCharts.Runtime
|
|||||||
set { if (value != null) { m_SplitArea = value; SetVerticesDirty(); } }
|
set { if (value != null) { m_SplitArea = value; SetVerticesDirty(); } }
|
||||||
}
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
/// axis minor tick.
|
||||||
|
/// |坐标轴次刻度。
|
||||||
|
/// </summary>
|
||||||
|
public AxisMinorTick minorTick
|
||||||
|
{
|
||||||
|
get { return m_MinorTick; }
|
||||||
|
set { if (value != null) { m_MinorTick = value; SetVerticesDirty(); } }
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// axis minor split line.
|
||||||
|
/// |坐标轴次分割线。
|
||||||
|
/// </summary>
|
||||||
|
public AxisMinorSplitLine minorSplitLine
|
||||||
|
{
|
||||||
|
get { return m_MinorSplitLine; }
|
||||||
|
set { if (value != null) { m_MinorSplitLine = value; SetVerticesDirty(); } }
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
/// Whether to add new data at the head or at the end of the list.
|
/// Whether to add new data at the head or at the end of the list.
|
||||||
/// |添加新数据时是在列表的头部还是尾部加入。
|
/// |添加新数据时是在列表的头部还是尾部加入。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -369,7 +389,9 @@ namespace XCharts.Runtime
|
|||||||
axisLine.anyDirty ||
|
axisLine.anyDirty ||
|
||||||
axisTick.anyDirty ||
|
axisTick.anyDirty ||
|
||||||
splitLine.anyDirty ||
|
splitLine.anyDirty ||
|
||||||
splitArea.anyDirty;
|
splitArea.anyDirty ||
|
||||||
|
minorTick.anyDirty ||
|
||||||
|
minorSplitLine.anyDirty;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -398,6 +420,8 @@ namespace XCharts.Runtime
|
|||||||
axisTick.ClearVerticesDirty();
|
axisTick.ClearVerticesDirty();
|
||||||
splitLine.ClearVerticesDirty();
|
splitLine.ClearVerticesDirty();
|
||||||
splitArea.ClearVerticesDirty();
|
splitArea.ClearVerticesDirty();
|
||||||
|
minorTick.ClearVerticesDirty();
|
||||||
|
minorSplitLine.ClearVerticesDirty();
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void SetComponentDirty()
|
public override void SetComponentDirty()
|
||||||
@@ -429,6 +453,8 @@ namespace XCharts.Runtime
|
|||||||
axis.axisLabel = axisLabel.Clone();
|
axis.axisLabel = axisLabel.Clone();
|
||||||
axis.splitLine = splitLine.Clone();
|
axis.splitLine = splitLine.Clone();
|
||||||
axis.splitArea = splitArea.Clone();
|
axis.splitArea = splitArea.Clone();
|
||||||
|
axis.minorTick = minorTick.Clone();
|
||||||
|
axis.minorSplitLine = minorSplitLine.Clone();
|
||||||
axis.icons = new List<Sprite>();
|
axis.icons = new List<Sprite>();
|
||||||
axis.data = new List<string>();
|
axis.data = new List<string>();
|
||||||
ChartHelper.CopyList(axis.data, data);
|
ChartHelper.CopyList(axis.data, data);
|
||||||
@@ -457,6 +483,8 @@ namespace XCharts.Runtime
|
|||||||
axisLabel.Copy(axis.axisLabel);
|
axisLabel.Copy(axis.axisLabel);
|
||||||
splitLine.Copy(axis.splitLine);
|
splitLine.Copy(axis.splitLine);
|
||||||
splitArea.Copy(axis.splitArea);
|
splitArea.Copy(axis.splitArea);
|
||||||
|
minorTick.Copy(axis.minorTick);
|
||||||
|
minorSplitLine.Copy(axis.minorSplitLine);
|
||||||
ChartHelper.CopyList(data, axis.data);
|
ChartHelper.CopyList(data, axis.data);
|
||||||
ChartHelper.CopyList<Sprite>(icons, axis.icons);
|
ChartHelper.CopyList<Sprite>(icons, axis.icons);
|
||||||
}
|
}
|
||||||
@@ -664,6 +692,18 @@ namespace XCharts.Runtime
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public float GetValueLength(double value, float axisLength)
|
||||||
|
{
|
||||||
|
if (context.minMaxRange > 0)
|
||||||
|
{
|
||||||
|
return axisLength * ((float) (value / context.minMaxRange));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获得指定区域缩放的类目数据列表
|
/// 获得指定区域缩放的类目数据列表
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -788,5 +828,16 @@ namespace XCharts.Runtime
|
|||||||
else
|
else
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void UpdateZeroOffset(float axisLength)
|
||||||
|
{
|
||||||
|
context.offset = context.minValue > 0 || context.minMaxRange == 0?
|
||||||
|
0 :
|
||||||
|
(context.maxValue < 0 ?
|
||||||
|
axisLength :
|
||||||
|
(float) (Math.Abs(context.minValue) * (axisLength /
|
||||||
|
(Math.Abs(context.minValue) + Math.Abs(context.maxValue))))
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -7,9 +7,21 @@ namespace XCharts.Runtime
|
|||||||
public class AxisContext : MainComponentContext
|
public class AxisContext : MainComponentContext
|
||||||
{
|
{
|
||||||
public Orient orient;
|
public Orient orient;
|
||||||
|
/// <summary>
|
||||||
|
/// 坐标轴的起点X
|
||||||
|
/// </summary>
|
||||||
public float x;
|
public float x;
|
||||||
|
/// <summary>
|
||||||
|
/// 坐标轴的起点Y
|
||||||
|
/// </summary>
|
||||||
public float y;
|
public float y;
|
||||||
|
/// <summary>
|
||||||
|
/// 坐标轴原点X
|
||||||
|
/// </summary>
|
||||||
public float zeroX;
|
public float zeroX;
|
||||||
|
/// <summary>
|
||||||
|
/// 坐标轴原点Y
|
||||||
|
/// </summary>
|
||||||
public float zeroY;
|
public float zeroY;
|
||||||
public float width;
|
public float width;
|
||||||
public float height;
|
public float height;
|
||||||
@@ -34,6 +46,11 @@ namespace XCharts.Runtime
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public float offset;
|
public float offset;
|
||||||
public double minMaxRange;
|
public double minMaxRange;
|
||||||
|
/// <summary>
|
||||||
|
/// the tick value of value axis.
|
||||||
|
/// |数值轴时每个tick的数值。
|
||||||
|
/// </summary>
|
||||||
|
public double tickValue;
|
||||||
public float scaleWidth;
|
public float scaleWidth;
|
||||||
public float startAngle;
|
public float startAngle;
|
||||||
public double pointerValue;
|
public double pointerValue;
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ namespace XCharts
|
|||||||
return Vector3.zero;
|
return Vector3.zero;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected virtual float GetAxisLineXOrY()
|
internal virtual float GetAxisLineXOrY()
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -38,7 +38,7 @@ namespace XCharts
|
|||||||
return;
|
return;
|
||||||
if (!grid.context.isPointerEnter)
|
if (!grid.context.isPointerEnter)
|
||||||
{
|
{
|
||||||
axis.context.pointerValue = double.PositiveInfinity;
|
axis.context.pointerValue = double.NaN;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -171,31 +171,11 @@ namespace XCharts
|
|||||||
var grid = chart.GetChartComponent<GridCoord>(axis.gridIndex);
|
var grid = chart.GetChartComponent<GridCoord>(axis.gridIndex);
|
||||||
if (grid != null && axis is XAxis && axis.IsValue())
|
if (grid != null && axis is XAxis && axis.IsValue())
|
||||||
{
|
{
|
||||||
axis.context.offset = axis.context.minValue > 0 ?
|
axis.UpdateZeroOffset(grid.context.width);
|
||||||
0 :
|
|
||||||
(axis.context.maxValue < 0 ?
|
|
||||||
grid.context.width :
|
|
||||||
(float) (Math.Abs(axis.context.minValue) * (grid.context.width /
|
|
||||||
(Math.Abs(axis.context.minValue) + Math.Abs(axis.context.maxValue))))
|
|
||||||
);
|
|
||||||
axis.context.x = grid.context.x;
|
|
||||||
axis.context.y = GetAxisLineXOrY();
|
|
||||||
axis.context.zeroY = grid.context.y;
|
|
||||||
axis.context.zeroX = grid.context.x - (float) (axis.context.minValue * grid.context.width / axis.context.minMaxRange);
|
|
||||||
}
|
}
|
||||||
if (grid != null && axis is YAxis && axis.IsValue())
|
if (grid != null && axis is YAxis && axis.IsValue())
|
||||||
{
|
{
|
||||||
axis.context.offset = axis.context.minValue > 0 ?
|
axis.UpdateZeroOffset(grid.context.height);
|
||||||
0 :
|
|
||||||
(axis.context.maxValue < 0 ?
|
|
||||||
grid.context.height :
|
|
||||||
(float) (Math.Abs(axis.context.minValue) * (grid.context.height /
|
|
||||||
(Math.Abs(axis.context.minValue) + Math.Abs(axis.context.maxValue))))
|
|
||||||
);
|
|
||||||
axis.context.x = GetAxisLineXOrY();
|
|
||||||
axis.context.y = grid.context.y;
|
|
||||||
axis.context.zeroX = grid.context.x;
|
|
||||||
axis.context.zeroY = grid.context.y - (float) (axis.context.minValue * grid.context.height / axis.context.minMaxRange);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -260,6 +240,7 @@ namespace XCharts
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
var value = 0d;
|
var value = 0d;
|
||||||
|
axis.context.tickValue = tick;
|
||||||
if (Mathf.Approximately((float) (axis.context.minValue % tick), 0))
|
if (Mathf.Approximately((float) (axis.context.minValue % tick), 0))
|
||||||
{
|
{
|
||||||
value = axis.context.minValue;
|
value = axis.context.minValue;
|
||||||
@@ -581,24 +562,21 @@ namespace XCharts
|
|||||||
if (AxisHelper.NeedShowSplit(axis))
|
if (AxisHelper.NeedShowSplit(axis))
|
||||||
{
|
{
|
||||||
var size = AxisHelper.GetScaleNumber(axis, axisLength, dataZoom);
|
var size = AxisHelper.GetScaleNumber(axis, axisLength, dataZoom);
|
||||||
|
var tickWidth = axis.axisTick.GetWidth(theme.tickWidth);
|
||||||
var current = orient == Orient.Horizonal ?
|
var tickColor = axis.axisTick.GetColor(theme.tickColor);
|
||||||
startX :
|
var current = orient == Orient.Horizonal ? startX : startY;
|
||||||
startY;
|
var lastTickX = 0f;
|
||||||
|
var lastTickY = 0f;
|
||||||
|
var minorTickSplitNumber = axis.minorTick.splitNumber <= 0 ? 5 : axis.minorTick.splitNumber;
|
||||||
|
var minorTickDistance = axis.GetValueLength(axis.context.tickValue / minorTickSplitNumber, axisLength);
|
||||||
|
var minorTickColor = axis.minorTick.GetColor(theme.tickColor);
|
||||||
|
var minorTickWidth = axis.minorTick.GetWidth(theme.tickWidth);
|
||||||
|
var minorTickLength = axis.minorTick.GetLength(theme.tickLength * 0.6f);
|
||||||
for (int i = 0; i < size; i++)
|
for (int i = 0; i < size; i++)
|
||||||
{
|
{
|
||||||
var scaleWidth = AxisHelper.GetScaleWidth(axis, axisLength, i + 1, dataZoom);
|
var scaleWidth = AxisHelper.GetScaleWidth(axis, axisLength, i + 1, dataZoom);
|
||||||
if (i == 0 && (!axis.axisTick.showStartTick || axis.axisTick.alignWithLabel))
|
var hideTick = (i == 0 && (!axis.axisTick.showStartTick || axis.axisTick.alignWithLabel)) ||
|
||||||
{
|
(i == size - 1 && !axis.axisTick.showEndTick);
|
||||||
current += scaleWidth;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (i == size - 1 && !axis.axisTick.showEndTick)
|
|
||||||
{
|
|
||||||
current += scaleWidth;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (axis.axisTick.show)
|
if (axis.axisTick.show)
|
||||||
{
|
{
|
||||||
if (orient == Orient.Horizonal)
|
if (orient == Orient.Horizonal)
|
||||||
@@ -612,21 +590,44 @@ namespace XCharts
|
|||||||
|
|
||||||
var sY = 0f;
|
var sY = 0f;
|
||||||
var eY = 0f;
|
var eY = 0f;
|
||||||
|
var mY = 0f;
|
||||||
if ((axis.axisTick.inside && axis.IsBottom()) ||
|
if ((axis.axisTick.inside && axis.IsBottom()) ||
|
||||||
(!axis.axisTick.inside && axis.IsTop()))
|
(!axis.axisTick.inside && axis.IsTop()))
|
||||||
{
|
{
|
||||||
sY = startY + lineWidth;
|
sY = startY + lineWidth;
|
||||||
eY = sY + tickLength;
|
eY = sY + tickLength;
|
||||||
|
mY = sY + minorTickLength;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
sY = startY - lineWidth;
|
sY = startY - lineWidth;
|
||||||
eY = sY - tickLength;
|
eY = sY - tickLength;
|
||||||
|
mY = sY - minorTickLength;
|
||||||
}
|
}
|
||||||
|
if (!hideTick)
|
||||||
UGL.DrawLine(vh, new Vector3(pX, sY), new Vector3(pX, eY),
|
UGL.DrawLine(vh, new Vector3(pX, sY), new Vector3(pX, eY), tickWidth, tickColor);
|
||||||
axis.axisTick.GetWidth(theme.tickWidth),
|
if (axis.minorTick.show && i > 0 && minorTickDistance > 0)
|
||||||
axis.axisTick.GetColor(theme.tickColor));
|
{
|
||||||
|
if (lastTickX <= axis.context.zeroX || (i == 1 && pX > axis.context.zeroX))
|
||||||
|
{
|
||||||
|
var tickTotal = pX - minorTickDistance;
|
||||||
|
while (tickTotal > lastTickX)
|
||||||
|
{
|
||||||
|
UGL.DrawLine(vh, new Vector3(tickTotal, sY), new Vector3(tickTotal, mY), minorTickWidth, minorTickColor);
|
||||||
|
tickTotal -= minorTickDistance;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var tickTotal = lastTickX + minorTickDistance;
|
||||||
|
while (tickTotal < pX)
|
||||||
|
{
|
||||||
|
UGL.DrawLine(vh, new Vector3(tickTotal, sY), new Vector3(tickTotal, mY), minorTickWidth, minorTickColor);
|
||||||
|
tickTotal += minorTickDistance;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
lastTickX = pX;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -639,21 +640,46 @@ namespace XCharts
|
|||||||
|
|
||||||
var sX = 0f;
|
var sX = 0f;
|
||||||
var eX = 0f;
|
var eX = 0f;
|
||||||
|
var mX = 0f;
|
||||||
if ((axis.axisTick.inside && axis.IsLeft()) ||
|
if ((axis.axisTick.inside && axis.IsLeft()) ||
|
||||||
(!axis.axisTick.inside && axis.IsRight()))
|
(!axis.axisTick.inside && axis.IsRight()))
|
||||||
{
|
{
|
||||||
sX = startX + lineWidth;
|
sX = startX + lineWidth;
|
||||||
eX = sX + tickLength;
|
eX = sX + tickLength;
|
||||||
|
mX = sX + minorTickLength;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
sX = startX - lineWidth;
|
sX = startX - lineWidth;
|
||||||
eX = sX - tickLength;
|
eX = sX - tickLength;
|
||||||
|
mX = sX - minorTickLength;
|
||||||
}
|
}
|
||||||
|
if (!hideTick)
|
||||||
|
UGL.DrawLine(vh, new Vector3(sX, pY), new Vector3(eX, pY), tickWidth, tickColor);
|
||||||
|
if (axis.minorTick.show && i > 0 && minorTickDistance > 0)
|
||||||
|
{
|
||||||
|
if (lastTickY <= axis.context.zeroY || (i == 1 && pY > axis.context.zeroY))
|
||||||
|
{
|
||||||
|
var tickTotal = pY - minorTickDistance;
|
||||||
|
while (tickTotal > lastTickY)
|
||||||
|
{
|
||||||
|
|
||||||
UGL.DrawLine(vh, new Vector3(sX, pY), new Vector3(eX, pY),
|
UGL.DrawLine(vh, new Vector3(sX, tickTotal), new Vector3(mX, tickTotal), minorTickWidth, minorTickColor);
|
||||||
axis.axisTick.GetWidth(theme.tickWidth),
|
tickTotal -= minorTickDistance;
|
||||||
axis.axisTick.GetColor(theme.tickColor));
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var tickTotal = lastTickY + minorTickDistance;
|
||||||
|
while (tickTotal < pY)
|
||||||
|
{
|
||||||
|
|
||||||
|
UGL.DrawLine(vh, new Vector3(sX, tickTotal), new Vector3(mX, tickTotal), minorTickWidth, minorTickColor);
|
||||||
|
tickTotal += minorTickDistance;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
lastTickY = pY;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
current += scaleWidth;
|
current += scaleWidth;
|
||||||
@@ -707,9 +733,12 @@ namespace XCharts
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected void DrawAxisSplit(VertexHelper vh, AxisTheme theme, DataZoom dataZoom,
|
protected void DrawAxisSplit(VertexHelper vh, AxisTheme theme, DataZoom dataZoom,
|
||||||
Orient orient, float startX, float startY, float axisLength, float splitLength, Axis relativedAxis = null)
|
Orient orient, float startX, float startY, float axisLength, float splitLength,
|
||||||
|
Axis relativedAxis = null)
|
||||||
{
|
{
|
||||||
Axis axis = component;
|
Axis axis = component;
|
||||||
|
var axisLineWidth = axis.axisLine.GetWidth(theme.lineWidth);
|
||||||
|
splitLength -= axisLineWidth;
|
||||||
var lineColor = axis.splitLine.GetColor(theme.splitLineColor);
|
var lineColor = axis.splitLine.GetColor(theme.splitLineColor);
|
||||||
var lineWidth = axis.splitLine.GetWidth(theme.lineWidth);
|
var lineWidth = axis.splitLine.GetWidth(theme.lineWidth);
|
||||||
var lineType = axis.splitLine.GetType(theme.splitLineType);
|
var lineType = axis.splitLine.GetType(theme.splitLineType);
|
||||||
@@ -725,6 +754,14 @@ namespace XCharts
|
|||||||
var current = orient == Orient.Horizonal ?
|
var current = orient == Orient.Horizonal ?
|
||||||
startX :
|
startX :
|
||||||
startY;
|
startY;
|
||||||
|
|
||||||
|
var lastSplitX = 0f;
|
||||||
|
var lastSplitY = 0f;
|
||||||
|
var minorTickSplitNumber = axis.minorTick.splitNumber <= 0 ? 5 : axis.minorTick.splitNumber;
|
||||||
|
var minorTickDistance = axis.GetValueLength(axis.context.tickValue / minorTickSplitNumber, axisLength);
|
||||||
|
var minorSplitLineColor = axis.minorSplitLine.GetColor(theme.minorSplitLineColor);
|
||||||
|
var minorLineWidth = axis.minorSplitLine.GetWidth(theme.lineWidth);
|
||||||
|
var minorLineType = axis.minorSplitLine.GetType(theme.splitLineType);
|
||||||
for (int i = 0; i < size; i++)
|
for (int i = 0; i < size; i++)
|
||||||
{
|
{
|
||||||
var scaleWidth = AxisHelper.GetScaleWidth(axis, axisLength, axis.IsTime() ? i : i + 1, dataZoom);
|
var scaleWidth = AxisHelper.GetScaleWidth(axis, axisLength, axis.IsTime() ? i : i + 1, dataZoom);
|
||||||
@@ -760,7 +797,8 @@ namespace XCharts
|
|||||||
{
|
{
|
||||||
if (orient == Orient.Horizonal)
|
if (orient == Orient.Horizonal)
|
||||||
{
|
{
|
||||||
if (relativedAxis == null || !MathUtil.Approximately(current, GetAxisLineXOrY()))
|
if (relativedAxis == null || !MathUtil.Approximately(current, relativedAxis.context.x))
|
||||||
|
{
|
||||||
ChartDrawer.DrawLineStyle(vh,
|
ChartDrawer.DrawLineStyle(vh,
|
||||||
lineType,
|
lineType,
|
||||||
lineWidth,
|
lineWidth,
|
||||||
@@ -768,9 +806,47 @@ namespace XCharts
|
|||||||
new Vector3(current, startY + splitLength),
|
new Vector3(current, startY + splitLength),
|
||||||
lineColor);
|
lineColor);
|
||||||
}
|
}
|
||||||
|
if (axis.minorSplitLine.show && i > 0 && minorTickDistance > 0)
|
||||||
|
{
|
||||||
|
if (lastSplitX <= axis.context.zeroX || (i == 1 && current > axis.context.zeroX))
|
||||||
|
{
|
||||||
|
var tickTotal = current - minorTickDistance;
|
||||||
|
var count = 0;
|
||||||
|
while (tickTotal > lastSplitX && count < minorTickSplitNumber - 1)
|
||||||
|
{
|
||||||
|
ChartDrawer.DrawLineStyle(vh,
|
||||||
|
minorLineType,
|
||||||
|
minorLineWidth,
|
||||||
|
new Vector3(tickTotal, startY),
|
||||||
|
new Vector3(tickTotal, startY + splitLength),
|
||||||
|
minorSplitLineColor);
|
||||||
|
count++;
|
||||||
|
tickTotal -= minorTickDistance;
|
||||||
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (relativedAxis == null || !MathUtil.Approximately(current, GetAxisLineXOrY()))
|
var tickTotal = lastSplitX + minorTickDistance;
|
||||||
|
var count = 0;
|
||||||
|
while (tickTotal < current && count < minorTickSplitNumber - 1)
|
||||||
|
{
|
||||||
|
ChartDrawer.DrawLineStyle(vh,
|
||||||
|
minorLineType,
|
||||||
|
minorLineWidth,
|
||||||
|
new Vector3(tickTotal, startY),
|
||||||
|
new Vector3(tickTotal, startY + splitLength),
|
||||||
|
minorSplitLineColor);
|
||||||
|
count++;
|
||||||
|
tickTotal += minorTickDistance;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
lastSplitX = current;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (relativedAxis == null || !MathUtil.Approximately(current, relativedAxis.context.y))
|
||||||
|
{
|
||||||
ChartDrawer.DrawLineStyle(vh,
|
ChartDrawer.DrawLineStyle(vh,
|
||||||
lineType,
|
lineType,
|
||||||
lineWidth,
|
lineWidth,
|
||||||
@@ -778,6 +854,43 @@ namespace XCharts
|
|||||||
new Vector3(startX + splitLength, current),
|
new Vector3(startX + splitLength, current),
|
||||||
lineColor);
|
lineColor);
|
||||||
}
|
}
|
||||||
|
if (axis.minorSplitLine.show && i > 0 && minorTickDistance > 0)
|
||||||
|
{
|
||||||
|
if (lastSplitY <= axis.context.zeroY || (i == 1 && current > axis.context.zeroY))
|
||||||
|
{
|
||||||
|
var tickTotal = current - minorTickDistance;
|
||||||
|
var count = 0;
|
||||||
|
while (tickTotal > lastSplitY && count < minorTickSplitNumber - 1)
|
||||||
|
{
|
||||||
|
ChartDrawer.DrawLineStyle(vh,
|
||||||
|
minorLineType,
|
||||||
|
minorLineWidth,
|
||||||
|
new Vector3(startX, tickTotal),
|
||||||
|
new Vector3(startX + splitLength, tickTotal),
|
||||||
|
minorSplitLineColor);
|
||||||
|
count++;
|
||||||
|
tickTotal -= minorTickDistance;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var tickTotal = lastSplitY + minorTickDistance;
|
||||||
|
var count = 0;
|
||||||
|
while (tickTotal < current && count < minorTickSplitNumber - 1)
|
||||||
|
{
|
||||||
|
ChartDrawer.DrawLineStyle(vh,
|
||||||
|
minorLineType,
|
||||||
|
minorLineWidth,
|
||||||
|
new Vector3(startX, tickTotal),
|
||||||
|
new Vector3(startX + splitLength, tickTotal),
|
||||||
|
minorSplitLineColor);
|
||||||
|
count++;
|
||||||
|
tickTotal += minorTickDistance;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
lastSplitY = current;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
current += scaleWidth;
|
current += scaleWidth;
|
||||||
|
|||||||
@@ -338,8 +338,7 @@ namespace XCharts.Runtime
|
|||||||
axis.splitNumber = (minSplit > 0 && maxSplit > 0) ? (maxSplit + minSplit - 1) : (maxSplit + minSplit);
|
axis.splitNumber = (minSplit > 0 && maxSplit > 0) ? (maxSplit + minSplit - 1) : (maxSplit + minSplit);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (axis.type == Axis.AxisType.Time)
|
if (axis.type == Axis.AxisType.Time) { }
|
||||||
{ }
|
|
||||||
else if (axis.minMaxType == Axis.AxisMinMaxType.Custom)
|
else if (axis.minMaxType == Axis.AxisMinMaxType.Custom)
|
||||||
{
|
{
|
||||||
if (axis.min != 0 || axis.max != 0)
|
if (axis.min != 0 || axis.max != 0)
|
||||||
@@ -363,8 +362,7 @@ namespace XCharts.Runtime
|
|||||||
{
|
{
|
||||||
case Axis.AxisMinMaxType.Default:
|
case Axis.AxisMinMaxType.Default:
|
||||||
|
|
||||||
if (minValue == 0 && maxValue == 0)
|
if (minValue == 0 && maxValue == 0) { }
|
||||||
{ }
|
|
||||||
else if (minValue > 0 && maxValue > 0)
|
else if (minValue > 0 && maxValue > 0)
|
||||||
{
|
{
|
||||||
minValue = 0;
|
minValue = 0;
|
||||||
@@ -557,5 +555,43 @@ namespace XCharts.Runtime
|
|||||||
yDataHig;
|
yDataHig;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static float GetAxisXOrY(GridCoord grid, Axis axis, Axis relativedAxis)
|
||||||
|
{
|
||||||
|
if (axis is XAxis)
|
||||||
|
return GetXAxisXOrY(grid, axis, relativedAxis);
|
||||||
|
else if (axis is YAxis)
|
||||||
|
return GetYAxisXOrY(grid, axis, relativedAxis);
|
||||||
|
else if (axis is SingleAxis)
|
||||||
|
return axis.context.y + axis.offset;
|
||||||
|
else if (axis is ParallelAxis)
|
||||||
|
return axis.context.y;
|
||||||
|
else
|
||||||
|
return axis.context.x;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static float GetXAxisXOrY(GridCoord grid, Axis xAxis, Axis relativedAxis)
|
||||||
|
{
|
||||||
|
var startY = grid.context.y + xAxis.offset;
|
||||||
|
if (xAxis.IsTop())
|
||||||
|
startY += grid.context.height;
|
||||||
|
else if (xAxis.axisLine.onZero && relativedAxis.IsValue() && relativedAxis.gridIndex == xAxis.gridIndex)
|
||||||
|
startY += relativedAxis.context.offset;
|
||||||
|
return startY;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static float GetYAxisXOrY(GridCoord grid, Axis yAxis, Axis relativedAxis)
|
||||||
|
{
|
||||||
|
var startX = grid.context.x + yAxis.offset;
|
||||||
|
if (yAxis.IsRight())
|
||||||
|
startX += grid.context.width;
|
||||||
|
else if (yAxis.axisLine.onZero && relativedAxis.IsValue() && relativedAxis.gridIndex == yAxis.gridIndex)
|
||||||
|
startX += relativedAxis.context.offset;
|
||||||
|
return startX;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void UpdateAxisOffset(){
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
61
Runtime/Component/Axis/AxisMinorSplitLine.cs
Normal file
61
Runtime/Component/Axis/AxisMinorSplitLine.cs
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
using System;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace XCharts.Runtime
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Minor split line of axis in grid area.
|
||||||
|
/// |坐标轴在 grid 区域中的次分隔线。次分割线会对齐次刻度线 minorTick。
|
||||||
|
/// </summary>
|
||||||
|
[Serializable]
|
||||||
|
public class AxisMinorSplitLine : BaseLine
|
||||||
|
{
|
||||||
|
[SerializeField] private float m_Distance;
|
||||||
|
[SerializeField] private bool m_AutoColor;
|
||||||
|
|
||||||
|
/// <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; } }
|
||||||
|
|
||||||
|
public override bool vertsDirty { get { return m_VertsDirty || m_LineStyle.anyDirty; } }
|
||||||
|
public override void ClearVerticesDirty()
|
||||||
|
{
|
||||||
|
base.ClearVerticesDirty();
|
||||||
|
m_LineStyle.ClearVerticesDirty();
|
||||||
|
}
|
||||||
|
public static AxisMinorSplitLine defaultMinorSplitLine
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return new AxisMinorSplitLine()
|
||||||
|
{
|
||||||
|
m_Show = false,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public AxisMinorSplitLine Clone()
|
||||||
|
{
|
||||||
|
var axisSplitLine = new AxisMinorSplitLine();
|
||||||
|
axisSplitLine.show = show;
|
||||||
|
axisSplitLine.distance = distance;
|
||||||
|
axisSplitLine.autoColor = autoColor;
|
||||||
|
axisSplitLine.lineStyle = lineStyle.Clone();
|
||||||
|
return axisSplitLine;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Copy(AxisMinorSplitLine splitLine)
|
||||||
|
{
|
||||||
|
base.Copy(splitLine);
|
||||||
|
distance = splitLine.distance;
|
||||||
|
autoColor = splitLine.autoColor;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
11
Runtime/Component/Axis/AxisMinorSplitLine.cs.meta
Normal file
11
Runtime/Component/Axis/AxisMinorSplitLine.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 7be5a277811c64887a121d7711929aab
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
63
Runtime/Component/Axis/AxisMinorTick.cs
Normal file
63
Runtime/Component/Axis/AxisMinorTick.cs
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace XCharts.Runtime
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Settings related to axis minor tick.
|
||||||
|
/// |坐标轴次刻度相关设置。注意:次刻度无法再类目轴中使用。
|
||||||
|
/// </summary>
|
||||||
|
[System.Serializable]
|
||||||
|
[Since("v3.2.0")]
|
||||||
|
public class AxisMinorTick : BaseLine
|
||||||
|
{
|
||||||
|
[SerializeField] protected int m_SplitNumber = 5;
|
||||||
|
[SerializeField] private bool m_AutoColor;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Number of segments that the axis is split into.
|
||||||
|
/// |分隔线之间分割的刻度数。
|
||||||
|
/// </summary>
|
||||||
|
public int splitNumber
|
||||||
|
{
|
||||||
|
get { return m_SplitNumber; }
|
||||||
|
set { if (PropertyUtil.SetStruct(ref m_SplitNumber, value)) SetAllDirty(); }
|
||||||
|
}
|
||||||
|
public bool autoColor { get { return m_AutoColor; } set { m_AutoColor = value; } }
|
||||||
|
|
||||||
|
public override bool vertsDirty { get { return m_VertsDirty || m_LineStyle.anyDirty; } }
|
||||||
|
public override void ClearVerticesDirty()
|
||||||
|
{
|
||||||
|
base.ClearVerticesDirty();
|
||||||
|
m_LineStyle.ClearVerticesDirty();
|
||||||
|
}
|
||||||
|
public static AxisMinorTick defaultMinorTick
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
var tick = new AxisMinorTick
|
||||||
|
{
|
||||||
|
m_Show = false
|
||||||
|
};
|
||||||
|
return tick;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public AxisMinorTick Clone()
|
||||||
|
{
|
||||||
|
var axisTick = new AxisMinorTick();
|
||||||
|
axisTick.show = show;
|
||||||
|
axisTick.splitNumber = splitNumber;
|
||||||
|
axisTick.autoColor = autoColor;
|
||||||
|
axisTick.lineStyle = lineStyle.Clone();
|
||||||
|
return axisTick;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Copy(AxisMinorTick axisTick)
|
||||||
|
{
|
||||||
|
show = axisTick.show;
|
||||||
|
splitNumber = axisTick.splitNumber;
|
||||||
|
autoColor = axisTick.autoColor;
|
||||||
|
lineStyle.Copy(axisTick.lineStyle);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
11
Runtime/Component/Axis/AxisMinorTick.cs.meta
Normal file
11
Runtime/Component/Axis/AxisMinorTick.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 3bea237f1eccc409ba2635e6f4ca609c
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -116,7 +116,6 @@ namespace XCharts.Runtime
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
var dataZoom = chart.GetDataZoomOfAxis(axis);
|
var dataZoom = chart.GetDataZoomOfAxis(axis);
|
||||||
|
|
||||||
DrawAxisSplit(vh, chart.theme.axis, dataZoom,
|
DrawAxisSplit(vh, chart.theme.axis, dataZoom,
|
||||||
m_Orient,
|
m_Orient,
|
||||||
axis.context.x,
|
axis.context.x,
|
||||||
@@ -159,7 +158,7 @@ namespace XCharts.Runtime
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override float GetAxisLineXOrY()
|
internal override float GetAxisLineXOrY()
|
||||||
{
|
{
|
||||||
return component.context.y;
|
return component.context.y;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -117,7 +117,7 @@ namespace XCharts.Runtime
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override float GetAxisLineXOrY()
|
internal override float GetAxisLineXOrY()
|
||||||
{
|
{
|
||||||
return component.context.y + component.offset;
|
return component.context.y + component.offset;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
|
|||||||
@@ -15,17 +15,32 @@ namespace XCharts.Runtime
|
|||||||
|
|
||||||
public override void Update()
|
public override void Update()
|
||||||
{
|
{
|
||||||
|
|
||||||
UpdateAxisMinMaxValue(component.index, component);
|
UpdateAxisMinMaxValue(component.index, component);
|
||||||
UpdatePointerValue(component);
|
UpdatePointerValue(component);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void DrawBase(VertexHelper vh)
|
public override void DrawBase(VertexHelper vh)
|
||||||
{
|
{
|
||||||
|
UpdatePosition(component);
|
||||||
DrawXAxisSplit(vh, component);
|
DrawXAxisSplit(vh, component);
|
||||||
DrawXAxisLine(vh, component);
|
DrawXAxisLine(vh, component);
|
||||||
DrawXAxisTick(vh, component);
|
DrawXAxisTick(vh, component);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void UpdatePosition(XAxis axis)
|
||||||
|
{
|
||||||
|
var grid = chart.GetChartComponent<GridCoord>(axis.gridIndex);
|
||||||
|
if (grid != null && axis is XAxis && axis.IsValue())
|
||||||
|
{
|
||||||
|
var relativedAxis = chart.GetChartComponent<YAxis>(axis.gridIndex);
|
||||||
|
axis.context.x = grid.context.x;
|
||||||
|
axis.context.y = AxisHelper.GetXAxisXOrY(grid, axis, relativedAxis);
|
||||||
|
axis.context.zeroY = grid.context.y;
|
||||||
|
axis.context.zeroX = grid.context.x + axis.context.offset;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void InitXAxis(XAxis xAxis)
|
private void InitXAxis(XAxis xAxis)
|
||||||
{
|
{
|
||||||
var theme = chart.theme;
|
var theme = chart.theme;
|
||||||
@@ -137,16 +152,9 @@ namespace XCharts.Runtime
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override float GetAxisLineXOrY()
|
internal override float GetAxisLineXOrY()
|
||||||
{
|
{
|
||||||
var xAxis = component;
|
return component.context.y;
|
||||||
var grid = chart.GetChartComponent<GridCoord>(xAxis.gridIndex);
|
|
||||||
var startY = grid.context.y + xAxis.offset;
|
|
||||||
if (xAxis.IsTop())
|
|
||||||
startY += grid.context.height;
|
|
||||||
else
|
|
||||||
startY += ComponentHelper.GetXAxisOnZeroOffset(chart.components, xAxis);
|
|
||||||
return startY;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -21,11 +21,25 @@ namespace XCharts.Runtime
|
|||||||
|
|
||||||
public override void DrawBase(VertexHelper vh)
|
public override void DrawBase(VertexHelper vh)
|
||||||
{
|
{
|
||||||
|
UpdatePosition(component);
|
||||||
DrawYAxisSplit(vh, component.index, component);
|
DrawYAxisSplit(vh, component.index, component);
|
||||||
DrawYAxisLine(vh, component.index, component);
|
DrawYAxisLine(vh, component.index, component);
|
||||||
DrawYAxisTick(vh, component.index, component);
|
DrawYAxisTick(vh, component.index, component);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void UpdatePosition(YAxis axis)
|
||||||
|
{
|
||||||
|
var grid = chart.GetChartComponent<GridCoord>(axis.gridIndex);
|
||||||
|
if (grid != null && axis.IsValue())
|
||||||
|
{
|
||||||
|
var relativedAxis = chart.GetChartComponent<XAxis>(axis.gridIndex);
|
||||||
|
axis.context.x = AxisHelper.GetYAxisXOrY(grid, axis, relativedAxis);
|
||||||
|
axis.context.y = grid.context.y;
|
||||||
|
axis.context.zeroX = axis.context.x;
|
||||||
|
axis.context.zeroY = axis.context.y + axis.context.offset;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void InitYAxis(YAxis yAxis)
|
private void InitYAxis(YAxis yAxis)
|
||||||
{
|
{
|
||||||
var theme = chart.theme;
|
var theme = chart.theme;
|
||||||
@@ -135,16 +149,9 @@ namespace XCharts.Runtime
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override float GetAxisLineXOrY()
|
internal override float GetAxisLineXOrY()
|
||||||
{
|
{
|
||||||
var yAxis = component;
|
return component.context.x;
|
||||||
var grid = chart.GetChartComponent<GridCoord>(yAxis.gridIndex);
|
|
||||||
var startX = grid.context.x + yAxis.offset;
|
|
||||||
if (yAxis.IsRight())
|
|
||||||
startX += grid.context.width;
|
|
||||||
else
|
|
||||||
startX += ComponentHelper.GetYAxisOnZeroOffset(chart.components, yAxis);
|
|
||||||
return startX;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -18,6 +18,7 @@ namespace XCharts.Runtime
|
|||||||
[SerializeField] protected float m_SplitLineWidth = 1f;
|
[SerializeField] protected float m_SplitLineWidth = 1f;
|
||||||
[SerializeField] protected float m_SplitLineLength = 0f;
|
[SerializeField] protected float m_SplitLineLength = 0f;
|
||||||
[SerializeField] protected Color32 m_SplitLineColor;
|
[SerializeField] protected Color32 m_SplitLineColor;
|
||||||
|
[SerializeField] protected Color32 m_MinorSplitLineColor;
|
||||||
[SerializeField] protected float m_TickWidth = 1f;
|
[SerializeField] protected float m_TickWidth = 1f;
|
||||||
[SerializeField] protected float m_TickLength = 5f;
|
[SerializeField] protected float m_TickLength = 5f;
|
||||||
[SerializeField] protected Color32 m_TickColor;
|
[SerializeField] protected Color32 m_TickColor;
|
||||||
@@ -87,7 +88,7 @@ namespace XCharts.Runtime
|
|||||||
set { if (PropertyUtil.SetStruct(ref m_SplitLineLength, value)) SetVerticesDirty(); }
|
set { if (PropertyUtil.SetStruct(ref m_SplitLineLength, value)) SetVerticesDirty(); }
|
||||||
}
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// the color of line.
|
/// the color of split line.
|
||||||
/// |分割线线颜色。
|
/// |分割线线颜色。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public Color32 splitLineColor
|
public Color32 splitLineColor
|
||||||
@@ -96,6 +97,15 @@ namespace XCharts.Runtime
|
|||||||
set { if (PropertyUtil.SetColor(ref m_SplitLineColor, value)) SetVerticesDirty(); }
|
set { if (PropertyUtil.SetColor(ref m_SplitLineColor, value)) SetVerticesDirty(); }
|
||||||
}
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
/// the color of minor split line.
|
||||||
|
/// |次分割线线颜色。
|
||||||
|
/// </summary>
|
||||||
|
public Color32 minorSplitLineColor
|
||||||
|
{
|
||||||
|
get { return ChartHelper.IsClearColor(m_MinorSplitLineColor) ? ColorUtil.GetColor("#F4F7FD") : m_MinorSplitLineColor; }
|
||||||
|
set { if (PropertyUtil.SetColor(ref m_MinorSplitLineColor, value)) SetVerticesDirty(); }
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
/// the length of tick.
|
/// the length of tick.
|
||||||
/// |刻度线线长。
|
/// |刻度线线长。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -146,33 +156,36 @@ namespace XCharts.Runtime
|
|||||||
switch (theme)
|
switch (theme)
|
||||||
{
|
{
|
||||||
case ThemeType.Default:
|
case ThemeType.Default:
|
||||||
m_LineColor = ColorUtil.GetColor("#514D4D");
|
m_LineColor = ColorUtil.GetColor("#6E7079");
|
||||||
m_TickColor = ColorUtil.GetColor("#514D4D");
|
m_TickColor = ColorUtil.GetColor("#6E7079");
|
||||||
m_SplitLineColor = ColorUtil.GetColor("#51515120");
|
m_SplitLineColor = ColorUtil.GetColor("#E0E6F1");
|
||||||
|
m_MinorSplitLineColor = ColorUtil.GetColor("#F4F7FD");
|
||||||
m_SplitAreaColors = new List<Color32>
|
m_SplitAreaColors = new List<Color32>
|
||||||
{
|
{
|
||||||
new Color32(250, 250, 250, 77),
|
new Color32(250, 250, 250, 51),
|
||||||
new Color32(200, 200, 200, 77)
|
new Color32(210, 219, 238, 51)
|
||||||
};
|
};
|
||||||
break;
|
break;
|
||||||
case ThemeType.Light:
|
case ThemeType.Light:
|
||||||
m_LineColor = ColorUtil.GetColor("#514D4D");
|
m_LineColor = ColorUtil.GetColor("#6E7079");
|
||||||
m_TickColor = ColorUtil.GetColor("#514D4D");
|
m_TickColor = ColorUtil.GetColor("#6E7079");
|
||||||
m_SplitLineColor = ColorUtil.GetColor("#51515120");
|
m_SplitLineColor = ColorUtil.GetColor("#E0E6F1");
|
||||||
|
m_MinorSplitLineColor = ColorUtil.GetColor("#F4F7FD");
|
||||||
m_SplitAreaColors = new List<Color32>
|
m_SplitAreaColors = new List<Color32>
|
||||||
{
|
{
|
||||||
new Color32(250, 250, 250, 77),
|
new Color32(250, 250, 250, 51),
|
||||||
new Color32(200, 200, 200, 77)
|
new Color32(210, 219, 238, 51)
|
||||||
};
|
};
|
||||||
break;
|
break;
|
||||||
case ThemeType.Dark:
|
case ThemeType.Dark:
|
||||||
m_LineColor = ColorUtil.GetColor("#B9B8CE");
|
m_LineColor = ColorUtil.GetColor("#6E7079");
|
||||||
m_TickColor = ColorUtil.GetColor("#B9B8CE");
|
m_TickColor = ColorUtil.GetColor("#6E7079");
|
||||||
m_SplitLineColor = ColorUtil.GetColor("#484753");
|
m_SplitLineColor = ColorUtil.GetColor("#E0E6F1");
|
||||||
|
m_MinorSplitLineColor = ColorUtil.GetColor("#F4F7FD");
|
||||||
m_SplitAreaColors = new List<Color32>
|
m_SplitAreaColors = new List<Color32>
|
||||||
{
|
{
|
||||||
new Color32(255, 255, 255, (byte) (0.02f * 255)),
|
new Color32(255, 255, 255, (byte) (0.02f * 255)),
|
||||||
new Color32(255, 255, 255, (byte) (0.05f * 255))
|
new Color32(210, 219, 238, (byte) (0.02f * 255))
|
||||||
};
|
};
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -199,29 +212,25 @@ namespace XCharts.Runtime
|
|||||||
[Serializable]
|
[Serializable]
|
||||||
public class AxisTheme : BaseAxisTheme
|
public class AxisTheme : BaseAxisTheme
|
||||||
{
|
{
|
||||||
public AxisTheme(ThemeType theme) : base(theme)
|
public AxisTheme(ThemeType theme) : base(theme) { }
|
||||||
{ }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[Serializable]
|
[Serializable]
|
||||||
public class RadiusAxisTheme : BaseAxisTheme
|
public class RadiusAxisTheme : BaseAxisTheme
|
||||||
{
|
{
|
||||||
public RadiusAxisTheme(ThemeType theme) : base(theme)
|
public RadiusAxisTheme(ThemeType theme) : base(theme) { }
|
||||||
{ }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[Serializable]
|
[Serializable]
|
||||||
public class AngleAxisTheme : BaseAxisTheme
|
public class AngleAxisTheme : BaseAxisTheme
|
||||||
{
|
{
|
||||||
public AngleAxisTheme(ThemeType theme) : base(theme)
|
public AngleAxisTheme(ThemeType theme) : base(theme) { }
|
||||||
{ }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[Serializable]
|
[Serializable]
|
||||||
public class PolarAxisTheme : BaseAxisTheme
|
public class PolarAxisTheme : BaseAxisTheme
|
||||||
{
|
{
|
||||||
public PolarAxisTheme(ThemeType theme) : base(theme)
|
public PolarAxisTheme(ThemeType theme) : base(theme) { }
|
||||||
{ }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[Serializable]
|
[Serializable]
|
||||||
|
|||||||
@@ -1,11 +1,14 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
namespace XCharts.Runtime
|
namespace XCharts.Runtime
|
||||||
{
|
{
|
||||||
public static class ColorUtil
|
public static class ColorUtil
|
||||||
{
|
{
|
||||||
|
private static Dictionary<string, Color32> s_ColorCached = new Dictionary<string, Color32>();
|
||||||
public static readonly Color32 clearColor32 = new Color32(0, 0, 0, 0);
|
public static readonly Color32 clearColor32 = new Color32(0, 0, 0, 0);
|
||||||
public static readonly Vector2 zeroVector2 = Vector2.zero;
|
public static readonly Vector2 zeroVector2 = Vector2.zero;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Convert the html string to color.
|
/// Convert the html string to color.
|
||||||
/// |将字符串颜色值转成Color。
|
/// |将字符串颜色值转成Color。
|
||||||
@@ -14,9 +17,14 @@ namespace XCharts.Runtime
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public static Color32 GetColor(string hexColorStr)
|
public static Color32 GetColor(string hexColorStr)
|
||||||
{
|
{
|
||||||
|
if (s_ColorCached.ContainsKey(hexColorStr))
|
||||||
|
{
|
||||||
|
return s_ColorCached[hexColorStr];
|
||||||
|
}
|
||||||
Color color;
|
Color color;
|
||||||
ColorUtility.TryParseHtmlString(hexColorStr, out color);
|
ColorUtility.TryParseHtmlString(hexColorStr, out color);
|
||||||
return (Color32) color;
|
s_ColorCached[hexColorStr] = (Color32) color;
|
||||||
|
return s_ColorCached[hexColorStr];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user