Exemple #1
0
        private void InitRadar(Radar radar)
        {
            float txtWid = 100;
            float txtHig = 20;

            radar.painter          = chart.GetPainter(radar.index);
            radar.refreshComponent = delegate()
            {
                ChartHelper.HideAllObject(chart.transform, INDICATOR_TEXT + "_" + radar.index);
                radar.UpdateRadarCenter(chart.chartPosition, chart.chartWidth, chart.chartHeight);
                for (int i = 0; i < radar.indicatorList.Count; i++)
                {
                    var indicator = radar.indicatorList[i];
                    var pos       = radar.GetIndicatorPosition(i);
                    var textStyle = indicator.textStyle;
                    var objName   = INDICATOR_TEXT + "_" + radar.index + "_" + i;
                    var txt       = ChartHelper.AddTextObject(objName, chart.transform, new Vector2(0.5f, 0.5f),
                                                              new Vector2(0.5f, 0.5f), new Vector2(0.5f, 0.5f), new Vector2(txtWid, txtHig),
                                                              textStyle, chart.theme.radar);
                    txt.gameObject.hideFlags = chart.chartHideFlags;
                    txt.SetAlignment(textStyle.GetAlignment(TextAnchor.MiddleCenter));
                    txt.SetText(radar.indicatorList[i].name);
                    txt.SetActive(radar.indicator);
                    var offset = new Vector3(textStyle.offset.x, textStyle.offset.y);
                    AxisHelper.AdjustCircleLabelPos(txt, pos, radar.runtimeCenterPos, txtHig, offset);
                }
                chart.RefreshBasePainter();
            };
            radar.refreshComponent.Invoke();
        }
