yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
background_renderer.h
Go to the documentation of this file.
1#ifndef YAZE_APP_EDITOR_UI_BACKGROUND_RENDERER_H
2#define YAZE_APP_EDITOR_UI_BACKGROUND_RENDERER_H
3
4#include "imgui/imgui.h"
5#include <memory>
6#include <vector>
7
9#include "app/rom.h"
10
11namespace yaze {
12namespace gui {
13
19public:
20 struct GridSettings {
21 float grid_size = 32.0f; // Size of grid cells
22 float line_thickness = 1.0f; // Thickness of grid lines
23 float opacity = 0.12f; // Subtle but visible opacity
24 float fade_distance = 400.0f; // Distance over which grid fades
25 bool enable_animation = false; // Animation toggle (default off)
26 bool enable_breathing = false; // Color breathing effect toggle (default off)
27 bool radial_fade = true; // Re-enable subtle radial fade
28 bool enable_dots = false; // Use dots instead of lines
29 float dot_size = 2.0f; // Size of grid dots
30 float animation_speed = 1.0f; // Animation speed multiplier
31 float breathing_speed = 1.5f; // Breathing effect speed
32 float breathing_intensity = 0.3f; // How much color changes during breathing
33 };
34
35 static BackgroundRenderer& Get();
36
37 // Main rendering functions
38 void RenderDockingBackground(ImDrawList* draw_list, const ImVec2& window_pos,
39 const ImVec2& window_size, const Color& theme_color);
40 void RenderGridBackground(ImDrawList* draw_list, const ImVec2& window_pos,
41 const ImVec2& window_size, const Color& grid_color);
42 void RenderRadialGradient(ImDrawList* draw_list, const ImVec2& center,
43 float radius, const Color& inner_color, const Color& outer_color);
44
45 // Configuration
46 void SetGridSettings(const GridSettings& settings) { grid_settings_ = settings; }
47 const GridSettings& GetGridSettings() const { return grid_settings_; }
48
49 // Animation
50 void UpdateAnimation(float delta_time);
51 void SetAnimationEnabled(bool enabled) { grid_settings_.enable_animation = enabled; }
52
53 // Theme integration
54 void UpdateForTheme(const Color& primary_color, const Color& background_color);
55
56 // UI for settings
57 void DrawSettingsUI();
58
59private:
60 BackgroundRenderer() = default;
61
63 float animation_time_ = 0.0f;
64 Color cached_grid_color_{0.5f, 0.5f, 0.5f, 0.1f};
65
66 // Helper functions
67 float CalculateRadialFade(const ImVec2& pos, const ImVec2& center, float max_distance) const;
68 ImU32 BlendColorWithFade(const Color& base_color, float fade_factor) const;
69 void DrawGridLine(ImDrawList* draw_list, const ImVec2& start, const ImVec2& end,
70 ImU32 color, float thickness) const;
71 void DrawGridDot(ImDrawList* draw_list, const ImVec2& pos, ImU32 color, float size) const;
72};
73
79public:
80 static void BeginEnhancedDockSpace(ImGuiID dockspace_id, const ImVec2& size = ImVec2(0, 0),
81 ImGuiDockNodeFlags flags = 0);
82 static void EndEnhancedDockSpace();
83
84 // Configuration
85 static void SetBackgroundEnabled(bool enabled) { background_enabled_ = enabled; }
86 static void SetGridEnabled(bool enabled) { grid_enabled_ = enabled; }
87 static void SetEffectsEnabled(bool enabled) { effects_enabled_ = enabled; }
88
89private:
91 static bool grid_enabled_;
92 static bool effects_enabled_;
93 static ImVec2 last_dockspace_pos_;
94 static ImVec2 last_dockspace_size_;
95};
96
97} // namespace gui
98} // namespace yaze
99
100#endif // YAZE_APP_EDITOR_UI_BACKGROUND_RENDERER_H
Renders themed background effects for docking windows.
void SetGridSettings(const GridSettings &settings)
void RenderRadialGradient(ImDrawList *draw_list, const ImVec2 &center, float radius, const Color &inner_color, const Color &outer_color)
void RenderGridBackground(ImDrawList *draw_list, const ImVec2 &window_pos, const ImVec2 &window_size, const Color &grid_color)
void DrawGridLine(ImDrawList *draw_list, const ImVec2 &start, const ImVec2 &end, ImU32 color, float thickness) const
static BackgroundRenderer & Get()
float CalculateRadialFade(const ImVec2 &pos, const ImVec2 &center, float max_distance) const
void UpdateAnimation(float delta_time)
const GridSettings & GetGridSettings() const
void UpdateForTheme(const Color &primary_color, const Color &background_color)
void DrawGridDot(ImDrawList *draw_list, const ImVec2 &pos, ImU32 color, float size) const
ImU32 BlendColorWithFade(const Color &base_color, float fade_factor) const
void RenderDockingBackground(ImDrawList *draw_list, const ImVec2 &window_pos, const ImVec2 &window_size, const Color &theme_color)
Enhanced docking space with themed background effects.
static void BeginEnhancedDockSpace(ImGuiID dockspace_id, const ImVec2 &size=ImVec2(0, 0), ImGuiDockNodeFlags flags=0)
static void SetEffectsEnabled(bool enabled)
static void SetGridEnabled(bool enabled)
static void SetBackgroundEnabled(bool enabled)
Main namespace for the application.
Definition controller.cc:20