コード例 #1
0
        public static Color GetAreaToColor(Serie serie, ThemeInfo theme, int index, bool highlight)
        {
            var areaStyle = serie.areaStyle;

            if (!ChartHelper.IsClearColor(areaStyle.toColor))
            {
                var color = areaStyle.toColor;
                if (highlight)
                {
                    if (!ChartHelper.IsClearColor(areaStyle.highlightToColor))
                    {
                        color = areaStyle.highlightToColor;
                    }
                    else
                    {
                        color *= color;
                    }
                }
                color.a *= areaStyle.opacity;
                return(color);
            }
            else
            {
                return(GetAreaColor(serie, theme, index, highlight));
            }
        }
コード例 #2
0
ファイル: Theme.cs プロジェクト: tuita520/unity-ugui-XCharts
 /// <summary>
 /// copy all configurations from theme.
 /// 复制主题的所有配置。
 /// </summary>
 /// <param name="theme"></param>
 public void Copy(ThemeInfo theme)
 {
     m_Theme                    = theme.theme;
     m_Font                     = theme.m_Font;
     m_BackgroundColor          = theme.m_BackgroundColor;
     m_LegendUnableColor        = theme.m_LegendUnableColor;
     m_TitleTextColor           = theme.m_TitleTextColor;
     m_TitleSubTextColor        = theme.m_TitleSubTextColor;
     m_LegendTextColor          = theme.m_LegendTextColor;
     m_AxisTextColor            = theme.m_AxisTextColor;
     m_AxisLineColor            = theme.m_AxisLineColor;
     m_AxisSplitLineColor       = theme.m_AxisSplitLineColor;
     m_TooltipBackgroundColor   = theme.m_TooltipBackgroundColor;
     m_TooltipTextColor         = theme.m_TooltipTextColor;
     m_TooltipLabelColor        = theme.m_TooltipLabelColor;
     m_TooltipLineColor         = theme.m_TooltipLineColor;
     m_DataZoomLineColor        = theme.m_DataZoomLineColor;
     m_DataZoomSelectedColor    = theme.m_DataZoomSelectedColor;
     m_DataZoomTextColor        = theme.m_DataZoomTextColor;
     m_VisualMapBackgroundColor = theme.m_VisualMapBackgroundColor;
     m_VisualMapBorderColor     = theme.m_VisualMapBorderColor;
     m_ColorPalette             = new Color32[theme.m_ColorPalette.Length];
     for (int i = 0; i < theme.m_ColorPalette.Length; i++)
     {
         m_ColorPalette[i] = theme.m_ColorPalette[i];
     }
 }
コード例 #3
0
        private static void InitPieTooltip(ref StringBuilder sb, Tooltip tooltip, Serie serie, int index,
                                           ThemeInfo themeInfo)
        {
            if (tooltip.runtimeDataIndex[serie.index] < 0)
            {
                return;
            }
            string key              = serie.data[index].name;
            var    serieData        = serie.GetSerieData(index);
            var    numericFormatter = GetItemNumericFormatter(tooltip, serie, serieData);

            float value = serieData.GetData(1);

            sb.Length = 0;
            if (!string.IsNullOrEmpty(serie.name))
            {
                sb.Append(serie.name).Append(FormatterHelper.PH_NN);
            }
            sb.Append("<color=#").Append(themeInfo.GetColorStr(index)).Append(">● </color>");
            if (!string.IsNullOrEmpty(key))
            {
                sb.Append(key).Append(": ");
            }
            sb.Append(ChartCached.FloatToStr(value, numericFormatter));
        }
コード例 #4
0
        internal Color GetAxisLineBackgroundColor(ThemeInfo theme, int index)
        {
            var color = !ChartHelper.IsClearColor(axisLine.barBackgroundColor) ? axisLine.barBackgroundColor : Color.grey;

            color.a *= axisLine.opacity;
            return(color);
        }
コード例 #5
0
        internal Color GetAxisLineColor(ThemeInfo theme, int index)
        {
            var color = !ChartHelper.IsClearColor(axisLine.barColor) ? axisLine.barColor : (Color)theme.GetColor(index);

            color.a *= axisLine.opacity;
            return(color);
        }
コード例 #6
0
        public static void UpdateLabelText(Series series, ThemeInfo themeInfo, List <string> legendRealShowName)
        {
            foreach (var serie in series.list)
            {
                if (!serie.label.show)
                {
                    continue;
                }
                var colorIndex = legendRealShowName.IndexOf(serie.name);
                switch (serie.type)
                {
                case SerieType.Gauge:
                    SetGaugeLabelText(serie);
                    break;

                case SerieType.Ring:
                    SetRingLabelText(serie, themeInfo);
                    break;

                case SerieType.Liquid:
                    SetLiquidLabelText(serie, themeInfo, colorIndex);
                    break;
                }
            }
        }
