Files
XCharts/Runtime/Helper/CheckHelper.cs
monitor1394 c8e9c72486 整理代码
2020-04-11 20:41:39 +08:00

131 lines
5.8 KiB
C#

/******************************************/
/* */
/* Copyright (c) 2018 monitor1394 */
/* https://github.com/monitor1394 */
/* */
/******************************************/
using System.Text;
using UnityEngine;
namespace XCharts
{
internal static class CheckHelper
{
private static bool IsColorAlphaZero(Color color)
{
return color != Color.clear && color.a == 0;
}
public static string CheckChart(BaseChart chart)
{
var sb = ChartHelper.sb;
sb.Length = 0;
//sb.AppendFormat("version:{0}_{1}\n", XChartsMgr.version, XChartsMgr.date);
CheckSize(chart, sb);
CheckTheme(chart, sb);
CheckTitle(chart, sb);
CheckLegend(chart, sb);
CheckGrid(chart, sb);
CheckSerie(chart, sb);
return sb.ToString();
}
private static void CheckSize(BaseChart chart, StringBuilder sb)
{
if (chart.chartWidth == 0 || chart.chartHeight == 0)
{
sb.Append("warning:chart width or height is 0\n");
}
}
private static void CheckTheme(BaseChart chart, StringBuilder sb)
{
var themeInfo = chart.themeInfo;
themeInfo.CheckWarning(sb);
}
private static void CheckTitle(BaseChart chart, StringBuilder sb)
{
var title = chart.title;
if (!title.show) return;
if (string.IsNullOrEmpty(title.text)) sb.Append("warning:title->text is null\n");
if (title.textStyle.color != Color.clear && title.textStyle.color.a == 0)
sb.Append("warning:title->textStyle->color alpha is 0\n");
if (title.subTextStyle.color != Color.clear && title.subTextStyle.color.a == 0)
sb.Append("warning:title->subTextStyle->color alpha is 0\n");
}
private static void CheckLegend(BaseChart chart, StringBuilder sb)
{
var legend = chart.legend;
if (!legend.show) return;
if (legend.textStyle.color != Color.clear && legend.textStyle.color.a == 0)
sb.Append("warning:legend->textStyle->color alpha is 0\n");
var serieNameList = chart.series.GetLegalSerieNameList();
Debug.LogError("namelist:" + serieNameList.Count);
if (serieNameList.Count == 0) sb.Append("warning:legend need serie.name or serieData.name not empty\n");
foreach (var category in legend.data)
{
if (!serieNameList.Contains(category))
sb.AppendFormat("warning:legend [{0}] is invalid, must be one of serie.name or serieData.name\n", category);
}
}
private static void CheckGrid(BaseChart chart, StringBuilder sb)
{
if (chart is CoordinateChart)
{
var grid = (chart as CoordinateChart).grid;
if (grid.left >= chart.chartWidth)
sb.Append("warning:grid->left > chartWidth\n");
if (grid.right >= chart.chartWidth)
sb.Append("warning:grid->right > chartWidth\n");
if (grid.top >= chart.chartHeight)
sb.Append("warning:grid->top > chartHeight\n");
if (grid.bottom >= chart.chartHeight)
sb.Append("warning:grid->bottom > chartHeight\n");
if (grid.left + grid.right >= chart.chartWidth)
sb.Append("warning:grid.left + grid.right > chartWidth\n");
if (grid.top + grid.bottom >= chart.chartHeight)
sb.Append("warning:grid.top + grid.bottom > chartHeight\n");
}
}
private static void CheckSerie(BaseChart chart, StringBuilder sb)
{
foreach (var serie in chart.series.list)
{
if (IsColorAlphaZero(serie.itemStyle.color))
sb.AppendFormat("warning:serie {0} itemStyle->color alpha is 0\n", serie.index);
if (serie.itemStyle.opacity == 0)
sb.AppendFormat("warning:serie {0} itemStyle->opacity is 0\n", serie.index);
if (serie.itemStyle.borderWidth != 0 && IsColorAlphaZero(serie.itemStyle.borderColor))
sb.AppendFormat("warning:serie {0} itemStyle->borderColor alpha is 0\n", serie.index);
switch (serie.type)
{
case SerieType.Line:
if (serie.lineStyle.width == 0)
sb.AppendFormat("warning:serie {0} lineStyle->width is 0\n", serie.index);
if (serie.lineStyle.opacity == 0)
sb.AppendFormat("warning:serie {0} lineStyle->opacity is 0\n", serie.index);
if (serie.lineStyle.color != Color.clear && serie.lineStyle.color.a == 0)
sb.AppendFormat("warning:serie {0} lineStyle->color alpha is 0\n", serie.index);
break;
case SerieType.Bar:
if (serie.barWidth == 0)
sb.AppendFormat("warning:serie {0} barWidth is 0\n", serie.index);
break;
case SerieType.Pie:
if (serie.radius.Length >= 2 && serie.radius[1] == 0)
sb.AppendFormat("warning:serie {0} radius[1] is 0\n", serie.index);
break;
case SerieType.Scatter:
case SerieType.EffectScatter:
if (serie.symbol.type == SerieSymbolType.None)
sb.AppendFormat("warning:symbol type is None");
break;
}
}
}
}
}