#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
