public static void AvoidLabelOverlap(Serie serie, ComponentTheme theme)
        {
            if (!serie.avoidLabelOverlap)
            {
                return;
            }
            var lastCheckPos = Vector3.zero;
            var lastX        = 0f;
            var data         = serie.data;
            var splitCount   = 0;

            for (int n = 0; n < data.Count; n++)
            {
                var serieData = data[n];
                if (serieData.context.labelPosition.x != 0 && serieData.context.labelPosition.x < serie.context.center.x)
                {
                    splitCount = n;
                    break;
                }
            }

            for (int n = 0; n < splitCount; n++)
            {
                CheckSerieDataLabel(serie, data[n], splitCount, false, theme, ref lastCheckPos, ref lastX);
            }
            lastCheckPos = Vector3.zero;
            for (int n = data.Count - 1; n >= splitCount; n--)
            {
                CheckSerieDataLabel(serie, data[n], data.Count - splitCount, true, theme, ref lastCheckPos, ref lastX);
            }
        }
        public virtual void Copy(ComponentTheme theme)
        {
            m_Font                = theme.font;
            m_FontSize            = theme.fontSize;
            m_TextColor           = theme.textColor;
            m_TextBackgroundColor = theme.textBackgroundColor;
#if dUI_TextMeshPro
            m_TMPFont = theme.tmpFont;
#endif
        }
Exemplo n.º 3
0
 public int GetFontSize(ComponentTheme defaultTheme)
 {
     if (fontSize == 0)
     {
         return(defaultTheme.fontSize);
     }
     else
     {
         return(fontSize);
     }
 }
Exemplo n.º 4
0
        public static ChartLabel AddChartLabel(string name, Transform parent, LabelStyle labelStyle,
                                               ComponentTheme theme, string content, Color autoColor, TextAnchor autoAlignment = TextAnchor.MiddleCenter)
        {
            Vector2 anchorMin, anchorMax, pivot;
            var     sizeDelta = new Vector2(labelStyle.width, labelStyle.height);
            var     textStyle = labelStyle.textStyle;
            var     alignment = textStyle.GetAlignment(autoAlignment);

            UpdateAnchorAndPivotByTextAlignment(alignment, out anchorMin, out anchorMax, out pivot);
            var labelObj = AddObject(name, parent, anchorMin, anchorMax, pivot, sizeDelta);

            // TODO: 为了兼容旧版本,这里后面版本可以去掉
            #region temp code
            var oldText = labelObj.GetComponent <Text>();
            if (oldText != null)
            {
                GameObject.DestroyImmediate(oldText);
            }
            var oldImage = labelObj.GetComponent <Image>();
            if (oldImage != null)
            {
                GameObject.DestroyImmediate(oldImage);
            }
            #endregion

            var label = GetOrAddComponent <ChartLabel>(labelObj);
            label.text = AddTextObject("Text", label.gameObject.transform, anchorMin, anchorMax, pivot,
                                       sizeDelta, textStyle, theme, autoColor, autoAlignment, label.text);
            label.icon = ChartHelper.AddIcon("Icon", label.gameObject.transform, labelStyle.icon);
            label.SetSize(labelStyle.width, labelStyle.height);
            label.SetTextPadding(labelStyle.textPadding);
            label.SetText(content);
            label.UpdateIcon(labelStyle.icon);
            if (labelStyle.background.show)
            {
                label.color = (!labelStyle.background.autoColor || autoColor == Color.clear) ?
                              labelStyle.background.color : autoColor;
                label.sprite = labelStyle.background.sprite;
                label.type   = labelStyle.background.type;
            }
            else
            {
                label.color  = Color.clear;
                label.sprite = null;
            }
            label.transform.localEulerAngles = new Vector3(0, 0, labelStyle.rotate);
            label.transform.localPosition    = labelStyle.offset;
            return(label);
        }
