Use "default" font for artwork elements as well.

Make UI backgrounds a bit more opaque.
Fix crash when passing NULL filename to OSD code.
This commit is contained in:
Aaron Giles 2010-10-24 06:32:07 +00:00
parent 59559fe282
commit 4cd55f3c0a
7 changed files with 32 additions and 25 deletions

View File

@ -899,7 +899,7 @@ void debugint_init(running_machine *machine)
{ {
unicode_char ch; unicode_char ch;
int chw; int chw;
debug_font = machine->render().font_alloc("ui.bdf"); //ui_get_font(); debug_font = machine->render().font_alloc("ui.bdf"); //ui_get_font(machine);
debug_font_width = 0; debug_font_width = 0;
debug_font_height = 15; debug_font_height = 15;

View File

@ -274,7 +274,6 @@ void running_machine::start()
state_save_allow_registration(this, true); state_save_allow_registration(this, true);
palette_init(this); palette_init(this);
m_render = auto_alloc(this, render_manager(*this)); m_render = auto_alloc(this, render_manager(*this));
ui_init(this);
generic_machine_init(this); generic_machine_init(this);
generic_video_init(this); generic_video_init(this);
generic_sound_init(this); generic_sound_init(this);
@ -286,6 +285,7 @@ void running_machine::start()
// init the osd layer // init the osd layer
m_osd.init(*this); m_osd.init(*this);
ui_init(this);
// initialize the base time (needed for doing record/playback) // initialize the base time (needed for doing record/playback)
time(&m_base_time); time(&m_base_time);

View File

@ -131,7 +131,7 @@ render_font::render_font(render_manager &manager, const char *filename)
} }
// if the filename is 'default' default to 'ui.bdf' for backwards compatibility // if the filename is 'default' default to 'ui.bdf' for backwards compatibility
if (mame_stricmp(filename, "default") == 0) if (filename != NULL && mame_stricmp(filename, "default") == 0)
filename = "ui.bdf"; filename = "ui.bdf";
// attempt to load the cached version of the font first // attempt to load the cached version of the font first
@ -325,6 +325,13 @@ void render_font::get_scaled_bitmap_and_bounds(bitmap_t &dest, float height, flo
if (dest.width < bounds.max_x - bounds.min_x || dest.height < bounds.max_y - bounds.min_y) if (dest.width < bounds.max_x - bounds.min_x || dest.height < bounds.max_y - bounds.min_y)
return; return;
// if no texture, fill the target
if (gl.texture == NULL)
{
bitmap_fill(&dest, NULL, 0);
return;
}
// scale the font // scale the font
INT32 origwidth = dest.width; INT32 origwidth = dest.width;
INT32 origheight = dest.height; INT32 origheight = dest.height;

View File

@ -827,7 +827,7 @@ void layout_element::component::draw_text(running_machine &machine, bitmap_t &de
UINT32 a = m_color.a * 255.0; UINT32 a = m_color.a * 255.0;
// get the width of the string // get the width of the string
render_font *font = machine.render().font_alloc(); render_font *font = machine.render().font_alloc("default");
float aspect = 1.0f; float aspect = 1.0f;
INT32 width; INT32 width;
while (1) while (1)

View File

@ -239,9 +239,6 @@ int ui_init(running_machine *machine)
/* make sure we clean up after ourselves */ /* make sure we clean up after ourselves */
machine->add_notifier(MACHINE_NOTIFY_EXIT, ui_exit); machine->add_notifier(MACHINE_NOTIFY_EXIT, ui_exit);
/* allocate the font and messagebox string */
ui_font = machine->render().font_alloc(options_get_string(machine->options(), OPTION_UI_FONT));
/* initialize the other UI bits */ /* initialize the other UI bits */
ui_menu_init(machine); ui_menu_init(machine);
ui_gfx_init(machine); ui_gfx_init(machine);
@ -410,8 +407,11 @@ void ui_update_and_render(running_machine *machine, render_container *container)
ui_get_font - return the UI font ui_get_font - return the UI font
-------------------------------------------------*/ -------------------------------------------------*/
render_font *ui_get_font(void) render_font *ui_get_font(running_machine &machine)
{ {
/* allocate the font and messagebox string */
if (ui_font == NULL)
ui_font = machine.render().font_alloc(options_get_string(machine.options(), OPTION_UI_FONT));
return ui_font; return ui_font;
} }
@ -423,7 +423,7 @@ render_font *ui_get_font(void)
float ui_get_line_height(running_machine &machine) float ui_get_line_height(running_machine &machine)
{ {
INT32 raw_font_pixel_height = ui_font->pixel_height(); INT32 raw_font_pixel_height = ui_get_font(machine)->pixel_height();
render_target &ui_target = machine.render().ui_target(); render_target &ui_target = machine.render().ui_target();
INT32 target_pixel_height = ui_target.height(); INT32 target_pixel_height = ui_target.height();
float one_to_one_line_height; float one_to_one_line_height;
@ -468,7 +468,7 @@ float ui_get_line_height(running_machine &machine)
float ui_get_char_width(running_machine &machine, unicode_char ch) float ui_get_char_width(running_machine &machine, unicode_char ch)
{ {
return ui_font->char_width(ui_get_line_height(machine), machine.render().ui_aspect(), ch); return ui_get_font(machine)->char_width(ui_get_line_height(machine), machine.render().ui_aspect(), ch);
} }
@ -479,7 +479,7 @@ float ui_get_char_width(running_machine &machine, unicode_char ch)
float ui_get_string_width(running_machine &machine, const char *s) float ui_get_string_width(running_machine &machine, const char *s)
{ {
return ui_font->utf8string_width(ui_get_line_height(machine), machine.render().ui_aspect(), s); return ui_get_font(machine)->utf8string_width(ui_get_line_height(machine), machine.render().ui_aspect(), s);
} }
@ -666,7 +666,7 @@ void ui_draw_text_full(render_container *container, const char *origs, float x,
if (draw != DRAW_NONE) if (draw != DRAW_NONE)
{ {
container->add_char(curx, cury, lineheight, machine.render().ui_aspect(), fgcolor, *ui_font, linechar); container->add_char(curx, cury, lineheight, machine.render().ui_aspect(), fgcolor, *ui_get_font(machine), linechar);
curx += ui_get_char_width(machine, linechar); curx += ui_get_char_width(machine, linechar);
} }
linestart += linecharcount; linestart += linecharcount;
@ -675,11 +675,11 @@ void ui_draw_text_full(render_container *container, const char *origs, float x,
/* append ellipses if needed */ /* append ellipses if needed */
if (wrap == WRAP_TRUNCATE && *s != 0 && draw != DRAW_NONE) if (wrap == WRAP_TRUNCATE && *s != 0 && draw != DRAW_NONE)
{ {
container->add_char(curx, cury, lineheight, machine.render().ui_aspect(), fgcolor, *ui_font, '.'); container->add_char(curx, cury, lineheight, machine.render().ui_aspect(), fgcolor, *ui_get_font(machine), '.');
curx += ui_get_char_width(machine, '.'); curx += ui_get_char_width(machine, '.');
container->add_char(curx, cury, lineheight, machine.render().ui_aspect(), fgcolor, *ui_font, '.'); container->add_char(curx, cury, lineheight, machine.render().ui_aspect(), fgcolor, *ui_get_font(machine), '.');
curx += ui_get_char_width(machine, '.'); curx += ui_get_char_width(machine, '.');
container->add_char(curx, cury, lineheight, machine.render().ui_aspect(), fgcolor, *ui_font, '.'); container->add_char(curx, cury, lineheight, machine.render().ui_aspect(), fgcolor, *ui_get_font(machine), '.');
curx += ui_get_char_width(machine, '.'); curx += ui_get_char_width(machine, '.');
} }

View File

@ -37,18 +37,18 @@
#define ARGB_WHITE MAKE_ARGB(0xff,0xff,0xff,0xff) #define ARGB_WHITE MAKE_ARGB(0xff,0xff,0xff,0xff)
#define ARGB_BLACK MAKE_ARGB(0xff,0x00,0x00,0x00) #define ARGB_BLACK MAKE_ARGB(0xff,0x00,0x00,0x00)
#define UI_BORDER_COLOR MAKE_ARGB(0xff,0xff,0xff,0xff) #define UI_BORDER_COLOR MAKE_ARGB(0xff,0xff,0xff,0xff)
#define UI_BACKGROUND_COLOR MAKE_ARGB(0xe0,0x10,0x10,0x30) #define UI_BACKGROUND_COLOR MAKE_ARGB(0xef,0x10,0x10,0x30)
#define UI_GFXVIEWER_BG_COLOR MAKE_ARGB(0xe0,0x10,0x10,0x30) #define UI_GFXVIEWER_BG_COLOR MAKE_ARGB(0xef,0x10,0x10,0x30)
#define UI_GREEN_COLOR MAKE_ARGB(0xe0,0x10,0x60,0x10) #define UI_GREEN_COLOR MAKE_ARGB(0xef,0x10,0x60,0x10)
#define UI_YELLOW_COLOR MAKE_ARGB(0xe0,0x60,0x60,0x10) #define UI_YELLOW_COLOR MAKE_ARGB(0xef,0x60,0x60,0x10)
#define UI_RED_COLOR MAKE_ARGB(0xf0,0x60,0x10,0x10) #define UI_RED_COLOR MAKE_ARGB(0xf0,0x60,0x10,0x10)
#define UI_UNAVAILABLE_COLOR MAKE_ARGB(0xff,0x40,0x40,0x40) #define UI_UNAVAILABLE_COLOR MAKE_ARGB(0xff,0x40,0x40,0x40)
#define UI_TEXT_COLOR MAKE_ARGB(0xff,0xff,0xff,0xff) #define UI_TEXT_COLOR MAKE_ARGB(0xff,0xff,0xff,0xff)
#define UI_TEXT_BG_COLOR MAKE_ARGB(0xe0,0x00,0x00,0x00) #define UI_TEXT_BG_COLOR MAKE_ARGB(0xef,0x00,0x00,0x00)
#define UI_SUBITEM_COLOR MAKE_ARGB(0xff,0xff,0xff,0xff) #define UI_SUBITEM_COLOR MAKE_ARGB(0xff,0xff,0xff,0xff)
#define UI_CLONE_COLOR MAKE_ARGB(0xff,0x80,0x80,0x80) #define UI_CLONE_COLOR MAKE_ARGB(0xff,0x80,0x80,0x80)
#define UI_SELECTED_COLOR MAKE_ARGB(0xff,0xff,0xff,0x00) #define UI_SELECTED_COLOR MAKE_ARGB(0xff,0xff,0xff,0x00)
#define UI_SELECTED_BG_COLOR MAKE_ARGB(0xe0,0x80,0x80,0x00) #define UI_SELECTED_BG_COLOR MAKE_ARGB(0xef,0x80,0x80,0x00)
#define UI_MOUSEOVER_COLOR MAKE_ARGB(0xff,0xff,0xff,0x80) #define UI_MOUSEOVER_COLOR MAKE_ARGB(0xff,0xff,0xff,0x80)
#define UI_MOUSEOVER_BG_COLOR MAKE_ARGB(0x70,0x40,0x40,0x00) #define UI_MOUSEOVER_BG_COLOR MAKE_ARGB(0x70,0x40,0x40,0x00)
#define UI_MOUSEDOWN_COLOR MAKE_ARGB(0xff,0xff,0xff,0x80) #define UI_MOUSEDOWN_COLOR MAKE_ARGB(0xff,0xff,0xff,0x80)
@ -133,7 +133,7 @@ void ui_set_startup_text(running_machine *machine, const char *text, int force);
void ui_update_and_render(running_machine *machine, render_container *container); void ui_update_and_render(running_machine *machine, render_container *container);
/* returns the current UI font */ /* returns the current UI font */
render_font *ui_get_font(void); render_font *ui_get_font(running_machine &machine);
/* returns the line height of the font used by the UI system */ /* returns the line height of the font used by the UI system */
float ui_get_line_height(running_machine &machine); float ui_get_line_height(running_machine &machine);

View File

@ -242,7 +242,7 @@ static void palette_handler(running_machine *machine, render_container *containe
int total = state->palette.which ? colortable_palette_get_size(machine->colortable) : machine->total_colors(); int total = state->palette.which ? colortable_palette_get_size(machine->colortable) : machine->total_colors();
const char *title = state->palette.which ? "COLORTABLE" : "PALETTE"; const char *title = state->palette.which ? "COLORTABLE" : "PALETTE";
const rgb_t *raw_color = palette_entry_list_raw(machine->palette); const rgb_t *raw_color = palette_entry_list_raw(machine->palette);
render_font *ui_font = ui_get_font(); render_font *ui_font = ui_get_font(*machine);
float cellwidth, cellheight; float cellwidth, cellheight;
float chwidth, chheight; float chwidth, chheight;
float titlewidth; float titlewidth;
@ -427,7 +427,7 @@ static void palette_handle_keys(running_machine *machine, ui_gfx_state *state)
static void gfxset_handler(running_machine *machine, render_container *container, ui_gfx_state *state) static void gfxset_handler(running_machine *machine, render_container *container, ui_gfx_state *state)
{ {
render_font *ui_font = ui_get_font(); render_font *ui_font = ui_get_font(*machine);
int set = state->gfxset.set; int set = state->gfxset.set;
gfx_element *gfx = machine->gfx[set]; gfx_element *gfx = machine->gfx[set];
float fullwidth, fullheight; float fullwidth, fullheight;
@ -840,7 +840,7 @@ static void gfxset_draw_item(running_machine *machine, const gfx_element *gfx, i
static void tilemap_handler(running_machine *machine, render_container *container, ui_gfx_state *state) static void tilemap_handler(running_machine *machine, render_container *container, ui_gfx_state *state)
{ {
render_font *ui_font = ui_get_font(); render_font *ui_font = ui_get_font(*machine);
float chwidth, chheight; float chwidth, chheight;
render_bounds mapboxbounds; render_bounds mapboxbounds;
render_bounds boxbounds; render_bounds boxbounds;