1
0
mirror of https://github.com/libretro/RetroArch synced 2024-07-03 00:38:44 +00:00

GDI: draw a gradient background for xmb

This commit is contained in:
Brad Parker 2017-01-16 20:40:43 -05:00
parent 5eaf00b39d
commit afb94e2b96
3 changed files with 44 additions and 17 deletions

View File

@ -1169,6 +1169,8 @@ ifneq ($(findstring Win32,$(OS)),)
gfx/drivers_context/gdi_ctx.o \
gfx/drivers_font/gdi_font.o \
menu/drivers_display/menu_display_gdi.o
LIBS += -lmsimg32
endif
ifeq ($(HAVE_AVFOUNDATION), 1)

View File

@ -128,10 +128,10 @@ static unsigned win32_monitor_count = 0;
extern "C"
{
bool doubleclick_on_titlebar_pressed(void)
{
return doubleclick_on_titlebar;
}
bool doubleclick_on_titlebar_pressed(void)
{
return doubleclick_on_titlebar;
}
void unset_doubleclick_on_titlebar(void)
{
@ -287,8 +287,8 @@ static int win32_drag_query_file(HWND hwnd, WPARAM wparam)
core_info_get_list(&core_info_list);
if (!core_info_list)
return 0;
if (!core_info_list)
return 0;
core_info_list_get_supported_cores(core_info_list,
(const char*)szFilename, &core_info, &list_size);
@ -417,7 +417,7 @@ static LRESULT CALLBACK WndProcCommon(bool *quit, HWND hwnd, UINT message,
}
*quit = true;
break;
case WM_COMMAND:
case WM_COMMAND:
{
settings_t *settings = config_get_ptr();
if (settings->ui.menubar_enable)
@ -542,13 +542,35 @@ LRESULT CALLBACK WndProcGDI(HWND hwnd, UINT message,
HDC hdc = BeginPaint(hwnd, &ps);
#ifdef HAVE_MENU
if (menu_driver_ctl(RARCH_MENU_CTL_IS_ALIVE, NULL))// || gdi_has_menu_frame())
FillRect(hdc, &ps.rcPaint, (HBRUSH)(COLOR_WINDOW + 1));
if (menu_driver_ctl(RARCH_MENU_CTL_IS_ALIVE, NULL))
{
RECT rect;
GetClientRect(hwnd, &rect);
TRIVERTEX vertex[2];
vertex[0].x = rect.left;
vertex[0].y = rect.top;
vertex[0].Red = 1 << 8;
vertex[0].Green = 81 << 8;
vertex[0].Blue = 127 << 8;
vertex[0].Alpha = 0;
vertex[1].x = rect.right;
vertex[1].y = rect.bottom;
vertex[1].Red = 0;
vertex[1].Green = 1 << 8;
vertex[1].Blue = 33 << 8;
vertex[1].Alpha = 0;
GRADIENT_RECT gRect;
gRect.LowerRight = 0;
gRect.UpperLeft = 1;
GradientFill(hdc, vertex, 2, &gRect, 1, GRADIENT_FILL_RECT_V);
}
#endif
EndPaint(hwnd, &ps);
//return DefWindowProc(hwnd, message, wparam, lparam);
//return 0;
break;
}
case WM_DROPFILES:
@ -609,7 +631,7 @@ bool win32_window_create(void *data, unsigned style,
#endif
bool win32_get_metrics(void *data,
enum display_metric_types type, float *value)
enum display_metric_types type, float *value)
{
#ifdef _XBOX
return false;
@ -765,8 +787,8 @@ bool win32_suppress_screensaver(void *data, bool enable)
/* FIXME: It should not be necessary to add the W after MONITORINFOEX, but linking fails without it. */
void win32_set_style(MONITORINFOEX *current_mon, HMONITOR *hm_to_use,
unsigned *width, unsigned *height, bool fullscreen, bool windowed_full,
RECT *rect, RECT *mon_rect, DWORD *style)
unsigned *width, unsigned *height, bool fullscreen, bool windowed_full,
RECT *rect, RECT *mon_rect, DWORD *style)
{
#ifndef _XBOX
settings_t *settings = config_get_ptr();
@ -793,7 +815,7 @@ void win32_set_style(MONITORINFOEX *current_mon, HMONITOR *hm_to_use,
if (!win32_monitor_set_fullscreen(*width, *height,
refresh, current_mon->szDevice))
{}
{}
/* Display settings might have changed, get new coordinates. */
GetMonitorInfo(*hm_to_use, (MONITORINFOEX*)current_mon);

View File

@ -85,7 +85,7 @@ static void gdi_render_msg(void *data, const char *msg,
gdi_raster_t *font = (gdi_raster_t*)data;
float x, y;
unsigned width = 0, height = 0;
unsigned newX, newY;
unsigned newX, newY, len;
settings_t *settings = config_get_ptr();
const struct font_params *params = (const struct font_params*)userdata;
HDC hdc;
@ -110,11 +110,14 @@ static void gdi_render_msg(void *data, const char *msg,
if (!font->gdi)
return;
len = utf8len(msg);
newX = x * width;
newY = height - (y * height);
hdc = GetDC(hwnd);
TextOut(hdc, newX, newY, msg, utf8len(msg));
SetBkMode(hdc, TRANSPARENT);
SetTextColor(hdc, RGB(255,255,255));
TextOut(hdc, newX, newY, msg, len);
ReleaseDC(hwnd, hdc);
}