diff options
author | 2008-07-13 08:03:43 +0000 | |
---|---|---|
committer | 2008-07-13 08:03:43 +0000 | |
commit | dabae9787bd0c828b1f9d518d147bb90181526d7 (patch) | |
tree | 6902fc699cb9f2dfebe2bd8a6b9b6d315e9b8497 /src | |
parent | c4e5ae4e41a00720f926cf7641bf56cb122946aa (diff) |
Replaced the crazy number of get/set functions for render containers with
a single get/set of a user settings struct.
Diffstat (limited to 'src')
-rw-r--r-- | src/emu/render.c | 228 | ||||
-rw-r--r-- | src/emu/render.h | 70 | ||||
-rw-r--r-- | src/emu/ui.c | 70 | ||||
-rw-r--r-- | src/emu/uimenu.c | 7 | ||||
-rw-r--r-- | src/emu/video.c | 11 |
5 files changed, 138 insertions, 248 deletions
diff --git a/src/emu/render.c b/src/emu/render.c index f3417764fc3..31b0b9eb7a3 100644 --- a/src/emu/render.c +++ b/src/emu/render.c @@ -564,11 +564,16 @@ void render_init(running_machine *machine) { render_container *screen_container = render_container_alloc(); render_container **temp = &screen_container->next; + render_container_user_settings settings; + + /* set the initial orientation and brightness/contrast/gamma */ + render_container_get_user_settings(screen_container, &settings); + settings.orientation = machine->gamedrv->flags & ORIENTATION_MASK; + settings.brightness = options_get_float(mame_options(), OPTION_BRIGHTNESS); + settings.contrast = options_get_float(mame_options(), OPTION_CONTRAST); + settings.gamma = options_get_float(mame_options(), OPTION_GAMMA); + render_container_set_user_settings(screen_container, &settings); - render_container_set_orientation(screen_container, machine->gamedrv->flags & ORIENTATION_MASK); - render_container_set_brightness(screen_container, options_get_float(mame_options(), OPTION_BRIGHTNESS)); - render_container_set_contrast(screen_container, options_get_float(mame_options(), OPTION_CONTRAST)); - render_container_set_gamma(screen_container, options_get_float(mame_options(), OPTION_GAMMA)); screen_container->screen = screen; /* link it up */ @@ -746,7 +751,13 @@ static void render_load(running_machine *machine, int config_type, xml_data_node /* apply the opposite orientation to the UI */ if (target == render_get_ui_target()) - render_container_set_orientation(ui_container, orientation_add(orientation_reverse(tmpint), ui_container->orientation)); + { + render_container_user_settings settings; + + render_container_get_user_settings(ui_container, &settings); + settings.orientation = orientation_add(orientation_reverse(tmpint), settings.orientation); + render_container_set_user_settings(ui_container, &settings); + } } } } @@ -756,17 +767,24 @@ static void render_load(running_machine *machine, int config_type, xml_data_node { int index = xml_get_attribute_int(screennode, "index", -1); render_container *container = get_screen_container_by_index(index); + render_container_user_settings settings; + + /* fetch current settings */ + render_container_get_user_settings(container, &settings); /* fetch color controls */ - render_container_set_brightness(container, xml_get_attribute_float(screennode, "brightness", container->brightness)); - render_container_set_contrast(container, xml_get_attribute_float(screennode, "contrast", container->contrast)); - render_container_set_gamma(container, xml_get_attribute_float(screennode, "gamma", container->gamma)); + settings.brightness = xml_get_attribute_float(screennode, "brightness", settings.brightness); + settings.contrast = xml_get_attribute_float(screennode, "contrast", settings.contrast); + settings.gamma = xml_get_attribute_float(screennode, "gamma", settings.gamma); /* fetch positioning controls */ - render_container_set_xoffset(container, xml_get_attribute_float(screennode, "hoffset", container->xoffset)); - render_container_set_xscale(container, xml_get_attribute_float(screennode, "hstretch", container->xscale)); - render_container_set_yoffset(container, xml_get_attribute_float(screennode, "voffset", container->yoffset)); - render_container_set_yscale(container, xml_get_attribute_float(screennode, "vstretch", container->yscale)); + settings.xoffset = xml_get_attribute_float(screennode, "hoffset", settings.xoffset); + settings.xscale = xml_get_attribute_float(screennode, "hstretch", settings.xscale); + settings.yoffset = xml_get_attribute_float(screennode, "voffset", settings.yoffset); + settings.yscale = xml_get_attribute_float(screennode, "vstretch", settings.yscale); + + /* set the new values */ + render_container_set_user_settings(container, &settings); } } @@ -2691,185 +2709,43 @@ int render_container_is_empty(render_container *container) /*------------------------------------------------- - render_container_get_orientation - return the - orientation of a container --------------------------------------------------*/ - -int render_container_get_orientation(render_container *container) -{ - return container->orientation; -} - - -/*------------------------------------------------- - render_container_set_orientation - set the - orientation of a container --------------------------------------------------*/ - -void render_container_set_orientation(render_container *container, int orientation) -{ - container->orientation = orientation; -} - - -/*------------------------------------------------- - render_container_get_brightness - return the - brightness of a container --------------------------------------------------*/ - -float render_container_get_brightness(render_container *container) -{ - return container->brightness; -} - - -/*------------------------------------------------- - render_container_set_brightness - set the - brightness of a container --------------------------------------------------*/ - -void render_container_set_brightness(render_container *container, float brightness) -{ - container->brightness = brightness; - render_container_recompute_lookups(container); -} - - -/*------------------------------------------------- - render_container_get_contrast - return the - contrast of a container --------------------------------------------------*/ - -float render_container_get_contrast(render_container *container) -{ - return container->contrast; -} - - -/*------------------------------------------------- - render_container_set_contrast - set the - contrast of a container + render_container_get_user_settings - get the + current user settings for a container -------------------------------------------------*/ -void render_container_set_contrast(render_container *container, float contrast) +void render_container_get_user_settings(render_container *container, render_container_user_settings *settings) { - container->contrast = contrast; - render_container_recompute_lookups(container); + settings->orientation = container->orientation; + settings->brightness = container->brightness; + settings->contrast = container->contrast; + settings->gamma = container->gamma; + settings->xscale = container->xscale; + settings->yscale = container->yscale; + settings->xoffset = container->xoffset; + settings->yoffset = container->yoffset; } /*------------------------------------------------- - render_container_get_gamma - return the - gamma of a container + render_container_set_user_settings - set the + current user settings for a container -------------------------------------------------*/ -float render_container_get_gamma(render_container *container) +void render_container_set_user_settings(render_container *container, const render_container_user_settings *settings) { - return container->gamma; -} - - -/*------------------------------------------------- - render_container_set_gamma - set the - gamma of a container --------------------------------------------------*/ - -void render_container_set_gamma(render_container *container, float gamma) -{ - container->gamma = gamma; + container->orientation = settings->orientation; + container->brightness = settings->brightness; + container->contrast = settings->contrast; + container->gamma = settings->gamma; + container->xscale = settings->xscale; + container->yscale = settings->yscale; + container->xoffset = settings->xoffset; + container->yoffset = settings->yoffset; render_container_recompute_lookups(container); } /*------------------------------------------------- - render_container_get_xscale - return the - X scale of a container --------------------------------------------------*/ - -float render_container_get_xscale(render_container *container) -{ - return container->xscale; -} - - -/*------------------------------------------------- - render_container_set_xscale - set the - X scale of a container --------------------------------------------------*/ - -void render_container_set_xscale(render_container *container, float xscale) -{ - container->xscale = xscale; -} - - -/*------------------------------------------------- - render_container_get_yscale - return the - X scale of a container --------------------------------------------------*/ - -float render_container_get_yscale(render_container *container) -{ - return container->yscale; -} - - -/*------------------------------------------------- - render_container_set_yscale - set the - X scale of a container --------------------------------------------------*/ - -void render_container_set_yscale(render_container *container, float yscale) -{ - container->yscale = yscale; -} - - -/*------------------------------------------------- - render_container_get_xoffset - return the - X offset of a container --------------------------------------------------*/ - -float render_container_get_xoffset(render_container *container) -{ - return container->xoffset; -} - - -/*------------------------------------------------- - render_container_set_xoffset - set the - X offset of a container --------------------------------------------------*/ - -void render_container_set_xoffset(render_container *container, float xoffset) -{ - container->xoffset = xoffset; -} - - -/*------------------------------------------------- - render_container_get_yoffset - return the - X offset of a container --------------------------------------------------*/ - -float render_container_get_yoffset(render_container *container) -{ - return container->yoffset; -} - - -/*------------------------------------------------- - render_container_set_yoffset - set the - X offset of a container --------------------------------------------------*/ - -void render_container_set_yoffset(render_container *container, float yoffset) -{ - container->yoffset = yoffset; -} - - -/*------------------------------------------------- render_container_set_overlay - set the overlay bitmap for the container -------------------------------------------------*/ diff --git a/src/emu/render.h b/src/emu/render.h index f8e80f6a750..e088e795e06 100644 --- a/src/emu/render.h +++ b/src/emu/render.h @@ -293,6 +293,26 @@ struct _render_primitive_list }; +/*------------------------------------------------- + render_container_user_settings - an object + containing user-controllable settings for + a container +-------------------------------------------------*/ + +typedef struct _render_container_user_settings render_container_user_settings; +struct _render_container_user_settings +{ + int orientation; /* orientation */ + float brightness; /* brightness */ + float contrast; /* contrast */ + float gamma; /* gamma */ + float xscale; /* horizontal scale factor */ + float yscale; /* vertical scale factor */ + float xoffset; /* horizontal offset */ + float yoffset; /* vertical offset */ +}; + + /*************************************************************************** FUNCTION PROTOTYPES @@ -416,53 +436,11 @@ void render_container_empty(render_container *container); /* return true if a container has nothing in it */ int render_container_is_empty(render_container *container); -/* return the orientation of a container */ -int render_container_get_orientation(render_container *container); - -/* set the orientation of a container */ -void render_container_set_orientation(render_container *container, int orientation); - -/* return the brightness of a container */ -float render_container_get_brightness(render_container *container); - -/* set the brightness of a container */ -void render_container_set_brightness(render_container *container, float brightness); - -/* return the contrast of a container */ -float render_container_get_contrast(render_container *container); - -/* set the contrast of a container */ -void render_container_set_contrast(render_container *container, float contrast); - -/* return the gamma of a container */ -float render_container_get_gamma(render_container *container); - -/* set the gamma of a container */ -void render_container_set_gamma(render_container *container, float gamma); - -/* return the X scale of a container */ -float render_container_get_xscale(render_container *container); - -/* set the X scale of a container */ -void render_container_set_xscale(render_container *container, float xscale); - -/* return the Y scale of a container */ -float render_container_get_yscale(render_container *container); - -/* set the Y scale of a container */ -void render_container_set_yscale(render_container *container, float yscale); - -/* return the X offset of a container */ -float render_container_get_xoffset(render_container *container); - -/* set the X offset of a container */ -void render_container_set_xoffset(render_container *container, float xoffset); - -/* return the Y offset of a container */ -float render_container_get_yoffset(render_container *container); +/* get the current user settings for a container */ +void render_container_get_user_settings(render_container *container, render_container_user_settings *settings); -/* set the Y offset of a container */ -void render_container_set_yoffset(render_container *container, float yoffset); +/* set the current user settings for a container */ +void render_container_set_user_settings(render_container *container, const render_container_user_settings *settings); /* set the overlay bitmap for the container */ void render_container_set_overlay(render_container *container, bitmap_t *bitmap); diff --git a/src/emu/ui.c b/src/emu/ui.c index de8dc5b496c..7f4e46c2121 100644 --- a/src/emu/ui.c +++ b/src/emu/ui.c @@ -1805,12 +1805,16 @@ static INT32 slider_brightness(running_machine *machine, INT32 newval, char *buf { const device_config *screen = arg; render_container *container = render_container_get_screen(screen); + render_container_user_settings settings; + + render_container_get_user_settings(container, &settings); if (buffer != NULL) { - render_container_set_brightness(container, (float)newval * 0.001f); - sprintf(buffer, "%s Brightness %.3f", slider_get_screen_desc(screen), render_container_get_brightness(container)); + settings.brightness = (float)newval * 0.001f; + render_container_set_user_settings(container, &settings); + sprintf(buffer, "%s Brightness %.3f", slider_get_screen_desc(screen), settings.brightness); } - return floor(render_container_get_brightness(container) * 1000.0f + 0.5f); + return floor(settings.brightness * 1000.0f + 0.5f); } @@ -1823,12 +1827,16 @@ static INT32 slider_contrast(running_machine *machine, INT32 newval, char *buffe { const device_config *screen = arg; render_container *container = render_container_get_screen(screen); + render_container_user_settings settings; + + render_container_get_user_settings(container, &settings); if (buffer != NULL) { - render_container_set_contrast(container, (float)newval * 0.001f); - sprintf(buffer, "%s Contrast %.3f", slider_get_screen_desc(screen), render_container_get_contrast(container)); + settings.contrast = (float)newval * 0.001f; + render_container_set_user_settings(container, &settings); + sprintf(buffer, "%s Contrast %.3f", slider_get_screen_desc(screen), settings.contrast); } - return floor(render_container_get_contrast(container) * 1000.0f + 0.5f); + return floor(settings.contrast * 1000.0f + 0.5f); } @@ -1840,12 +1848,16 @@ static INT32 slider_gamma(running_machine *machine, INT32 newval, char *buffer, { const device_config *screen = arg; render_container *container = render_container_get_screen(screen); + render_container_user_settings settings; + + render_container_get_user_settings(container, &settings); if (buffer != NULL) { - render_container_set_gamma(container, (float)newval * 0.001f); - sprintf(buffer, "%s Gamma %.3f", slider_get_screen_desc(screen), render_container_get_gamma(container)); + settings.gamma = (float)newval * 0.001f; + render_container_set_user_settings(container, &settings); + sprintf(buffer, "%s Gamma %.3f", slider_get_screen_desc(screen), settings.gamma); } - return floor(render_container_get_gamma(container) * 1000.0f + 0.5f); + return floor(settings.gamma * 1000.0f + 0.5f); } @@ -1858,12 +1870,16 @@ static INT32 slider_xscale(running_machine *machine, INT32 newval, char *buffer, { const device_config *screen = arg; render_container *container = render_container_get_screen(screen); + render_container_user_settings settings; + + render_container_get_user_settings(container, &settings); if (buffer != NULL) { - render_container_set_xscale(container, (float)newval * 0.001f); - sprintf(buffer, "%s %s %.3f", slider_get_screen_desc(screen), "Horiz Stretch", render_container_get_xscale(container)); + settings.xscale = (float)newval * 0.001f; + render_container_set_user_settings(container, &settings); + sprintf(buffer, "%s %s %.3f", slider_get_screen_desc(screen), "Horiz Stretch", settings.xscale); } - return floor(render_container_get_xscale(container) * 1000.0f + 0.5f); + return floor(settings.xscale * 1000.0f + 0.5f); } @@ -1876,12 +1892,16 @@ static INT32 slider_yscale(running_machine *machine, INT32 newval, char *buffer, { const device_config *screen = arg; render_container *container = render_container_get_screen(screen); + render_container_user_settings settings; + + render_container_get_user_settings(container, &settings); if (buffer != NULL) { - render_container_set_yscale(container, (float)newval * 0.001f); - sprintf(buffer, "%s %s %.3f", slider_get_screen_desc(screen), "Vert Stretch", render_container_get_yscale(container)); + settings.yscale = (float)newval * 0.001f; + render_container_set_user_settings(container, &settings); + sprintf(buffer, "%s %s %.3f", slider_get_screen_desc(screen), "Vert Stretch", settings.yscale); } - return floor(render_container_get_yscale(container) * 1000.0f + 0.5f); + return floor(settings.yscale * 1000.0f + 0.5f); } @@ -1894,12 +1914,16 @@ static INT32 slider_xoffset(running_machine *machine, INT32 newval, char *buffer { const device_config *screen = arg; render_container *container = render_container_get_screen(screen); + render_container_user_settings settings; + + render_container_get_user_settings(container, &settings); if (buffer != NULL) { - render_container_set_xoffset(container, (float)newval * 0.001f); - sprintf(buffer, "%s %s %.3f", slider_get_screen_desc(screen), "Horiz Position", render_container_get_xoffset(container)); + settings.xoffset = (float)newval * 0.001f; + render_container_set_user_settings(container, &settings); + sprintf(buffer, "%s %s %.3f", slider_get_screen_desc(screen), "Horiz Position", settings.xoffset); } - return floor(render_container_get_xoffset(container) * 1000.0f + 0.5f); + return floor(settings.xoffset * 1000.0f + 0.5f); } @@ -1912,12 +1936,16 @@ static INT32 slider_yoffset(running_machine *machine, INT32 newval, char *buffer { const device_config *screen = arg; render_container *container = render_container_get_screen(screen); + render_container_user_settings settings; + + render_container_get_user_settings(container, &settings); if (buffer != NULL) { - render_container_set_yoffset(container, (float)newval * 0.001f); - sprintf(buffer, "%s %s %.3f", slider_get_screen_desc(screen), "Vert Position", render_container_get_yoffset(container)); + settings.yoffset = (float)newval * 0.001f; + render_container_set_user_settings(container, &settings); + sprintf(buffer, "%s %s %.3f", slider_get_screen_desc(screen), "Vert Position", settings.yoffset); } - return floor(render_container_get_yoffset(container) * 1000.0f + 0.5f); + return floor(settings.yoffset * 1000.0f + 0.5f); } diff --git a/src/emu/uimenu.c b/src/emu/uimenu.c index 1447fef1d73..bb776cdb0b0 100644 --- a/src/emu/uimenu.c +++ b/src/emu/uimenu.c @@ -2552,7 +2552,12 @@ static void menu_video_options(running_machine *machine, ui_menu *menu, void *pa int delta = (event->iptkey == IPT_UI_LEFT) ? ROT270 : ROT90; render_target_set_orientation(target, orientation_add(delta, render_target_get_orientation(target))); if (target == render_get_ui_target()) - render_container_set_orientation(render_container_get_ui(), orientation_add(delta ^ ROT180, render_container_get_orientation(render_container_get_ui()))); + { + render_container_user_settings settings; + render_container_get_user_settings(render_container_get_ui(), &settings); + settings.orientation = orientation_add(delta ^ ROT180, settings.orientation); + render_container_set_user_settings(render_container_get_ui(), &settings); + } changed = TRUE; } break; diff --git a/src/emu/video.c b/src/emu/video.c index fcd7f3a6855..95d0bdca23f 100644 --- a/src/emu/video.c +++ b/src/emu/video.c @@ -1182,6 +1182,7 @@ static DEVICE_START( video_screen ) const device_config *screen = device; char unique_tag[40]; screen_state *state = get_safe_token(screen); + render_container_user_settings settings; render_container *container; screen_config *config; @@ -1216,14 +1217,16 @@ static DEVICE_START( video_screen ) state->scanline0_timer = timer_alloc(scanline0_callback, (void *)screen); /* configure the default cliparea */ + render_container_get_user_settings(container, &settings); if (config->xoffset != 0) - render_container_set_xoffset(container, config->xoffset); + settings.xoffset = config->xoffset; if (config->yoffset != 0) - render_container_set_yoffset(container, config->yoffset); + settings.yoffset = config->yoffset; if (config->xscale != 0) - render_container_set_xscale(container, config->xscale); + settings.xscale = config->xscale; if (config->yscale != 0) - render_container_set_yscale(container, config->yscale); + settings.yscale = config->yscale; + render_container_set_user_settings(container, &settings); /* allocate a timer to generate per-scanline updates */ if (screen->machine->config->video_attributes & VIDEO_UPDATE_SCANLINE) |