#pragma once #include "../defines.hpp" #include "../render/Texture.hpp" #include #include #include class CHyprRenderer; class CHyprMonitorDebugOverlay { public: int draw(int offset); void renderData(PHLMONITOR pMonitor, float durationUs); void renderDataNoOverlay(PHLMONITOR pMonitor, float durationUs); void frameData(PHLMONITOR pMonitor); private: std::deque m_lastFrametimes; std::deque m_lastRenderTimes; std::deque m_lastRenderTimesNoOverlay; std::deque m_lastAnimationTicks; std::chrono::high_resolution_clock::time_point m_lastFrame; PHLMONITORREF m_monitor; CBox m_lastDrawnBox; friend class CHyprRenderer; }; class CHyprDebugOverlay { public: CHyprDebugOverlay(); void draw(); void renderData(PHLMONITOR, float durationUs); void renderDataNoOverlay(PHLMONITOR, float durationUs); void frameData(PHLMONITOR); private: std::map m_monitorOverlays; cairo_surface_t* m_cairoSurface = nullptr; cairo_t* m_cairo = nullptr; SP m_texture; friend class CHyprMonitorDebugOverlay; friend class CHyprRenderer; }; inline UP g_pDebugOverlay;