Exemple #2
0
        private void InitTitle()
        {
            m_Title.OnChanged();
            TextAnchor anchor           = m_Title.location.textAnchor;
            Vector2    anchorMin        = m_Title.location.anchorMin;
            Vector2    anchorMax        = m_Title.location.anchorMax;
            Vector2    pivot            = m_Title.location.pivot;
            Vector3    titlePosition    = m_Title.location.GetPosition(chartWidth, chartHeight);
            Vector3    subTitlePosition = -new Vector3(0, m_Title.textFontSize + m_Title.itemGap, 0);
            float      titleWid         = chartWidth;

            var titleObject = ChartHelper.AddObject(s_TitleObjectName, transform, anchorMin, anchorMax,
                                                    pivot, new Vector2(chartWidth, chartHeight));

            titleObject.transform.localPosition = titlePosition;
            ChartHelper.HideAllObject(titleObject);

            Text titleText = ChartHelper.AddTextObject(s_TitleObjectName, titleObject.transform,
                                                       m_ThemeInfo.font, m_ThemeInfo.titleTextColor, anchor, anchorMin, anchorMax, pivot,
                                                       new Vector2(titleWid, m_Title.textFontSize), m_Title.textFontSize);

            titleText.alignment = anchor;
            titleText.gameObject.SetActive(m_Title.show);
            titleText.transform.localPosition = Vector2.zero;
            titleText.text = m_Title.text.Replace("\\n", "\n");

            Text subText = ChartHelper.AddTextObject(s_TitleObjectName + "_sub", titleObject.transform,
                                                     m_ThemeInfo.font, m_ThemeInfo.titleTextColor, anchor, anchorMin, anchorMax, pivot,
                                                     new Vector2(titleWid, m_Title.subTextFontSize), m_Title.subTextFontSize);

            subText.alignment = anchor;
            subText.gameObject.SetActive(m_Title.show && !string.IsNullOrEmpty(m_Title.subText));
            subText.transform.localPosition = subTitlePosition;
            subText.text = m_Title.subText.Replace("\\n", "\n");
        }
        private void InitAngleAxis(AngleAxis axis)
        {
            PolarHelper.UpdatePolarCenter(m_Polar, m_ChartPosition, m_ChartWidth, m_ChartHeight);
            var radius = m_Polar.runtimeRadius;

            axis.axisLabelTextList.Clear();

            string objName = "axis_angle";
            var    axisObj = ChartHelper.AddObject(objName, transform, chartAnchorMin,
                                                   chartAnchorMax, chartPivot, new Vector2(chartWidth, chartHeight));

            axisObj.transform.localPosition = Vector3.zero;
            axisObj.SetActive(axis.show && axis.axisLabel.show);
            axisObj.hideFlags = chartHideFlags;
            ChartHelper.HideAllObject(axisObj);
            var labelColor = ChartHelper.IsClearColor(axis.axisLabel.color) ?
                             (Color)m_ThemeInfo.axisTextColor :
                             axis.axisLabel.color;
            int   splitNumber = AxisHelper.GetSplitNumber(axis, radius, null);
            float totalAngle  = m_AngleAxis.runtimeStartAngle;
            var   total       = 360;
            var   cenPos      = m_Polar.runtimeCenterPos;
            var   txtHig      = m_AngleAxis.axisLabel.fontSize + 2;
            var   margin      = m_AngleAxis.axisLabel.margin;
            var   isCategory  = m_AngleAxis.IsCategory();

            for (int i = 0; i < splitNumber - 1; i++)
            {
                float scaleAngle = AxisHelper.GetScaleWidth(axis, total, i, null);
                bool  inside     = axis.axisLabel.inside;
                Text  txt        = ChartHelper.AddTextObject(objName + i, axisObj.transform,
                                                             m_ThemeInfo.font, labelColor, TextAnchor.MiddleCenter, new Vector2(0.5f, 0.5f),
                                                             new Vector2(0.5f, 0.5f), new Vector2(0.5f, 0.5f), new Vector2(scaleAngle, txtHig),
                                                             axis.axisLabel.fontSize, axis.axisLabel.rotate, axis.axisLabel.fontStyle);
                if (i == 0)
                {
                    axis.axisLabel.SetRelatedText(txt, scaleAngle);
                }
                var isPercentStack = SeriesHelper.IsPercentStack(m_Series, SerieType.Bar);
                txt.text = AxisHelper.GetLabelName(axis, total, i, axis.runtimeMinValue, axis.runtimeMaxValue, null,
                                                   isPercentStack);
                txt.gameObject.SetActive(axis.show &&
                                         (axis.axisLabel.interval == 0 || i % (axis.axisLabel.interval + 1) == 0));
                var pos = ChartHelper.GetPos(cenPos, radius + margin, isCategory ? (totalAngle + scaleAngle / 2) : totalAngle, true);
                AxisHelper.AdjustCircleLabelPos(txt, pos, cenPos, txtHig, Vector3.zero);
                axis.axisLabelTextList.Add(txt);

                totalAngle += scaleAngle;
            }
            if (m_Tooltip.runtimeGameObject)
            {
                Vector2    privot      = new Vector2(0.5f, 0.5f);
                var        labelParent = m_Tooltip.runtimeGameObject.transform;
                GameObject labelObj    = ChartHelper.AddTooltipLabel(ChartCached.GetAxisTooltipLabel(objName), labelParent,
                                                                     m_ThemeInfo.font, privot, privot, privot, new Vector2(10, txtHig));
                axis.SetTooltipLabel(labelObj);
                axis.SetTooltipLabelColor(m_ThemeInfo.tooltipBackgroundColor, m_ThemeInfo.tooltipTextColor);
                axis.SetTooltipLabelActive(axis.show && m_Tooltip.show && m_Tooltip.type == Tooltip.Type.Corss);
            }
        }
        private void InitSerieLabel()
        {
            ChartHelper.HideAllObject(transform, s_SerieLabelObjectName);
            var labelObject = ChartHelper.AddObject(s_SerieLabelObjectName, transform, chartAnchorMin,
                                                    chartAnchorMax, chartPivot, new Vector2(chartWidth, chartHeight));
            int count = 0;

            for (int i = 0; i < m_Series.Count; i++)
            {
                var serie = m_Series.series[i];
                if (serie.type != SerieType.Pie)
                {
                    continue;
                }
                for (int j = 0; j < serie.data.Count; j++)
                {
                    var serieData = serie.data[j];
                    var textName  = s_SerieLabelObjectName + "_" + i + "_" + j + "_" + serieData.name;
                    var color     = (serie.label.position == SerieLabel.Position.Inside) ? Color.white :
                                    (Color)m_ThemeInfo.GetColor(count++);
                    var anchorMin = new Vector2(0.5f, 0.5f);
                    var anchorMax = new Vector2(0.5f, 0.5f);
                    var pivot     = new Vector2(0.5f, 0.5f);
                    serieData.label = ChartHelper.AddTextObject(textName, labelObject.transform,
                                                                m_ThemeInfo.font, color, TextAnchor.MiddleCenter, anchorMin, anchorMax, pivot,
                                                                new Vector2(50, serie.label.fontSize), serie.label.fontSize);
                    serieData.label.text = serieData.name;
                    serieData.label.gameObject.SetActive(true);
                }
            }
        }
 private void InitIndicator()
 {
     ChartHelper.HideAllObject(chart.transform, INDICATOR_TEXT);
     for (int n = 0; n < chart.radars.Count; n++)
     {
         Radar radar = chart.radars[n];
         radar.UpdateRadarCenter(chart.chartPosition, chart.chartWidth, chart.chartHeight);
         int   indicatorNum = radar.indicatorList.Count;
         float txtWid       = 100;
         float txtHig       = 20;
         for (int i = 0; i < indicatorNum; i++)
         {
             var indicator = radar.indicatorList[i];
             var pos       = radar.GetIndicatorPosition(i);
             var textStyle = indicator.textStyle;
             var objName   = INDICATOR_TEXT + "_" + n + "_" + i;
             var txt       = ChartHelper.AddTextObject(objName, chart.transform, new Vector2(0.5f, 0.5f),
                                                       new Vector2(0.5f, 0.5f), new Vector2(0.5f, 0.5f), new Vector2(txtWid, txtHig),
                                                       textStyle, chart.theme.radar);
             txt.gameObject.hideFlags = chart.chartHideFlags;
             txt.SetAlignment(TextAnchor.MiddleCenter);
             txt.SetText(radar.indicatorList[i].name);
             txt.SetActive(radar.indicator);
             var offset = new Vector3(textStyle.offset.x, textStyle.offset.y);
             AxisHelper.AdjustCircleLabelPos(txt, pos, radar.runtimeCenterPos, txtHig, offset);
         }
     }
 }
        private void InitSerieTitle()
        {
            var titleObject = ChartHelper.AddObject(s_SerieTitleObjectName, transform, m_ChartMinAnchor,
                                                    m_ChartMaxAnchor, m_ChartPivot, new Vector2(chartWidth, chartHeight));

            titleObject.hideFlags = chartHideFlags;
            ChartHelper.HideAllObject(titleObject);
            for (int i = 0; i < m_Series.Count; i++)
            {
                var serie     = m_Series.list[i];
                var textStyle = serie.titleStyle.textStyle;
                var color     = ChartHelper.IsClearColor(textStyle.color) ? m_ThemeInfo.GetColor(i) : (Color32)textStyle.color;
                var anchorMin = new Vector2(0.5f, 0.5f);
                var anchorMax = new Vector2(0.5f, 0.5f);
                var pivot     = new Vector2(0.5f, 0.5f);
                var fontSize  = 10;
                var sizeDelta = new Vector2(50, fontSize + 2);
                var txt       = ChartHelper.AddTextObject("title_" + i, titleObject.transform, m_ThemeInfo.font, color,
                                                          TextAnchor.MiddleCenter, anchorMin, anchorMax, pivot, sizeDelta, textStyle.fontSize, textStyle.rotate,
                                                          textStyle.fontStyle, textStyle.lineSpacing);
                txt.text = "";
                txt.transform.localPosition    = new Vector2(0, 0);
                txt.transform.localEulerAngles = Vector2.zero;
                ChartHelper.SetActive(txt, serie.titleStyle.show);
                serie.titleStyle.runtimeText = txt;
                serie.titleStyle.UpdatePosition(serie.runtimeCenterPos);
                var serieData = serie.GetSerieData(0);
                if (serieData != null)
                {
                    txt.text = serieData.name;
                }
            }
        }
        private void InitSplitX()
        {
            m_SplitXTextList.Clear();
            ChartHelper.HideAllObject(gameObject, "split_x");//old name
            float splitWidth = m_XAxis.GetScaleWidth(coordinateWid, m_DataZoom);

            var axisObj = ChartHelper.AddObject(s_DefaultAxisX, transform, chartAnchorMin,
                                                chartAnchorMax, chartPivot, new Vector2(chartWidth, chartHeight));

            axisObj.transform.localPosition = Vector3.zero;
            ChartHelper.HideAllObject(axisObj, s_DefaultAxisX);
            for (int i = 0; i < m_XAxis.GetSplitNumber(m_DataZoom); i++)
            {
                Text txt = ChartHelper.AddTextObject(s_DefaultAxisX + i, axisObj.transform,
                                                     m_ThemeInfo.font, m_ThemeInfo.axisTextColor, TextAnchor.MiddleCenter, Vector2.zero,
                                                     Vector2.zero, new Vector2(1, 0.5f), new Vector2(splitWidth, 20),
                                                     m_Coordinate.fontSize, m_XAxis.textRotation);

                txt.transform.localPosition = GetSplitXPosition(splitWidth, i);
                txt.text = m_XAxis.GetScaleName(i, minValue, maxValue, m_DataZoom);
                txt.gameObject.SetActive(m_XAxis.show);
                m_SplitXTextList.Add(txt);
            }
            if (m_XAxis.axisName.show)
            {
                var color = m_XAxis.axisName.color == Color.clear ? (Color)m_ThemeInfo.axisTextColor :
                            m_XAxis.axisName.color;
                var  fontSize = m_XAxis.axisName.fontSize;
                var  gap      = m_XAxis.axisName.gap;
                Text axisName;
                switch (m_XAxis.axisName.location)
                {
                case Axis.AxisName.Location.Start:
                    axisName = ChartHelper.AddTextObject(s_DefaultAxisX + "_name", axisObj.transform,
                                                         m_ThemeInfo.font, color, TextAnchor.MiddleRight, new Vector2(1, 0.5f),
                                                         new Vector2(1, 0.5f), new Vector2(1, 0.5f), new Vector2(100, 20), fontSize,
                                                         m_XAxis.axisName.rotate);
                    axisName.transform.localPosition = new Vector2(coordinateX - gap, coordinateY);
                    break;

                case Axis.AxisName.Location.Middle:
                    axisName = ChartHelper.AddTextObject(s_DefaultAxisX + "_name", axisObj.transform,
                                                         m_ThemeInfo.font, color, TextAnchor.MiddleCenter, new Vector2(0.5f, 0.5f),
                                                         new Vector2(0.5f, 0.5f), new Vector2(0.5f, 0.5f), new Vector2(100, 20), fontSize,
                                                         m_XAxis.axisName.rotate);
                    axisName.transform.localPosition = new Vector2(coordinateX + coordinateWid / 2,
                                                                   coordinateY - gap);
                    break;

                case Axis.AxisName.Location.End:
                    axisName = ChartHelper.AddTextObject(s_DefaultAxisX + "_name", axisObj.transform,
                                                         m_ThemeInfo.font, color, TextAnchor.MiddleLeft, new Vector2(0, 0.5f),
                                                         new Vector2(0, 0.5f), new Vector2(0, 0.5f), new Vector2(100, 20), fontSize,
                                                         m_XAxis.axisName.rotate);
                    axisName.transform.localPosition = new Vector2(coordinateX + coordinateWid + gap,
                                                                   coordinateY);
                    break;
                }
            }
        }
 private void InitIndicator()
 {
     ChartHelper.HideAllObject(transform, INDICATOR_TEXT);
     for (int n = 0; n < m_Radars.Count; n++)
     {
         Radar radar = m_Radars[n];
         radar.UpdateRadarCenter(chartPosition, chartWidth, chartHeight);
         int   indicatorNum = radar.indicatorList.Count;
         float txtWid       = 100;
         float txtHig       = 20;
         for (int i = 0; i < indicatorNum; i++)
         {
             var        indicator = radar.indicatorList[i];
             var        pos       = radar.GetIndicatorPosition(i);
             TextAnchor anchor    = TextAnchor.MiddleCenter;
             var        textStyle = indicator.textStyle;
             var        textColor = ChartHelper.IsClearColor(textStyle.color) ? (Color)m_ThemeInfo.axisTextColor : textStyle.color;
             var        txt       = ChartHelper.AddTextObject(INDICATOR_TEXT + "_" + n + "_" + i, transform, m_ThemeInfo.font,
                                                              textColor, anchor, new Vector2(0.5f, 0.5f), new Vector2(0.5f, 0.5f), new Vector2(0.5f, 0.5f),
                                                              new Vector2(txtWid, txtHig), textStyle.fontSize, textStyle.rotate, textStyle.fontStyle, textStyle.lineSpacing);
             txt.gameObject.hideFlags = chartHideFlags;
             txt.text = radar.indicatorList[i].name;
             txt.gameObject.SetActive(radar.indicator);
             var offset = new Vector3(textStyle.offset.x, textStyle.offset.y);
             AxisHelper.AdjustCircleLabelPos(txt, pos, radar.runtimeCenterPos, txtHig, offset);
         }
     }
 }
        private void InitTitle(Title title)
        {
            title.OnChanged();
            var anchorMin   = title.location.runtimeAnchorMin;
            var anchorMax   = title.location.runtimeAnchorMax;
            var pivot       = title.location.runtimePivot;
            var titleObject = ChartHelper.AddObject(s_TitleObjectName + title.index, transform, anchorMin, anchorMax,
                                                    pivot, m_ChartSizeDelta);

            title.gameObject       = titleObject;
            title.painter          = null;
            title.refreshComponent = delegate()
            {
                if (titleObject == null)
                {
                    return;
                }
                title.OnChanged();
                anchorMin = title.location.runtimeAnchorMin;
                anchorMax = title.location.runtimeAnchorMax;
                pivot     = title.location.runtimePivot;
                title.textStyle.UpdateAlignmentByLocation(title.location);
                title.subTextStyle.UpdateAlignmentByLocation(title.location);
                var fontSize = title.textStyle.GetFontSize(theme.title);
                ChartHelper.UpdateRectTransform(titleObject, anchorMin, anchorMax, pivot, new Vector2(chartWidth, chartHeight));
                var titlePosition    = GetTitlePosition(title);
                var subTitlePosition = -new Vector3(0, fontSize + title.itemGap, 0);
                var titleWid         = chartWidth;

                titleObject.transform.localPosition = titlePosition;
                titleObject.hideFlags = chartHideFlags;
                ChartHelper.HideAllObject(titleObject);

                var titleText = ChartHelper.AddTextObject(s_TitleObjectName, titleObject.transform, anchorMin, anchorMax,
                                                          pivot, new Vector2(titleWid, fontSize), title.textStyle, theme.title);
                titleText.SetActive(title.show);
                titleText.SetLocalPosition(Vector3.zero + title.textStyle.offsetv3);
                titleText.SetText(title.text);

                var subText = ChartHelper.AddTextObject(s_SubTitleObjectName, titleObject.transform, anchorMin, anchorMax,
                                                        pivot, new Vector2(titleWid, title.subTextStyle.GetFontSize(theme.subTitle)), title.subTextStyle,
                                                        theme.subTitle);
                subText.SetActive(title.show && !string.IsNullOrEmpty(title.subText));
                subText.SetLocalPosition(subTitlePosition + title.subTextStyle.offsetv3);
                subText.SetText(title.subText);
            };
            title.refreshComponent();
        }