コード例 #7
0
        public static Color GetLineColor(Serie serie, ThemeInfo theme, int index, bool highlight)
        {
            var color = Color.clear;

            if (highlight)
            {
                var itemStyleEmphasis = GetItemStyleEmphasis(serie, null);
                if (itemStyleEmphasis != null && !ChartHelper.IsClearColor(itemStyleEmphasis.color))
                {
                    color    = itemStyleEmphasis.color;
                    color.a *= itemStyleEmphasis.opacity;
                    return(color);
                }
            }
            if (!ChartHelper.IsClearColor(serie.lineStyle.color))
            {
                color = serie.lineStyle.GetColor();
            }
            else if (!ChartHelper.IsClearColor(serie.itemStyle.color))
            {
                color = serie.itemStyle.GetColor();
            }
            if (ChartHelper.IsClearColor(color))
            {
                color   = (Color)theme.GetColor(index);
                color.a = serie.lineStyle.opacity;
            }
            if (highlight)
            {
                color *= color;
            }
            return(color);
        }
コード例 #8
0
        internal static Color GetItemColor(Serie serie, SerieData serieData, ThemeInfo theme, int index, bool highlight)
        {
            if (highlight)
            {
                var itemStyleEmphasis = GetItemStyleEmphasis(serie, serieData);
                if (itemStyleEmphasis != null && !ChartHelper.IsClearColor(itemStyleEmphasis.color))
                {
                    var color = itemStyleEmphasis.color;
                    color.a *= itemStyleEmphasis.opacity;
                    return(color);
                }
            }
            var itemStyle = GetItemStyle(serie, serieData);

            if (!ChartHelper.IsClearColor(itemStyle.color))
            {
                var color = itemStyle.color;
                if (highlight)
                {
                    color *= color;
                }
                color.a *= itemStyle.opacity;
                return(color);
            }
            else
            {
                var color = (Color)theme.GetColor(index);
                if (highlight)
                {
                    color *= color;
                }
                color.a *= itemStyle.opacity;
                return(color);
            }
        }
コード例 #9
0
        private static void InitCoordinateTooltip(ref StringBuilder sb, Tooltip tooltip, Serie serie, int index,
                                                  ThemeInfo themeInfo, bool isCartesian, DataZoom dataZoom = null)
        {
            string key = serie.name;
            float  xValue, yValue;

            serie.GetXYData(index, dataZoom, out xValue, out yValue);
            var isIngore         = serie.IsIgnorePoint(index);
            var serieData        = serie.GetSerieData(index, dataZoom);
            var numericFormatter = GetItemNumericFormatter(tooltip, serie, serieData);

            if (isCartesian)
            {
                if (serieData != null && serieData.highlighted)
                {
                    sb.Append(key).Append(!string.IsNullOrEmpty(key) ? " : " : "");
                    sb.Append("[").Append(ChartCached.FloatToStr(xValue, numericFormatter)).Append(",")
                    .Append(ChartCached.FloatToStr(yValue, numericFormatter)).Append("]");
                }
            }
            else
            {
                var valueTxt = isIngore ? tooltip.ignoreDataDefaultContent :
                               ChartCached.FloatToStr(yValue, numericFormatter);
                sb.Append("<color=#").Append(themeInfo.GetColorStr(serie.index)).Append(">● </color>")
                .Append(key).Append(!string.IsNullOrEmpty(key) ? " : " : "")
                .Append(valueTxt);
            }
        }
コード例 #10
0
        protected override void OnThemeChanged()
        {
            base.OnThemeChanged();
            foreach (var radar in m_Radars)
            {
                radar.splitArea.color.Clear();
                switch (m_ThemeInfo.theme)
                {
                case Theme.Dark:
                    radar.splitArea.color.Add(ThemeInfo.GetColor("#6f6f6f"));
                    radar.splitArea.color.Add(ThemeInfo.GetColor("#606060"));
                    break;

                case Theme.Default:
                    radar.splitArea.color.Add(ThemeInfo.GetColor("#f6f6f6"));
                    radar.splitArea.color.Add(ThemeInfo.GetColor("#e7e7e7"));
                    break;

                case Theme.Light:
                    radar.splitArea.color.Add(ThemeInfo.GetColor("#f6f6f6"));
                    radar.splitArea.color.Add(ThemeInfo.GetColor("#e7e7e7"));
                    break;
                }
            }
            InitIndicator();
        }
