重构代码,将与绘制相关的Color改为Color32,减少隐式转换

This commit is contained in:
monitor1394
2020-08-23 14:31:26 +08:00
parent a831f747cc
commit c1d38b0f81
30 changed files with 323 additions and 263 deletions

View File

@@ -41,12 +41,12 @@ namespace XCharts
}
[SerializeField] private bool m_Show;
[SerializeField] private AreaOrigin m_Origin;
[SerializeField] private Color m_Color;
[SerializeField] private Color m_ToColor;
[SerializeField] private Color32 m_Color;
[SerializeField] private Color32 m_ToColor;
[SerializeField] [Range(0, 1)] private float m_Opacity;
[SerializeField] private bool m_TooltipHighlight;
[SerializeField] private Color m_HighlightColor;
[SerializeField] private Color m_HighlightToColor;
[SerializeField] private Color32 m_HighlightColor;
[SerializeField] private Color32 m_HighlightToColor;
/// <summary>
/// Set this to false to prevent the areafrom showing.
@@ -70,7 +70,7 @@ namespace XCharts
/// the color of area,default use serie color.
/// 区域填充的颜色如果toColor不是默认值则表示渐变色的起点颜色。
/// </summary>
public Color color
public Color32 color
{
get { return m_Color; }
set { if (PropertyUtility.SetColor(ref m_Color, value)) SetVerticesDirty(); }
@@ -79,7 +79,7 @@ namespace XCharts
/// Gradient color, start color to toColor.
/// 渐变色的终点颜色。
/// </summary>
public Color toColor
public Color32 toColor
{
get { return m_ToColor; }
set { if (PropertyUtility.SetColor(ref m_ToColor, value)) SetVerticesDirty(); }
@@ -105,7 +105,7 @@ namespace XCharts
/// the color of area,default use serie color.
/// 高亮时区域填充的颜色如果highlightToColor不是默认值则表示渐变色的起点颜色。
/// </summary>
public Color highlightColor
public Color32 highlightColor
{
get { return m_HighlightColor; }
set { if (PropertyUtility.SetColor(ref m_HighlightColor, value)) SetVerticesDirty(); }
@@ -114,7 +114,7 @@ namespace XCharts
/// Gradient color, start highlightColor to highlightToColor.
/// 高亮时渐变色的终点颜色。
/// </summary>
public Color highlightToColor
public Color32 highlightToColor
{
get { return m_HighlightToColor; }
set { if (PropertyUtility.SetColor(ref m_HighlightToColor, value)) SetVerticesDirty(); }

View File

@@ -19,7 +19,7 @@ namespace XCharts
public class AxisSplitArea : SubComponent
{
[SerializeField] private bool m_Show;
[SerializeField] private List<Color> m_Color;
[SerializeField] private List<Color32> m_Color;
/// <summary>
/// Set this to true to show the splitArea.
@@ -36,7 +36,7 @@ namespace XCharts
/// Dark and light colors in turns are used by default.
/// 分隔区域颜色。分隔区域会按数组中颜色的顺序依次循环设置颜色。默认是一个深浅的间隔色。
/// </summary>
public List<Color> color
public List<Color32> color
{
get { return m_Color; }
set { if (value != null) { m_Color = value; SetVerticesDirty(); } }
@@ -49,7 +49,7 @@ namespace XCharts
return new AxisSplitArea()
{
m_Show = false,
m_Color = new List<Color>(){
m_Color = new List<Color32>(){
new Color32(250,250,250,77),
new Color32(200,200,200,77)
}
@@ -61,7 +61,7 @@ namespace XCharts
{
var axisSplitArea = new AxisSplitArea();
axisSplitArea.show = show;
axisSplitArea.color = new List<Color>();
axisSplitArea.color = new List<Color32>();
ChartHelper.CopyList(axisSplitArea.color, color);
return axisSplitArea;
}
@@ -73,7 +73,7 @@ namespace XCharts
ChartHelper.CopyList(color, splitArea.color);
}
public Color getColor(int index)
public Color32 getColor(int index)
{
var i = index % color.Count;
return color[i];

View File

@@ -77,18 +77,16 @@ namespace XCharts
lineStyle.Copy(splitLine.lineStyle);
}
internal Color GetColor(ThemeInfo theme)
internal Color32 GetColor(ThemeInfo theme)
{
if (!ChartHelper.IsClearColor(lineStyle.color))
{
var color = lineStyle.color;
color.a *= lineStyle.opacity;
return color;
return lineStyle.GetColor();
}
else
{
var color = (Color)theme.axisSplitLineColor;
color.a *= lineStyle.opacity;
var color = theme.axisSplitLineColor;
color.a *= (byte)(color.a * lineStyle.opacity);
return color;
}
}

View File

@@ -24,7 +24,7 @@ namespace XCharts
public class StageColor
{
[SerializeField] private float m_Percent;
[SerializeField] private Color m_Color;
[SerializeField] private Color32 m_Color;
/// <summary>
/// 结束位置百分比。
/// </summary>
@@ -32,9 +32,9 @@ namespace XCharts
/// <summary>
/// 颜色。
/// </summary>
public Color color { get { return m_Color; } set { m_Color = value; } }
public Color32 color { get { return m_Color; } set { m_Color = value; } }
public StageColor(float percent, Color color)
public StageColor(float percent, Color32 color)
{
m_Percent = percent;
m_Color = color;
@@ -43,8 +43,8 @@ namespace XCharts
[SerializeField] private bool m_Show = true;
[SerializeField] private float m_Width = 15f;
[SerializeField] private float m_Opacity = 1f;
[SerializeField] private Color m_BarColor;
[SerializeField] private Color m_BarBackgroundColor = new Color32(200, 200, 200, 255);
[SerializeField] private Color32 m_BarColor;
[SerializeField] private Color32 m_BarBackgroundColor = new Color32(200, 200, 200, 255);
[SerializeField]
private List<StageColor> m_StageColor = new List<StageColor>()
{
@@ -71,11 +71,11 @@ namespace XCharts
/// <summary>
/// 进度条颜色。
/// </summary>
public Color barColor { get { return m_BarColor; } set { m_BarColor = value; } }
public Color32 barColor { get { return m_BarColor; } set { m_BarColor = value; } }
/// <summary>
/// 进度条背景颜色。
/// </summary>
public Color barBackgroundColor { get { return m_BarBackgroundColor; } set { m_BarBackgroundColor = value; } }
public Color32 barBackgroundColor { get { return m_BarBackgroundColor; } set { m_BarBackgroundColor = value; } }
/// <summary>
/// 阶段颜色。
/// </summary>
@@ -183,27 +183,27 @@ namespace XCharts
public List<Vector3> runtimeLabelPosition = new List<Vector3>();
private List<LabelObject> m_RuntimeLabelList = new List<LabelObject>();
internal Color GetAxisLineColor(ThemeInfo theme, int index)
internal Color32 GetAxisLineColor(ThemeInfo theme, int index)
{
var color = !ChartHelper.IsClearColor(axisLine.barColor) ? axisLine.barColor : (Color)theme.GetColor(index);
color.a *= axisLine.opacity;
var color = !ChartHelper.IsClearColor(axisLine.barColor) ? axisLine.barColor : theme.GetColor(index);
ChartHelper.SetColorOpacity(ref color, axisLine.opacity);
return color;
}
internal Color GetAxisLineBackgroundColor(ThemeInfo theme, int index)
internal Color32 GetAxisLineBackgroundColor(ThemeInfo theme, int index)
{
var color = !ChartHelper.IsClearColor(axisLine.barBackgroundColor) ? axisLine.barBackgroundColor : Color.grey;
color.a *= axisLine.opacity;
var color = !ChartHelper.IsClearColor(axisLine.barBackgroundColor) ? axisLine.barBackgroundColor : ChartConst.greyColor32;
ChartHelper.SetColorOpacity(ref color, axisLine.opacity);
return color;
}
internal Color GetSplitLineColor(ThemeInfo theme, int serieIndex, float angle)
internal Color32 GetSplitLineColor(ThemeInfo theme, int serieIndex, float angle)
{
Color color;
Color32 color;
if (!ChartHelper.IsClearColor(splitLine.lineStyle.color))
{
color = splitLine.lineStyle.color;
color.a *= splitLine.lineStyle.opacity;
ChartHelper.SetColorOpacity(ref color, splitLine.lineStyle.opacity);
return color;
}
for (int i = 0; i < runtimeStageAngle.Count; i++)
@@ -211,22 +211,22 @@ namespace XCharts
if (angle < runtimeStageAngle[i])
{
color = axisLine.stageColor[i].color;
color.a *= splitLine.lineStyle.opacity;
ChartHelper.SetColorOpacity(ref color, splitLine.lineStyle.opacity);
return color;
}
}
color = theme.GetColor(serieIndex);
color.a *= splitLine.lineStyle.opacity;
ChartHelper.SetColorOpacity(ref color, splitLine.lineStyle.opacity);
return color;
}
internal Color GetAxisTickColor(ThemeInfo theme, int serieIndex, float angle)
internal Color32 GetAxisTickColor(ThemeInfo theme, int serieIndex, float angle)
{
Color color;
Color32 color;
if (!ChartHelper.IsClearColor(axisTick.lineStyle.color))
{
color = axisTick.lineStyle.color;
color.a *= axisTick.lineStyle.opacity;
ChartHelper.SetColorOpacity(ref color, axisTick.lineStyle.opacity);
return color;
}
for (int i = 0; i < runtimeStageAngle.Count; i++)
@@ -234,35 +234,33 @@ namespace XCharts
if (angle < runtimeStageAngle[i])
{
color = axisLine.stageColor[i].color;
color.a *= axisTick.lineStyle.opacity;
ChartHelper.SetColorOpacity(ref color, axisTick.lineStyle.opacity);
return color;
}
}
color = theme.GetColor(serieIndex);
color.a *= axisTick.lineStyle.opacity;
ChartHelper.SetColorOpacity(ref color, axisTick.lineStyle.opacity);
return color;
}
internal Color GetPointerColor(ThemeInfo theme, int serieIndex, float angle, ItemStyle itemStyle)
internal Color32 GetPointerColor(ThemeInfo theme, int serieIndex, float angle, ItemStyle itemStyle)
{
Color color;
Color32 color;
if (!ChartHelper.IsClearColor(itemStyle.color))
{
color = itemStyle.color;
color.a *= itemStyle.opacity;
return color;
return itemStyle.GetColor();
}
for (int i = 0; i < runtimeStageAngle.Count; i++)
{
if (angle < runtimeStageAngle[i])
{
color = axisLine.stageColor[i].color;
color.a *= itemStyle.opacity;
ChartHelper.SetColorOpacity(ref color, itemStyle.opacity);
return color;
}
}
color = theme.GetColor(serieIndex);
color.a *= itemStyle.opacity;
ChartHelper.SetColorOpacity(ref color, itemStyle.opacity);
return color;
}

View File

@@ -36,16 +36,16 @@ namespace XCharts
Dotted
}
[SerializeField] private bool m_Show = false;
[SerializeField] private Color m_Color;
[SerializeField] private Color m_ToColor;
[SerializeField] private Color m_ToColor2;
[SerializeField] private Color m_BackgroundColor;
[SerializeField] private Color32 m_Color;
[SerializeField] private Color32 m_ToColor;
[SerializeField] private Color32 m_ToColor2;
[SerializeField] private Color32 m_BackgroundColor;
[SerializeField] private float m_BackgroundWidth;
[SerializeField] private Color m_CenterColor;
[SerializeField] private Color32 m_CenterColor;
[SerializeField] private float m_CenterGap;
[SerializeField] private Type m_BorderType = Type.Solid;
[SerializeField] private float m_BorderWidth = 0;
[SerializeField] private Color m_BorderColor;
[SerializeField] private Color32 m_BorderColor;
[SerializeField] [Range(0, 1)] private float m_Opacity = 1;
[SerializeField] private string m_TooltipFormatter;
[SerializeField] private string m_NumericFormatter = "";
@@ -89,7 +89,7 @@ namespace XCharts
/// <summary>
/// 数据项颜色。
/// </summary>
public Color color
public Color32 color
{
get { return m_Color; }
set { if (PropertyUtility.SetColor(ref m_Color, value)) SetVerticesDirty(); }
@@ -98,7 +98,7 @@ namespace XCharts
/// Gradient color1.
/// 渐变色的颜色1。
/// </summary>
public Color toColor
public Color32 toColor
{
get { return m_ToColor; }
set { if (PropertyUtility.SetColor(ref m_ToColor, value)) SetVerticesDirty(); }
@@ -107,7 +107,7 @@ namespace XCharts
/// Gradient color2.Only valid in line diagrams.
/// 渐变色的颜色2。只在折线图中有效。
/// </summary>
public Color toColor2
public Color32 toColor2
{
get { return m_ToColor2; }
set { if (PropertyUtility.SetColor(ref m_ToColor2, value)) SetVerticesDirty(); }
@@ -115,7 +115,7 @@ namespace XCharts
/// <summary>
/// 数据项背景颜色。
/// </summary>
public Color backgroundColor
public Color32 backgroundColor
{
get { return m_BackgroundColor; }
set { if (PropertyUtility.SetColor(ref m_BackgroundColor, value)) SetVerticesDirty(); }
@@ -123,7 +123,7 @@ namespace XCharts
/// <summary>
/// 中心区域颜色。
/// </summary>
public Color centerColor
public Color32 centerColor
{
get { return m_CenterColor; }
set { if (PropertyUtility.SetColor(ref m_CenterColor, value)) SetVerticesDirty(); }
@@ -155,7 +155,7 @@ namespace XCharts
/// <summary>
/// 边框的颜色。
/// </summary>
public Color borderColor
public Color32 borderColor
{
get { return m_BorderColor; }
set { if (PropertyUtility.SetColor(ref m_BorderColor, value)) SetVerticesDirty(); }
@@ -218,11 +218,11 @@ namespace XCharts
return borderWidth != 0 && !ChartHelper.IsClearColor(borderColor);
}
public Color GetColor()
public Color32 GetColor()
{
if (m_Opacity == 1) return m_Color;
if (m_Opacity == 1 || m_Color.a == 0) return m_Color;
var color = m_Color;
color.a *= m_Opacity;
color.a = (byte)(color.a * m_Opacity);
return color;
}
@@ -231,19 +231,19 @@ namespace XCharts
return !ChartHelper.IsClearColor(m_ToColor) || !ChartHelper.IsClearColor(m_ToColor2);
}
public Color GetGradientColor(float value, Color defaultColor)
public Color32 GetGradientColor(float value, Color32 defaultColor)
{
if (!IsNeedGradient()) return Color.clear;
if (!IsNeedGradient()) return ChartConst.clearColor32;
value = Mathf.Clamp01(value);
var startColor = m_Color == Color.clear ? defaultColor : m_Color;
if (m_ToColor2 != Color.clear)
var startColor = ChartHelper.IsClearColor(m_Color) ? defaultColor : m_Color;
if (!ChartHelper.IsClearColor(m_ToColor2))
{
if (value <= 0.5f) return Color.Lerp(startColor, m_ToColor, 2 * value);
else return Color.Lerp(m_ToColor, m_ToColor2, 2 * (value - 0.5f));
if (value <= 0.5f) return Color32.Lerp(startColor, m_ToColor, 2 * value);
else return Color32.Lerp(m_ToColor, m_ToColor2, 2 * (value - 0.5f));
}
else
{
return Color.Lerp(startColor, m_ToColor, value);
return Color32.Lerp(startColor, m_ToColor, value);
}
}
}

View File

@@ -46,7 +46,7 @@ namespace XCharts
}
[SerializeField] private bool m_Show = true;
[SerializeField] private Type m_Type = Type.Solid;
[SerializeField] private Color m_Color;
[SerializeField] private Color32 m_Color;
[SerializeField] private float m_Width = 0.8f;
[SerializeField] [Range(0, 1)] private float m_Opacity = 1;
@@ -72,7 +72,7 @@ namespace XCharts
/// the color of line, default use serie color.
/// 线的颜色。
/// </summary>
public Color color
public Color32 color
{
get { return m_Color; }
set { if (PropertyUtility.SetColor(ref m_Color, value)) SetVerticesDirty(); }
@@ -131,10 +131,11 @@ namespace XCharts
opacity = lineStyle.opacity;
}
public Color GetColor()
public Color32 GetColor()
{
if (m_Opacity == 1) return m_Color;
var color = m_Color;
color.a *= m_Opacity;
color.a *= (byte)(color.a * m_Opacity);
return color;
}
}

View File

@@ -87,20 +87,20 @@ namespace XCharts
[SerializeField] private float m_PaddingLeftRight = 2f;
[SerializeField] private float m_PaddingTopBottom = 2f;
[SerializeField] private Color m_Color;
[SerializeField] private Color m_BackgroundColor;
[SerializeField] private Color32 m_BackgroundColor;
[SerializeField] private float m_BackgroundWidth = 0;
[SerializeField] private float m_BackgroundHeight = 0;
[SerializeField] private int m_FontSize = 18;
[SerializeField] private FontStyle m_FontStyle = FontStyle.Normal;
[SerializeField] private bool m_Line = true;
[SerializeField] private LineType m_LineType = LineType.BrokenLine;
[SerializeField] private Color m_LineColor = Color.clear;
[SerializeField] private Color32 m_LineColor = ChartConst.clearColor32;
[SerializeField] private float m_LineWidth = 1.0f;
[SerializeField] private float m_LineLength1 = 25f;
[SerializeField] private float m_LineLength2 = 15f;
[SerializeField] private bool m_Border = false;
[SerializeField] private float m_BorderWidth = 0.5f;
[SerializeField] private Color m_BorderColor = Color.grey;
[SerializeField] private Color32 m_BorderColor = ChartConst.greyColor32;
[SerializeField] private string m_NumericFormatter = "";
[SerializeField] private bool m_AutoOffset = false;
@@ -197,7 +197,7 @@ namespace XCharts
/// the background color. If set as default, it means than don't show background.
/// 标签的背景色,默认无颜色。
/// </summary>
public Color backgroundColor
public Color32 backgroundColor
{
get { return m_BackgroundColor; }
set { if (PropertyUtility.SetStruct(ref m_BackgroundColor, value)) SetVerticesDirty(); }
@@ -289,7 +289,7 @@ namespace XCharts
/// the color of visual guild line.
/// 视觉引导线颜色。默认和serie一致取自调色板。
/// </summary>
public Color lineColor
public Color32 lineColor
{
get { return m_LineColor; }
set { if (PropertyUtility.SetStruct(ref m_LineColor, value)) SetVerticesDirty(); }
@@ -343,7 +343,7 @@ namespace XCharts
/// the color of border.
/// 边框颜色。
/// </summary>
public Color borderColor
public Color32 borderColor
{
get { return m_BorderColor; }
set { if (PropertyUtility.SetStruct(ref m_BorderColor, value)) SetVerticesDirty(); }