#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_dLastFrametimes; std::deque m_dLastRenderTimes; std::deque m_dLastRenderTimesNoOverlay; std::deque m_dLastAnimationTicks; std::chrono::high_resolution_clock::time_point m_tpLastFrame; PHLMONITORREF m_pMonitor; CBox m_wbLastDrawnBox; 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_mMonitorOverlays; cairo_surface_t* m_pCairoSurface = nullptr; cairo_t* m_pCairo = nullptr; SP m_pTexture; friend class CHyprMonitorDebugOverlay; friend class CHyprRenderer; }; inline UP g_pDebugOverlay;