#pragma once #include "implot.h" // Configuracion compartida para graficos de visualizacion estatica // (dashboards de resumen, no exploracion interactiva). // // Por que existe esto: // - ImPlot por defecto permite pan/zoom, auto-fit en el primer frame, // y reacciona a mouse. En un dashboard eso provoca: // * barras que "se deslizan" los primeros frames (auto-fit animation) // * ejes que recalculan tick labels al cambiar rango (vibracion) // * menus al right-click (ruido) // - Con estos flags + Lock + Cond_Always el plot queda completamente // estatico entre frames. // // Uso tipico dentro de un chart atomico: // // if (ImPlot::BeginPlot(title, ImVec2(-1, height), // plot_static::kPlotFlags)) { // ImPlot::SetupAxes(nullptr, nullptr, // plot_static::kAxisFlags, // plot_static::kAxisFlags); // ImPlot::SetupAxisLimits(ImAxis_X1, xmin, xmax, ImPlotCond_Always); // ImPlot::SetupAxisLimits(ImAxis_Y1, ymin, ymax, ImPlotCond_Always); // ImPlot::Plot...(...); // ImPlot::EndPlot(); // } namespace plot_static { // Flags del plot: sin frame, sin menu, sin box-select, sin mouse-text overlay. // NO se usa ImPlotFlags_NoInputs para permitir IsPlotHovered() / hover // tooltips. El pan/zoom queda bloqueado via ImPlotAxisFlags_Lock en kAxisFlags. constexpr ImPlotFlags kPlotFlags = ImPlotFlags_NoFrame | ImPlotFlags_NoMenus | ImPlotFlags_NoBoxSelect | ImPlotFlags_NoMouseText; // Flags por eje: bloqueado (pan/zoom imposible), sin fit inicial // (no anima en el primer frame), sin highlight al pasar el mouse, // sin menu al right-click. constexpr ImPlotAxisFlags kAxisFlags = ImPlotAxisFlags_NoMenus | ImPlotAxisFlags_Lock | ImPlotAxisFlags_NoInitialFit | ImPlotAxisFlags_NoHighlight; // Variante para ejes decorativos (pies, heatmaps): sin ticks, sin labels, // sin grid ni highlight. Combina Lock + NoInitialFit + NoDecorations. constexpr ImPlotAxisFlags kAxisFlagsHidden = kAxisFlags | ImPlotAxisFlags_NoDecorations | ImPlotAxisFlags_NoGridLines; } // namespace plot_static