Exemple #10
0
        private void InitDataZoom()
        {
            var dataZoomObject = ChartHelper.AddObject(s_DefaultDataZoom, transform, chartAnchorMin,
                                                       chartAnchorMax, chartPivot, new Vector2(chartWidth, chartHeight));

            dataZoomObject.transform.localPosition = Vector3.zero;
            ChartHelper.HideAllObject(dataZoomObject, s_DefaultDataZoom);
            m_DataZoom.startLabel = ChartHelper.AddTextObject(s_DefaultDataZoom + "start",
                                                              dataZoomObject.transform, m_ThemeInfo.font, m_ThemeInfo.textColor, TextAnchor.MiddleRight,
                                                              Vector2.zero, Vector2.zero, new Vector2(1, 0.5f), new Vector2(200, 20));
            m_DataZoom.endLabel = ChartHelper.AddTextObject(s_DefaultDataZoom + "end",
                                                            dataZoomObject.transform, m_ThemeInfo.font, m_ThemeInfo.textColor, TextAnchor.MiddleLeft,
                                                            Vector2.zero, Vector2.zero, new Vector2(0, 0.5f), new Vector2(200, 20));
            m_DataZoom.SetLabelActive(false);
            m_XAxis.UpdateFilterData(m_DataZoom);
            m_Series.UpdateFilterData(m_DataZoom);
            raycastTarget = m_DataZoom.show;
        }
 private void InitIndicator()
 {
     ChartHelper.HideAllObject(transform, INDICATOR_TEXT);
     for (int n = 0; n < m_Radars.Count; n++)
     {
         Radar radar = m_Radars[n];
         radar.UpdateRadarCenter(chartPosition, chartWidth, chartHeight);
         int   indicatorNum = radar.indicatorList.Count;
         float txtWid       = 100;
         float txtHig       = 20;
         for (int i = 0; i < indicatorNum; i++)
         {
             var        indicator = radar.indicatorList[i];
             var        pos       = radar.GetIndicatorPosition(i);
             TextAnchor anchor    = TextAnchor.MiddleCenter;
             var        textStyle = indicator.textStyle;
             var        textColor = ChartHelper.IsClearColor(textStyle.color) ? (Color)m_ThemeInfo.axisTextColor : textStyle.color;
             var        txt       = ChartHelper.AddTextObject(INDICATOR_TEXT + "_" + n + "_" + i, transform, m_ThemeInfo.font,
                                                              textColor, anchor, new Vector2(0.5f, 0.5f), new Vector2(0.5f, 0.5f), new Vector2(0.5f, 0.5f),
                                                              new Vector2(txtWid, txtHig), textStyle.fontSize, textStyle.rotate, textStyle.fontStyle, textStyle.lineSpacing);
             txt.gameObject.hideFlags = chartHideFlags;
             txt.text = radar.indicatorList[i].name;
             txt.gameObject.SetActive(radar.indicator);
             var txtWidth  = txt.preferredWidth;
             var sizeDelta = new Vector2(txt.preferredWidth, txt.preferredHeight);
             txt.GetComponent <RectTransform>().sizeDelta = sizeDelta;
             var diff = pos.x - radar.runtimeCenterPos.x;
             if (diff < -1f) //left
             {
                 pos = new Vector3(pos.x - txtWidth / 2, pos.y);
             }
             else if (diff > 1f) //right
             {
                 pos = new Vector3(pos.x + txtWidth / 2, pos.y);
             }
             else
             {
                 float y = pos.y > radar.runtimeCenterPos.y ? pos.y + txtHig / 2 : pos.y - txtHig / 2;
                 pos = new Vector3(pos.x, y);
             }
             txt.transform.localPosition = pos + new Vector3(textStyle.offset.x, textStyle.offset.y);
         }
     }
 }
        public static LegendItem AddLegendItem(Legend legend, int i, string legendName, Transform parent, ThemeInfo themeInfo,
                                               string content, Color itemColor, bool active)
        {
            var objName       = i + "_" + legendName;
            var anchorMin     = new Vector2(0, 0.5f);
            var anchorMax     = new Vector2(0, 0.5f);
            var pivot         = new Vector2(0, 0.5f);
            var sizeDelta     = new Vector2(100, 30);
            var iconSizeDelta = new Vector2(legend.itemWidth, legend.itemHeight);
            var textStyle     = legend.textStyle;
            var font          = textStyle.font ? textStyle.font : themeInfo.font;
            var contentColor  = GetContentColor(legend, themeInfo, active);

            var objAnchorMin = legend.location.runtimeAnchorMin;
            var objAnchorMax = legend.location.runtimeAnchorMax;
            var objPivot     = legend.location.runtimePivot;

            var btnObj     = ChartHelper.AddObject(objName, parent, objAnchorMin, objAnchorMax, objPivot, sizeDelta);
            var iconObj    = ChartHelper.AddObject("icon", btnObj.transform, anchorMin, anchorMax, pivot, iconSizeDelta);
            var contentObj = ChartHelper.AddObject("content", btnObj.transform, anchorMin, anchorMax, pivot, sizeDelta);
            var img        = ChartHelper.GetOrAddComponent <Image>(btnObj);

            img.color = Color.clear;
            ChartHelper.GetOrAddComponent <Button>(btnObj);
            ChartHelper.GetOrAddComponent <Image>(iconObj);
            ChartHelper.GetOrAddComponent <Image>(contentObj);
            Text txt = ChartHelper.AddTextObject("Text", contentObj.transform, font, contentColor,
                                                 TextAnchor.MiddleLeft, anchorMin, anchorMax, pivot, sizeDelta, textStyle.fontSize,
                                                 textStyle.rotate, textStyle.fontStyle, textStyle.lineSpacing);
            var item = new LegendItem();

            item.index      = i;
            item.name       = objName;
            item.legendName = legendName;
            item.SetObject(btnObj);
            item.SetIconSize(legend.itemWidth, legend.itemHeight);
            item.SetIconColor(itemColor);
            item.SetIconImage(legend.GetIcon(i));
            item.SetContentPosition(textStyle.offsetv3);
            item.SetContent(content);
            item.SetContentBackgroundColor(textStyle.backgroundColor);
            return(item);
        }
