(360) Add changing of rotation / aspect ratio with left/right

D-pad buttons
This commit is contained in:
TwinAphex51224 2012-05-29 21:29:32 +02:00
parent 37140c1cd9
commit 321697f029
5 changed files with 45 additions and 42 deletions

View File

@ -311,21 +311,8 @@ HRESULT CRetroArchQuickMenu::OnInit(XUIMessageInit * pInitData, BOOL& bHandled)
GetChildById(L"XuiQuickMenuList", &m_quickmenulist);
GetChildById(L"XuiBackButton", &m_back);
switch(g_console.screen_orientation)
{
case ORIENTATION_NORMAL:
m_quickmenulist.SetText(MENU_ITEM_ORIENTATION, L"Orientation: Normal");
break;
case ORIENTATION_VERTICAL:
m_quickmenulist.SetText(MENU_ITEM_ORIENTATION, L"Orientation: Vertical");
break;
case ORIENTATION_FLIPPED:
m_quickmenulist.SetText(MENU_ITEM_ORIENTATION, L"Orientation: Flipped");
break;
case ORIENTATION_FLIPPED_ROTATED:
m_quickmenulist.SetText(MENU_ITEM_ORIENTATION, L"Orientation: Flipped Rotated");
break;
}
rarch_settings_create_menu_item_label(strw_buffer, S_LBL_ROTATION, sizeof(strw_buffer));
m_quickmenulist.SetText(MENU_ITEM_ORIENTATION, strw_buffer);
rarch_settings_create_menu_item_label(strw_buffer, S_LBL_ASPECT_RATIO, sizeof(strw_buffer));
m_quickmenulist.SetText(MENU_ITEM_KEEP_ASPECT_RATIO, strw_buffer);
@ -350,6 +337,12 @@ HRESULT CRetroArchQuickMenu::OnControlNavigate(XUIMessageControlNavigate *pContr
rarch_settings_change(S_ASPECT_RATIO_DECREMENT);
aspectratio_changed = true;
break;
case MENU_ITEM_ORIENTATION:
rarch_settings_change(S_ROTATION_DECREMENT);
rarch_settings_create_menu_item_label(strw_buffer, S_LBL_ROTATION, sizeof(strw_buffer));
m_quickmenulist.SetText(MENU_ITEM_ORIENTATION, strw_buffer);
video_xdk360.set_rotation(driver.video_data, g_console.screen_orientation);
break;
default:
break;
}
@ -361,6 +354,12 @@ HRESULT CRetroArchQuickMenu::OnControlNavigate(XUIMessageControlNavigate *pContr
rarch_settings_change(S_ASPECT_RATIO_INCREMENT);
aspectratio_changed = true;
break;
case MENU_ITEM_ORIENTATION:
rarch_settings_change(S_ROTATION_INCREMENT);
rarch_settings_create_menu_item_label(strw_buffer, S_LBL_ROTATION, sizeof(strw_buffer));
m_quickmenulist.SetText(MENU_ITEM_ORIENTATION, strw_buffer);
video_xdk360.set_rotation(driver.video_data, g_console.screen_orientation);
break;
default:
break;
}
@ -431,25 +430,9 @@ HRESULT CRetroArchQuickMenu::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled
rarch_settings_msg(S_MSG_NOT_IMPLEMENTED, S_DELAY_180);
break;
case MENU_ITEM_ORIENTATION:
switch(g_console.screen_orientation)
{
case ORIENTATION_NORMAL:
g_console.screen_orientation = ORIENTATION_VERTICAL;
m_quickmenulist.SetText(MENU_ITEM_ORIENTATION, L"Orientation: Vertical");
break;
case ORIENTATION_VERTICAL:
g_console.screen_orientation = ORIENTATION_FLIPPED;
m_quickmenulist.SetText(MENU_ITEM_ORIENTATION, L"Orientation: Flipped");
break;
case ORIENTATION_FLIPPED:
g_console.screen_orientation = ORIENTATION_FLIPPED_ROTATED;
m_quickmenulist.SetText(MENU_ITEM_ORIENTATION, L"Orientation: Flipped Rotated");
break;
case ORIENTATION_FLIPPED_ROTATED:
g_console.screen_orientation = ORIENTATION_NORMAL;
m_quickmenulist.SetText(MENU_ITEM_ORIENTATION, L"Orientation: Normal");
break;
}
rarch_settings_default(S_DEF_ROTATION);
rarch_settings_create_menu_item_label(strw_buffer, S_LBL_ROTATION, sizeof(strw_buffer));
m_quickmenulist.SetText(MENU_ITEM_ORIENTATION, strw_buffer);
video_xdk360.set_rotation(driver.video_data, g_console.screen_orientation);
break;
case MENU_ITEM_RESIZE_MODE:

