kinect/codes/Azure-Kinect-Sensor-SDK/tools/k4aviewer/k4alogdockcontrol.h

75 lines
1.7 KiB
C++

// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
#ifndef K4ALOGDOCKCONTROL_H
#define K4ALOGDOCKCONTROL_H
// System headers
//
#include <array>
#include <list>
#include <mutex>
#include <string>
// Library headers
//
// Project headers
//
#include "ik4adockcontrol.h"
#include "k4aviewerlogmanager.h"
namespace k4aviewer
{
class K4ALogDockControl : public IK4ADockControl
{
public:
K4ALogDockControl();
~K4ALogDockControl() override = default;
K4ALogDockControl(K4ALogDockControl &) = delete;
K4ALogDockControl(K4ALogDockControl &&) = delete;
K4ALogDockControl operator=(K4ALogDockControl &) = delete;
K4ALogDockControl operator=(K4ALogDockControl &&) = delete;
K4ADockControlStatus Show() override;
private:
struct LogEntry
{
LogEntry() = default;
LogEntry(k4a_log_level_t severity, const char *file, int line, const char *msg) :
Severity(severity),
File(file),
Line(line),
Msg(msg)
{
}
k4a_log_level_t Severity;
std::string File;
int Line;
std::string Msg;
};
struct LogListener : public IK4AViewerLogListener
{
void Log(k4a_log_level_t severity, const char *file, int line, const char *msg) override;
~LogListener() override = default;
std::list<LogEntry> m_entries;
bool m_updated = false;
std::mutex m_mutex;
k4a_log_level_t m_minSeverity = K4A_LOG_LEVEL_WARNING;
};
std::shared_ptr<LogListener> m_logListener;
std::array<char, 100> m_filterString = { { '\0' } };
bool m_showLineInfo = false;
};
} // namespace k4aviewer
#endif