// Copyright (C) 2019-2024 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // #pragma once #include #include #include #include #include #include "cpu_monitor.h" #include "memory_monitor.h" enum class MonitorType{CpuAverage, DistributionCpu, Memory}; class Presenter { public: explicit Presenter(std::set enabledMonitors = {}, int yPos = 20, cv::Size graphSize = {150, 60}, std::size_t historySize = 20); explicit Presenter(const std::string& keys, int yPos = 20, cv::Size graphSize = {150, 60}, std::size_t historySize = 20); void addRemoveMonitor(MonitorType monitor); void handleKey(int key); // handles C, D, M, H keys void drawGraphs(cv::Mat& frame); std::vector reportMeans() const; const int yPos; const cv::Size graphSize; const int graphPadding; private: std::chrono::steady_clock::time_point prevTimeStamp; std::size_t historySize; CpuMonitor cpuMonitor; bool distributionCpuEnabled; MemoryMonitor memoryMonitor; std::ostringstream strStream; };