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(); }
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(); }
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); }
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); } } }
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); } }