Exemple #13
0
        public static LegendItem AddLegendItem(Legend legend, int i, string legendName, Transform parent,
                                               ChartTheme theme, string content, Color itemColor, bool active, int legendIndex)
        {
            var objName       = i + "_" + legendName;
            var anchorMin     = new Vector2(0, 0.5f);
            var anchorMax     = new Vector2(0, 0.5f);
            var pivot         = new Vector2(0, 0.5f);
            var sizeDelta     = new Vector2(100, 30);
            var iconSizeDelta = new Vector2(legend.itemWidth, legend.itemHeight);
            var textStyle     = legend.textStyle;
            var contentColor  = GetContentColor(legendIndex, legend, theme, active);

            var objAnchorMin = new Vector2(0, 1);
            var objAnchorMax = new Vector2(0, 1);
            var objPivot     = new Vector2(0, 1);
            var btnObj       = ChartHelper.AddObject(objName, parent, objAnchorMin, objAnchorMax, objPivot, sizeDelta, i);
            var iconObj      = ChartHelper.AddObject("icon", btnObj.transform, anchorMin, anchorMax, pivot, iconSizeDelta);
            var contentObj   = ChartHelper.AddObject("content", btnObj.transform, anchorMin, anchorMax, pivot, sizeDelta);
            var img          = ChartHelper.GetOrAddComponent <Image>(btnObj);

            img.color = Color.clear;
            ChartHelper.GetOrAddComponent <Button>(btnObj);
            ChartHelper.GetOrAddComponent <Image>(iconObj);
            ChartHelper.GetOrAddComponent <Image>(contentObj);
            var txt = ChartHelper.AddTextObject("Text", contentObj.transform, anchorMin, anchorMax, pivot, sizeDelta,
                                                textStyle, theme.legend);

            txt.SetAlignment(textStyle.GetAlignment(TextAnchor.MiddleLeft));
            txt.SetColor(contentColor);
            var item = new LegendItem();

            item.index      = i;
            item.name       = objName;
            item.legendName = legendName;
            item.SetObject(btnObj);
            item.SetIconSize(legend.itemWidth, legend.itemHeight);
            item.SetIconColor(itemColor);
            item.SetIconImage(legend.GetIcon(i));
            item.SetContentPosition(textStyle.offsetv3);
            item.SetContent(content);
            item.SetContentBackgroundColor(textStyle.backgroundColor);
            return(item);
        }
        private void InitTitle()
        {
            m_Title.OnChanged();
            TextAnchor anchor           = m_Title.location.runtimeTextAnchor;
            Vector2    anchorMin        = m_Title.location.runtimeAnchorMin;
            Vector2    anchorMax        = m_Title.location.runtimeAnchorMax;
            Vector2    pivot            = m_Title.location.runtimePivot;
            Vector3    titlePosition    = GetTitlePosition();
            Vector3    subTitlePosition = -new Vector3(0, m_Title.textStyle.fontSize + m_Title.itemGap, 0);
            float      titleWid         = chartWidth;

            var titleObject = ChartHelper.AddObject(s_TitleObjectName, transform, anchorMin, anchorMax,
                                                    pivot, new Vector2(chartWidth, chartHeight));

            titleObject.transform.localPosition = titlePosition;
            titleObject.hideFlags = chartHideFlags;
            ChartHelper.HideAllObject(titleObject);

            var  textFont  = TitleHelper.GetTextFont(title, themeInfo);
            var  textColor = TitleHelper.GetTextColor(title, themeInfo);
            Text titleText = ChartHelper.AddTextObject(s_TitleObjectName, titleObject.transform,
                                                       textFont, textColor, anchor, anchorMin, anchorMax, pivot,
                                                       new Vector2(titleWid, m_Title.textStyle.fontSize), m_Title.textStyle.fontSize,
                                                       m_Title.textStyle.rotate, m_Title.textStyle.fontStyle, m_Title.textStyle.lineSpacing);

            titleText.alignment = anchor;
            titleText.gameObject.SetActive(m_Title.show);
            titleText.transform.localPosition = Vector3.zero + m_Title.textStyle.offsetv3;
            titleText.text = m_Title.text.Replace("\\n", "\n");

            var  subTextFont  = TitleHelper.GetSubTextFont(title, themeInfo);
            var  subTextColor = TitleHelper.GetSubTextColor(title, themeInfo);
            Text subText      = ChartHelper.AddTextObject(s_SubTitleObjectName, titleObject.transform,
                                                          subTextFont, subTextColor, anchor, anchorMin, anchorMax, pivot,
                                                          new Vector2(titleWid, m_Title.subTextStyle.fontSize), m_Title.subTextStyle.fontSize,
                                                          m_Title.subTextStyle.rotate, m_Title.subTextStyle.fontStyle, m_Title.subTextStyle.lineSpacing);

            subText.alignment = anchor;
            subText.gameObject.SetActive(m_Title.show && !string.IsNullOrEmpty(m_Title.subText));
            subText.transform.localPosition = subTitlePosition + m_Title.subTextStyle.offsetv3;
            subText.text = m_Title.subText.Replace("\\n", "\n");
        }
 private void InitIndicator()
 {
     ChartHelper.HideAllObject(transform, INDICATOR_TEXT);
     for (int n = 0; n < m_Radars.Count; n++)
     {
         Radar radar = m_Radars[n];
         radar.UpdateRadarCenter(chartWidth, chartHeight);
         int   indicatorNum = radar.indicatorList.Count;
         float txtWid       = 100;
         float txtHig       = 20;
         for (int i = 0; i < indicatorNum; i++)
         {
             var        indicator = radar.indicatorList[i];
             var        pos       = radar.GetIndicatorPosition(i);
             TextAnchor anchor    = TextAnchor.MiddleCenter;
             var        diff      = pos.x - radar.centerPos.x;
             if (diff < -1f)
             {
                 pos    = new Vector3(pos.x - 5, pos.y);
                 anchor = TextAnchor.MiddleRight;
             }
             else if (diff > 1f)
             {
                 anchor = TextAnchor.MiddleLeft;
                 pos    = new Vector3(pos.x + txtWid + 5, pos.y);
             }
             else
             {
                 anchor = TextAnchor.MiddleCenter;
                 float y = pos.y > radar.centerPos.y ? pos.y + txtHig / 2 : pos.y - txtHig / 2;
                 pos = new Vector3(pos.x + txtWid / 2, y);
             }
             var  textColor = indicator.color == Color.clear ? (Color)m_ThemeInfo.axisTextColor : indicator.color;
             Text txt       = ChartHelper.AddTextObject(INDICATOR_TEXT + "_" + n + "_" + i, transform, m_ThemeInfo.font,
                                                        textColor, anchor, Vector2.zero, Vector2.zero, new Vector2(1, 0.5f),
                                                        new Vector2(txtWid, txtHig));
             txt.transform.localPosition = pos;
             txt.text = radar.indicatorList[i].name;
             txt.gameObject.SetActive(radar.indicator);
         }
     }
 }