Exemplo n.º 5
0
        public void SetFontAndSizeAndStyle(TextStyle textStyle, ComponentTheme theme)
        {
#if dUI_TextMeshPro
            if (m_TMPText == null)
            {
                return;
            }
            m_TMPText.font      = textStyle.tmpFont == null ? theme.tmpFont : textStyle.tmpFont;
            m_TMPText.fontSize  = textStyle.fontSize == 0 ? theme.fontSize : textStyle.fontSize;
            m_TMPText.fontStyle = textStyle.tmpFontStyle;
#else
            if (m_Text != null)
            {
                m_Text.font      = textStyle.font == null ? theme.font : textStyle.font;
                m_Text.fontSize  = textStyle.fontSize == 0 ? theme.fontSize : textStyle.fontSize;
                m_Text.fontStyle = textStyle.fontStyle;
            }
#endif
        }
Exemplo n.º 6
0
        public static ChartLabel AddAxisLabelObject(int total, int index, string name, Transform parent,
                                                    Vector2 sizeDelta, Axis axis, ComponentTheme theme,
                                                    string content, Color autoColor, TextAnchor autoAlignment = TextAnchor.MiddleCenter)
        {
            var textStyle = axis.axisLabel.textStyle;
            var label     = AddChartLabel(name, parent, axis.axisLabel, theme, content, autoColor, autoAlignment);
            var labelShow = axis.axisLabel.show && (axis.axisLabel.interval == 0 || index % (axis.axisLabel.interval + 1) == 0);

            if (labelShow)
            {
                if (!axis.axisLabel.showStartLabel && index == 0)
                {
                    labelShow = false;
                }
                else if (!axis.axisLabel.showEndLabel && index == total - 1)
                {
                    labelShow = false;
                }
            }
            label.UpdateIcon(axis.axisLabel.icon, axis.GetIcon(index));
            label.text.SetActive(labelShow);
            return(label);
        }
 public virtual void Reset(ComponentTheme defaultTheme)
 {
     Copy(defaultTheme);
 }
        private static void CheckSerieDataLabel(Serie serie, SerieData serieData, int total, bool isLeft, ComponentTheme theme,
                                                ref Vector3 lastCheckPos, ref float lastX)
        {
            if (!serieData.context.canShowLabel)
            {
                serieData.SetLabelActive(false);
                return;
            }
            if (!serieData.show)
            {
                return;
            }
            var serieLabel = SerieHelper.GetSerieLabel(serie, serieData);
            var isOutside  = serieLabel.position == LabelStyle.Position.Outside ||
                             serieLabel.position == LabelStyle.Position.Default;

            if (!serieLabel.show)
            {
                return;
            }
            if (!isOutside)
            {
                return;
            }
            var labelLine = SerieHelper.GetSerieLabelLine(serie, serieData);
            var fontSize  = serieData.labelObject.GetHeight();

            if (lastCheckPos == Vector3.zero)
            {
                lastCheckPos = serieData.context.labelPosition;
            }
            else if (serieData.context.labelPosition.x != 0)
            {
                if (lastCheckPos.y - serieData.context.labelPosition.y < fontSize)
                {
                    var labelRadius = serie.context.outsideRadius + labelLine.lineLength1;
                    var y1          = lastCheckPos.y - fontSize;
                    var cy          = serie.context.center.y;
                    var diff        = Mathf.Abs(y1 - cy);
                    var diffX       = labelRadius * labelRadius - diff * diff;
                    diffX = diffX <= 0 ? 0 : diffX;
                    var x1     = serie.context.center.x + Mathf.Sqrt(diffX) * (isLeft ? -1 : 1);
                    var newPos = new Vector3(x1, y1);
                    serieData.context.labelPosition = newPos;
                    var angle = ChartHelper.GetAngle360(Vector2.up, newPos - serie.context.center);
                    if (angle >= 180 && angle <= 270)
                    {
                        serieData.context.labelPosition = new Vector3(isLeft?(++lastX): (--lastX), y1);
                    }
                    else if (angle < 180 && angle >= 90)
                    {
                        serieData.context.labelPosition = new Vector3(isLeft?(++lastX): (--lastX), y1);
                    }
                    else
                    {
                        lastX = x1;
                    }
                }
                else
                {
                    lastX = serieData.context.labelPosition.x;
                }
                lastCheckPos = serieData.context.labelPosition;
                serieData.labelObject.SetPosition(SerieLabelHelper.GetRealLabelPosition(serie, serieData, serieLabel, labelLine));
            }
        }