コード例 #11
0
        private static void InitScatterTooltip(ref StringBuilder sb, Tooltip tooltip, Serie serie, int index,
                                               ThemeInfo themeInfo)
        {
            if (!tooltip.runtimeSerieDataIndex.ContainsKey(serie.index))
            {
                return;
            }
            var dataIndexList = tooltip.runtimeSerieDataIndex[serie.index];

            if (!string.IsNullOrEmpty(serie.name))
            {
                sb.Append(serie.name).Append(PH_NN);
            }
            for (int i = 0; i < dataIndexList.Count; i++)
            {
                var   dataIndex = dataIndexList[i];
                var   serieData = serie.GetSerieData(dataIndex);
                var   numericFormatter = GetItemNumericFormatter(tooltip, serie, serieData);
                float xValue, yValue;
                serie.GetXYData(dataIndex, null, out xValue, out yValue);

                sb.Append("<color=#").Append(themeInfo.GetColorStr(serie.index)).Append(">● </color>");
                if (!string.IsNullOrEmpty(serieData.name))
                {
                    sb.Append(serieData.name).Append(": ");
                }
                sb.AppendFormat("({0},{1})", ChartCached.FloatToStr(xValue, numericFormatter),
                                ChartCached.FloatToStr(yValue, numericFormatter));
                if (i != dataIndexList.Count - 1)
                {
                    sb.Append("\n");
                }
            }
        }
コード例 #12
0
        private static void SetLiquidLabelText(Serie serie, ThemeInfo themeInfo, int colorIndex)
        {
            var serieData = serie.GetSerieData(0);

            if (serieData == null)
            {
                return;
            }
            var serieLabel = SerieHelper.GetSerieLabel(serie, serieData, serieData.highlighted);

            if (serieLabel.show && serieData.labelObject != null)
            {
                if (!serie.show || !serieData.show)
                {
                    serieData.SetLabelActive(false);
                    return;
                }
                var value   = serieData.GetData(1);
                var total   = serie.max - serie.min;
                var content = SerieLabelHelper.GetFormatterContent(serie, serieData, value, total);
                serieData.SetLabelActive(true);
                serieData.labelObject.SetText(content);
                serieData.labelObject.SetLabelColor(GetLabelColor(serie, themeInfo, colorIndex));
                serieData.labelObject.SetLabelPosition(serieData.labelPosition + serieLabel.offset);
            }
        }
コード例 #13
0
        private static void InitDefaultContent(ref StringBuilder sb, Tooltip tooltip, Serie serie, int index,
                                               string category, ThemeInfo themeInfo = null, DataZoom dataZoom = null, bool isCartesian = false)
        {
            switch (serie.type)
            {
            case SerieType.Line:
            case SerieType.Bar:
                InitCoordinateTooltip(ref sb, tooltip, serie, index, themeInfo, isCartesian, dataZoom);
                break;

            case SerieType.Scatter:
            case SerieType.EffectScatter:
                InitScatterTooltip(ref sb, tooltip, serie, index, themeInfo);
                break;

            case SerieType.Radar:
                break;

            case SerieType.Pie:
                InitPieTooltip(ref sb, tooltip, serie, index, themeInfo);
                break;

            case SerieType.Ring:
                InitRingTooltip(ref sb, tooltip, serie, index, themeInfo);
                break;

            case SerieType.Heatmap:
                break;

            case SerieType.Gauge:
                break;
            }
        }
コード例 #14
0
        public static void InitRadarTooltip(ref StringBuilder sb, Tooltip tooltip, Serie serie, Radar radar,
                                            ThemeInfo themeInfo)
        {
            var dataIndex        = tooltip.runtimeDataIndex[1];
            var serieData        = serie.GetSerieData(dataIndex);
            var numericFormatter = GetItemNumericFormatter(tooltip, serie, serieData);

            switch (serie.radarType)
            {
            case RadarType.Multiple:
                sb.Append(serieData.name);
                for (int i = 0; i < radar.indicatorList.Count; i++)
                {
                    string key   = radar.indicatorList[i].name;
                    float  value = serieData.GetData(i);
                    if ((i == 0 && !string.IsNullOrEmpty(serieData.name)) || i > 0)
                    {
                        sb.Append(PH_NN);
                    }
                    sb.AppendFormat("{0}: {1}", key, ChartCached.FloatToStr(value, numericFormatter));
                }
                break;

            case RadarType.Single:
                string key2   = serieData.name;
                float  value2 = serieData.GetData(1);
                if (string.IsNullOrEmpty(key2))
                {
                    key2 = radar.indicatorList[dataIndex].name;
                }
                sb.AppendFormat("{0}: {1}", key2, ChartCached.FloatToStr(value2, numericFormatter));
                break;
            }
        }