Exemple #16
0
        private void InitIndicator()
        {
            indicatorTextList.Clear();
            ChartHelper.HideAllObject(transform, INDICATOR_TEXT);
            int   indicatorNum = m_Radar.indicatorList.Count;
            float txtWid       = 100;
            float txtHig       = 20;

            for (int i = 0; i < indicatorNum; i++)
            {
                var        pos    = GetIndicatorPosition(i);
                TextAnchor anchor = TextAnchor.MiddleCenter;
                var        diff   = pos.x - m_RadarCenterX;
                if (diff < -1f)
                {
                    pos    = new Vector3(pos.x - 5, pos.y);
                    anchor = TextAnchor.MiddleRight;
                }
                else if (diff > 1f)
                {
                    anchor = TextAnchor.MiddleLeft;
                    pos    = new Vector3(pos.x + txtWid + 5, pos.y);
                }
                else
                {
                    anchor = TextAnchor.MiddleCenter;
                    float y = pos.y > m_RadarCenterY ? pos.y + txtHig / 2 : pos.y - txtHig / 2;
                    pos = new Vector3(pos.x + txtWid / 2, y);
                }
                Text txt = ChartHelper.AddTextObject(INDICATOR_TEXT + i, transform, m_ThemeInfo.font,
                                                     m_ThemeInfo.textColor, anchor, Vector2.zero, Vector2.zero, new Vector2(1, 0.5f),
                                                     new Vector2(txtWid, txtHig));
                txt.transform.localPosition = pos;
                txt.text = m_Radar.indicatorList[i].name;
                txt.gameObject.SetActive(m_Radar.indicator);
                indicatorTextList.Add(txt);
            }
        }
        private void InitSplitY()
        {
            m_SplitYTextList.Clear();
            float splitWidth = m_YAxis.GetScaleWidth(coordinateHig);

            var titleObject = ChartHelper.AddObject(s_DefaultSplitNameY, transform, chartAnchorMin,
                                                    chartAnchorMax, chartPivot, new Vector2(chartWidth, chartHeight));

            titleObject.transform.localPosition = Vector3.zero;
            ChartHelper.HideAllObject(titleObject, s_DefaultSplitNameY);

            for (int i = 0; i < m_YAxis.GetSplitNumber(); i++)
            {
                Text txt = ChartHelper.AddTextObject(s_DefaultSplitNameY + i, titleObject.transform,
                                                     m_ThemeInfo.font, m_ThemeInfo.textColor, TextAnchor.MiddleRight, Vector2.zero,
                                                     Vector2.zero, new Vector2(1, 0.5f), new Vector2(m_Coordinate.left, 20),
                                                     m_Coordinate.fontSize, m_XAxis.textRotation);
                txt.transform.localPosition = GetSplitYPosition(splitWidth, i);
                txt.text = m_YAxis.GetScaleName(i, minValue, maxValue);
                txt.gameObject.SetActive(m_YAxis.show);
                m_SplitYTextList.Add(txt);
            }
        }
        private void InitAxisY()
        {
            m_AxisLabelYTextList.Clear();
            ChartHelper.HideAllObject(gameObject, "split_y");//old name
            float labelWidth = m_YAxis.GetScaleWidth(coordinateHig, m_DataZoom);

            var axisObj = ChartHelper.AddObject(s_DefaultAxisY, transform, chartAnchorMin,
                chartAnchorMax, chartPivot, new Vector2(chartWidth, chartHeight));
            axisObj.transform.localPosition = Vector3.zero;
            axisObj.SetActive(m_YAxis.axisLabel.show);
            ChartHelper.HideAllObject(axisObj, s_DefaultAxisY);

            var labelColor = m_YAxis.axisLabel.color == Color.clear ?
                (Color)m_ThemeInfo.axisTextColor :
                m_YAxis.axisLabel.color;
            for (int i = 0; i < m_YAxis.GetSplitNumber(m_DataZoom); i++)
            {
                Text txt;
                if (m_YAxis.axisLabel.inside)
                {
                    txt = ChartHelper.AddTextObject(s_DefaultAxisY + i, axisObj.transform,
                        m_ThemeInfo.font, labelColor, TextAnchor.MiddleLeft, Vector2.zero,
                        Vector2.zero, new Vector2(0, 0.5f), new Vector2(m_Coordinate.left, 20),
                        m_YAxis.axisLabel.fontSize, m_YAxis.axisLabel.rotate, m_YAxis.axisLabel.fontStyle);
                }
                else
                {
                    txt = ChartHelper.AddTextObject(s_DefaultAxisY + i, axisObj.transform,
                        m_ThemeInfo.font, labelColor, TextAnchor.MiddleRight, Vector2.zero,
                        Vector2.zero, new Vector2(1, 0.5f), new Vector2(m_Coordinate.left, 20),
                        m_YAxis.axisLabel.fontSize, m_YAxis.axisLabel.rotate, m_YAxis.axisLabel.fontStyle);
                }

                txt.transform.localPosition = GetLabelYPosition(labelWidth, i, m_YAxis.axisLabel.inside);
                txt.text = m_YAxis.GetScaleName(i, minValue, maxValue, m_DataZoom);
                txt.gameObject.SetActive(m_YAxis.show &&
                    (m_YAxis.axisLabel.interval == 0 || i % (m_YAxis.axisLabel.interval + 1) == 0));
                m_AxisLabelYTextList.Add(txt);
            }
            if (m_YAxis.axisName.show)
            {
                var color = m_YAxis.axisName.color == Color.clear ? (Color)m_ThemeInfo.axisTextColor :
                    m_YAxis.axisName.color;
                var fontSize = m_YAxis.axisName.fontSize;
                var gap = m_YAxis.axisName.gap;
                Text axisName;
                switch (m_YAxis.axisName.location)
                {
                    case Axis.AxisName.Location.Start:
                        axisName = ChartHelper.AddTextObject(s_DefaultAxisX + "_name", axisObj.transform,
                             m_ThemeInfo.font, color, TextAnchor.MiddleCenter, new Vector2(0.5f, 0.5f),
                             new Vector2(0.5f, 0.5f), new Vector2(0.5f, 0.5f), new Vector2(100, 20), fontSize,
                             m_YAxis.axisName.rotate, m_YAxis.axisName.fontStyle);
                        axisName.transform.localPosition = new Vector2(coordinateX, coordinateY - gap);
                        break;
                    case Axis.AxisName.Location.Middle:
                        axisName = ChartHelper.AddTextObject(s_DefaultAxisX + "_name", axisObj.transform,
                            m_ThemeInfo.font, color, TextAnchor.MiddleRight, new Vector2(1, 0.5f),
                            new Vector2(1, 0.5f), new Vector2(1, 0.5f), new Vector2(100, 20), fontSize,
                            m_YAxis.axisName.rotate, m_YAxis.axisName.fontStyle);
                        axisName.transform.localPosition = new Vector2(coordinateX - gap,
                        coordinateY + coordinateHig / 2);
                        break;
                    case Axis.AxisName.Location.End:
                        axisName = ChartHelper.AddTextObject(s_DefaultAxisX + "_name", axisObj.transform,
                             m_ThemeInfo.font, color, TextAnchor.MiddleCenter, new Vector2(0.5f, 0.5f),
                             new Vector2(0.5f, 0.5f), new Vector2(0.5f, 0.5f), new Vector2(100, 20), fontSize,
                             m_YAxis.axisName.rotate, m_YAxis.axisName.fontStyle);
                        axisName.transform.localPosition = new Vector2(coordinateX,
                            coordinateY + coordinateHig + gap);
                        break;
                }
            }
        }
        private void InitRadiusAxis(RadiusAxis axis)
        {
            var m_Polar = GetPolar(axis.index);

            if (m_Polars == null)
            {
                return;
            }
            var m_AngleAxis = GetAngleAxis(m_Polar.index);

            if (m_AngleAxis == null)
            {
                return;
            }
            PolarHelper.UpdatePolarCenter(m_Polar, m_ChartPosition, m_ChartWidth, m_ChartHeight);
            axis.axisLabelTextList.Clear();
            var radius  = m_Polar.runtimeRadius;
            var objName = "axis_radius" + axis.index;
            var axisObj = ChartHelper.AddObject(objName, transform, graphAnchorMin,
                                                graphAnchorMax, chartPivot, new Vector2(chartWidth, chartHeight));

            axisObj.transform.localPosition = Vector3.zero;
            axisObj.SetActive(axis.show && axis.axisLabel.show);
            axisObj.hideFlags = chartHideFlags;
            ChartHelper.HideAllObject(axisObj);
            var textStyle   = axis.axisLabel.textStyle;
            var splitNumber = AxisHelper.GetSplitNumber(axis, radius, null);
            var totalWidth  = 0f;
            var startAngle  = m_AngleAxis.runtimeStartAngle;
            var cenPos      = m_Polar.runtimeCenterPos;
            var txtHig      = textStyle.GetFontSize(m_Theme.axis) + 2;
            var dire        = ChartHelper.GetDire(startAngle, true).normalized;
            var tickWidth   = axis.axisTick.GetLength(m_Theme.radiusAxis.tickWidth);
            var tickVetor   = ChartHelper.GetVertialDire(dire)
                              * (tickWidth + axis.axisLabel.margin);

            for (int i = 0; i < splitNumber; i++)
            {
                float labelWidth = AxisHelper.GetScaleWidth(axis, radius, i, null);
                bool  inside     = axis.axisLabel.inside;
                var   txt        = ChartHelper.AddTextObject(objName + i, axisObj.transform, new Vector2(0.5f, 0.5f),
                                                             new Vector2(0.5f, 0.5f), new Vector2(0.5f, 0.5f), new Vector2(labelWidth, txtHig), textStyle,
                                                             m_Theme.axis);
                if (i == 0)
                {
                    axis.axisLabel.SetRelatedText(txt, labelWidth);
                }
                var isPercentStack = SeriesHelper.IsPercentStack(m_Series, SerieType.Bar);
                var labelName      = AxisHelper.GetLabelName(axis, radius, i, axis.runtimeMinValue, axis.runtimeMaxValue,
                                                             null, isPercentStack);
                txt.SetAlignment(TextAnchor.MiddleCenter);
                txt.SetText(labelName);
                txt.SetActive(axis.show &&
                              (axis.axisLabel.interval == 0 || i % (axis.axisLabel.interval + 1) == 0));
                var pos = ChartHelper.GetPos(cenPos, totalWidth, startAngle, true) + tickVetor;
                txt.SetLocalPosition(pos);
                AxisHelper.AdjustRadiusAxisLabelPos(txt, pos, cenPos, txtHig, Vector3.zero);
                axis.axisLabelTextList.Add(txt);

                totalWidth += labelWidth;
            }
            if (tooltip.runtimeGameObject)
            {
                Vector2    privot      = new Vector2(0.5f, 1);
                var        labelParent = tooltip.runtimeGameObject.transform;
                var        labelName   = ChartCached.GetAxisTooltipLabel(objName);
                GameObject labelObj    = ChartHelper.AddTooltipLabel(labelName, labelParent, m_Theme, privot);
                axis.SetTooltipLabel(labelObj);
                axis.SetTooltipLabelColor(m_Theme.tooltip.labelBackgroundColor, m_Theme.tooltip.labelTextColor);
                axis.SetTooltipLabelActive(axis.show && tooltip.show && tooltip.type == Tooltip.Type.Corss);
            }
        }