View File

@ -495,6 +495,14 @@ struct aspect_ratio_elem aspectratio_lut[ASPECT_RATIO_END] = {
{ "Custom", 0.0f }
};
char rotation_lut[ASPECT_RATIO_END][PATH_MAX] =
{
"Normal",
"Vertical",
"Flipped",
"Flipped Rotated"
};
void rarch_set_auto_viewport(unsigned width, unsigned height)
{
if(width == 0 || height == 0)

View File

@ -65,6 +65,10 @@ enum rotation
ORIENTATION_END
};
#define LAST_ORIENTATION (ORIENTATION_END-1)
extern char rotation_lut[ASPECT_RATIO_END][PATH_MAX];
struct aspect_ratio_elem
{
char name[64];

View File

@ -83,17 +83,17 @@ void rarch_settings_change(unsigned setting)
g_console.ingame_menu_item = 0;
g_console.mode_switch = MODE_MENU;
break;
case S_REWIND:
g_settings.rewind_enable = !g_settings.rewind_enable;
break;
case S_ROTATION_DECREMENT:
if(g_console.screen_orientation > ORIENTATION_NORMAL)
case S_ROTATION_DECREMENT:
if(g_console.screen_orientation > 0)
g_console.screen_orientation--;
break;
case S_ROTATION_INCREMENT:
if((g_console.screen_orientation+1) < ORIENTATION_END)
case S_ROTATION_INCREMENT:
if(g_console.screen_orientation < LAST_ORIENTATION)
g_console.screen_orientation++;
break;
case S_REWIND:
g_settings.rewind_enable = !g_settings.rewind_enable;
break;
case S_SAVESTATE_DECREMENT:
if(g_extern.state_slot != 0)
g_extern.state_slot--;
@ -138,6 +138,9 @@ void rarch_settings_default(unsigned setting)
g_console.overscan_amount = 0.0f;
g_console.overscan_enable = false;
break;
case S_DEF_ROTATION:
g_console.screen_orientation = ORIENTATION_NORMAL;
break;
case S_DEF_THROTTLE:
g_console.throttle_enable = true;
break;
@ -217,6 +220,9 @@ void rarch_settings_create_menu_item_label(wchar_t * strwbuf, unsigned setting,
case S_LBL_SCALE_FACTOR:
snprintf(str, sizeof(str), "Scale Factor: %f (X) / %f (Y)", g_settings.video.fbo_scale_x, g_settings.video.fbo_scale_y);
break;
case S_LBL_ROTATION:
snprintf(str, sizeof(str), "Rotation: %s", rotation_lut[g_console.screen_orientation]);
break;
}
rarch_convert_char_to_wchar(strwbuf, str, size);

View File

@ -37,9 +37,9 @@ enum
S_RETURN_TO_GAME,
S_RETURN_TO_LAUNCHER,
S_RETURN_TO_MENU,
S_REWIND,
S_ROTATION_DECREMENT,
S_ROTATION_INCREMENT,
S_REWIND,
S_SAVESTATE_DECREMENT,
S_SAVESTATE_INCREMENT,
S_SCALE_ENABLED,
@ -55,6 +55,7 @@ enum
S_DEF_HW_TEXTURE_FILTER,
S_DEF_HW_TEXTURE_FILTER_2,
S_DEF_OVERSCAN,
S_DEF_ROTATION,
S_DEF_THROTTLE,
S_DEF_TRIPLE_BUFFERING,
S_DEF_SAVE_STATE,
@ -78,6 +79,7 @@ enum
enum
{
S_LBL_ASPECT_RATIO = 0,
S_LBL_ROTATION,
S_LBL_SHADER,
S_LBL_SHADER_2,
S_LBL_SCALE_FACTOR