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 InitTooltip() { tooltip.gameObject = ChartHelper.AddObject("tooltip", transform, m_ChartMinAnchor, m_ChartMaxAnchor, m_ChartPivot, m_ChartSizeDelta); tooltip.painter = m_PainterTop; tooltip.refreshComponent = delegate() { if (tooltip.gameObject == null) { return; } var tooltipObject = tooltip.gameObject; tooltipObject.transform.localPosition = Vector3.zero; tooltipObject.hideFlags = chartHideFlags; DestroyImmediate(tooltipObject.GetComponent <Image>()); var parent = tooltipObject.transform; var textStyle = tooltip.textStyle; ChartHelper.HideAllObject(tooltipObject.transform); GameObject content = ChartHelper.AddTooltipContent("content", parent, textStyle, m_Theme); tooltip.SetObj(tooltipObject); tooltip.SetContentObj(content); tooltip.SetContentBackgroundColor(TooltipHelper.GetTexBackgroundColor(tooltip, m_Theme.tooltip)); tooltip.SetContentTextColor(TooltipHelper.GetTexColor(tooltip, m_Theme.tooltip)); tooltip.SetActive(false); }; tooltip.refreshComponent(); }
protected override void InitPainter() { base.InitPainter(); m_PainterList.Clear(); if (settings == null) { return; } for (int i = 0; i < settings.maxPainter; i++) { var painterObj = ChartHelper.AddObject("painter_" + i, transform, m_GraphMinAnchor, m_GraphMaxAnchor, m_GraphPivot, new Vector2(m_GraphWidth, m_GraphHeight)); painterObj.hideFlags = chartHideFlags; painterObj.transform.SetSiblingIndex(2 + i); var painter = ChartHelper.GetOrAddComponent <Painter>(painterObj); painter.index = m_PainterList.Count; painter.type = Painter.Type.Serie; painter.onPopulateMesh = OnDrawPainterSerie; painter.SetActive(false, m_DebugMode); m_PainterList.Add(painter); } var painterTopObj = ChartHelper.AddObject("painter_t", transform, m_GraphMinAnchor, m_GraphMaxAnchor, m_GraphPivot, new Vector2(m_GraphWidth, m_GraphHeight)); painterTopObj.hideFlags = chartHideFlags; painterTopObj.transform.SetSiblingIndex(2 + settings.maxPainter); m_PainterTop = ChartHelper.GetOrAddComponent <Painter>(painterTopObj); m_PainterTop.type = Painter.Type.Top; m_PainterTop.onPopulateMesh = OnDrawPainterTop; m_PainterTop.SetActive(true, m_DebugMode); }
private void InitAxisLabel() { var labelObject = ChartHelper.AddObject(s_AxisLabelObjectName, transform, Vector2.zero, Vector2.zero, Vector2.zero, new Vector2(chartWidth, chartHeight)); SerieLabelPool.ReleaseAll(labelObject.transform); for (int i = 0; i < m_Series.Count; i++) { var serie = m_Series.list[i]; var serieLabel = serie.gaugeAxis.axisLabel; serie.gaugeAxis.ClearLabelObject(); var count = serie.splitNumber > 36 ? 36 : (serie.splitNumber + 1); var startAngle = serie.startAngle; for (int j = 0; j < count; j++) { var textName = ChartCached.GetSerieLabelName(s_SerieLabelObjectName, i, j); var color = Color.grey; var labelObj = SerieLabelPool.Get(textName, labelObject.transform, serieLabel, m_ThemeInfo.font, color, 100, 100); var iconImage = labelObj.transform.Find("Icon").GetComponent <Image>(); var isAutoSize = serieLabel.backgroundWidth == 0 || serieLabel.backgroundHeight == 0; var item = new LabelObject(); item.SetLabel(labelObj, isAutoSize, serieLabel.paddingLeftRight, serieLabel.paddingTopBottom); item.SetIcon(iconImage); item.SetIconActive(false); serie.gaugeAxis.AddLabelObject(item); } UpdateAxisLabel(serie); } }
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, s_TitleObjectName); Text titleText = ChartHelper.AddTextObject(s_TitleObjectName, titleObject.transform, m_ThemeInfo.font, m_ThemeInfo.textColor, 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; Text subText = ChartHelper.AddTextObject(s_TitleObjectName + "_sub", titleObject.transform, m_ThemeInfo.font, m_ThemeInfo.textColor, 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; }
private void InitRadiusAxis(RadiusAxis axis) { PolarHelper.UpdatePolarCenter(m_Polar, m_ChartPosition, m_ChartWidth, m_ChartHeight); var radius = m_Polar.runtimeRadius; axis.axisLabelTextList.Clear(); string objName = "axis_radius"; 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 totalWidth = 0; var startAngle = m_AngleAxis.runtimeStartAngle; var cenPos = m_Polar.runtimeCenterPos; var txtHig = axis.axisLabel.fontSize + 2; var dire = ChartHelper.GetDire(startAngle, true).normalized; var tickVetor = ChartHelper.GetVertialDire(dire) * (m_RadiusAxis.axisTick.length + m_RadiusAxis.axisLabel.margin); for (int i = 0; i < splitNumber; i++) { float labelWidth = AxisHelper.GetScaleWidth(axis, radius, 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(labelWidth, txtHig), axis.axisLabel.fontSize, axis.axisLabel.rotate, axis.axisLabel.fontStyle); if (i == 0) { axis.axisLabel.SetRelatedText(txt, labelWidth); } var isPercentStack = SeriesHelper.IsPercentStack(m_Series, SerieType.Bar); txt.text = AxisHelper.GetLabelName(axis, radius, 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, totalWidth, startAngle, true) + tickVetor; txt.transform.localPosition = pos; AxisHelper.AdjustRadiusAxisLabelPos(txt, pos, cenPos, txtHig, Vector3.zero); axis.axisLabelTextList.Add(txt); totalWidth += labelWidth; } if (m_Tooltip.runtimeGameObject) { Vector2 privot = new Vector2(0.5f, 1); var labelParent = m_Tooltip.runtimeGameObject.transform; GameObject labelObj = ChartHelper.AddTooltipLabel(ChartCached.GetAxisTooltipLabel(objName), labelParent, m_ThemeInfo.font, privot); axis.SetTooltipLabel(labelObj); axis.SetTooltipLabelColor(m_ThemeInfo.tooltipBackgroundColor, m_ThemeInfo.tooltipTextColor); axis.SetTooltipLabelActive(axis.show && m_Tooltip.show && m_Tooltip.type == Tooltip.Type.Corss); } }
internal static Painter AddPainterObject(string name, Transform parent, Vector2 anchorMin, Vector2 anchorMax, Vector2 pivot, Vector2 sizeDelta, HideFlags hideFlags, int siblingIndex) { var painterObj = ChartHelper.AddObject(name, parent, anchorMin, anchorMax, pivot, sizeDelta); painterObj.hideFlags = hideFlags; painterObj.transform.SetSiblingIndex(siblingIndex); return(ChartHelper.GetOrAddComponent <Painter>(painterObj)); }
public void Init() { m_MarkLineLabelRoot = ChartHelper.AddObject("markline", chart.transform, chart.chartMinAnchor, chart.chartMaxAnchor, chart.chartPivot, chart.chartSizeDelta); m_MarkLineLabelRoot.hideFlags = chart.chartHideFlags; ChartHelper.HideAllObject(m_MarkLineLabelRoot); foreach (var serie in chart.series.list) { InitMarkLine(serie); } }
protected virtual void InitPainter() { var painterObj = ChartHelper.AddObject("painter_b", transform, m_GraphMinAnchor, m_GraphMaxAnchor, m_GraphPivot, new Vector2(m_GraphWidth, m_GraphHeight)); painterObj.transform.SetSiblingIndex(1); painterObj.hideFlags = chartHideFlags; m_Painter = ChartHelper.GetOrAddComponent <Painter>(painterObj); m_Painter.type = Painter.Type.Base; m_Painter.onPopulateMesh = OnDrawPainterBase; }
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 InitSerieLabel() { var labelObject = ChartHelper.AddObject(s_SerieLabelObjectName, transform, chartAnchorMin, chartAnchorMax, chartPivot, new Vector2(chartWidth, chartHeight)); ChartHelper.DestroyAllChildren(labelObject.transform); int count = 0; for (int i = 0; i < m_Series.Count; i++) { var serie = m_Series.list[i]; for (int j = 0; j < serie.data.Count; j++) { var serieData = serie.data[j]; if (!serie.label.show && j > 100) { continue; } var textName = s_SerieLabelObjectName + "_" + i + "_" + j + "_" + serieData.name; var color = Color.grey; if (serie.type == SerieType.Pie) { color = (serie.label.position == SerieLabel.Position.Inside) ? Color.white : (Color)m_ThemeInfo.GetColor(count); } else { color = serie.label.color != Color.clear ? serie.label.color : (Color)m_ThemeInfo.GetColor(i); } var backgroundColor = serie.label.backgroundColor; var labelObj = ChartHelper.AddSerieLabel(textName, labelObject.transform, m_ThemeInfo.font, color, backgroundColor, serie.label.fontSize, serie.label.fontStyle, serie.label.rotate, serie.label.backgroundWidth, serie.label.backgroundHeight); var iconObj = ChartHelper.AddIcon("Icon", labelObj.transform, serieData.iconWidth, serieData.iconHeight); serieData.SetIconObj(iconObj); var isAutoSize = serie.label.backgroundWidth == 0 || serie.label.backgroundHeight == 0; serieData.InitLabel(labelObj, isAutoSize, serie.label.paddingLeftRight, serie.label.paddingTopBottom); serieData.SetLabelActive(false); serieData.SetLabelText(serieData.name); count++; } } }
private void InitSerieLabel() { var labelObject = ChartHelper.AddObject(s_SerieLabelObjectName, transform, chartAnchorMin, chartAnchorMax, chartPivot, new Vector2(chartWidth, chartHeight)); ChartHelper.DestoryAllChilds(labelObject.transform); int count = 0; for (int i = 0; i < m_Series.Count; i++) { var serie = m_Series.series[i]; if (serie.type != SerieType.Pie && serie.type != SerieType.Line) { continue; } if (serie.type != SerieType.Pie && !serie.label.show) { 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 = Color.grey; if (serie.type == SerieType.Pie) { color = (serie.label.position == SerieLabel.Position.Inside) ? Color.white : (Color)m_ThemeInfo.GetColor(count); } else { color = serie.label.color != Color.clear ? serie.label.color : (Color)m_ThemeInfo.GetColor(i); } var backgroundColor = serie.label.backgroundColor; var labelObj = ChartHelper.AddSerieLabel(textName, labelObject.transform, m_ThemeInfo.font, color, backgroundColor, serie.label.fontSize, serie.label.fontStyle); serieData.label = labelObj.GetComponentInChildren <Text>(); serieData.labelImage = labelObj.GetComponent <Image>(); serieData.labelRect = labelObj.GetComponent <RectTransform>(); serieData.SetLabelActive(false); serieData.SetLabelText(serieData.name); count++; } } }
private void InitSerieLabel() { var labelObject = ChartHelper.AddObject(s_SerieLabelObjectName, transform, m_ChartMinAnchor, m_ChartMaxAnchor, m_ChartPivot, m_ChartSizeDelta); SerieLabelPool.ReleaseAll(labelObject.transform); int count = 0; for (int i = 0; i < m_Series.Count; i++) { var serie = m_Series.list[i]; SerieHelper.UpdateCenter(serie, chartPosition, chartWidth, chartHeight); for (int j = 0; j < serie.data.Count; j++) { var serieData = serie.data[j]; var serieLabel = SerieHelper.GetSerieLabel(serie, serieData); if (!serieLabel.show && j > 100) { continue; } var textName = ChartCached.GetSerieLabelName(s_SerieLabelObjectName, i, j); var color = Color.grey; if (serie.type == SerieType.Pie) { color = (serieLabel.position == SerieLabel.Position.Inside) ? Color.white : (Color)m_ThemeInfo.GetColor(count); } else { color = serieLabel.color != Color.clear ? serieLabel.color : (Color)m_ThemeInfo.GetColor(i); } var labelObj = SerieLabelPool.Get(textName, labelObject.transform, serieLabel, m_ThemeInfo.font, color, serieData.iconStyle.width, serieData.iconStyle.height); var iconImage = labelObj.transform.Find("Icon").GetComponent <Image>(); serieData.SetIconImage(iconImage); var isAutoSize = serieLabel.backgroundWidth == 0 || serieLabel.backgroundHeight == 0; serieData.InitLabel(labelObj, isAutoSize, serieLabel.paddingLeftRight, serieLabel.paddingTopBottom); serieData.SetLabelActive(false); count++; } } SerieLabelHelper.UpdateLabelText(m_Series, m_ThemeInfo); }
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 InitTooltip() { var tooltipObject = ChartHelper.AddObject("tooltip", transform, chartAnchorMin, chartAnchorMax, chartPivot, new Vector2(chartWidth, chartHeight)); tooltipObject.transform.localPosition = Vector3.zero; DestroyImmediate(tooltipObject.GetComponent <Image>()); var parent = tooltipObject.transform; ChartHelper.HideAllObject(tooltipObject.transform); GameObject content = ChartHelper.AddTooltipContent("content", parent, m_ThemeInfo.font); m_Tooltip.SetObj(tooltipObject); m_Tooltip.SetContentObj(content); m_Tooltip.SetContentBackgroundColor(m_ThemeInfo.tooltipBackgroundColor); m_Tooltip.SetContentTextColor(m_ThemeInfo.tooltipTextColor); m_Tooltip.SetActive(false); }
private void InitSerieLabel() { var labelObject = ChartHelper.AddObject(s_SerieLabelObjectName, transform, chartAnchorMin, chartAnchorMax, chartPivot, new Vector2(chartWidth, chartHeight)); SerieLabelPool.ReleaseAll(labelObject.transform); int count = 0; for (int i = 0; i < m_Series.Count; i++) { var serie = m_Series.list[i]; for (int j = 0; j < serie.data.Count; j++) { var serieData = serie.data[j]; if (!serie.label.show && j > 100) { continue; } var textName = ChartCached.GetSerieLabelName(s_SerieLabelObjectName, i, j); var color = Color.grey; if (serie.type == SerieType.Pie) { color = (serie.label.position == SerieLabel.Position.Inside) ? Color.white : (Color)m_ThemeInfo.GetColor(count); } else { color = serie.label.color != Color.clear ? serie.label.color : (Color)m_ThemeInfo.GetColor(i); } var labelObj = SerieLabelPool.Get(textName, labelObject.transform, serie.label, m_ThemeInfo.font, color, serieData); var iconObj = labelObj.transform.Find("Icon").gameObject; serieData.SetIconObj(iconObj); var isAutoSize = serie.label.backgroundWidth == 0 || serie.label.backgroundHeight == 0; serieData.InitLabel(labelObj, isAutoSize, serie.label.paddingLeftRight, serie.label.paddingTopBottom); serieData.SetLabelActive(false); serieData.SetLabelText(serieData.name); count++; } } }
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 InitTooltip() { var tooltipObject = ChartHelper.AddObject("tooltip", transform, m_ChartMinAnchor, m_ChartMaxAnchor, m_ChartPivot, m_ChartSizeDelta); tooltipObject.transform.localPosition = Vector3.zero; DestroyImmediate(tooltipObject.GetComponent <Image>()); var parent = tooltipObject.transform; var textStyle = m_Tooltip.textStyle; ChartHelper.HideAllObject(tooltipObject.transform); GameObject content = ChartHelper.AddTooltipContent("content", parent, m_ThemeInfo.font, textStyle.fontSize, textStyle.fontStyle, textStyle.lineSpacing); m_Tooltip.SetObj(tooltipObject); m_Tooltip.SetContentObj(content); m_Tooltip.SetContentBackgroundColor(m_ThemeInfo.tooltipBackgroundColor); m_Tooltip.SetContentTextColor(m_ThemeInfo.tooltipTextColor); m_Tooltip.SetActive(false); }
private void InitBackground() { m_Background.painter = m_Painter; m_Background.refreshComponent = delegate() { var backgroundObj = ChartHelper.AddObject(s_BackgroundObjectName, transform, m_GraphMinAnchor, m_GraphMaxAnchor, m_GraphPivot, m_GraphSizeDelta); m_Background.gameObject = backgroundObj; backgroundObj.hideFlags = chartHideFlags; var backgroundImage = ChartHelper.GetOrAddComponent <Image>(backgroundObj); ChartHelper.UpdateRectTransform(backgroundObj, m_GraphMinAnchor, m_GraphMaxAnchor, m_GraphPivot, m_GraphSizeDelta); backgroundImage.sprite = m_Background.image; backgroundImage.type = m_Background.imageType; backgroundImage.color = m_Background.imageColor; backgroundObj.transform.SetSiblingIndex(0); backgroundObj.SetActive(m_Background.show); }; m_Background.refreshComponent(); }
private void InitSerieLabel() { m_SerieLabelRoot = ChartHelper.AddObject(s_SerieLabelObjectName, transform, m_ChartMinAnchor, m_ChartMaxAnchor, m_ChartPivot, m_ChartSizeDelta); SerieLabelPool.ReleaseAll(m_SerieLabelRoot.transform); int count = 0; for (int i = 0; i < m_Series.Count; i++) { var serie = m_Series.list[i]; SerieHelper.UpdateCenter(serie, chartPosition, chartWidth, chartHeight); for (int j = 0; j < serie.data.Count; j++) { var serieData = serie.data[j]; serieData.index = j; AddSerieLabel(serie, serieData, count); count++; } } SerieLabelHelper.UpdateLabelText(m_Series, m_ThemeInfo); }
private void InitAxisLabel() { if (!SeriesHelper.ContainsSerie(chart.series, SerieType.Gauge)) { return; } var labelObject = ChartHelper.AddObject(s_AxisLabelObjectName, chart.transform, chart.chartMinAnchor, chart.chartMaxAnchor, chart.chartPivot, chart.chartSizeDelta); labelObject.hideFlags = chart.chartHideFlags; SerieLabelPool.ReleaseAll(labelObject.transform); for (int i = 0; i < chart.series.Count; i++) { var serie = chart.series.list[i]; if (serie.type != SerieType.Gauge) { continue; } var serieLabel = serie.gaugeAxis.axisLabel; var count = serie.splitNumber > 36 ? 36 : (serie.splitNumber + 1); var startAngle = serie.startAngle; var textColor = serieLabel.textStyle.GetColor(chart.theme.gauge.textColor); serie.gaugeAxis.ClearLabelObject(); SerieHelper.UpdateCenter(serie, chart.chartPosition, chart.chartWidth, chart.chartHeight); for (int j = 0; j < count; j++) { var textName = ChartCached.GetSerieLabelName(s_SerieLabelObjectName, i, j); var labelObj = SerieLabelPool.Get(textName, labelObject.transform, serieLabel, textColor, 100, 100, chart.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(false); serie.gaugeAxis.AddLabelObject(item); } UpdateAxisLabel(serie); } }
private void InitLegend() { m_Legend.OnChanged(); ChartHelper.HideAllObject(transform, s_LegendObjectName); TextAnchor anchor = m_Legend.location.textAnchor; Vector2 anchorMin = m_Legend.location.anchorMin; Vector2 anchorMax = m_Legend.location.anchorMax; Vector2 pivot = m_Legend.location.pivot; var legendObject = ChartHelper.AddObject(s_LegendObjectName, transform, anchorMin, anchorMax, pivot, new Vector2(chartWidth, chartHeight)); legendObject.transform.localPosition = m_Legend.location.GetPosition(chartWidth, chartHeight); ChartHelper.HideAllObject(legendObject, s_LegendObjectName); for (int i = 0; i < m_Legend.data.Count; i++) { Button btn = ChartHelper.AddButtonObject(s_LegendObjectName + "_" + i, legendObject.transform, m_ThemeInfo.font, m_Legend.itemFontSize, m_ThemeInfo.legendTextColor, anchor, anchorMin, anchorMax, pivot, new Vector2(m_Legend.itemWidth, m_Legend.itemHeight)); m_Legend.SetButton(i, btn); m_Legend.SetActive(i, IsActive(i)); m_Legend.UpdateButtonColor(i, m_ThemeInfo.GetColor(i), m_ThemeInfo.legendUnableColor); btn.GetComponentInChildren <Text>().text = m_Legend.data[i]; ChartHelper.AddEventListener(btn.gameObject, EventTriggerType.PointerDown, (data) => { int count = (data as PointerEventData).clickCount; int index = int.Parse(data.selectedObject.name.Split('_')[1]); SetActive(index, !m_Legend.IsActive(index)); m_Legend.UpdateButtonColor(index, m_ThemeInfo.GetColor(index), m_ThemeInfo.legendUnableColor); OnYMaxValueChanged(); OnLegendButtonClicked(); RefreshChart(); }); } }
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 InitLegend() { m_Legend.OnChanged(); TextAnchor anchor = m_Legend.location.textAnchor; Vector2 anchorMin = m_Legend.location.anchorMin; Vector2 anchorMax = m_Legend.location.anchorMax; Vector2 pivot = m_Legend.location.pivot; var legendObject = ChartHelper.AddObject(s_LegendObjectName, transform, anchorMin, anchorMax, pivot, new Vector2(chartWidth, chartHeight)); legendObject.transform.localPosition = m_Legend.location.GetPosition(chartWidth, chartHeight); ChartHelper.DestoryAllChilds(legendObject.transform); if (!m_Legend.show) { return; } var serieNameList = m_Series.GetSerieNameList(); List <string> datas; if (m_Legend.data.Count > 0) { datas = new List <string>(); for (int i = 0; i < m_Legend.data.Count; i++) { var category = m_Legend.data[i]; if (serieNameList.Contains(category)) { datas.Add(category); } } } else { datas = serieNameList; } m_Legend.RemoveButton(); for (int i = 0; i < datas.Count; i++) { string legendName = datas[i]; Button btn = ChartHelper.AddButtonObject(s_LegendObjectName + "_" + i + "_" + legendName, legendObject.transform, m_ThemeInfo.font, m_Legend.itemFontSize, m_ThemeInfo.legendTextColor, anchor, anchorMin, anchorMax, pivot, new Vector2(m_Legend.itemWidth, m_Legend.itemHeight)); var bgColor = IsActiveByLegend(legendName) ? m_ThemeInfo.GetColor(i) : m_ThemeInfo.legendUnableColor; m_Legend.SetButton(legendName, btn, datas.Count); m_Legend.UpdateButtonColor(legendName, bgColor); btn.GetComponentInChildren <Text>().text = legendName; ChartHelper.ClearEventListener(btn.gameObject); ChartHelper.AddEventListener(btn.gameObject, EventTriggerType.PointerDown, (data) => { if (data.selectedObject == null || m_Legend.selectedMode == Legend.SelectedMode.None) { return; } var temp = data.selectedObject.name.Split('_'); string selectedName = temp[2]; int clickedIndex = int.Parse(temp[1]); if (m_Legend.selectedMode == Legend.SelectedMode.Multiple) { OnLegendButtonClick(clickedIndex, selectedName, !IsActiveByLegend(selectedName)); } else { var btnList = m_Legend.buttonList.Values.ToArray(); for (int n = 0; n < btnList.Length; n++) { temp = btnList[n].name.Split('_'); selectedName = temp[2]; var index = int.Parse(temp[1]); OnLegendButtonClick(n, selectedName, index == clickedIndex ? true : false); } } }); ChartHelper.AddEventListener(btn.gameObject, EventTriggerType.PointerEnter, (data) => { if (btn == null) { return; } var temp = btn.name.Split('_'); string selectedName = temp[2]; int index = int.Parse(temp[1]); OnLegendButtonEnter(index, selectedName); }); ChartHelper.AddEventListener(btn.gameObject, EventTriggerType.PointerExit, (data) => { if (btn == null) { return; } var temp = btn.name.Split('_'); string selectedName = temp[2]; int index = int.Parse(temp[1]); OnLegendButtonExit(index, selectedName); }); } if (m_Legend.selectedMode == Legend.SelectedMode.Single) { for (int n = 0; n < datas.Count; n++) { OnLegendButtonClick(n, datas[n], n == 0 ? true : false); } } }
private void InitLegend() { m_Legend.OnChanged(); var legendObject = ChartHelper.AddObject(s_LegendObjectName, transform, m_ChartMinAnchor, m_ChartMaxAnchor, m_ChartPivot, new Vector2(chartWidth, chartHeight)); legendObject.hideFlags = chartHideFlags; SeriesHelper.UpdateSerieNameList(m_Series, ref m_LegendRealShowName); List <string> datas; if (m_Legend.show && m_Legend.data.Count > 0) { datas = new List <string>(); for (int i = 0; i < m_LegendRealShowName.Count; i++) { if (m_Legend.data.Contains(m_LegendRealShowName[i])) { datas.Add(m_LegendRealShowName[i]); } } } else { datas = m_LegendRealShowName; } int totalLegend = 0; for (int i = 0; i < datas.Count; i++) { if (!SeriesHelper.IsLegalLegendName(datas[i])) { continue; } totalLegend++; } m_Legend.RemoveButton(); ChartHelper.HideAllObject(legendObject); if (!m_Legend.show) { return; } for (int i = 0; i < datas.Count; i++) { if (!SeriesHelper.IsLegalLegendName(datas[i])) { continue; } string legendName = m_Legend.GetFormatterContent(datas[i]); var readIndex = m_LegendRealShowName.IndexOf(datas[i]); var active = IsActiveByLegend(datas[i]); var bgColor = LegendHelper.GetIconColor(m_Legend, readIndex, themeInfo, active); var item = LegendHelper.AddLegendItem(m_Legend, i, datas[i], legendObject.transform, m_ThemeInfo, legendName, bgColor, active); m_Legend.SetButton(legendName, item, totalLegend); ChartHelper.ClearEventListener(item.button.gameObject); ChartHelper.AddEventListener(item.button.gameObject, EventTriggerType.PointerDown, (data) => { if (data.selectedObject == null || m_Legend.selectedMode == Legend.SelectedMode.None) { return; } var temp = data.selectedObject.name.Split('_'); string selectedName = temp[1]; int clickedIndex = int.Parse(temp[0]); if (m_Legend.selectedMode == Legend.SelectedMode.Multiple) { OnLegendButtonClick(clickedIndex, selectedName, !IsActiveByLegend(selectedName)); } else { var btnList = m_Legend.buttonList.Values.ToArray(); if (btnList.Length == 1) { OnLegendButtonClick(0, selectedName, !IsActiveByLegend(selectedName)); } else { for (int n = 0; n < btnList.Length; n++) { temp = btnList[n].name.Split('_'); selectedName = btnList[n].legendName; var index = btnList[n].index; OnLegendButtonClick(n, selectedName, index == clickedIndex ? true : false); } } } }); ChartHelper.AddEventListener(item.button.gameObject, EventTriggerType.PointerEnter, (data) => { if (item.button == null) { return; } var temp = item.button.name.Split('_'); string selectedName = temp[1]; int index = int.Parse(temp[0]); OnLegendButtonEnter(index, selectedName); }); ChartHelper.AddEventListener(item.button.gameObject, EventTriggerType.PointerExit, (data) => { if (item.button == null) { return; } var temp = item.button.name.Split('_'); string selectedName = temp[1]; int index = int.Parse(temp[0]); OnLegendButtonExit(index, selectedName); }); } if (m_Legend.selectedMode == Legend.SelectedMode.Single) { for (int n = 0; n < m_LegendRealShowName.Count; n++) { OnLegendButtonClick(n, m_LegendRealShowName[n], n == 0 ? true : false); } } LegendHelper.ResetItemPosition(m_Legend, m_ChartPosition, m_ChartWidth, m_ChartHeight); }
private void InitBackground() { if (!transform.parent) { return; } int childCount = transform.parent.childCount; if (childCount > 2) { m_Background.runtimeActive = false; } else if (childCount == 1) { m_Background.runtimeActive = true; } else { m_Background.runtimeActive = false; for (int i = 0; i < childCount; i++) { if (transform.parent.GetChild(i).name.StartsWith(s_BackgroundObjectName)) { m_Background.runtimeActive = true; break; } } } if (!m_Background.runtimeActive || m_IsControlledByLayout) { //find old gameobject and delete var objName = s_BackgroundObjectName + GetInstanceID(); ChartHelper.DestoryGameObject(transform.parent, objName); ChartHelper.DestoryGameObject(m_BackgroundRoot); return; } if (!m_Background.show) { ChartHelper.DestoryGameObject(m_BackgroundRoot); return; } var backgroundName = s_BackgroundObjectName; m_BackgroundRoot = ChartHelper.AddObject(backgroundName, transform.parent, m_ChartMinAnchor, m_ChartMaxAnchor, m_ChartPivot, m_ChartSizeDelta); m_BackgroundRoot.hideFlags = chartHideFlags; var backgroundImage = ChartHelper.GetOrAddComponent <Image>(m_BackgroundRoot); var backgroundRect = m_BackgroundRoot.GetComponent <RectTransform>(); backgroundRect.position = rectTransform.position; backgroundImage.sprite = m_Background.image; backgroundImage.type = m_Background.imageType; backgroundImage.color = m_Background.imageColor; m_BackgroundRoot.SetActive(m_Background.show); var siblindIndex = rectTransform.GetSiblingIndex(); if (siblindIndex == 0) { backgroundRect.SetSiblingIndex(0); } else { backgroundRect.SetSiblingIndex(rectTransform.GetSiblingIndex() - 1); } }
private void InitLegend() { m_Legend.OnChanged(); TextAnchor anchor = m_Legend.location.runtimeTextAnchor; Vector2 anchorMin = m_Legend.location.runtimeAnchorMin; Vector2 anchorMax = m_Legend.location.runtimeAnchorMax; Vector2 pivot = m_Legend.location.runtimePivot; var legendObject = ChartHelper.AddObject(s_LegendObjectName, transform, anchorMin, anchorMax, pivot, new Vector2(chartWidth, chartHeight)); legendObject.transform.localPosition = m_Legend.location.GetPosition(chartWidth, chartHeight); m_LegendRealShowName = m_Series.GetSerieNameList(); List <string> datas; if (m_Legend.show && m_Legend.data.Count > 0) { datas = new List <string>(); for (int i = 0; i < m_LegendRealShowName.Count; i++) { if (m_Legend.data.Contains(m_LegendRealShowName[i])) { datas.Add(m_LegendRealShowName[i]); } } } else { datas = m_LegendRealShowName; } int totalLegend = 0; for (int i = 0; i < datas.Count; i++) { if (!m_Series.IsLegalLegendName(datas[i])) { continue; } totalLegend++; } m_Legend.RemoveButton(); ChartHelper.DestroyAllChildren(legendObject.transform); if (!m_Legend.show) { return; } //天讯修改,保存当前Legend对象 List <Button> btns = new List <Button>(); for (int i = 0; i < datas.Count; i++) { if (!m_Series.IsLegalLegendName(datas[i])) { continue; } string legendName = m_Legend.GetFormatterContent(datas[i]); var readIndex = m_LegendRealShowName.IndexOf(datas[i]); var objName = s_LegendObjectName + "_" + i + "_" + datas[i]; Button btn = ChartHelper.AddButtonObject(objName, legendObject.transform, m_ThemeInfo.font, m_Legend.itemFontSize, m_ThemeInfo.legendTextColor, anchor, anchorMin, anchorMax, pivot, new Vector2(m_Legend.itemWidth, m_Legend.itemHeight)); var bgColor = IsActiveByLegend(datas[i]) ? m_ThemeInfo.GetColor(readIndex) : m_ThemeInfo.legendUnableColor; m_Legend.SetButton(legendName, btn, totalLegend); m_Legend.UpdateButtonColor(legendName, bgColor); btn.GetComponentInChildren <Text>().text = legendName; //天讯修改 btn.transform.localRotation = Quaternion.identity;//保证文字的角度为零 btns.Add(btn); ChartHelper.ClearEventListener(btn.gameObject); ChartHelper.AddEventListener(btn.gameObject, EventTriggerType.PointerDown, (data) => { if (data.selectedObject == null || m_Legend.selectedMode == Legend.SelectedMode.None) { return; } var temp = data.selectedObject.name.Split('_'); string selectedName = temp[2]; int clickedIndex = int.Parse(temp[1]); if (m_Legend.selectedMode == Legend.SelectedMode.Multiple) { OnLegendButtonClick(clickedIndex, selectedName, !IsActiveByLegend(selectedName)); } else { var btnList = m_Legend.buttonList.Values.ToArray(); if (btnList.Length == 1) { OnLegendButtonClick(0, selectedName, !IsActiveByLegend(selectedName)); } else { for (int n = 0; n < btnList.Length; n++) { temp = btnList[n].name.Split('_'); selectedName = temp[2]; var index = int.Parse(temp[1]); OnLegendButtonClick(n, selectedName, index == clickedIndex ? true : false); } } } }); ChartHelper.AddEventListener(btn.gameObject, EventTriggerType.PointerEnter, (data) => { if (btn == null) { return; } var temp = btn.name.Split('_'); string selectedName = temp[2]; int index = int.Parse(temp[1]); OnLegendButtonEnter(index, selectedName); }); ChartHelper.AddEventListener(btn.gameObject, EventTriggerType.PointerExit, (data) => { if (btn == null) { return; } var temp = btn.name.Split('_'); string selectedName = temp[2]; int index = int.Parse(temp[1]); OnLegendButtonExit(index, selectedName); }); } if (m_Legend.selectedMode == Legend.SelectedMode.Single) { for (int n = 0; n < m_LegendRealShowName.Count; n++) { OnLegendButtonClick(n, m_LegendRealShowName[n], n == 0 ? true : false); } } //天讯修改,当高度和者宽度设置-1时,设置控制自适应内容 if (m_Legend.itemWidth == -1 && m_Legend.itemHeight == -1) { btns.Sort((l, r) => { var lTextLength = l.GetComponentInChildren <Text>().text.Length; var rTextLength = r.GetComponentInChildren <Text>().text.Length; return(lTextLength == rTextLength ? 0 : lTextLength < rTextLength ? 1 : -1); }); m_Legend.itemWidth = btns[0].GetComponentInChildren <Text>().preferredWidth + 15;; m_Legend.itemHeight = btns[0].GetComponentInChildren <Text>().preferredHeight + 5;; foreach (Button button in btns) { var btnTransform = button.transform as RectTransform; btnTransform.sizeDelta = new Vector2(m_Legend.itemWidth, m_Legend.itemHeight); } } }
private void InitLegend() { m_Legend.OnChanged(); ChartHelper.HideAllObject(transform, s_LegendObjectName); TextAnchor anchor = m_Legend.location.textAnchor; Vector2 anchorMin = m_Legend.location.anchorMin; Vector2 anchorMax = m_Legend.location.anchorMax; Vector2 pivot = m_Legend.location.pivot; var legendObject = ChartHelper.AddObject(s_LegendObjectName, transform, anchorMin, anchorMax, pivot, new Vector2(chartWidth, chartHeight)); legendObject.transform.localPosition = m_Legend.location.GetPosition(chartWidth, chartHeight); ChartHelper.HideAllObject(legendObject, s_LegendObjectName); var serieNameList = m_Series.GetSerieNameList(); List <string> datas; if (m_Legend.data.Count > 0) { datas = new List <string>(); for (int i = 0; i < m_Legend.data.Count; i++) { var category = m_Legend.data[i]; if (serieNameList.Contains(category)) { datas.Add(category); } } } else { datas = serieNameList; } m_Legend.RemoveButton(); for (int i = 0; i < datas.Count; i++) { string legendName = datas[i]; Button btn = ChartHelper.AddButtonObject(s_LegendObjectName + "_" + i + "_" + legendName, legendObject.transform, m_ThemeInfo.font, m_Legend.itemFontSize, m_ThemeInfo.legendTextColor, anchor, anchorMin, anchorMax, pivot, new Vector2(m_Legend.itemWidth, m_Legend.itemHeight)); var bgColor = IsLegendActive(legendName) ? m_ThemeInfo.GetColor(i) : m_ThemeInfo.legendUnableColor; m_Legend.SetButton(legendName, btn, datas.Count); m_Legend.UpdateButtonColor(legendName, bgColor); btn.GetComponentInChildren <Text>().text = legendName; ChartHelper.ClearEventListener(btn.gameObject); ChartHelper.AddEventListener(btn.gameObject, EventTriggerType.PointerDown, (data) => { if (data.selectedObject == null) { return; } var temp = data.selectedObject.name.Split('_'); string selectedName = temp[2]; int index = int.Parse(temp[1]); OnLegendButtonClick(index, selectedName); }); ChartHelper.AddEventListener(btn.gameObject, EventTriggerType.PointerEnter, (data) => { if (btn == null) { return; } var temp = btn.name.Split('_'); string selectedName = temp[2]; int index = int.Parse(temp[1]); OnLegendButtonEnter(index, selectedName); }); ChartHelper.AddEventListener(btn.gameObject, EventTriggerType.PointerExit, (data) => { if (btn == null) { return; } var temp = btn.name.Split('_'); string selectedName = temp[2]; int index = int.Parse(temp[1]); OnLegendButtonExit(index, selectedName); }); } }