1#ifndef YAZE_APP_GUI_CANVAS_CANVAS_USAGE_TRACKER_H
2#define YAZE_APP_GUI_CANVAS_CANVAS_USAGE_TRACKER_H
6#include <unordered_map>
9#include "imgui/imgui.h"
105 void Initialize(
const std::string& canvas_id);
116 const std::string& details =
"");
128 const ImVec2& content_size,
132 bool enable_hex_labels,
133 bool enable_custom_labels);
196 std::string
FormatDuration(
const std::chrono::milliseconds& duration)
const;
210 std::shared_ptr<CanvasUsageTracker> tracker);
215 std::shared_ptr<CanvasUsageTracker>
GetTracker(
const std::string& canvas_id);
220 const std::unordered_map<std::string, std::shared_ptr<CanvasUsageTracker>>&
242 std::unordered_map<std::string, std::shared_ptr<CanvasUsageTracker>>
trackers_;
Global canvas usage tracker manager.
std::unordered_map< std::string, std::shared_ptr< CanvasUsageTracker > > trackers_
void RegisterTracker(const std::string &canvas_id, std::shared_ptr< CanvasUsageTracker > tracker)
Register a canvas tracker.
void ClearAllTrackers()
Clear all trackers.
CanvasUsageManager()=default
const std::unordered_map< std::string, std::shared_ptr< CanvasUsageTracker > > & GetAllTrackers() const
Get all trackers.
static CanvasUsageManager & Get()
std::string ExportGlobalReport() const
Export global usage report.
~CanvasUsageManager()=default
CanvasUsageStats GetGlobalStats() const
Get global usage statistics.
std::shared_ptr< CanvasUsageTracker > GetTracker(const std::string &canvas_id)
Get tracker for canvas.
Canvas usage tracking and analysis system.
std::chrono::steady_clock::time_point session_start_
void ClearHistory()
Clear usage history.
std::vector< CanvasUsageStats > usage_history_
std::vector< std::string > GetUsageRecommendations() const
Get usage recommendations.
std::unordered_map< std::string, std::vector< double > > operation_times_
std::chrono::steady_clock::time_point last_activity_
std::string FormatDuration(const std::chrono::milliseconds &duration) const
std::vector< std::pair< CanvasInteraction, std::string > > interaction_history_
void RecordInteraction(CanvasInteraction interaction, const std::string &details="")
Record an interaction.
double CalculateAverageOperationTime(const std::string &operation_name) const
const CanvasUsageStats & GetCurrentStats() const
Get current usage statistics.
void StartSession()
Start session.
const std::vector< CanvasUsageStats > & GetUsageHistory() const
Get usage history.
void SetUsageMode(CanvasUsage usage)
Set the current usage mode.
std::string ExportUsageReport() const
Export usage report.
std::string GetUsageModeName(CanvasUsage usage) const
Get usage mode name.
CanvasUsageStats current_stats_
void EndSession()
End session.
CanvasUsageTracker()=default
void Initialize(const std::string &canvas_id)
Initialize the usage tracker.
void UpdateCanvasState(const ImVec2 &canvas_size, const ImVec2 &content_size, float global_scale, float grid_step, bool enable_grid, bool enable_hex_labels, bool enable_custom_labels)
Update canvas state.
void RecordOperation(const std::string &operation_name, double time_ms)
Record operation timing.
ImVec4 GetUsageModeColor(CanvasUsage usage) const
Get usage mode color for UI.
CanvasUsage
Canvas usage patterns and tracking.
CanvasInteraction
Canvas interaction types.
Main namespace for the application.
double max_operation_time_ms
bool enable_custom_labels
std::chrono::milliseconds active_time
std::chrono::steady_clock::time_point session_start
double average_operation_time_ms
std::chrono::milliseconds idle_time
std::chrono::milliseconds total_time