void RendererImplementationPlot::handlePlotSelectionEvent(vtkObject * DEBUG_ONLY(subject), unsigned long /*eventId*/, void * callData) { assert(subject == m_chart.Get()); auto plot = reinterpret_cast<vtkPlot *>(callData); if (!plot) { m_renderView.clearSelection(); return; } auto contextData = contextDataContaining(*plot); assert(contextData); auto selection = VisualizationSelection( contextData, contextData->defaultVisualizationPort(), IndexType::points); if (auto indexArray = plot->GetSelection()) { selection.indices.resize(indexArray->GetNumberOfValues()); for (vtkIdType i = 0; i < indexArray->GetNumberOfValues(); ++i) { selection.indices[static_cast<size_t>(i)] = indexArray->GetValue(i); } } m_selectedPlot = contextData; m_renderView.setVisualizationSelection(selection); }
void AbstractRenderView::onSetSelection(const DataSelection & selection) { assert(selection.dataObject && dataObjects().contains(selection.dataObject)); const auto vis = visualizationFor(selection.dataObject); assert(vis); auto && newVisSelection = VisualizationSelection( selection, vis, vis->defaultVisualizationPort() ); setVisualizationSelection(newVisSelection); }