Fix font handling: use const Font* for get_current_font and all GUI font save/restore logic
This commit is contained in:
@@ -45,22 +45,22 @@ void LowLevelGUI::draw_window(LowLevelWindow* window){
|
||||
renderer->draw_line(close_x + 3, close_y + 3, close_x + close_size - 4, close_y + close_size - 4, true, 1);
|
||||
renderer->draw_line(close_x + close_size - 4, close_y + 3, close_x + 3, close_y + close_size - 4, true, 1);
|
||||
|
||||
Font original_font = renderer->get_current_font();
|
||||
const Font* original_font = renderer->get_current_font();
|
||||
renderer->set_font(current_font);
|
||||
renderer->draw_string_scaled(window->x + 10, window->y + 3, window->title, 2);
|
||||
|
||||
renderer->set_font(&original_font);
|
||||
renderer->set_font(original_font);
|
||||
}
|
||||
|
||||
void LowLevelGUI::draw_button(LowLevelWindow* window, int x, int y, const char *label, bool pressed, bool rounded)
|
||||
{
|
||||
window = validate_or_create_window(window, renderer);
|
||||
Font original_font = renderer->get_current_font();
|
||||
const Font* original_font = renderer->get_current_font();
|
||||
bool original_text_color = renderer->get_current_text_color();
|
||||
renderer->set_font(current_font);
|
||||
int text_x = window->x + x + 5;
|
||||
int text_y = window->y + y + 5;
|
||||
int height = renderer->get_current_font().get_char_height() * 2 + 10;
|
||||
int height = renderer->get_current_font()->get_char_height() * 2 + 10;
|
||||
int width = int(renderer->draw_string_scaled(text_x, text_y, label, 2) * 1) + 30;
|
||||
|
||||
if (pressed)
|
||||
@@ -79,15 +79,15 @@ void LowLevelGUI::draw_button(LowLevelWindow* window, int x, int y, const char *
|
||||
renderer->set_text_color(!pressed);
|
||||
renderer->draw_string_scaled(text_x, text_y, label, 2);
|
||||
|
||||
renderer->set_font(&original_font);
|
||||
renderer->set_font(original_font);
|
||||
renderer->set_text_color(original_text_color);
|
||||
}
|
||||
|
||||
void LowLevelGUI::draw_checkbox(LowLevelWindow* window, int x, int y, const char *label, bool checked) {
|
||||
window = validate_or_create_window(window, renderer);
|
||||
Font original_font = renderer->get_current_font();
|
||||
const Font* original_font = renderer->get_current_font();
|
||||
renderer->set_font(current_font);
|
||||
int box_size = renderer->get_current_font().get_char_height() * 2 ;
|
||||
int box_size = renderer->get_current_font()->get_char_height() * 2 ;
|
||||
int box_x = window->x + x;
|
||||
int box_y = window->y + y;
|
||||
// Draw checkbox square
|
||||
@@ -101,14 +101,14 @@ void LowLevelGUI::draw_checkbox(LowLevelWindow* window, int x, int y, const char
|
||||
// Draw label
|
||||
renderer->set_text_color(true);
|
||||
renderer->draw_string_scaled(box_x + box_size + 5, box_y - 1, label, 2);
|
||||
renderer->set_font(&original_font);
|
||||
renderer->set_font(original_font);
|
||||
}
|
||||
|
||||
void LowLevelGUI::draw_radio_button(LowLevelWindow* window, int x, int y, const char *label, bool selected) {
|
||||
window = validate_or_create_window(window, renderer);
|
||||
Font original_font = renderer->get_current_font();
|
||||
const Font* original_font = renderer->get_current_font();
|
||||
renderer->set_font(current_font);
|
||||
int radius = renderer->get_current_font().get_char_height();
|
||||
int radius = renderer->get_current_font()->get_char_height();
|
||||
int center_x = window->x + x + radius;
|
||||
int center_y = window->y + y + radius;
|
||||
// Draw outer circle
|
||||
@@ -121,7 +121,7 @@ void LowLevelGUI::draw_radio_button(LowLevelWindow* window, int x, int y, const
|
||||
// Draw label
|
||||
renderer->set_text_color(true);
|
||||
renderer->draw_string_scaled(center_x + radius + 5, center_y - radius / 2, label, 2);
|
||||
renderer->set_font(&original_font);
|
||||
renderer->set_font(original_font);
|
||||
|
||||
}
|
||||
|
||||
@@ -138,7 +138,7 @@ void LowLevelGUI::draw_slider(LowLevelWindow* window, int x, int y, int width, i
|
||||
renderer->draw_rectangle(handle_x - 6, slider_y - 1, 12, height + 2, true, 1);
|
||||
|
||||
|
||||
Font original_font = renderer->get_current_font();
|
||||
const Font* original_font = renderer->get_current_font();
|
||||
renderer->set_font(current_font);
|
||||
// draw current position value label on top of the slider
|
||||
char pos_label[10];
|
||||
@@ -149,7 +149,7 @@ void LowLevelGUI::draw_slider(LowLevelWindow* window, int x, int y, int width, i
|
||||
renderer->draw_string_scaled(slider_x, window->y + y, label, 2);
|
||||
}
|
||||
|
||||
renderer->set_font(&original_font);
|
||||
renderer->set_font(original_font);
|
||||
|
||||
|
||||
|
||||
@@ -157,7 +157,7 @@ void LowLevelGUI::draw_slider(LowLevelWindow* window, int x, int y, int width, i
|
||||
|
||||
void LowLevelGUI::draw_calendar(LowLevelWindow* window, int x, int y, int month, int year) {
|
||||
window = validate_or_create_window(window, renderer);
|
||||
Font original_font = renderer->get_current_font();
|
||||
const Font* original_font = renderer->get_current_font();
|
||||
renderer->set_font(current_font);
|
||||
|
||||
// 1. Draw Month and Year Header
|
||||
@@ -209,7 +209,7 @@ void LowLevelGUI::draw_calendar(LowLevelWindow* window, int x, int y, int month,
|
||||
renderer->draw_string_scaled(cell_x + offset_x, cell_y + 5, day_str, 1);
|
||||
}
|
||||
|
||||
renderer->set_font(&original_font);
|
||||
renderer->set_font(original_font);
|
||||
}
|
||||
|
||||
void LowLevelGUI::draw_textbox(LowLevelWindow* window, int x, int y, int width, int height, const char* content, bool focused) {
|
||||
@@ -226,7 +226,7 @@ void LowLevelGUI::draw_textbox(LowLevelWindow* window, int x, int y, int width,
|
||||
}
|
||||
|
||||
// Draw content text inside the textbox
|
||||
Font original_font = renderer->get_current_font();
|
||||
const Font* original_font = renderer->get_current_font();
|
||||
renderer->set_font(current_font);
|
||||
renderer->set_text_color(true);
|
||||
|
||||
@@ -234,7 +234,7 @@ void LowLevelGUI::draw_textbox(LowLevelWindow* window, int x, int y, int width,
|
||||
int text_y = box_y + 5;
|
||||
renderer->draw_string_scaled(text_x, text_y, content, 1);
|
||||
|
||||
renderer->set_font(&original_font);
|
||||
renderer->set_font(original_font);
|
||||
}
|
||||
|
||||
void LowLevelGUI::draw_tab(LowLevelWindow* window, int x, int y, int width, int height, const char* label, bool selected) {
|
||||
@@ -249,17 +249,17 @@ void LowLevelGUI::draw_tab(LowLevelWindow* window, int x, int y, int width, int
|
||||
renderer->draw_rectangle(tab_x - 1, tab_y - 1, width + 2, height + 2, true, 1);
|
||||
}
|
||||
|
||||
Font original_font = renderer->get_current_font();
|
||||
const Font* original_font = renderer->get_current_font();
|
||||
renderer->set_font(current_font);
|
||||
renderer->set_text_color(true);
|
||||
|
||||
// Center the label within the tab
|
||||
int text_width = int(renderer->draw_string_scaled(0, 0, label, 1) * 0.75);
|
||||
int text_x = tab_x + (width - text_width) / 2;
|
||||
int text_y = tab_y + (height - renderer->get_current_font().get_char_height()) / 2;
|
||||
int text_y = tab_y + (height - renderer->get_current_font()->get_char_height()) / 2;
|
||||
renderer->draw_string_scaled(text_x, text_y, label, 1);
|
||||
|
||||
renderer->set_font(&original_font);
|
||||
renderer->set_font(original_font);
|
||||
}
|
||||
|
||||
void LowLevelGUI::draw_status_bar(LowLevelWindow* window, int x, int y, int width, const char* label, const char* sublabel, int percentage, const char* value_text) {
|
||||
@@ -267,7 +267,7 @@ void LowLevelGUI::draw_status_bar(LowLevelWindow* window, int x, int y, int widt
|
||||
int base_x = window->x + x;
|
||||
int base_y = window->y + y;
|
||||
|
||||
Font original_font = renderer->get_current_font();
|
||||
const Font* original_font = renderer->get_current_font();
|
||||
renderer->set_font(current_font);
|
||||
|
||||
// Draw Main Label (e.g., "PANELS")
|
||||
@@ -289,7 +289,7 @@ void LowLevelGUI::draw_status_bar(LowLevelWindow* window, int x, int y, int widt
|
||||
renderer->draw_rounded_rectangle(base_x + 2, bar_y + 2, fill_width - 4, bar_height - 4, 4, true, true);
|
||||
}
|
||||
|
||||
renderer->set_font(&original_font);
|
||||
renderer->set_font(original_font);
|
||||
}
|
||||
|
||||
void LowLevelGUI::draw_circular_gauge(LowLevelWindow* window, int x, int y, int width, const char* label, int percentage) {
|
||||
@@ -301,7 +301,7 @@ void LowLevelGUI::draw_circular_gauge(LowLevelWindow* window, int x, int y, int
|
||||
// Draw pill-shaped container
|
||||
renderer->draw_rounded_rectangle(base_x, base_y, width, height, height/2, true);
|
||||
|
||||
Font original_font = renderer->get_current_font();
|
||||
const Font* original_font = renderer->get_current_font();
|
||||
renderer->set_font(current_font);
|
||||
|
||||
// Draw Label
|
||||
@@ -323,7 +323,7 @@ void LowLevelGUI::draw_circular_gauge(LowLevelWindow* window, int x, int y, int
|
||||
// Note: If your renderer supports arcs:
|
||||
// renderer->draw_arc(centerX, centerY, radius, 0, (percentage * 360) / 100);
|
||||
|
||||
renderer->set_font(&original_font);
|
||||
renderer->set_font(original_font);
|
||||
}
|
||||
|
||||
|
||||
@@ -335,7 +335,7 @@ void LowLevelGUI::draw_notification(LowLevelWindow* window, int x, int y, int wi
|
||||
// Draw dark background
|
||||
renderer->draw_rounded_rectangle(base_x, base_y, width, 100, 15, true, true);
|
||||
|
||||
Font original_font = renderer->get_current_font();
|
||||
const Font* original_font = renderer->get_current_font();
|
||||
renderer->set_font(current_font);
|
||||
renderer->set_text_color(false); // Assume false is white/light on dark
|
||||
|
||||
@@ -347,15 +347,15 @@ void LowLevelGUI::draw_notification(LowLevelWindow* window, int x, int y, int wi
|
||||
renderer->draw_string_scaled(base_x + 15, base_y + 30, message, 2);
|
||||
|
||||
renderer->set_text_color(true);
|
||||
renderer->set_font(&original_font);
|
||||
renderer->set_font(original_font);
|
||||
}
|
||||
|
||||
void LowLevelGUI::draw_large_clock(LowLevelWindow* window, int x, int y, const char* time_str) {
|
||||
window = validate_or_create_window(window, renderer);
|
||||
Font original_font = renderer->get_current_font();
|
||||
const Font* original_font = renderer->get_current_font();
|
||||
renderer->set_font(current_font);
|
||||
// Draw the time significantly larger (scale 5 or 6)
|
||||
renderer->draw_string_scaled(window->x + x, window->y + y, time_str, 6);
|
||||
renderer->set_font(&original_font);
|
||||
renderer->set_font(original_font);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user