コード例 #15
0
ファイル: BaseChart.cs プロジェクト: ylniu/Astrojax_pendulum
 protected override void Reset()
 {
     ChartHelper.DestoryAllChilds(transform);
     m_ThemeInfo = ThemeInfo.Default;
     m_Title     = Title.defaultTitle;
     m_Legend    = Legend.defaultLegend;
     m_Tooltip   = Tooltip.defaultTooltip;
     m_Series    = Series.defaultSeries;
     Awake();
 }
コード例 #16
0
 public static void ResetLabel(SerieData serieData, SerieLabel label, ThemeInfo themeInfo, int colorIndex)
 {
     if (serieData.labelText)
     {
         serieData.labelText.color = label.color != Color.clear ? label.color :
                                     (Color)themeInfo.GetColor(colorIndex);
         serieData.labelText.fontSize  = label.fontSize;
         serieData.labelText.fontStyle = label.fontStyle;
     }
 }
コード例 #17
0
 public static Color32 GetBackgroundColor(ThemeInfo themeInfo, Background background)
 {
     if (background.show && background.runtimeActive && background.hideThemeBackgroundColor)
     {
         return(ChartConst.clearColor32);
     }
     else
     {
         return(themeInfo.backgroundColor);
     }
 }
コード例 #18
0
 public static Color GetLabelColor(Serie serie, ThemeInfo themeInfo, int index)
 {
     if (!ChartHelper.IsClearColor(serie.label.color))
     {
         return(serie.label.color);
     }
     else
     {
         return(themeInfo.GetColor(index));
     }
 }
コード例 #19
0
 public static Color GetBackgroundColor(ThemeInfo themeInfo, Background background, bool m_IsControlledByLayout)
 {
     if (!m_IsControlledByLayout && background.show && background.hideThemeBackgroundColor)
     {
         return(Color.clear);
     }
     else
     {
         return(themeInfo.backgroundColor);
     }
 }
コード例 #20
0
 public static Color GetLabelColor(Serie serie, ThemeInfo themeInfo, int index)
 {
     if (serie.label.color != Color.clear)
     {
         return(serie.label.color);
     }
     else
     {
         return(themeInfo.GetColor(index));
     }
 }
コード例 #21
0
 internal static Color GetColor(Vessel vessel, Serie serie, ThemeInfo themeInfo, List <string> legendRealShowName)
 {
     if (serie != null && vessel.autoColor)
     {
         var colorIndex = legendRealShowName.IndexOf(serie.name);
         return(SerieHelper.GetItemColor(serie, null, themeInfo, colorIndex, false));
     }
     else
     {
         return(vessel.color);
     }
 }
コード例 #22
0
        public static Color GetContentColor(Legend legend, ThemeInfo themeInfo, bool active)
        {
            var textStyle = legend.textStyle;

            if (active)
            {
                return(textStyle.color != Color.clear ? textStyle.color : (Color)themeInfo.legendTextColor);
            }
            else
            {
                return((Color)themeInfo.legendUnableColor);
            }
        }
コード例 #23
0
 internal Color32 GetColor(ThemeInfo theme)
 {
     if (!ChartHelper.IsClearColor(lineStyle.color))
     {
         return(lineStyle.GetColor());
     }
     else
     {
         var color = theme.axisSplitLineColor;
         color.a *= (byte)(color.a * lineStyle.opacity);
         return(color);
     }
 }
コード例 #24
0
 protected override void Awake()
 {
     m_ThemeInfo             = ThemeInfo.Default;
     rectTransform.anchorMax = Vector2.zero;
     rectTransform.anchorMin = Vector2.zero;
     rectTransform.pivot     = Vector2.zero;
     m_CheckWidth            = chartWidth;
     m_CheckHeight           = chartHeight;
     m_CheckTheme            = m_Theme;
     InitTitle();
     InitLegend();
     InitTooltip();
 }
コード例 #25
0
 protected override void Awake()
 {
     if (m_ThemeInfo == null)
     {
         m_ThemeInfo = ThemeInfo.Default;
     }
     raycastTarget = false;
     m_CheckTheme  = m_ThemeInfo.theme;
     UpdateSize();
     InitComponent();
     m_Series.AnimationReset();
     m_Series.AnimationFadeIn();
     XChartsMgr.Instance.AddChart(this);
 }
