plugin  0.1.0
presenter.h
1 // Copyright (C) 2019-2024 Intel Corporation
2 // SPDX-License-Identifier: Apache-2.0
3 //
4 
5 #pragma once
6 
7 #include <chrono>
8 #include <map>
9 #include <ostream>
10 #include <set>
11 
12 #include <opencv2/imgproc.hpp>
13 
14 #include "cpu_monitor.h"
15 #include "memory_monitor.h"
16 
17 enum class MonitorType{CpuAverage, DistributionCpu, Memory};
18 
19 class Presenter {
20 public:
21  explicit Presenter(std::set<MonitorType> enabledMonitors = {},
22  int yPos = 20,
23  cv::Size graphSize = {150, 60},
24  std::size_t historySize = 20);
25  explicit Presenter(const std::string& keys,
26  int yPos = 20,
27  cv::Size graphSize = {150, 60},
28  std::size_t historySize = 20);
29  void addRemoveMonitor(MonitorType monitor);
30  void handleKey(int key); // handles C, D, M, H keys
31  void drawGraphs(cv::Mat& frame);
32  std::vector<std::string> reportMeans() const;
33 
34  const int yPos;
35  const cv::Size graphSize;
36  const int graphPadding;
37 private:
38  std::chrono::steady_clock::time_point prevTimeStamp;
39  std::size_t historySize;
40  CpuMonitor cpuMonitor;
41  bool distributionCpuEnabled;
42  MemoryMonitor memoryMonitor;
43  std::ostringstream strStream;
44 };
Definition: cpu_monitor.h:11
Definition: memory_monitor.h:10
Definition: presenter.h:19