private static void CheckSerieDataLabel(Serie serie, SerieData serieData, bool isLeft, ComponentTheme theme, ref Vector3 lastCheckPos) { if (!serieData.canShowLabel) { serieData.SetLabelActive(false); return; } if (!serieData.show) { return; } var serieLabel = SerieHelper.GetSerieLabel(serie, serieData); var fontSize = serieLabel.textStyle.GetFontSize(theme); if (!serieLabel.show) { return; } if (serieLabel.position != SerieLabel.Position.Outside) { return; } if (lastCheckPos == Vector3.zero) { lastCheckPos = serieData.labelPosition; } else if (serieData.labelPosition.x != 0) { if (lastCheckPos.y - serieData.labelPosition.y < fontSize) { var labelRadius = serie.runtimeOutsideRadius + serieLabel.lineLength1; var y1 = lastCheckPos.y - fontSize; var cy = serie.runtimeCenterPos.y; var diff = Mathf.Abs(y1 - cy); var diffX = labelRadius * labelRadius - diff * diff; diffX = diffX <= 0 ? 0 : diffX; var x1 = serie.runtimeCenterPos.x + Mathf.Sqrt(diffX) * (isLeft ? -1 : 1); serieData.labelPosition = new Vector3(x1, y1); } lastCheckPos = serieData.labelPosition; serieData.labelObject.SetPosition(SerieLabelHelper.GetRealLabelPosition(serieData, serieLabel)); } }
private void DrawLabel(Serie serie, int dataIndex, SerieData serieData, Color serieColor) { if (serieData.labelText == null) { return; } var currAngle = serieData.runtimePieHalfAngle; var isHighlight = (serieData.highlighted && serie.emphasis.label.show); var showLabel = ((serie.label.show || isHighlight) && serieData.canShowLabel); if (showLabel || serieData.iconStyle.show) { serieData.SetLabelActive(showLabel); float rotate = 0; bool isInsidePosition = serie.label.position == SerieLabel.Position.Inside; if (serie.label.rotate > 0 && isInsidePosition) { if (currAngle > 180) { rotate += 270 - currAngle; } else { rotate += -(currAngle - 90); } } Color color = serieColor; if (isHighlight) { if (serie.emphasis.label.color != Color.clear) { color = serie.emphasis.label.color; } } else if (serie.label.color != Color.clear) { color = serie.label.color; } else { color = isInsidePosition ? Color.white : serieColor; } var fontSize = isHighlight ? serie.emphasis.label.fontSize : serie.label.fontSize; var fontStyle = isHighlight ? serie.emphasis.label.fontStyle : serie.label.fontStyle; serieData.labelText.color = color; serieData.labelText.fontSize = fontSize; serieData.labelText.fontStyle = fontStyle; serieData.labelRect.transform.localEulerAngles = new Vector3(0, 0, rotate); UpdateLabelPostion(serie, serieData); if (!string.IsNullOrEmpty(serie.label.formatter)) { var value = serieData.data[1]; var total = serie.yTotal; var content = serie.label.GetFormatterContent(serie.name, serieData.name, value, total); if (serieData.SetLabelText(content)) { RefreshChart(); } } serieData.SetGameObjectPosition(serieData.labelPosition); if (showLabel) { serieData.SetLabelPosition(serie.label.offset); } } else { serieData.SetLabelActive(false); } serieData.UpdateIcon(); }
private void DrawPieLabel(Serie serie, int dataIndex, SerieData serieData, Color serieColor) { if (serieData.labelObject == null) { return; } var currAngle = serieData.runtimePieHalfAngle; var isHighlight = (serieData.highlighted && serie.emphasis.label.show); var serieLabel = SerieHelper.GetSerieLabel(serie, serieData); var showLabel = ((serieLabel.show || isHighlight) && serieData.canShowLabel); if (showLabel || serieData.iconStyle.show) { serieData.SetLabelActive(showLabel); float rotate = 0; bool isInsidePosition = serieLabel.position == SerieLabel.Position.Inside; if (serieLabel.textStyle.rotate > 0 && isInsidePosition) { if (currAngle > 180) { rotate += 270 - currAngle; } else { rotate += -(currAngle - 90); } } Color color = serieColor; if (isHighlight) { if (!ChartHelper.IsClearColor(serie.emphasis.label.textStyle.color)) { color = serie.emphasis.label.textStyle.color; } } else if (!ChartHelper.IsClearColor(serieLabel.textStyle.color)) { color = serieLabel.textStyle.color; } else { color = isInsidePosition ? Color.white : serieColor; } var fontSize = isHighlight ? serie.emphasis.label.textStyle.GetFontSize(chart.theme.common) : serieLabel.textStyle.GetFontSize(chart.theme.common); var fontStyle = isHighlight ? serie.emphasis.label.textStyle.fontStyle : serieLabel.textStyle.fontStyle; serieData.labelObject.label.SetColor(color); serieData.labelObject.label.SetFontSize(fontSize); serieData.labelObject.label.SetFontStyle(fontStyle); serieData.labelObject.SetLabelRotate(rotate); if (!string.IsNullOrEmpty(serieLabel.formatter)) { var value = serieData.data[1]; var total = serie.yTotal; var content = SerieLabelHelper.GetFormatterContent(serie, serieData, value, total, serieLabel); if (serieData.labelObject.SetText(content)) { chart.RefreshPainter(serie); } } else { if (serieData.labelObject.SetText(serieData.name)) { chart.RefreshPainter(serie); } } serieData.labelObject.SetPosition(SerieLabelHelper.GetRealLabelPosition(serieData, serieLabel)); if (showLabel) { serieData.labelObject.SetLabelPosition(serieLabel.offset); } else { serieData.SetLabelActive(false); } } else { serieData.SetLabelActive(false); } serieData.labelObject.UpdateIcon(serieData.iconStyle); }
private void DrawLabel(Serie serie, int dataIndex, SerieData serieData, PieTempData tempData, Color serieColor, float currAngle, float offsetRadius, float insideRadius, float outsideRadius) { if (serieData.labelText == null) { return; } var isHighlight = (serieData.highlighted && serie.highlightLabel.show); if ((serie.label.show || isHighlight) && serieData.canShowLabel) { serieData.SetLabelActive(true); float rotate = 0; bool isInsidePosition = serie.label.position == SerieLabel.Position.Inside; if (serie.label.rotate > 0 && isInsidePosition) { if (currAngle > 180) { rotate += 270 - currAngle; } else { rotate += -(currAngle - 90); } } Color color = serieColor; if (isHighlight) { if (serie.highlightLabel.color != Color.clear) { color = serie.highlightLabel.color; } } else if (serie.label.color != Color.clear) { color = serie.label.color; } else { color = isInsidePosition ? Color.white : serieColor; } var fontSize = isHighlight ? serie.highlightLabel.fontSize : serie.label.fontSize; var fontStyle = isHighlight ? serie.highlightLabel.fontStyle : serie.label.fontStyle; float currRad = currAngle * Mathf.Deg2Rad; serieData.labelText.color = color; serieData.labelText.fontSize = fontSize; serieData.labelText.fontStyle = fontStyle; serieData.labelRect.transform.localEulerAngles = new Vector3(0, 0, rotate); switch (serie.label.position) { case SerieLabel.Position.Center: serieData.labelPosition = tempData.center; break; case SerieLabel.Position.Inside: var labelRadius = offsetRadius + insideRadius + (outsideRadius - insideRadius) / 2; var labelCenter = new Vector2(tempData.center.x + labelRadius * Mathf.Sin(currRad), tempData.center.y + labelRadius * Mathf.Cos(currRad)); serieData.labelPosition = labelCenter; break; case SerieLabel.Position.Outside: labelRadius = tempData.outsideRadius + serie.label.lineLength1; labelCenter = new Vector2(tempData.center.x + labelRadius * Mathf.Sin(currRad), tempData.center.y + labelRadius * Mathf.Cos(currRad)); float labelWidth = serieData.labelText.preferredWidth; if (currAngle > 180) { serieData.labelPosition = new Vector2(labelCenter.x - serie.label.lineLength2 - 5 - labelWidth / 2, labelCenter.y); } else { serieData.labelPosition = new Vector2(labelCenter.x + serie.label.lineLength2 + 5 + labelWidth / 2, labelCenter.y); } break; } if (!string.IsNullOrEmpty(serie.label.formatter)) { var value = serieData.data[1]; var total = serie.yTotal; var content = serie.label.GetFormatterContent(serie.name, serieData.name, value, total); if (serieData.SetLabelText(content)) { RefreshChart(); } } serieData.SetLabelPosition(serieData.labelPosition); } else { serieData.SetLabelActive(false); } }
private void DrawLabel(Serie serie, SerieData serieData, PieTempData tempData, Color serieColor, float currAngle, float offsetRadius, float insideRadius, float outsideRadius) { if (serieData.label == null) { return; } var isHighlight = (serieData.highlighted && serie.highlightLabel.show); if (serie.label.show || isHighlight) { serieData.SetLabelActive(true); float rotate = 0; bool isInsidePosition = serie.label.position == SerieLabel.Position.Inside; if (serie.label.rotate > 0 && isInsidePosition) { if (currAngle > 180) { rotate += 270 - currAngle; } else { rotate += -(currAngle - 90); } } Color color = serieColor; if (isHighlight) { if (serie.highlightLabel.color != Color.clear) { color = serie.highlightLabel.color; } } else if (serie.label.color != Color.clear) { color = serie.label.color; } else { color = isInsidePosition ? Color.white : serieColor; } var fontSize = isHighlight ? serie.highlightLabel.fontSize : serie.label.fontSize; var fontStyle = isHighlight ? serie.highlightLabel.fontStyle : serie.label.fontStyle; float currRad = currAngle * Mathf.Deg2Rad; serieData.label.color = color; serieData.label.fontSize = fontSize; serieData.label.fontStyle = fontStyle; serieData.labelImage.transform.localEulerAngles = new Vector3(0, 0, rotate); switch (serie.label.position) { case SerieLabel.Position.Center: serieData.labelImage.transform.localPosition = tempData.center; break; case SerieLabel.Position.Inside: var labelRadius = offsetRadius + insideRadius + (outsideRadius - insideRadius) / 2; var labelCenter = new Vector2(tempData.center.x + labelRadius * Mathf.Sin(currRad), tempData.center.y + labelRadius * Mathf.Cos(currRad)); serieData.labelImage.transform.localPosition = labelCenter; break; case SerieLabel.Position.Outside: labelRadius = tempData.outsideRadius + serie.label.lineLength1; labelCenter = new Vector2(tempData.center.x + labelRadius * Mathf.Sin(currRad), tempData.center.y + labelRadius * Mathf.Cos(currRad)); float labelWidth = serieData.label.preferredWidth; if (currAngle > 180) { serieData.labelImage.transform.localPosition = new Vector2(labelCenter.x - serie.label.lineLength2 - 5 - labelWidth / 2, labelCenter.y); } else { serieData.labelImage.transform.localPosition = new Vector2(labelCenter.x + serie.label.lineLength2 + 5 + labelWidth / 2, labelCenter.y); } break; } } else { serieData.SetLabelActive(false); } }
private void DrawLabel(Serie serie, int dataIndex, SerieData serieData, Color serieColor) { if (serieData.labelObject == null || (dataIndex >= ShowCount && ShowCount != -1)) { return; } var currAngle = serieData.runtimePieHalfAngle; var isHighlight = (serieData.highlighted && serie.emphasis.label.show); var serieLabel = SerieHelper.GetSerieLabel(serie, serieData); var showLabel = ((serieLabel.show || isHighlight) && serieData.canShowLabel); if (showLabel || serieData.iconStyle.show) { serieData.SetLabelActive(showLabel); float rotate = 0; bool isInsidePosition = serieLabel.position == SerieLabel.Position.Inside; if (serieLabel.rotate > 0 && isInsidePosition) { if (currAngle > 180) { rotate += 270 - currAngle; } else { rotate += -(currAngle - 90); } } Color color = serieColor; if (isHighlight) { if (!ChartHelper.IsClearColor(serie.emphasis.label.color)) { color = serie.emphasis.label.color; } } else if (!ChartHelper.IsClearColor(serieLabel.color)) { color = serieLabel.color; } else { color = isInsidePosition ? Color.white : serieColor; } var fontSize = isHighlight ? serie.emphasis.label.fontSize : serieLabel.fontSize; var fontStyle = isHighlight ? serie.emphasis.label.fontStyle : serieLabel.fontStyle; serieData.labelObject.label.color = color; serieData.labelObject.label.fontSize = fontSize; serieData.labelObject.label.fontStyle = fontStyle; serieData.labelObject.label.lineSpacing = 0.75f; serieData.labelObject.SetLabelRotate(rotate); UpdateLabelPostion(serie, serieData); if (!string.IsNullOrEmpty(serieLabel.formatter)) { var value = serieData.data[1]; var total = serie.yTotal; var content = SerieLabelHelper.GetFormatterContent(serie, serieData, value, total, serieLabel); if (serieData.labelObject.SetText(content)) { RefreshChart(); } } else { if (serieData.name.Contains("newline")) { serieData.name = serieData.name.Replace("newline", "\n"); } if (serieData.labelObject.SetText(serieData.name)) { RefreshChart(); } } serieData.labelObject.SetPosition(serieData.labelPosition); if (showLabel) { serieData.labelObject.SetLabelPosition(serieLabel.offset); } else { serieData.SetLabelActive(false); } } else { serieData.SetLabelActive(false); } serieData.labelObject.UpdateIcon(serieData.iconStyle); }