1#ifndef YAZE_APP_GUI_CANVAS_CANVAS_USAGE_TRACKER_H
2#define YAZE_APP_GUI_CANVAS_CANVAS_USAGE_TRACKER_H
7#include <unordered_map>
10#include "imgui/imgui.h"
107 void Initialize(
const std::string& canvas_id);
118 const std::string& details =
"");
123 void RecordOperation(
const std::string& operation_name,
double time_ms);
129 float global_scale,
float grid_step,
bool enable_grid,
130 bool enable_hex_labels,
bool enable_custom_labels);
195 std::string
FormatDuration(
const std::chrono::milliseconds& duration)
const;
209 std::shared_ptr<CanvasUsageTracker> tracker);
214 std::shared_ptr<CanvasUsageTracker>
GetTracker(
const std::string& canvas_id);
219 const std::unordered_map<std::string, std::shared_ptr<CanvasUsageTracker>>&
243 std::unordered_map<std::string, std::shared_ptr<CanvasUsageTracker>>
Global canvas usage tracker manager.
std::unordered_map< std::string, std::shared_ptr< CanvasUsageTracker > > trackers_
~CanvasUsageManager()=default
static CanvasUsageManager & Get()
CanvasUsageManager()=default
std::shared_ptr< CanvasUsageTracker > GetTracker(const std::string &canvas_id)
Get tracker for canvas.
std::string ExportGlobalReport() const
Export global usage report.
CanvasUsageStats GetGlobalStats() const
Get global usage statistics.
void ClearAllTrackers()
Clear all trackers.
const std::unordered_map< std::string, std::shared_ptr< CanvasUsageTracker > > & GetAllTrackers() const
Get all trackers.
void RegisterTracker(const std::string &canvas_id, std::shared_ptr< CanvasUsageTracker > tracker)
Register a canvas tracker.
Canvas usage tracking and analysis system.
void RecordOperation(const std::string &operation_name, double time_ms)
Record operation timing.
std::vector< std::string > GetUsageRecommendations() const
Get usage recommendations.
void SetUsageMode(CanvasUsage usage)
Set the current usage mode.
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.
std::string ExportUsageReport() const
Export usage report.
void ClearHistory()
Clear usage history.
std::chrono::steady_clock::time_point last_activity_
std::string FormatDuration(const std::chrono::milliseconds &duration) const
std::unordered_map< std::string, std::vector< double > > operation_times_
const CanvasUsageStats & GetCurrentStats() const
Get current usage statistics.
const std::vector< CanvasUsageStats > & GetUsageHistory() const
Get usage history.
double CalculateAverageOperationTime(const std::string &operation_name) const
void RecordInteraction(CanvasInteraction interaction, const std::string &details="")
Record an interaction.
std::vector< std::pair< CanvasInteraction, std::string > > interaction_history_
void StartSession()
Start session.
std::chrono::steady_clock::time_point session_start_
ImVec4 GetUsageModeColor(CanvasUsage usage) const
Get usage mode color for UI.
std::string GetUsageModeName(CanvasUsage usage) const
Get usage mode name.
CanvasUsageTracker()=default
void EndSession()
End session.
void Initialize(const std::string &canvas_id)
Initialize the usage tracker.
std::vector< CanvasUsageStats > usage_history_
CanvasUsageStats current_stats_
CanvasUsage
Canvas usage patterns and tracking.
CanvasInteraction
Canvas interaction types.
std::chrono::milliseconds total_time
double max_operation_time_ms
std::chrono::steady_clock::time_point session_start
double average_operation_time_ms
std::chrono::milliseconds idle_time
std::chrono::milliseconds active_time
bool enable_custom_labels