void CGUIWindowSettingsScreenCalibration::UpdateFromControl(int iControl) { CStdString strStatus; if (iControl == CONTROL_PIXEL_RATIO) { CGUIResizeControl *pControl = (CGUIResizeControl*)GetControl(CONTROL_PIXEL_RATIO); if (pControl) { float fWidth = (float)pControl->GetWidth(); float fHeight = (float)pControl->GetHeight(); g_settings.m_ResInfo[m_Res[m_iCurRes]].fPixelRatio = fHeight / fWidth; // recenter our control... pControl->SetPosition((g_settings.m_ResInfo[m_Res[m_iCurRes]].iWidth - pControl->GetWidth()) / 2, (g_settings.m_ResInfo[m_Res[m_iCurRes]].iHeight - pControl->GetHeight()) / 2); strStatus.Format("%s (%5.3f)", g_localizeStrings.Get(275).c_str(), g_settings.m_ResInfo[m_Res[m_iCurRes]].fPixelRatio); SET_CONTROL_LABEL(CONTROL_LABEL_ROW2, 278); } } else { CGUIMoverControl *pControl = (CGUIMoverControl*)GetControl(iControl); if (pControl) { switch (iControl) { case CONTROL_TOP_LEFT: { g_settings.m_ResInfo[m_Res[m_iCurRes]].Overscan.left = pControl->GetXLocation(); g_settings.m_ResInfo[m_Res[m_iCurRes]].Overscan.top = pControl->GetYLocation(); strStatus.Format("%s (%i,%i)", g_localizeStrings.Get(272).c_str(), pControl->GetXLocation(), pControl->GetYLocation()); SET_CONTROL_LABEL(CONTROL_LABEL_ROW2, 276); } break; case CONTROL_BOTTOM_RIGHT: { g_settings.m_ResInfo[m_Res[m_iCurRes]].Overscan.right = pControl->GetXLocation(); g_settings.m_ResInfo[m_Res[m_iCurRes]].Overscan.bottom = pControl->GetYLocation(); int iXOff1 = g_settings.m_ResInfo[m_Res[m_iCurRes]].iWidth - pControl->GetXLocation(); int iYOff1 = g_settings.m_ResInfo[m_Res[m_iCurRes]].iHeight - pControl->GetYLocation(); strStatus.Format("%s (%i,%i)", g_localizeStrings.Get(273).c_str(), iXOff1, iYOff1); SET_CONTROL_LABEL(CONTROL_LABEL_ROW2, 276); } break; case CONTROL_SUBTITLES: { g_settings.m_ResInfo[m_Res[m_iCurRes]].iSubtitles = pControl->GetYLocation(); strStatus.Format("%s (%i)", g_localizeStrings.Get(274).c_str(), pControl->GetYLocation()); SET_CONTROL_LABEL(CONTROL_LABEL_ROW2, 277); } break; } } } // set the label control correctly CStdString strText; strText.Format("%s | %s", g_settings.m_ResInfo[m_Res[m_iCurRes]].strMode, strStatus.c_str()); SET_CONTROL_LABEL(CONTROL_LABEL_ROW1, strText); }
void CGUIWindowSettingsScreenCalibration::ResetControls() { // disable the video control, so that our other controls take mouse clicks etc. CONTROL_DISABLE(CONTROL_VIDEO); // disable the UI calibration for our controls // and set their limits // also, set them to invisible if they don't have focus CGUIMoverControl *pControl = dynamic_cast<CGUIMoverControl*>(GetControl(CONTROL_TOP_LEFT)); RESOLUTION_INFO info = g_graphicsContext.GetResInfo(m_Res[m_iCurRes]); if (pControl) { pControl->SetLimits( -info.iWidth / 4, -info.iHeight / 4, info.iWidth / 4, info.iHeight / 4); pControl->SetPosition((float)info.Overscan.left, (float)info.Overscan.top); pControl->SetLocation(info.Overscan.left, info.Overscan.top, false); } pControl = dynamic_cast<CGUIMoverControl*>(GetControl(CONTROL_BOTTOM_RIGHT)); if (pControl) { pControl->SetLimits(info.iWidth*3 / 4, info.iHeight*3 / 4, info.iWidth*5 / 4, info.iHeight*5 / 4); pControl->SetPosition((float)info.Overscan.right - (int)pControl->GetWidth(), (float)info.Overscan.bottom - (int)pControl->GetHeight()); pControl->SetLocation(info.Overscan.right, info.Overscan.bottom, false); } // Subtitles and OSD controls can only move up and down pControl = dynamic_cast<CGUIMoverControl*>(GetControl(CONTROL_SUBTITLES)); if (pControl) { pControl->SetLimits(0, info.iHeight*3 / 4, 0, info.iHeight*5 / 4); pControl->SetPosition((info.iWidth - pControl->GetWidth()) * 0.5f, info.iSubtitles - pControl->GetHeight()); pControl->SetLocation(0, info.iSubtitles, false); } // lastly the pixel ratio control... CGUIResizeControl *pResize = dynamic_cast<CGUIResizeControl*>(GetControl(CONTROL_PIXEL_RATIO)); if (pResize) { pResize->SetLimits(info.iWidth*0.25f, info.iHeight*0.5f, info.iWidth*0.75f, info.iHeight*0.5f); pResize->SetHeight(info.iHeight * 0.5f); pResize->SetWidth(pResize->GetHeight() / info.fPixelRatio); pResize->SetPosition((info.iWidth - pResize->GetWidth()) / 2, (info.iHeight - pResize->GetHeight()) / 2); } // Enable the default control EnableControl(m_iControl); }
void CGUIWindowSettingsScreenCalibration::UpdateFromControl(int iControl) { CStdString strStatus; if (iControl == CONTROL_PIXEL_RATIO) { CGUIResizeControl *pControl = (CGUIResizeControl*)GetControl(CONTROL_PIXEL_RATIO); if (pControl) { float fWidth = (float)pControl->GetWidth(); float fHeight = (float)pControl->GetHeight(); CDisplaySettings::Get().GetResolutionInfo(m_Res[m_iCurRes]).fPixelRatio = fHeight / fWidth; // recenter our control... pControl->SetPosition((CDisplaySettings::Get().GetResolutionInfo(m_Res[m_iCurRes]).iWidth - pControl->GetWidth()) / 2, (CDisplaySettings::Get().GetResolutionInfo(m_Res[m_iCurRes]).iHeight - pControl->GetHeight()) / 2); strStatus.Format("%s (%5.3f)", g_localizeStrings.Get(275).c_str(), CDisplaySettings::Get().GetResolutionInfo(m_Res[m_iCurRes]).fPixelRatio); SET_CONTROL_LABEL(CONTROL_LABEL_ROW2, 278); } } else { CGUIMoverControl *pControl = (CGUIMoverControl*)GetControl(iControl); if (pControl) { switch (iControl) { case CONTROL_TOP_LEFT: { CDisplaySettings::Get().GetResolutionInfo(m_Res[m_iCurRes]).Overscan.left = pControl->GetXLocation(); CDisplaySettings::Get().GetResolutionInfo(m_Res[m_iCurRes]).Overscan.top = pControl->GetYLocation(); strStatus.Format("%s (%i,%i)", g_localizeStrings.Get(272).c_str(), pControl->GetXLocation(), pControl->GetYLocation()); SET_CONTROL_LABEL(CONTROL_LABEL_ROW2, 276); } break; case CONTROL_BOTTOM_RIGHT: { CDisplaySettings::Get().GetResolutionInfo(m_Res[m_iCurRes]).Overscan.right = pControl->GetXLocation(); CDisplaySettings::Get().GetResolutionInfo(m_Res[m_iCurRes]).Overscan.bottom = pControl->GetYLocation(); int iXOff1 = CDisplaySettings::Get().GetResolutionInfo(m_Res[m_iCurRes]).iWidth - pControl->GetXLocation(); int iYOff1 = CDisplaySettings::Get().GetResolutionInfo(m_Res[m_iCurRes]).iHeight - pControl->GetYLocation(); strStatus.Format("%s (%i,%i)", g_localizeStrings.Get(273).c_str(), iXOff1, iYOff1); SET_CONTROL_LABEL(CONTROL_LABEL_ROW2, 276); } break; case CONTROL_SUBTITLES: { CDisplaySettings::Get().GetResolutionInfo(m_Res[m_iCurRes]).iSubtitles = pControl->GetYLocation(); strStatus.Format("%s (%i)", g_localizeStrings.Get(274).c_str(), pControl->GetYLocation()); SET_CONTROL_LABEL(CONTROL_LABEL_ROW2, 277); } break; } } } // set the label control correctly CStdString strText; if (g_Windowing.IsFullScreen()) strText.Format("%ix%i@%.2f - %s | %s", CDisplaySettings::Get().GetResolutionInfo(m_Res[m_iCurRes]).iScreenWidth, CDisplaySettings::Get().GetResolutionInfo(m_Res[m_iCurRes]).iScreenHeight, CDisplaySettings::Get().GetResolutionInfo(m_Res[m_iCurRes]).fRefreshRate, g_localizeStrings.Get(244).c_str(), strStatus.c_str()); else strText.Format("%ix%i - %s | %s", CDisplaySettings::Get().GetResolutionInfo(m_Res[m_iCurRes]).iScreenWidth, CDisplaySettings::Get().GetResolutionInfo(m_Res[m_iCurRes]).iScreenHeight, g_localizeStrings.Get(242).c_str(), strStatus.c_str()); SET_CONTROL_LABEL(CONTROL_LABEL_ROW1, strText); }