summaryrefslogtreecommitdiff
path: root/include/glamac_render.h
diff options
context:
space:
mode:
authoradmin <admin@optics-design.com>2025-08-04 18:10:36 +0200
committeradmin <admin@optics-design.com>2025-08-04 18:10:36 +0200
commitb59995f9732720e8c82e22f44c0c8cb3efe2c708 (patch)
treec7ef8e6343166b3384f8ed61ce5faa3e0e6692cc /include/glamac_render.h
parent8e1ae9c581ea51bfef6e531865f75453180f31b6 (diff)
changes to label visibility
Diffstat (limited to 'include/glamac_render.h')
-rw-r--r--include/glamac_render.h33
1 files changed, 29 insertions, 4 deletions
diff --git a/include/glamac_render.h b/include/glamac_render.h
index 546bafe..a07e055 100644
--- a/include/glamac_render.h
+++ b/include/glamac_render.h
@@ -21,7 +21,7 @@ void draw_glass_properties(SDL_Renderer *renderer, TTF_Font *font, TTF_Font *tit
void draw_help_window(SDL_Renderer *renderer, TTF_Font *font, TTF_Font *titleFont, const ViewState* view);
// Main render function
-void render(SDL_Renderer *renderer, TTF_Font *font, TTF_Font *titleFont, TTF_Font *labelFont, const ViewState* view, GlassCluster* clusters, i32 clusterCount);
+void render(SDL_Renderer *renderer, TTF_Font *font, TTF_Font *titleFont, TTF_Font *labelFont, ViewState* view, GlassCluster* clusters, i32 clusterCount);
// Font management
typedef struct {
@@ -40,8 +40,33 @@ b32 load_adaptive_fonts(FontSet *fonts, i32 windowWidth, i32 windowHeight, f32 d
void free_fonts(FontSet *fonts);
void clear_text_cache(void);
-// Static label positioning
-void calculate_static_label_positions(GlassCluster* clusters, i32 clusterCount, const ViewState* view);
-void cleanup_static_label_positions(void);
+// Simple collision detection structures
+typedef struct {
+ i32 x, y; // Screen position
+ i32 width, height; // Label dimensions
+} LabelRect;
+
+// Pre-calculated label positions (updated only on catalog changes)
+typedef struct {
+ i32 glassIndex; // Which glass this label belongs to
+ i32 screenX, screenY; // Fixed screen position
+ b32 visible; // Whether to show this label
+ char text[64]; // Label text
+} PreCalculatedLabel;
+
+// Global label positioning system
+void recalculate_label_positions(const ViewState* view, GlassCluster* clusters, i32 clusterCount);
+void draw_precalculated_labels(SDL_Renderer *renderer, TTF_Font *labelFont, const ViewState* view);
+b32 needs_label_recalculation(ViewState* view);
+
+// Collision detection functions for debug mode
+b32 rects_overlap(const LabelRect* a, const LabelRect* b);
+b32 label_collides_with_point(const LabelRect* label, i32 pointX, i32 pointY, i32 pointRadius);
+
+// Advanced label visibility functions for testing
+void calculate_smart_window_position(i32 glassX, i32 glassY, i32 windowWidth, i32 windowHeight,
+ const ViewState* view, i32* windowX, i32* windowY);
+f32 calculate_label_priority(i32 glassIndex, const ViewState* view, GlassCluster* clusters, i32 clusterCount);
+b32 should_show_label_advanced(i32 glassIndex, const ViewState* view, GlassCluster* clusters, i32 clusterCount);
#endif /* GLAMAC_RENDER_H */
Back to https://optics-design.com