Пример #1
0
 public void RefreshLabel()
 {
     for (int i = 0; i < chart.series.Count; i++)
     {
         var serie = chart.series.GetSerie(i);
         if (serie.type != SerieType.Radar)
         {
             continue;
         }
         if (!serie.show && serie.radarType != RadarType.Single)
         {
             continue;
         }
         var radar = chart.GetRadar(serie.radarIndex);
         if (radar == null)
         {
             continue;
         }
         var center = radar.runtimeCenterPos;
         for (int n = 0; n < serie.dataCount; n++)
         {
             var serieData = serie.data[n];
             if (serieData.labelObject == null)
             {
                 continue;
             }
             var serieLabel = SerieHelper.GetSerieLabel(serie, serieData);
             var iconStyle  = SerieHelper.GetIconStyle(serie, serieData);
             var labelPos   = serieData.labelPosition;
             if (serieLabel.margin != 0)
             {
                 labelPos += serieLabel.margin * (labelPos - center).normalized;
             }
             serieData.labelObject.SetPosition(labelPos);
             serieData.labelObject.UpdateIcon(iconStyle);
             if (serie.show && serieLabel.show && serieData.canShowLabel)
             {
                 var value = serieData.GetCurrData(1);
                 var max   = radar.GetIndicatorMax(n);
                 SerieLabelHelper.ResetLabel(serieData.labelObject.label, serieLabel, chart.theme, i);
                 serieData.SetLabelActive(serieData.labelPosition != Vector3.zero);
                 serieData.labelObject.SetLabelPosition(serieLabel.offset);
                 var content = SerieLabelHelper.GetFormatterContent(serie, serieData, value, max,
                                                                    serieLabel, Color.clear);
                 if (serieData.labelObject.SetText(content))
                 {
                     chart.RefreshPainter(serie);
                 }
             }
             else
             {
                 serieData.SetLabelActive(false);
             }
         }
     }
 }
        protected void AddSerieLabel(Serie serie, SerieData serieData, int count = -1)
        {
            if (m_SerieLabelRoot == null)
            {
                return;
            }
            if (count == -1)
            {
                count = serie.dataCount;
            }
            var serieLabel = SerieHelper.GetSerieLabel(serie, serieData);
            var iconStyle  = SerieHelper.GetIconStyle(serie, serieData);

            if (serie.IsPerformanceMode())
            {
                return;
            }
            if (!serieLabel.show && !iconStyle.show)
            {
                return;
            }
            if (serie.animation.enable && serie.animation.HasFadeOut())
            {
                return;
            }
            var textName = ChartCached.GetSerieLabelName(s_SerieLabelObjectName, serie.index, serieData.index);
            var color    = Color.grey;

            if (serie.type == SerieType.Pie)
            {
                color = (serieLabel.position == SerieLabel.Position.Inside) ? Color.white :
                        (Color)m_Theme.GetColor(count);
            }
            else
            {
                color = !ChartHelper.IsClearColor(serieLabel.textStyle.color) ? serieLabel.textStyle.color :
                        (Color)m_Theme.GetColor(serie.index);
            }
            var labelObj = SerieLabelPool.Get(textName, m_SerieLabelRoot.transform, serieLabel, color,
                                              iconStyle.width, iconStyle.height, theme);
            var iconImage  = labelObj.transform.Find("Icon").GetComponent <Image>();
            var isAutoSize = serieLabel.backgroundWidth == 0 || serieLabel.backgroundHeight == 0;
            var item       = new ChartLabel();

            item.SetLabel(labelObj, isAutoSize, serieLabel.paddingLeftRight, serieLabel.paddingTopBottom);
            item.SetIcon(iconImage);
            item.SetIconActive(iconStyle.show);
            serieData.labelObject = item;
        }
Пример #3
0
        private void DrawPieLabel(Serie serie, int dataIndex, SerieData serieData, Color serieColor)
        {
            if (serieData.labelObject == null)
            {
                return;
            }
            var currAngle   = serieData.runtimePieHalfAngle;
            var isHighlight = (serieData.highlighted && serie.emphasis.label.show);
            var serieLabel  = SerieHelper.GetSerieLabel(serie, serieData);
            var iconStyle   = SerieHelper.GetIconStyle(serie, serieData);
            var showLabel   = ((serieLabel.show || isHighlight) && serieData.canShowLabel);

            if (showLabel)
            {
                serieData.SetLabelActive(showLabel);
                float rotate           = 0;
                bool  isInsidePosition = serieLabel.position == SerieLabel.Position.Inside;
                if (serieLabel.textStyle.rotate > 0 && isInsidePosition)
                {
                    if (currAngle > 180)
                    {
                        rotate += 270 - currAngle;
                    }
                    else
                    {
                        rotate += -(currAngle - 90);
                    }
                }
                Color color = serieColor;
                if (isHighlight)
                {
                    if (!ChartHelper.IsClearColor(serie.emphasis.label.textStyle.color))
                    {
                        color = serie.emphasis.label.textStyle.color;
                    }
                }
                else if (!ChartHelper.IsClearColor(serieLabel.textStyle.color))
                {
                    color = serieLabel.textStyle.color;
                }
                else
                {
                    color = isInsidePosition ? Color.white : serieColor;
                }
                var fontSize = isHighlight
                    ? serie.emphasis.label.textStyle.GetFontSize(chart.theme.common)
                    : serieLabel.textStyle.GetFontSize(chart.theme.common);
                var fontStyle = isHighlight
                    ? serie.emphasis.label.textStyle.fontStyle
                    : serieLabel.textStyle.fontStyle;

                serieData.labelObject.label.SetColor(color);
                serieData.labelObject.label.SetFontSize(fontSize);
                serieData.labelObject.label.SetFontStyle(fontStyle);
                serieData.labelObject.SetLabelRotate(rotate);
                if (!string.IsNullOrEmpty(serieLabel.formatter))
                {
                    var value   = serieData.data[1];
                    var total   = serie.yTotal;
                    var content = SerieLabelHelper.GetFormatterContent(serie, serieData, value, total,
                                                                       serieLabel, serieColor);
                    if (serieData.labelObject.SetText(content))
                    {
                        chart.RefreshPainter(serie);
                    }
                }
                else
                {
                    if (serieData.labelObject.SetText(serieData.name))
                    {
                        chart.RefreshPainter(serie);
                    }
                }
                serieData.labelObject.SetPosition(SerieLabelHelper.GetRealLabelPosition(serieData, serieLabel));
                if (showLabel)
                {
                    serieData.labelObject.SetLabelPosition(serieLabel.offset);
                }
                else
                {
                    serieData.SetLabelActive(false);
                }
            }
            else
            {
                serieData.SetLabelActive(false);
            }
            serieData.labelObject.UpdateIcon(iconStyle);
        }