Exemplo n.º 9
0
        public static ChartText AddTextObject(string objectName, Transform parent, Vector2 anchorMin, Vector2 anchorMax,
                                              Vector2 pivot, Vector2 sizeDelta, TextStyle textStyle, ComponentTheme theme, Color autoColor,
                                              TextAnchor autoAlignment, ChartText chartText = null)
        {
            GameObject txtObj = AddObject(objectName, parent, anchorMin, anchorMax, pivot, sizeDelta);

            txtObj.transform.localEulerAngles = new Vector3(0, 0, textStyle.rotate);
            if (chartText == null)
            {
                chartText = new ChartText();
            }
#if dUI_TextMeshPro
            RemoveComponent <Text>(txtObj);
            chartText.tmpText                    = GetOrAddComponent <TextMeshProUGUI>(txtObj);
            chartText.tmpText.font               = textStyle.tmpFont == null ? theme.tmpFont : textStyle.tmpFont;
            chartText.tmpText.fontStyle          = textStyle.tmpFontStyle;
            chartText.tmpText.richText           = true;
            chartText.tmpText.raycastTarget      = false;
            chartText.tmpText.enableWordWrapping = textStyle.autoWrap;
#else
            chartText.text                    = GetOrAddComponent <Text>(txtObj);
            chartText.text.font               = textStyle.font == null ? theme.font : textStyle.font;
            chartText.text.fontStyle          = textStyle.fontStyle;
            chartText.text.horizontalOverflow = textStyle.autoWrap ? HorizontalWrapMode.Wrap : HorizontalWrapMode.Overflow;
            chartText.text.verticalOverflow   = VerticalWrapMode.Overflow;
            chartText.text.supportRichText    = true;
            chartText.text.raycastTarget      = false;
#endif
            if (textStyle.autoColor && autoColor != Color.clear)
            {
                chartText.SetColor(autoColor);
            }
            else
            {
                chartText.SetColor(textStyle.GetColor(theme.textColor));
            }

            chartText.SetAlignment(textStyle.autoAlign ? autoAlignment : textStyle.alignment);
            chartText.SetFontSize(textStyle.GetFontSize(theme));
            chartText.SetText("Text");
            chartText.SetLineSpacing(textStyle.lineSpacing);
            chartText.SetActive(textStyle.show);

            RectTransform rect = GetOrAddComponent <RectTransform>(txtObj);
            rect.localPosition = Vector3.zero;
            rect.sizeDelta     = sizeDelta;
            rect.anchorMin     = anchorMin;
            rect.anchorMax     = anchorMax;
            rect.pivot         = pivot;
            return(chartText);
        }
Exemplo n.º 10
0
        private static ChartLabel CreateViewItemColumn(int i, Transform parent, Tooltip tooltip, ComponentTheme theme)
        {
            var labelStyle = tooltip.GetContentLabelStyle(i);
            var label      = ChartHelper.AddChartLabel("column" + i, parent, labelStyle, theme,
                                                       "", Color.clear, TextAnchor.MiddleLeft);

            return(label);
        }
Exemplo n.º 11
0
        private static TooltipViewItem CreateViewItem(int i, Transform parent, Tooltip tooltip, ComponentTheme theme)
        {
            GameObject item1 = ChartHelper.AddObject("item" + i, parent, anchorMin, anchorMax, v2_0_05, Vector3.zero);

            var item = new TooltipViewItem();

            item.gameObject = item1;
            item.columns.Add(CreateViewItemColumn(0, item1.transform, tooltip, theme));
            item.columns.Add(CreateViewItemColumn(1, item1.transform, tooltip, theme));
            item.columns.Add(CreateViewItemColumn(2, item1.transform, tooltip, theme));
            return(item);
        }