(Ozone) remove abstraction layer ozone_draw_text - just call

gfx_display_draw_text directly
This commit is contained in:
twinaphex 2020-09-01 05:06:21 +02:00
parent 0cba3104be
commit e1f16f1855
5 changed files with 249 additions and 100 deletions

View File

@ -2010,10 +2010,20 @@ static void ozone_draw_header(ozone_handle_t *ozone,
gfx_animation_ticker(&ticker); gfx_animation_ticker(&ticker);
} }
ozone_draw_text(title, gfx_display_draw_text(
ozone->fonts.title.font,
title,
ticker_x_offset + 128 * scale_factor, ticker_x_offset + 128 * scale_factor,
ozone->dimensions.header_height / 2 + ozone->fonts.title.line_centre_offset, ozone->dimensions.header_height / 2
TEXT_ALIGN_LEFT, video_width, video_height, &ozone->fonts.title, ozone->theme->text_rgba, false); + ozone->fonts.title.line_centre_offset,
video_width,
video_height,
ozone->theme->text_rgba,
TEXT_ALIGN_LEFT,
1.0f,
false,
1.0f,
false);
/* Icon */ /* Icon */
gfx_display_blend_begin(userdata); gfx_display_blend_begin(userdata);
@ -2064,10 +2074,20 @@ static void ozone_draw_header(ozone_handle_t *ozone,
{ {
timedate_offset = 95 * scale_factor; timedate_offset = 95 * scale_factor;
ozone_draw_text(msg, gfx_display_draw_text(
ozone->fonts.time.font,
msg,
video_width - 85 * scale_factor, video_width - 85 * scale_factor,
ozone->dimensions.header_height / 2 + ozone->fonts.time.line_centre_offset, ozone->dimensions.header_height / 2
TEXT_ALIGN_RIGHT, video_width, video_height, &ozone->fonts.time, ozone->theme->text_rgba, false); + ozone->fonts.time.line_centre_offset,
video_width,
video_height,
ozone->theme->text_rgba,
TEXT_ALIGN_RIGHT,
1.0f,
false,
1.0f,
false);
gfx_display_blend_begin(userdata); gfx_display_blend_begin(userdata);
ozone_draw_icon( ozone_draw_icon(
@ -2101,10 +2121,20 @@ static void ozone_draw_header(ozone_handle_t *ozone,
menu_display_timedate(&datetime); menu_display_timedate(&datetime);
ozone_draw_text(timedate, gfx_display_draw_text(
ozone->fonts.time.font,
timedate,
video_width - (85 * scale_factor) - timedate_offset, video_width - (85 * scale_factor) - timedate_offset,
ozone->dimensions.header_height / 2 + ozone->fonts.time.line_centre_offset, ozone->dimensions.header_height / 2
TEXT_ALIGN_RIGHT, video_width, video_height, &ozone->fonts.time, ozone->theme->text_rgba, false); + ozone->fonts.time.line_centre_offset,
video_width,
video_height,
ozone->theme->text_rgba,
TEXT_ALIGN_RIGHT,
1.0f,
false,
1.0f,
false);
gfx_display_blend_begin(userdata); gfx_display_blend_begin(userdata);
ozone_draw_icon( ozone_draw_icon(
@ -2274,41 +2304,81 @@ static void ozone_draw_footer(ozone_handle_t *ozone,
/* Draw labels */ /* Draw labels */
/* > ok */ /* > ok */
ozone_draw_text( gfx_display_draw_text(
ozone->fonts.footer.font,
ozone->footer_labels.ok.str, ozone->footer_labels.ok.str,
ok_x + icon_size + icon_padding, ok_x + icon_size + icon_padding,
footer_text_y, footer_text_y,
TEXT_ALIGN_LEFT, video_width, video_height, &ozone->fonts.footer, ozone->theme->text_rgba, false); video_width,
video_height,
ozone->theme->text_rgba,
TEXT_ALIGN_LEFT,
1.0f,
false,
1.0f,
false);
/* > back */ /* > back */
ozone_draw_text( gfx_display_draw_text(
ozone->fonts.footer.font,
ozone->footer_labels.back.str, ozone->footer_labels.back.str,
back_x + icon_size + icon_padding, back_x + icon_size + icon_padding,
footer_text_y, footer_text_y,
TEXT_ALIGN_LEFT, video_width, video_height, &ozone->fonts.footer, ozone->theme->text_rgba, false); video_width,
video_height,
ozone->theme->text_rgba,
TEXT_ALIGN_LEFT,
1.0f,
false,
1.0f,
false);
/* > search */ /* > search */
ozone_draw_text( gfx_display_draw_text(
ozone->fonts.footer.font,
ozone->footer_labels.search.str, ozone->footer_labels.search.str,
search_x + icon_size + icon_padding, search_x + icon_size + icon_padding,
footer_text_y, footer_text_y,
TEXT_ALIGN_LEFT, video_width, video_height, &ozone->fonts.footer, ozone->theme->text_rgba, false); video_width,
video_height,
ozone->theme->text_rgba,
TEXT_ALIGN_LEFT,
1.0f,
false,
1.0f,
false);
/* > fullscreen_thumbs */ /* > fullscreen_thumbs */
if (fullscreen_thumbnails_available) if (fullscreen_thumbnails_available)
ozone_draw_text( gfx_display_draw_text(
ozone->fonts.footer.font,
ozone->footer_labels.fullscreen_thumbs.str, ozone->footer_labels.fullscreen_thumbs.str,
fullscreen_thumbs_x + icon_size + icon_padding, fullscreen_thumbs_x + icon_size + icon_padding,
footer_text_y, footer_text_y,
TEXT_ALIGN_LEFT, video_width, video_height, &ozone->fonts.footer, ozone->theme->text_rgba, false); video_width,
video_height,
ozone->theme->text_rgba,
TEXT_ALIGN_LEFT,
1.0f,
false,
1.0f,
false);
/* > metadata_toggle */ /* > metadata_toggle */
if (metadata_override_available) if (metadata_override_available)
ozone_draw_text( gfx_display_draw_text(
ozone->fonts.footer.font,
ozone->footer_labels.metadata_toggle.str, ozone->footer_labels.metadata_toggle.str,
metadata_toggle_x + icon_size + icon_padding, metadata_toggle_x + icon_size + icon_padding,
footer_text_y, footer_text_y,
TEXT_ALIGN_LEFT, video_width, video_height, &ozone->fonts.footer, ozone->theme->text_rgba, false); video_width,
video_height,
ozone->theme->text_rgba,
TEXT_ALIGN_LEFT,
1.0f,
false,
1.0f,
false);
/* Core title or Switch icon */ /* Core title or Switch icon */
if (menu_core_enable) if (menu_core_enable)
@ -2376,10 +2446,19 @@ static void ozone_draw_footer(ozone_handle_t *ozone,
} }
/* Draw text */ /* Draw text */
ozone_draw_text(core_title_buf, gfx_display_draw_text(
ozone->fonts.footer.font,
core_title_buf,
ticker_x_offset + footer_margin, ticker_x_offset + footer_margin,
footer_text_y, footer_text_y,
TEXT_ALIGN_LEFT, video_width, video_height, &ozone->fonts.footer, ozone->theme->text_rgba, false); video_width,
video_height,
ozone->theme->text_rgba,
TEXT_ALIGN_LEFT,
1.0f,
false,
1.0f,
false);
} }
} }
else else

View File

@ -250,20 +250,6 @@ void ozone_restart_cursor_animation(ozone_handle_t *ozone)
ozone->theme->cursor_border_1); ozone->theme->cursor_border_1);
} }
void ozone_draw_text(
const char *str, float x,
float y,
enum text_alignment text_align,
unsigned width, unsigned height, ozone_font_data_t *font_data,
uint32_t color,
bool draw_outside)
{
gfx_display_draw_text(font_data->font, str, x, y,
width, height, color, text_align, 1.0f,
false,
1.0f, draw_outside);
}
void ozone_draw_cursor( void ozone_draw_cursor(
ozone_handle_t *ozone, ozone_handle_t *ozone,
void *userdata, void *userdata,
@ -469,10 +455,20 @@ void ozone_draw_osk(ozone_handle_t *ozone,
{ {
const char *msg = list.elems[i].data; const char *msg = list.elems[i].data;
ozone_draw_text(msg, gfx_display_draw_text(
margin + padding * 2, ozone->fonts.entries_label.font,
margin + padding + ozone->fonts.entries_label.line_height + y_offset, msg,
TEXT_ALIGN_LEFT, video_width, video_height, &ozone->fonts.entries_label, text_color, false); margin + padding * 2, /* x */
margin + padding +
ozone->fonts.entries_label.line_height
+ y_offset, /* y */
video_width, video_height,
text_color,
TEXT_ALIGN_LEFT,
1.0f,
false,
1.0f,
false);
/* Cursor */ /* Cursor */
if (i == list.size - 1) if (i == list.size - 1)
@ -632,16 +628,20 @@ void ozone_draw_messagebox(
const char *msg = list.elems[i].data; const char *msg = list.elems[i].data;
if (msg) if (msg)
ozone_draw_text( gfx_display_draw_text(
ozone->fonts.footer.font,
msg, msg,
x - longest_width/2.0, x - longest_width/2.0,
y + (i * ozone->fonts.footer.line_height) + ozone->fonts.footer.line_ascender, y + (i * ozone->fonts.footer.line_height) +
TEXT_ALIGN_LEFT, ozone->fonts.footer.line_ascender,
width, height, width,
&ozone->fonts.footer, height,
COLOR_TEXT_ALPHA(ozone->theme->text_rgba, (uint32_t)(ozone->animations.messagebox_alpha*255.0f)), COLOR_TEXT_ALPHA(ozone->theme->text_rgba, (uint32_t)(ozone->animations.messagebox_alpha*255.0f)),
false TEXT_ALIGN_LEFT,
); 1.0f,
false,
1.0f,
false);
} }
string_list_deinitialize(&list); string_list_deinitialize(&list);

View File

@ -21,14 +21,6 @@
#include "../../menu_driver.h" #include "../../menu_driver.h"
void ozone_draw_text(
const char *str, float x,
float y,
enum text_alignment text_align,
unsigned width, unsigned height, ozone_font_data_t *font_data,
uint32_t color,
bool draw_outside);
void ozone_draw_cursor( void ozone_draw_cursor(
ozone_handle_t *ozone, ozone_handle_t *ozone,
void *userdata, void *userdata,

View File

@ -129,11 +129,35 @@ static void ozone_draw_entry_value(
} }
if (do_draw_text) if (do_draw_text)
ozone_draw_text(value, x, y, TEXT_ALIGN_RIGHT, video_width, video_height, &ozone->fonts.entries_label, COLOR_TEXT_ALPHA(ozone->theme->text_selected_rgba, alpha_uint32), false); {
gfx_display_draw_text(
ozone->fonts.entries_label.font,
value,
x,
y,
video_width,
video_height,
COLOR_TEXT_ALPHA(ozone->theme->text_selected_rgba, alpha_uint32),
TEXT_ALIGN_RIGHT,
1.0f,
false,
1.0f,
false);
}
else else
ozone_draw_text((switch_is_on ? msg_hash_to_str(MENU_ENUM_LABEL_VALUE_ON) : msg_hash_to_str(MENU_ENUM_LABEL_VALUE_OFF)), gfx_display_draw_text(
x, y, TEXT_ALIGN_RIGHT, video_width, video_height, &ozone->fonts.entries_label, ozone->fonts.entries_label.font,
COLOR_TEXT_ALPHA((switch_is_on ? ozone->theme->text_selected_rgba : ozone->theme->text_sublabel_rgba), alpha_uint32), false); (switch_is_on ? msg_hash_to_str(MENU_ENUM_LABEL_VALUE_ON) : msg_hash_to_str(MENU_ENUM_LABEL_VALUE_OFF)),
x,
y,
video_width,
video_height,
COLOR_TEXT_ALPHA((switch_is_on ? ozone->theme->text_selected_rgba : ozone->theme->text_sublabel_rgba), alpha_uint32),
TEXT_ALIGN_RIGHT,
1.0f,
false,
1.0f,
false);
} }
static void ozone_thumbnail_bar_hide_end(void *userdata) static void ozone_thumbnail_bar_hide_end(void *userdata)
@ -168,16 +192,20 @@ static void ozone_draw_no_thumbnail_available(ozone_handle_t *ozone,
0, 1, ozone->theme->entries_icon); 0, 1, ozone->theme->entries_icon);
gfx_display_blend_end(userdata); gfx_display_blend_end(userdata);
ozone_draw_text( gfx_display_draw_text(
ozone->fonts.footer.font,
msg_hash_to_str(MSG_NO_THUMBNAIL_AVAILABLE), msg_hash_to_str(MSG_NO_THUMBNAIL_AVAILABLE),
x_position + sidebar_width / 2, x_position + sidebar_width / 2,
video_height/2 + icon_size/2 + ozone->fonts.footer.line_ascender - y_offset, video_height / 2 + icon_size / 2
TEXT_ALIGN_CENTER, + ozone->fonts.footer.line_ascender - y_offset,
video_width, video_height, video_width,
&ozone->fonts.footer, video_height,
ozone->theme->text_rgba, ozone->theme->text_rgba,
true TEXT_ALIGN_CENTER,
); 1.0f,
false,
1.0f,
true);
} }
static void ozone_content_metadata_line( static void ozone_content_metadata_line(
@ -190,16 +218,19 @@ static void ozone_content_metadata_line(
uint32_t color, uint32_t color,
unsigned lines_count) unsigned lines_count)
{ {
ozone_draw_text( gfx_display_draw_text(
ozone->fonts.footer.font,
text, text,
column_x, column_x,
*y + ozone->fonts.footer.line_ascender, *y + ozone->fonts.footer.line_ascender,
TEXT_ALIGN_LEFT, video_width,
video_width, video_height, video_height,
&ozone->fonts.footer,
color, color,
true TEXT_ALIGN_LEFT,
); 1.0f,
false,
1.0f,
true);
if (lines_count > 0) if (lines_count > 0)
*y += (unsigned)(ozone->fonts.footer.line_height * (lines_count - 1)) + (unsigned)((float)ozone->fonts.footer.line_height * 1.5f); *y += (unsigned)(ozone->fonts.footer.line_height * (lines_count - 1)) + (unsigned)((float)ozone->fonts.footer.line_height * 1.5f);
@ -770,23 +801,43 @@ border_iterate:
} }
/* Draw text */ /* Draw text */
ozone_draw_text(rich_label, gfx_display_draw_text(
ozone->fonts.entries_label.font,
rich_label,
ticker_x_offset + text_offset + (unsigned) ticker_x_offset + text_offset + (unsigned)
ozone->dimensions_sidebar_width + x_offset + ozone->dimensions_sidebar_width + x_offset +
entry_padding + ozone->dimensions.entry_icon_size + entry_padding + ozone->dimensions.entry_icon_size +
ozone->dimensions.entry_icon_padding * 2, ozone->dimensions.entry_icon_padding * 2,
y + ozone->dimensions.entry_height / 2.0f + ozone->fonts.entries_label.line_centre_offset + scroll_y, y + ozone->dimensions.entry_height / 2.0f +
TEXT_ALIGN_LEFT, video_width, video_height, &ozone->fonts.entries_label, COLOR_TEXT_ALPHA(ozone->theme->text_rgba, alpha_uint32), false); ozone->fonts.entries_label.line_centre_offset +
scroll_y,
video_width,
video_height,
COLOR_TEXT_ALPHA(ozone->theme->text_rgba, alpha_uint32),
TEXT_ALIGN_LEFT,
1.0f,
false,
1.0f,
false);
if (menu_show_sublabels) if (menu_show_sublabels)
{ {
if (!string_is_empty(sublabel_str)) if (!string_is_empty(sublabel_str))
ozone_draw_text(sublabel_str, gfx_display_draw_text(
ozone->fonts.entries_sublabel.font,
sublabel_str,
(unsigned) ozone->dimensions_sidebar_width + (unsigned) ozone->dimensions_sidebar_width +
x_offset + entry_padding + x_offset + entry_padding +
ozone->dimensions.entry_icon_padding, ozone->dimensions.entry_icon_padding,
y + ozone->dimensions.entry_height - ozone->dimensions.spacer_1px + (node->height - ozone->dimensions.entry_height - (node->sublabel_lines * ozone->fonts.entries_sublabel.line_height))/2.0f + ozone->fonts.entries_sublabel.line_ascender + scroll_y, y + ozone->dimensions.entry_height - ozone->dimensions.spacer_1px + (node->height - ozone->dimensions.entry_height - (node->sublabel_lines * ozone->fonts.entries_sublabel.line_height))/2.0f + ozone->fonts.entries_sublabel.line_ascender + scroll_y,
TEXT_ALIGN_LEFT, video_width, video_height, &ozone->fonts.entries_sublabel, COLOR_TEXT_ALPHA(ozone->theme->text_sublabel_rgba, alpha_uint32), false); video_width,
video_height,
COLOR_TEXT_ALPHA(ozone->theme->text_sublabel_rgba,alpha_uint32),
TEXT_ALIGN_LEFT,
1.0f,
false,
1.0f,
false);
} }
/* Value */ /* Value */

View File

@ -338,10 +338,24 @@ void ozone_draw_sidebar(
/* Text */ /* Text */
if (!ozone->sidebar_collapsed) if (!ozone->sidebar_collapsed)
ozone_draw_text(title, gfx_display_draw_text(
ozone->sidebar_offset + ozone->dimensions.sidebar_padding_horizontal + ozone->dimensions.sidebar_entry_icon_padding * 2 + ozone->dimensions.sidebar_entry_icon_size, ozone->fonts.sidebar.font,
y + ozone->dimensions.sidebar_entry_height / 2.0f + ozone->fonts.sidebar.line_centre_offset + ozone->animations.scroll_y_sidebar, title,
TEXT_ALIGN_LEFT, video_width, video_height, &ozone->fonts.sidebar, text_color, true); ozone->sidebar_offset
+ ozone->dimensions.sidebar_padding_horizontal
+ ozone->dimensions.sidebar_entry_icon_padding * 2
+ ozone->dimensions.sidebar_entry_icon_size,
y + ozone->dimensions.sidebar_entry_height / 2.0f
+ ozone->fonts.sidebar.line_centre_offset
+ ozone->animations.scroll_y_sidebar,
video_width,
video_height,
text_color,
TEXT_ALIGN_LEFT,
1.0f,
false,
1.0f,
true);
y += ozone->dimensions.sidebar_entry_height + ozone->dimensions.sidebar_entry_padding_vertical; y += ozone->dimensions.sidebar_entry_height + ozone->dimensions.sidebar_entry_padding_vertical;
} }
@ -422,11 +436,24 @@ void ozone_draw_sidebar(
gfx_animation_ticker(&ticker); gfx_animation_ticker(&ticker);
} }
ozone_draw_text(console_title, gfx_display_draw_text(
ticker_x_offset + ozone->sidebar_offset + ozone->dimensions.sidebar_padding_horizontal + ozone->dimensions.sidebar_entry_icon_padding * 2 + ozone->dimensions.sidebar_entry_icon_size, ozone->fonts.sidebar.font,
y + ozone->dimensions.sidebar_entry_height / 2 + ozone->fonts.sidebar.line_centre_offset + ozone->animations.scroll_y_sidebar, console_title,
ticker_x_offset + ozone->sidebar_offset
+ ozone->dimensions.sidebar_padding_horizontal
+ ozone->dimensions.sidebar_entry_icon_padding * 2
+ ozone->dimensions.sidebar_entry_icon_size,
y + ozone->dimensions.sidebar_entry_height / 2
+ ozone->fonts.sidebar.line_centre_offset
+ ozone->animations.scroll_y_sidebar,
video_width,
video_height,
text_color,
TEXT_ALIGN_LEFT, TEXT_ALIGN_LEFT,
video_width, video_height, &ozone->fonts.sidebar, text_color, true); 1.0f,
false,
1.0f,
true);
console_iterate: console_iterate:
y += ozone->dimensions.sidebar_entry_height + ozone->dimensions.sidebar_entry_padding_vertical; y += ozone->dimensions.sidebar_entry_height + ozone->dimensions.sidebar_entry_padding_vertical;