private void DrawPolarIndicator(VertexHelper vh, Tooltip tooltip, PolarCoord m_Polar) { if (tooltip.context.angle < 0) { return; } var theme = chart.theme; var m_AngleAxis = ComponentHelper.GetAngleAxis(chart.components, m_Polar.index); var lineColor = TooltipHelper.GetLineColor(tooltip, theme); var lineType = tooltip.lineStyle.GetType(theme.tooltip.lineType); var lineWidth = tooltip.lineStyle.GetWidth(theme.tooltip.lineWidth); var cenPos = m_Polar.context.center; var radius = m_Polar.context.radius; var sp = m_Polar.context.center; var tooltipAngle = m_AngleAxis.GetValueAngle(tooltip.context.angle); var ep = ChartHelper.GetPos(sp, radius, tooltipAngle, true); switch (tooltip.type) { case Tooltip.Type.Corss: ChartDrawer.DrawLineStyle(vh, lineType, lineWidth, sp, ep, lineColor); var dist = Vector2.Distance(chart.pointerPos, cenPos); if (dist > radius) { dist = radius; } var outsideRaidus = dist + tooltip.lineStyle.GetWidth(theme.tooltip.lineWidth) * 2; UGL.DrawDoughnut(vh, cenPos, dist, outsideRaidus, lineColor, Color.clear); break; case Tooltip.Type.Line: ChartDrawer.DrawLineStyle(vh, lineType, lineWidth, sp, ep, lineColor); break; case Tooltip.Type.Shadow: UGL.DrawSector(vh, cenPos, radius, lineColor, tooltipAngle - 2, tooltipAngle + 2, chart.settings.cicleSmoothness); break; } }
private bool SetSerieTooltip(Tooltip tooltip, List <Serie> series) { if (tooltip.trigger == Tooltip.Trigger.None) { return(false); } if (series.Count <= 0) { return(false); } string category = null; var showCategory = false; var isTriggerByAxis = false; var dataIndex = -1; tooltip.context.data.param.Clear(); tooltip.context.pointer = chart.pointerPos; if (m_PointerContainer is GridCoord) { if (tooltip.trigger == Tooltip.Trigger.Axis) { isTriggerByAxis = true; GetAxisCategory(m_PointerContainer.index, ref dataIndex, ref category); if (series.Count <= 1) { showCategory = true; tooltip.context.data.title = series[0].serieName; } else { tooltip.context.data.title = category; } } } for (int i = 0; i < series.Count; i++) { var serie = series[i]; serie.context.isTriggerByAxis = isTriggerByAxis; if (isTriggerByAxis && dataIndex >= 0) { serie.context.pointerItemDataIndex = dataIndex; } serie.handler.UpdateTooltipSerieParams(dataIndex, showCategory, category, tooltip.marker, tooltip.itemFormatter, tooltip.numericFormatter, ref tooltip.context.data.param, ref tooltip.context.data.title); } TooltipHelper.ResetTooltipParamsByItemFormatter(tooltip, chart); if (tooltip.context.data.param.Count > 0) { tooltip.SetActive(true); if (tooltip.view != null) { tooltip.view.Refresh(); } TooltipHelper.LimitInRect(tooltip, chart.chartRect); return(true); } return(false); }