private void UpdateSerieContext() { if (m_SerieGrid == null) { return; } var needCheck = (chart.isPointerInChart && m_SerieGrid.IsPointerEnter()) || m_LegendEnter; var needInteract = false; if (!needCheck) { if (m_LastCheckContextFlag != needCheck) { m_LastCheckContextFlag = needCheck; serie.context.pointerItemDataIndex = -1; serie.context.pointerEnter = false; foreach (var serieData in serie.data) { serieData.context.highlight = false; } chart.RefreshPainter(serie); } return; } m_LastCheckContextFlag = needCheck; if (m_LegendEnter) { serie.context.pointerEnter = true; foreach (var serieData in serie.data) { serieData.context.highlight = true; } } else { serie.context.pointerItemDataIndex = -1; serie.context.pointerEnter = false; foreach (var serieData in serie.data) { if (!needInteract && serieData.context.rect.Contains(chart.pointerPos)) { serie.context.pointerItemDataIndex = serieData.index; serie.context.pointerEnter = true; serieData.context.highlight = true; needInteract = true; } else { serieData.context.highlight = false; } } } if (needInteract) { chart.RefreshPainter(serie); } }
private void UpdateSerieGridContext() { if (m_SerieGrid == null) { return; } var lineWidth = serie.lineStyle.GetWidth(chart.theme.serie.lineWidth); var needCheck = (chart.isPointerInChart && m_SerieGrid.IsPointerEnter()) || m_LegendEnter; if (!needCheck) { if (m_LastCheckContextFlag != needCheck) { m_LastCheckContextFlag = needCheck; serie.context.pointerItemDataIndex = -1; serie.context.pointerEnter = false; serie.highlight = false; serie.ResetInteract(); foreach (var serieData in serie.data) { serieData.context.highlight = false; } if (SeriesHelper.IsStack(chart.series)) { chart.RefreshTopPainter(); } else { chart.RefreshPainter(serie); } } return; } m_LastCheckContextFlag = needCheck; var themeSymbolSize = chart.theme.serie.lineSymbolSize; var themeSymbolSelectedSize = chart.theme.serie.lineSymbolSelectedSize; var needInteract = false; if (m_LegendEnter) { serie.interact.SetValue(ref needInteract, lineWidth, true, chart.theme.serie.selectedRate); for (int i = 0; i < serie.dataCount; i++) { var serieData = serie.data[i]; var symbol = SerieHelper.GetSerieSymbol(serie, serieData); var symbolSelectedSize = symbol.GetSelectedSize(serieData.data, themeSymbolSelectedSize); serieData.context.highlight = true; serieData.interact.SetValue(ref needInteract, symbolSelectedSize); } } else if (serie.context.isTriggerByAxis) { serie.context.pointerEnter = true; serie.interact.SetValue(ref needInteract, lineWidth, true, chart.theme.serie.selectedRate); for (int i = 0; i < serie.dataCount; i++) { var serieData = serie.data[i]; var symbol = SerieHelper.GetSerieSymbol(serie, serieData); var symbolSize = symbol.GetSize(serieData.data, themeSymbolSize); var symbolSelectedSize = symbol.GetSelectedSize(serieData.data, themeSymbolSelectedSize); if (i == serie.context.pointerItemDataIndex) { serieData.context.highlight = true; serieData.interact.SetValue(ref needInteract, symbolSelectedSize); } else { serieData.context.highlight = false; serieData.interact.SetValue(ref needInteract, symbolSize); } } } else { serie.context.pointerItemDataIndex = -1; serie.context.pointerEnter = false; for (int i = 0; i < serie.dataCount; i++) { var serieData = serie.data[i]; serieData.index = i; var dist = Vector3.Distance(chart.pointerPos, serieData.context.position); var symbol = SerieHelper.GetSerieSymbol(serie, serieData); var symbolSize = symbol.GetSize(serieData.data, themeSymbolSize); var symbolSelectedSize = symbol.GetSelectedSize(serieData.data, themeSymbolSelectedSize); if (dist <= symbolSelectedSize) { serie.context.pointerItemDataIndex = serieData.index; serie.context.pointerEnter = true; serie.interact.SetValue(ref needInteract, lineWidth, true); serieData.context.highlight = true; serieData.interact.SetValue(ref needInteract, symbolSelectedSize); } else { serieData.context.highlight = false; serieData.interact.SetValue(ref needInteract, symbolSize); } } } if (needInteract) { if (SeriesHelper.IsStack(chart.series)) { chart.RefreshTopPainter(); } else { chart.RefreshPainter(serie); } } }
private void UpdateSerieContext() { if (m_SerieGrid == null) { return; } var needCheck = (chart.isPointerInChart && m_SerieGrid.IsPointerEnter()) || m_LegendEnter; var needInteract = false; if (!needCheck) { if (m_LastCheckContextFlag != needCheck) { m_LastCheckContextFlag = needCheck; serie.context.pointerItemDataIndex = -1; serie.context.pointerEnter = false; foreach (var serieData in serie.data) { var barColor = SerieHelper.GetItemColor(serie, serieData, chart.theme, serie.context.colorIndex, false); var barToColor = SerieHelper.GetItemToColor(serie, serieData, chart.theme, serie.context.colorIndex, false); serieData.interact.SetColor(ref needInteract, barColor, barToColor); } if (needInteract) { chart.RefreshPainter(serie); } } return; } m_LastCheckContextFlag = needCheck; if (m_LegendEnter) { serie.context.pointerEnter = true; foreach (var serieData in serie.data) { var barColor = SerieHelper.GetItemColor(serie, serieData, chart.theme, serie.context.colorIndex, true); var barToColor = SerieHelper.GetItemToColor(serie, serieData, chart.theme, serie.context.colorIndex, true); serieData.interact.SetColor(ref needInteract, barColor, barToColor); } } else { serie.context.pointerItemDataIndex = -1; serie.context.pointerEnter = false; foreach (var serieData in serie.data) { if (serieData.context.rect.Contains(chart.pointerPos)) { serie.context.pointerItemDataIndex = serieData.index; serie.context.pointerEnter = true; serieData.context.highlight = true; var barColor = SerieHelper.GetItemColor(serie, serieData, chart.theme, serie.context.colorIndex, true); var barToColor = SerieHelper.GetItemToColor(serie, serieData, chart.theme, serie.context.colorIndex, true); serieData.interact.SetColor(ref needInteract, barColor, barToColor); } else { serieData.context.highlight = false; var barColor = SerieHelper.GetItemColor(serie, serieData, chart.theme, serie.context.colorIndex, false); var barToColor = SerieHelper.GetItemToColor(serie, serieData, chart.theme, serie.context.colorIndex, false); serieData.interact.SetColor(ref needInteract, barColor, barToColor); } } } if (needInteract) { chart.RefreshPainter(serie); } }
private void UpdateSerieContext() { var needCheck = m_LegendEnter || (chart.isPointerInChart && (m_Grid == null || m_Grid.IsPointerEnter())); var needHideAll = false; if (!needCheck) { if (m_LastCheckContextFlag == needCheck) { return; } needHideAll = true; } m_LastCheckContextFlag = needCheck; serie.context.pointerItemDataIndex = -1; serie.context.pointerEnter = false; var themeSymbolSize = chart.theme.serie.scatterSymbolSize; var themeSymbolSelectedSize = chart.theme.serie.scatterSymbolSelectedSize; var needInteract = false; for (int i = serie.dataCount - 1; i >= 0; i--) { var serieData = serie.data[i]; var symbol = SerieHelper.GetSerieSymbol(serie, serieData); var symbolSize = symbol.GetSize(serieData.data, themeSymbolSize); var symbolSelectedSize = symbol.GetSelectedSize(serieData.data, themeSymbolSelectedSize); if (m_LegendEnter || (!needHideAll && Vector3.Distance(serieData.context.position, chart.pointerPos) <= symbolSize)) { serie.context.pointerItemDataIndex = i; serie.context.pointerEnter = true; serieData.context.highlight = true; serieData.interact.SetValue(ref needInteract, symbolSelectedSize); } else { serieData.context.highlight = false; serieData.interact.SetValue(ref needInteract, symbolSize); } } if (needInteract) { chart.RefreshPainter(serie); } }