コード例 #26
0
        internal static Color GetItemToColor(Serie serie, SerieData serieData, ThemeInfo theme, int index, bool highlight)
        {
            var itemStyle = GetItemStyle(serie, serieData, highlight);

            if (highlight)
            {
                var itemStyleEmphasis = GetItemStyleEmphasis(serie, serieData);
                if (itemStyleEmphasis != null && itemStyleEmphasis.toColor != Color.clear)
                {
                    var color = itemStyleEmphasis.toColor;
                    color.a *= itemStyleEmphasis.opacity;
                    return(color);
                }
            }
            if (itemStyle == null)
            {
                itemStyle = serieData.itemStyle;
            }
            if (itemStyle.toColor != Color.clear)
            {
                var color = itemStyle.toColor;
                if (highlight)
                {
                    color *= color;
                }
                color.a *= itemStyle.opacity;
                return(color);
            }
            if (itemStyle.color != Color.clear)
            {
                var color = itemStyle.color;
                if (highlight)
                {
                    color *= color;
                }
                color.a *= itemStyle.opacity;
                return(color);
            }
            else
            {
                var color = (Color)theme.GetColor(index);
                if (highlight)
                {
                    color *= color;
                }
                color.a *= itemStyle.opacity;
                return(color);
            }
        }
コード例 #27
0
        IEnumerator ComponentVisualMap()
        {
            chart.title.subText = "VisualMap 视觉映射:可从全局上配置图表的颜色、字体等效果,支持默认主题切换";

            chart.visualMap.enable     = true;
            chart.visualMap.show       = true;
            chart.visualMap.orient     = Orient.Vertical;
            chart.visualMap.calculable = true;
            chart.visualMap.min        = 0;
            chart.visualMap.max        = 100;
            chart.visualMap.range[0]   = 0;
            chart.visualMap.range[1]   = 100;

            var colors = new List <string> {
                "#313695", "#4575b4", "#74add1", "#abd9e9", "#e0f3f8", "#ffffbf",
                "#fee090", "#fdae61", "#f46d43", "#d73027", "#a50026"
            };

            chart.visualMap.inRange.Clear();
            foreach (var str in colors)
            {
                chart.visualMap.inRange.Add(ThemeInfo.GetColor(str));
            }
            chart.grid.left   = 80;
            chart.grid.bottom = 100;
            chart.RefreshChart();

            yield return(new WaitForSeconds(1f));

            while (chart.visualMap.rangeMin < 40)
            {
                chart.visualMap.rangeMin += speed * Time.deltaTime;
                chart.RefreshChart();
                yield return(null);
            }
            while (chart.visualMap.rangeMax > 60)
            {
                chart.visualMap.rangeMax -= speed * Time.deltaTime;
                chart.RefreshChart();
                yield return(null);
            }
            while (chart.visualMap.rangeMin > 0 || chart.visualMap.rangeMax < 100)
            {
                chart.visualMap.rangeMin -= speed * Time.deltaTime;
                chart.visualMap.rangeMax += speed * Time.deltaTime;
                chart.RefreshChart();
                yield return(null);
            }
        }
コード例 #28
0
        public static Color32 GetLineColor(Tooltip tooltip, ThemeInfo theme)
        {
            var lineStyle = tooltip.lineStyle;

            if (!ChartHelper.IsClearColor(lineStyle.color))
            {
                return(lineStyle.GetColor());
            }
            else
            {
                var color = theme.tooltipLineColor;
                ChartHelper.SetColorOpacity(ref color, lineStyle.opacity);
                return(color);
            }
        }
コード例 #29
0
 internal Color GetColor(ThemeInfo theme)
 {
     if (lineStyle.color != Color.clear)
     {
         var color = lineStyle.color;
         color.a *= lineStyle.opacity;
         return(color);
     }
     else
     {
         var color = (Color)theme.axisSplitLineColor;
         color.a *= lineStyle.opacity;
         return(color);
     }
 }
コード例 #30
0
 public static void ResetLabel(SerieData serieData, SerieLabel label, ThemeInfo themeInfo, int colorIndex)
 {
     if (serieData.labelObject == null)
     {
         return;
     }
     if (serieData.labelObject.label == null)
     {
         return;
     }
     serieData.labelObject.label.color = !ChartHelper.IsClearColor(label.color) ? label.color :
                                         (Color)themeInfo.GetColor(colorIndex);
     serieData.labelObject.label.fontSize  = label.fontSize;
     serieData.labelObject.label.fontStyle = label.fontStyle;
 }