#include #include #include #include #include namespace hex::plugin::visualizers { void drawScatterPlotVisualizer(pl::ptrn::Pattern &, pl::ptrn::IIterable &, bool shouldReset, std::span arguments) { static std::vector xValues, yValues; auto xPattern = arguments[0].toPattern(); auto yPattern = arguments[1].toPattern(); if (ImPlot::BeginPlot("##plot", ImVec2(400, 250), ImPlotFlags_CanvasOnly)) { ImPlot::SetupAxes("X", "Y", ImPlotAxisFlags_AutoFit, ImPlotAxisFlags_AutoFit); if (shouldReset) { xValues.clear(); yValues.clear(); xValues = sampleData(patternToArray(xPattern.get()), ImPlot::GetPlotSize().x * 4); yValues = sampleData(patternToArray(yPattern.get()), ImPlot::GetPlotSize().x * 4); } ImPlot::PlotScatter("##scatter", xValues.data(), yValues.data(), xValues.size()); ImPlot::EndPlot(); } } }