本文整理汇总了C++中CGUIControl::GetControlType方法的典型用法代码示例。如果您正苦于以下问题:C++ CGUIControl::GetControlType方法的具体用法?C++ CGUIControl::GetControlType怎么用?C++ CGUIControl::GetControlType使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CGUIControl
的用法示例。
在下文中一共展示了CGUIControl::GetControlType方法的13个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: DoProcess
void CGUIControllerWindow::DoProcess(unsigned int currentTime, CDirtyRegionList &dirtyregions)
{
/*
* Apply the faded focus texture to the current controller when unfocused
*/
CGUIControl* control = nullptr; // The controller button
bool bAlphaFaded = false; // True if the controller button has been focused and faded this frame
if (m_controllerList && m_controllerList->GetFocusedController() >= 0)
{
control = GetFirstFocusableControl(CONTROL_CONTROLLER_BUTTONS_START + m_controllerList->GetFocusedController());
if (control && !control->HasFocus())
{
if (control->GetControlType() == CGUIControl::GUICONTROL_BUTTON)
{
control->SetFocus(true);
static_cast<CGUIButtonControl*>(control)->SetAlpha(0x80);
bAlphaFaded = true;
}
}
}
CGUIDialog::DoProcess(currentTime, dirtyregions);
if (control && bAlphaFaded)
{
control->SetFocus(false);
if (control->GetControlType() == CGUIControl::GUICONTROL_BUTTON)
static_cast<CGUIButtonControl*>(control)->SetAlpha(0xFF);
}
}
示例2: DoProcess
void CGUIDialogSettingsBase::DoProcess(unsigned int currentTime, CDirtyRegionList &dirtyregions)
{
// update alpha status of current button
bool bAlphaFaded = false;
CGUIControl *control = GetFirstFocusableControl(CONTROL_SETTINGS_START_BUTTONS + m_iCategory);
if (control && !control->HasFocus())
{
if (control->GetControlType() == CGUIControl::GUICONTROL_BUTTON)
{
control->SetFocus(true);
((CGUIButtonControl *)control)->SetAlpha(0x80);
bAlphaFaded = true;
}
else if (control->GetControlType() == CGUIControl::GUICONTROL_TOGGLEBUTTON)
{
control->SetFocus(true);
((CGUIButtonControl *)control)->SetSelected(true);
bAlphaFaded = true;
}
}
CGUIDialog::DoProcess(currentTime, dirtyregions);
if (control && bAlphaFaded)
{
control->SetFocus(false);
if (control->GetControlType() == CGUIControl::GUICONTROL_BUTTON)
((CGUIButtonControl *)control)->SetAlpha(0xFF);
else
((CGUIButtonControl *)control)->SetSelected(false);
}
}
示例3: DoProcess
void CGUIDialogAddonSettings::DoProcess(unsigned int currentTime, CDirtyRegionList &dirtyregions)
{
// update status of current section button
bool alphaFaded = false;
CGUIControl *control = GetFirstFocusableControl(CONTROL_START_SECTION + m_currentSection);
if (control && !control->HasFocus())
{
if (control->GetControlType() == CGUIControl::GUICONTROL_BUTTON)
{
control->SetFocus(true);
((CGUIButtonControl *)control)->SetAlpha(0x80);
alphaFaded = true;
}
else if (control->GetControlType() == CGUIControl::GUICONTROL_TOGGLEBUTTON)
{
control->SetFocus(true);
((CGUIButtonControl *)control)->SetSelected(true);
alphaFaded = true;
}
}
CGUIDialogBoxBase::DoProcess(currentTime, dirtyregions);
if (alphaFaded && m_active) // dialog may close
{
control->SetFocus(false);
if (control->GetControlType() == CGUIControl::GUICONTROL_BUTTON)
((CGUIButtonControl *)control)->SetAlpha(0xFF);
else
((CGUIButtonControl *)control)->SetSelected(false);
}
}
示例4: SelectItemFromPoint
void CGUIListGroup::SelectItemFromPoint(const CPoint &point)
{
CPoint controlCoords(point);
m_transform.InverseTransformPosition(controlCoords.x, controlCoords.y);
for (iControls it = m_children.begin(); it != m_children.end(); ++it)
{
CGUIControl *child = *it;
if (child->GetControlType() == CGUIControl::GUICONTROL_MULTISELECT)
((CGUIMultiSelectTextControl *)child)->SelectItemFromPoint(point);
else if (child->GetControlType() == CGUIControl::GUICONTROL_LISTGROUP)
((CGUIListGroup *)child)->SelectItemFromPoint(point);
}
}
示例5: SelectItemFromPoint
void CGUIListGroup::SelectItemFromPoint(const CPoint &point)
{
CPoint controlCoords(point);
m_transform.InverseTransformPosition(controlCoords.x, controlCoords.y);
for (iControls it = m_children.begin(); it != m_children.end(); ++it)
{
CGUIControl *child = *it;
if (child->GetControlType() == CGUIControl::GUICONTROL_LISTGROUP)
static_cast<CGUIListGroup*>(child)->SelectItemFromPoint(point);
}
}
示例6: DoProcess
void CGUIDialogBusy::DoProcess(unsigned int currentTime, CDirtyRegionList &dirtyregions)
{
bool visible = g_windowManager.IsModalDialogTopmost(WINDOW_DIALOG_BUSY);
if(!visible && m_bLastVisible)
dirtyregions.push_back(CDirtyRegion(m_renderRegion));
m_bLastVisible = visible;
// update the progress control if available
CGUIControl *control = GetControl(PROGRESS_CONTROL);
if (control && control->GetControlType() == CGUIControl::GUICONTROL_PROGRESS)
{
CGUIProgressControl *progress = static_cast<CGUIProgressControl*>(control);
progress->SetPercentage(m_progress);
progress->SetVisible(m_progress > -1);
}
CGUIDialog::DoProcess(currentTime, dirtyregions);
}
示例7: ChangeButtonToEdit
void CGUIWindow::ChangeButtonToEdit(int id, bool singleLabel /* = false*/)
{
#ifdef PRE_SKIN_VERSION_9_10_COMPATIBILITY
CGUIControl *name = (CGUIControl *)GetControl(id);
if (name && name->GetControlType() == CGUIControl::GUICONTROL_BUTTON)
{ // change it to an edit control
CGUIEditControl *edit = new CGUIEditControl(*(const CGUIButtonControl *)name);
if (edit)
{
if (singleLabel)
edit->SetLabel("");
InsertControl(edit, name);
RemoveControl(name);
name->FreeResources();
delete name;
}
}
#endif
}
示例8: GetAddonControl
CGUIControl* CGUIAddonWindow::GetAddonControl(int controlId, CGUIControl::GUICONTROLTYPES type, const std::string& typeName)
{
CGUIControl* pGUIControl = dynamic_cast<CGUIControl*>(GetControl(controlId));
if (!pGUIControl)
{
CLog::Log(LOGERROR, "CGUIAddonGUI_Window::%s: %s - Requested GUI control Id '%i' for '%s' not present!",
__FUNCTION__,
m_addon->Name().c_str(),
controlId, typeName.c_str());
return nullptr;
}
else if (pGUIControl->GetControlType() != type)
{
CLog::Log(LOGERROR, "CGUIAddonGUI_Window::%s: %s - Requested GUI control Id '%i' not the type '%s'!",
__FUNCTION__,
m_addon->Name().c_str(),
controlId, typeName.c_str());
return nullptr;
}
return pGUIControl;
}
示例9: Window_GetControlById
/* Searches for a control in Window->vecControls
* If we can't find any but the window has the controlId (in case of a not python window)
* we create a new control with basic functionality
*/
Control* Window_GetControlById(Window* self, int iControlId)
{
Control* pControl = NULL;
// find in window vector first!!!
// this saves us from creating a complete new control
vector<Control*>::iterator it = self->vecControls.begin();
while (it != self->vecControls.end())
{
Control* control = *it;
if (control->iControlId == iControlId)
{
Py_INCREF(control);
return control;
} else ++it;
}
// lock xbmc GUI before accessing data from it
GilSafeSingleLock lock(g_graphicsContext);
// check if control exists
CGUIControl* pGUIControl = (CGUIControl*)self->pWindow->GetControl(iControlId);
if (!pGUIControl)
{
// control does not exist.
CStdString error;
error.Format("Non-Existent Control %d",iControlId);
PyErr_SetString(PyExc_TypeError, error.c_str());
return NULL;
}
// allocate a new control with a new reference
CLabelInfo li;
switch(pGUIControl->GetControlType())
{
case CGUIControl::GUICONTROL_BUTTON:
pControl = (Control*)ControlButton_Type.tp_alloc(&ControlButton_Type, 0);
new(&((ControlButton*)pControl)->strFont) string();
new(&((ControlButton*)pControl)->strText) string();
new(&((ControlButton*)pControl)->strText2) string();
new(&((ControlButton*)pControl)->strTextureFocus) string();
new(&((ControlButton*)pControl)->strTextureNoFocus) string();
li = ((CGUIButtonControl *)pGUIControl)->GetLabelInfo();
// note: conversion from infocolors -> plain colors here
((ControlButton*)pControl)->disabledColor = li.disabledColor;
((ControlButton*)pControl)->focusedColor = li.focusedColor;
((ControlButton*)pControl)->textColor = li.textColor;
((ControlButton*)pControl)->shadowColor = li.shadowColor;
if (li.font) ((ControlButton*)pControl)->strFont = li.font->GetFontName();
((ControlButton*)pControl)->align = li.align;
break;
case CGUIControl::GUICONTROL_CHECKMARK:
pControl = (Control*)ControlCheckMark_Type.tp_alloc(&ControlCheckMark_Type, 0);
new(&((ControlCheckMark*)pControl)->strFont) string();
new(&((ControlCheckMark*)pControl)->strText) string();
new(&((ControlCheckMark*)pControl)->strTextureFocus) string();
new(&((ControlCheckMark*)pControl)->strTextureNoFocus) string();
li = ((CGUICheckMarkControl *)pGUIControl)->GetLabelInfo();
// note: conversion to plain colors from infocolors.
((ControlCheckMark*)pControl)->disabledColor = li.disabledColor;
//((ControlCheckMark*)pControl)->shadowColor = li.shadowColor;
((ControlCheckMark*)pControl)->textColor = li.textColor;
if (li.font) ((ControlCheckMark*)pControl)->strFont = li.font->GetFontName();
((ControlCheckMark*)pControl)->align = li.align;
break;
case CGUIControl::GUICONTROL_LABEL:
pControl = (Control*)ControlLabel_Type.tp_alloc(&ControlLabel_Type, 0);
new(&((ControlLabel*)pControl)->strText) string();
new(&((ControlLabel*)pControl)->strFont) string();
break;
case CGUIControl::GUICONTROL_SPIN:
pControl = (Control*)ControlSpin_Type.tp_alloc(&ControlSpin_Type, 0);
new(&((ControlSpin*)pControl)->strTextureUp) string();
new(&((ControlSpin*)pControl)->strTextureDown) string();
new(&((ControlSpin*)pControl)->strTextureUpFocus) string();
new(&((ControlSpin*)pControl)->strTextureDownFocus) string();
break;
case CGUIControl::GUICONTROL_FADELABEL:
pControl = (Control*)ControlFadeLabel_Type.tp_alloc(&ControlFadeLabel_Type, 0);
new(&((ControlFadeLabel*)pControl)->strFont) string();
new(&((ControlFadeLabel*)pControl)->vecLabels) std::vector<string>();
break;
case CGUIControl::GUICONTROL_TEXTBOX:
pControl = (Control*)ControlTextBox_Type.tp_alloc(&ControlTextBox_Type, 0);
new(&((ControlTextBox*)pControl)->strFont) string();
break;
case CGUIControl::GUICONTROL_IMAGE:
pControl = (Control*)ControlImage_Type.tp_alloc(&ControlImage_Type, 0);
new(&((ControlImage*)pControl)->strFileName) string();
break;
case CGUIControl::GUICONTROL_PROGRESS:
pControl = (Control*)ControlProgress_Type.tp_alloc(&ControlProgress_Type, 0);
//.........这里部分代码省略.........
示例10: Process
void CGUIWindowDebugInfo::Process(unsigned int currentTime, CDirtyRegionList &dirtyregions)
{
g_graphicsContext.SetRenderingResolution(g_graphicsContext.GetResInfo(), false);
g_cpuInfo.getUsedPercentage(); // must call it to recalculate pct values
static int yShift = 20;
static int xShift = 40;
static unsigned int lastShift = time(nullptr);
time_t now = time(nullptr);
if (now - lastShift > 10)
{
yShift *= -1;
if (now % 5 == 0)
xShift *= -1;
lastShift = now;
MarkDirtyRegion();
}
if (!m_layout)
{
CGUIFont *font13 = g_fontManager.GetDefaultFont();
CGUIFont *font13border = g_fontManager.GetDefaultFont(true);
if (font13)
m_layout = new CGUITextLayout(font13, true, 0, font13border);
}
if (!m_layout)
return;
std::string info;
if (LOG_LEVEL_DEBUG_FREEMEM <= g_advancedSettings.m_logLevel)
{
MEMORYSTATUSEX stat;
stat.dwLength = sizeof(MEMORYSTATUSEX);
GlobalMemoryStatusEx(&stat);
std::string profiling = CGUIControlProfiler::IsRunning() ? " (profiling)" : "";
std::string strCores = g_cpuInfo.GetCoresUsageString();
std::string lcAppName = CCompileInfo::GetAppName();
StringUtils::ToLower(lcAppName);
#if !defined(TARGET_POSIX)
info = StringUtils::Format("LOG: %s%s.log\nMEM: %" PRIu64"/%" PRIu64" KB - FPS: %2.1f fps\nCPU: %s%s", CSpecialProtocol::TranslatePath("special://logpath").c_str(), lcAppName.c_str(),
stat.ullAvailPhys/1024, stat.ullTotalPhys/1024, g_infoManager.GetFPS(), strCores.c_str(), profiling.c_str());
#else
double dCPU = m_resourceCounter.GetCPUUsage();
std::string ucAppName = lcAppName;
StringUtils::ToUpper(ucAppName);
info = StringUtils::Format("LOG: %s%s.log\n"
"MEM: %" PRIu64"/%" PRIu64" KB - FPS: %2.1f fps\n"
"CPU: %s (CPU-%s %4.2f%%%s)",
CSpecialProtocol::TranslatePath("special://logpath").c_str(), lcAppName.c_str(),
stat.ullAvailPhys/1024, stat.ullTotalPhys/1024, g_infoManager.GetFPS(),
strCores.c_str(), ucAppName.c_str(), dCPU, profiling.c_str());
#endif
}
// render the skin debug info
if (g_SkinInfo->IsDebugging())
{
if (!info.empty())
info += "\n";
CGUIWindow *window = g_windowManager.GetWindow(g_windowManager.GetFocusedWindow());
CGUIWindow *pointer = g_windowManager.GetWindow(WINDOW_DIALOG_POINTER);
CPoint point;
if (pointer)
point = CPoint(pointer->GetXPosition(), pointer->GetYPosition());
if (window)
{
std::string windowName = CWindowTranslator::TranslateWindow(window->GetID());
if (!windowName.empty())
windowName += " (" + std::string(window->GetProperty("xmlfile").asString()) + ")";
else
windowName = window->GetProperty("xmlfile").asString();
info += "Window: " + windowName + "\n";
// transform the mouse coordinates to this window's coordinates
g_graphicsContext.SetScalingResolution(window->GetCoordsRes(), true);
point.x *= g_graphicsContext.GetGUIScaleX();
point.y *= g_graphicsContext.GetGUIScaleY();
g_graphicsContext.SetRenderingResolution(g_graphicsContext.GetResInfo(), false);
}
info += StringUtils::Format("Mouse: (%d,%d) ", static_cast<int>(point.x), static_cast<int>(point.y));
if (window)
{
CGUIControl *control = window->GetFocusedControl();
if (control)
info += StringUtils::Format("Focused: %i (%s)", control->GetID(), CGUIControlFactory::TranslateControlType(control->GetControlType()).c_str());
}
}
float w, h;
if (m_layout->Update(info))
MarkDirtyRegion();
m_layout->GetTextExtent(w, h);
float x = xShift + 0.04f * g_graphicsContext.GetWidth();
float y = yShift + 0.04f * g_graphicsContext.GetHeight();
m_renderRegion.SetRect(x, y, x+w, y+h);
}
示例11: GetControlById
/* Searches for a control in Window->vecControls
* If we can't find any but the window has the controlId (in case of a not python window)
* we create a new control with basic functionality
*/
Control* Window::GetControlById(int iControlId) throw (WindowException)
{
TRACE;
// find in window vector first!!!
// this saves us from creating a complete new control
std::vector<AddonClass::Ref<Control> >::iterator it = vecControls.begin();
while (it != vecControls.end())
{
AddonClass::Ref<Control> control = (*it);
if (control->iControlId == iControlId)
{
return control.get();
} else ++it;
}
// lock xbmc GUI before accessing data from it
CSingleLock lock(g_graphicsContext);
// check if control exists
CGUIControl* pGUIControl = (CGUIControl*)ref(window)->GetControl(iControlId);
if (!pGUIControl)
{
// control does not exist.
throw WindowException("Non-Existent Control %d",iControlId);
}
// allocate a new control with a new reference
CLabelInfo li;
Control* pControl = NULL;
// TODO: Yuck! Should probably be done with a Factory pattern
switch(pGUIControl->GetControlType())
{
case CGUIControl::GUICONTROL_BUTTON:
pControl = new ControlButton();
li = ((CGUIButtonControl *)pGUIControl)->GetLabelInfo();
// note: conversion from infocolors -> plain colors here
((ControlButton*)pControl)->disabledColor = li.disabledColor;
((ControlButton*)pControl)->focusedColor = li.focusedColor;
((ControlButton*)pControl)->textColor = li.textColor;
((ControlButton*)pControl)->shadowColor = li.shadowColor;
if (li.font) ((ControlButton*)pControl)->strFont = li.font->GetFontName();
((ControlButton*)pControl)->align = li.align;
break;
case CGUIControl::GUICONTROL_CHECKMARK:
pControl = new ControlCheckMark();
li = ((CGUICheckMarkControl *)pGUIControl)->GetLabelInfo();
// note: conversion to plain colors from infocolors.
((ControlCheckMark*)pControl)->disabledColor = li.disabledColor;
//((ControlCheckMark*)pControl)->shadowColor = li.shadowColor;
((ControlCheckMark*)pControl)->textColor = li.textColor;
if (li.font) ((ControlCheckMark*)pControl)->strFont = li.font->GetFontName();
((ControlCheckMark*)pControl)->align = li.align;
break;
case CGUIControl::GUICONTROL_LABEL:
pControl = new ControlLabel();
break;
case CGUIControl::GUICONTROL_SPIN:
pControl = new ControlSpin();
break;
case CGUIControl::GUICONTROL_FADELABEL:
pControl = new ControlFadeLabel();
break;
case CGUIControl::GUICONTROL_TEXTBOX:
pControl = new ControlTextBox();
break;
case CGUIControl::GUICONTROL_IMAGE:
pControl = new ControlImage();
break;
case CGUIControl::GUICONTROL_PROGRESS:
pControl = new ControlProgress();
break;
case CGUIControl::GUICONTROL_SLIDER:
pControl = new ControlSlider();
break;
case CGUIControl::GUICONTAINER_LIST:
case CGUIControl::GUICONTAINER_WRAPLIST:
case CGUIControl::GUICONTAINER_FIXEDLIST:
case CGUIControl::GUICONTAINER_PANEL:
pControl = new ControlList();
// create a python spin control
((ControlList*)pControl)->pControlSpin = new ControlSpin();
break;
case CGUIControl::GUICONTROL_GROUP:
pControl = new ControlGroup();
break;
case CGUIControl::GUICONTROL_RADIO:
pControl = new ControlRadioButton();
li = ((CGUIRadioButtonControl *)pGUIControl)->GetLabelInfo();
//.........这里部分代码省略.........
示例12: OnKey
bool CInputManager::OnKey(const CKey& key)
{
for (std::vector<KEYBOARD::IKeyboardHandler*>::iterator it = m_keyboardHandlers.begin(); it != m_keyboardHandlers.end(); ++it)
{
if ((*it)->OnKeyPress(key))
return true;
}
// Turn the mouse off, as we've just got a keypress from controller or remote
m_Mouse.SetActive(false);
// get the current active window
int iWin = g_windowManager.GetActiveWindowID();
// this will be checked for certain keycodes that need
// special handling if the screensaver is active
CAction action = m_buttonTranslator->GetAction(iWin, key);
// a key has been pressed.
// reset Idle Timer
g_application.ResetSystemIdleTimer();
bool processKey = AlwaysProcess(action);
if (StringUtils::StartsWithNoCase(action.GetName(), "CECToggleState") || StringUtils::StartsWithNoCase(action.GetName(), "CECStandby"))
{
// do not wake up the screensaver right after switching off the playing device
if (StringUtils::StartsWithNoCase(action.GetName(), "CECToggleState"))
{
CLog::LogF(LOGDEBUG, "action %s [%d], toggling state of playing device", action.GetName().c_str(), action.GetID());
bool result;
CApplicationMessenger::GetInstance().SendMsg(TMSG_CECTOGGLESTATE, 0, 0, static_cast<void*>(&result));
if (!result)
return true;
}
else
{
CApplicationMessenger::GetInstance().PostMsg(TMSG_CECSTANDBY);
return true;
}
}
g_application.ResetScreenSaver();
// allow some keys to be processed while the screensaver is active
if (g_application.WakeUpScreenSaverAndDPMS(processKey) && !processKey)
{
CLog::LogF(LOGDEBUG, "%s pressed, screen saver/dpms woken up", m_Keyboard.GetKeyName((int)key.GetButtonCode()).c_str());
return true;
}
if (iWin != WINDOW_FULLSCREEN_VIDEO)
{
// current active window isnt the fullscreen window
// just use corresponding section from keymap.xml
// to map key->action
// first determine if we should use keyboard input directly
bool useKeyboard = key.FromKeyboard() && (iWin == WINDOW_DIALOG_KEYBOARD || iWin == WINDOW_DIALOG_NUMERIC);
CGUIWindow *window = g_windowManager.GetWindow(iWin);
if (window)
{
CGUIControl *control = window->GetFocusedControl();
if (control)
{
// If this is an edit control set usekeyboard to true. This causes the
// keypress to be processed directly not through the key mappings.
if (control->GetControlType() == CGUIControl::GUICONTROL_EDIT)
useKeyboard = true;
// If the key pressed is shift-A to shift-Z set usekeyboard to true.
// This causes the keypress to be used for list navigation.
if (control->IsContainer() && key.GetModifiers() == CKey::MODIFIER_SHIFT && key.GetVKey() >= XBMCVK_A && key.GetVKey() <= XBMCVK_Z)
useKeyboard = true;
}
}
if (useKeyboard)
{
// use the virtualkeyboard section of the keymap, and send keyboard-specific or navigation
// actions through if that's what they are
CAction action = m_buttonTranslator->GetAction(WINDOW_DIALOG_KEYBOARD, key);
if (!(action.GetID() == ACTION_MOVE_LEFT ||
action.GetID() == ACTION_MOVE_RIGHT ||
action.GetID() == ACTION_MOVE_UP ||
action.GetID() == ACTION_MOVE_DOWN ||
action.GetID() == ACTION_SELECT_ITEM ||
action.GetID() == ACTION_ENTER ||
action.GetID() == ACTION_PREVIOUS_MENU ||
action.GetID() == ACTION_NAV_BACK ||
action.GetID() == ACTION_VOICE_RECOGNIZE))
{
// the action isn't plain navigation - check for a keyboard-specific keymap
action = m_buttonTranslator->GetAction(WINDOW_DIALOG_KEYBOARD, key, false);
if (!(action.GetID() >= REMOTE_0 && action.GetID() <= REMOTE_9) ||
action.GetID() == ACTION_BACKSPACE ||
action.GetID() == ACTION_SHIFT ||
action.GetID() == ACTION_SYMBOLS ||
action.GetID() == ACTION_CURSOR_LEFT ||
action.GetID() == ACTION_CURSOR_RIGHT)
action = CAction(0); // don't bother with this action
}
//.........这里部分代码省略.........
示例13: Process
void CGUIWindowDebugInfo::Process(unsigned int currentTime, CDirtyRegionList &dirtyregions)
{
g_graphicsContext.SetRenderingResolution(g_graphicsContext.GetResInfo(), false);
g_cpuInfo.getUsedPercentage(); // must call it to recalculate pct values
static int yShift = 20;
static int xShift = 40;
static unsigned int lastShift = time(NULL);
time_t now = time(NULL);
if (now - lastShift > 10)
{
yShift *= -1;
if (now % 5 == 0)
xShift *= -1;
lastShift = now;
MarkDirtyRegion();
}
if (!m_layout)
{
CGUIFont *font13 = g_fontManager.GetDefaultFont();
CGUIFont *font13border = g_fontManager.GetDefaultFont(true);
if (font13)
m_layout = new CGUITextLayout(font13, true, 0, font13border);
}
if (!m_layout)
return;
CStdString info;
if (LOG_LEVEL_DEBUG_FREEMEM <= g_advancedSettings.m_logLevel)
{
MEMORYSTATUS stat;
GlobalMemoryStatus(&stat);
CStdString profiling = CGUIControlProfiler::IsRunning() ? " (profiling)" : "";
CStdString strCores = g_cpuInfo.GetCoresUsageString();
#if !defined(_LINUX)
info.Format("LOG: %sxbmc.log\nMEM: %d/%d KB - FPS: %2.1f fps\nCPU: %s%s", g_settings.m_logFolder.c_str(),
stat.dwAvailPhys/1024, stat.dwTotalPhys/1024, g_infoManager.GetFPS(), strCores.c_str(), profiling.c_str());
#else
double dCPU = m_resourceCounter.GetCPUUsage();
info.Format("LOG: %sxbmc.log\nMEM: %"PRIu64"/%"PRIu64" KB - FPS: %2.1f fps\nCPU: %s (CPU-XBMC %4.2f%%%s)", g_settings.m_logFolder.c_str(),
stat.dwAvailPhys/1024, stat.dwTotalPhys/1024, g_infoManager.GetFPS(), strCores.c_str(), dCPU, profiling.c_str());
#endif
}
// render the skin debug info
if (g_SkinInfo->IsDebugging())
{
if (!info.IsEmpty())
info += "\n";
CGUIWindow *window = g_windowManager.GetWindow(g_windowManager.GetFocusedWindow());
CGUIWindow *pointer = g_windowManager.GetWindow(WINDOW_DIALOG_POINTER);
CPoint point;
if (pointer)
point = CPoint(pointer->GetXPosition(), pointer->GetYPosition());
if (window)
{
CStdString windowName = CButtonTranslator::TranslateWindow(window->GetID());
if (!windowName.IsEmpty())
windowName += " (" + window->GetProperty("xmlfile") + ")";
else
windowName = window->GetProperty("xmlfile");
info += "Window: " + windowName + " ";
// transform the mouse coordinates to this window's coordinates
g_graphicsContext.SetScalingResolution(window->GetCoordsRes(), true);
point.x *= g_graphicsContext.GetGUIScaleX();
point.y *= g_graphicsContext.GetGUIScaleY();
g_graphicsContext.SetRenderingResolution(g_graphicsContext.GetResInfo(), false);
}
info.AppendFormat("Mouse: (%d,%d) ", (int)point.x, (int)point.y);
if (window)
{
CGUIControl *control = window->GetFocusedControl();
if (control)
info.AppendFormat("Focused: %i (%s)", control->GetID(), CGUIControlFactory::TranslateControlType(control->GetControlType()).c_str());
}
}
float w, h;
if (m_layout->Update(info))
MarkDirtyRegion();
m_layout->GetTextExtent(w, h);
float x = xShift + 0.04f * g_graphicsContext.GetWidth();
float y = yShift + 0.04f * g_graphicsContext.GetHeight();
m_renderRegion.SetRect(x, y, x+w, y+h);
}