本文整理汇总了C++中CGUIControl::UpdateVisibility方法的典型用法代码示例。如果您正苦于以下问题:C++ CGUIControl::UpdateVisibility方法的具体用法?C++ CGUIControl::UpdateVisibility怎么用?C++ CGUIControl::UpdateVisibility使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CGUIControl
的用法示例。
在下文中一共展示了CGUIControl::UpdateVisibility方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Process
void CGUIControlGroupList::Process(unsigned int currentTime, CDirtyRegionList &dirtyregions)
{
if (m_scroller.Update(currentTime))
MarkDirtyRegion();
// first we update visibility of all our items, to ensure our size and
// alignment computations are correct.
for (iControls it = m_children.begin(); it != m_children.end(); ++it)
{
CGUIControl *control = *it;
GUIPROFILER_VISIBILITY_BEGIN(control);
control->UpdateVisibility();
GUIPROFILER_VISIBILITY_END(control);
}
ValidateOffset();
if (m_pageControl && m_lastScrollerValue != m_scroller.GetValue())
{
CGUIMessage message(GUI_MSG_LABEL_RESET, GetParentID(), m_pageControl, (int)Size(), (int)m_totalSize);
SendWindowMessage(message);
CGUIMessage message2(GUI_MSG_ITEM_SELECT, GetParentID(), m_pageControl, (int)m_scroller.GetValue());
SendWindowMessage(message2);
m_lastScrollerValue = m_scroller.GetValue();
}
// we run through the controls, rendering as we go
int index = 0;
float pos = GetAlignOffset();
for (iControls it = m_children.begin(); it != m_children.end(); ++it)
{
// note we render all controls, even if they're offscreen, as then they'll be updated
// with respect to animations
CGUIControl *control = *it;
if (m_orientation == VERTICAL)
g_graphicsContext.SetOrigin(m_posX, m_posY + pos - m_scroller.GetValue());
else
g_graphicsContext.SetOrigin(m_posX + pos - m_scroller.GetValue(), m_posY);
control->DoProcess(currentTime, dirtyregions);
if (control->IsVisible())
{
if (IsControlOnScreen(pos, control))
{
if (control->HasFocus())
m_focusedPosition = index;
index++;
}
pos += Size(control) + m_itemGap;
}
g_graphicsContext.RestoreOrigin();
}
CGUIControl::Process(currentTime, dirtyregions);
}
示例2: Process
void CGUIControlGroupList::Process(unsigned int currentTime, CDirtyRegionList &dirtyregions)
{
if (m_scrollSpeed != 0)
{
MarkDirtyRegion();
m_offset += m_scrollSpeed * (currentTime - m_scrollLastTime);
if ((m_scrollSpeed < 0 && m_offset < m_scrollOffset) ||
(m_scrollSpeed > 0 && m_offset > m_scrollOffset))
{
m_offset = m_scrollOffset;
m_scrollSpeed = 0;
}
}
m_scrollLastTime = currentTime;
// first we update visibility of all our items, to ensure our size and
// alignment computations are correct.
for (iControls it = m_children.begin(); it != m_children.end(); ++it)
{
CGUIControl *control = *it;
GUIPROFILER_VISIBILITY_BEGIN(control);
control->UpdateVisibility();
GUIPROFILER_VISIBILITY_END(control);
}
ValidateOffset();
if (m_pageControl)
{
CGUIMessage message(GUI_MSG_LABEL_RESET, GetParentID(), m_pageControl, (int)m_height, (int)m_totalSize);
SendWindowMessage(message);
CGUIMessage message2(GUI_MSG_ITEM_SELECT, GetParentID(), m_pageControl, (int)m_offset);
SendWindowMessage(message2);
}
// we run through the controls, rendering as we go
float pos = GetAlignOffset();
for (iControls it = m_children.begin(); it != m_children.end(); ++it)
{
// note we render all controls, even if they're offscreen, as then they'll be updated
// with respect to animations
CGUIControl *control = *it;
if (m_orientation == VERTICAL)
g_graphicsContext.SetOrigin(m_posX, m_posY + pos - m_offset);
else
g_graphicsContext.SetOrigin(m_posX + pos - m_offset, m_posY);
control->DoProcess(currentTime, dirtyregions);
if (control->IsVisible())
pos += Size(control) + m_itemGap;
g_graphicsContext.RestoreOrigin();
}
CGUIControl::Process(currentTime, dirtyregions);
}
示例3: Render
void CGUIListGroup::Render()
{
g_graphicsContext.PushTransform(TransformMatrix::CreateTranslation(m_posX, m_posY));
bool cropping = (m_cropping && g_graphicsContext.SetClipRegion(0, 0, m_width, m_height));
for (iControls it = m_children.begin(); it != m_children.end(); ++it)
{
CGUIControl *control = *it;
GUIPROFILER_VISIBILITY_BEGIN(control);
control->UpdateVisibility(m_item);
GUIPROFILER_VISIBILITY_END(control);
control->DoRender(m_renderTime);
}
CGUIControl::Render();
if (cropping)
g_graphicsContext.RestoreClipRegion();
g_graphicsContext.PopTransform();
m_item = NULL;
}
示例4: Render
void CGUIControlGroup::Render()
{
g_graphicsContext.SetOrigin(m_posX, m_posY);
CGUIControl *focusedControl = NULL;
for (iControls it = m_children.begin(); it != m_children.end(); ++it)
{
CGUIControl *control = *it;
control->UpdateVisibility();
if (m_renderFocusedLast && control->HasFocus())
focusedControl = control;
else
control->DoRender(m_renderTime);
}
if (focusedControl)
focusedControl->DoRender(m_renderTime);
CGUIControl::Render();
g_graphicsContext.RestoreOrigin();
}
示例5: UpdateViewVisibility
void CGUIViewControl::UpdateViewVisibility()
{
// first reset our infomanager cache, as it's likely that the vis conditions
// used for views (i.e. based on contenttype) may have changed
g_infoManager.ResetCache();
m_visibleViews.clear();
for (unsigned int i = 0; i < m_allViews.size(); i++)
{
CGUIControl *view = m_allViews[i];
if (view->HasVisibleCondition())
{
view->UpdateVisibility();
if (view->IsVisibleFromSkin())
m_visibleViews.push_back(view);
}
else
m_visibleViews.push_back(view);
}
}
示例6: Process
void CGUIControlGroup::Process(unsigned int currentTime, CDirtyRegionList &dirtyregions)
{
CPoint pos(GetPosition());
g_graphicsContext.SetOrigin(pos.x, pos.y);
CRect rect;
for (iControls it = m_children.begin(); it != m_children.end(); ++it)
{
CGUIControl *control = *it;
control->UpdateVisibility();
unsigned int oldDirty = dirtyregions.size();
control->DoProcess(currentTime, dirtyregions);
if (control->IsVisible() || (oldDirty != dirtyregions.size())) // visible or dirty (was visible?)
rect.Union(control->GetRenderRegion());
}
g_graphicsContext.RestoreOrigin();
CGUIControl::Process(currentTime, dirtyregions);
m_renderRegion = rect;
}
示例7: Process
void CGUIListGroup::Process(unsigned int currentTime, CDirtyRegionList &dirtyregions)
{
CServiceBroker::GetWinSystem()->GetGfxContext().SetOrigin(m_posX, m_posY);
CRect rect;
for (iControls it = m_children.begin(); it != m_children.end(); ++it)
{
CGUIControl *control = *it;
control->UpdateVisibility(m_item);
unsigned int oldDirty = dirtyregions.size();
control->DoProcess(currentTime, dirtyregions);
if (control->IsVisible() || (oldDirty != dirtyregions.size())) // visible or dirty (was visible?)
rect.Union(control->GetRenderRegion());
}
CServiceBroker::GetWinSystem()->GetGfxContext().RestoreOrigin();
CGUIControl::Process(currentTime, dirtyregions);
m_renderRegion = rect;
m_item = NULL;
}
示例8: Render
void CGUIControlGroup::Render()
{
CPoint pos(GetPosition());
g_graphicsContext.SetOrigin(pos.x, pos.y);
CGUIControl *focusedControl = NULL;
for (iControls it = m_children.begin(); it != m_children.end(); ++it)
{
CGUIControl *control = *it;
GUIPROFILER_VISIBILITY_BEGIN(control);
control->UpdateVisibility();
GUIPROFILER_VISIBILITY_END(control);
if (m_renderFocusedLast && control->HasFocus())
focusedControl = control;
else
control->DoRender(m_renderTime);
}
if (focusedControl)
focusedControl->DoRender(m_renderTime);
CGUIControl::Render();
g_graphicsContext.RestoreOrigin();
}
示例9: UpdateViewVisibility
void CGUIViewControl::UpdateViewVisibility()
{
// first reset our infomanager cache, as it's likely that the vis conditions
// used for views (i.e. based on contenttype) may have changed
CGUIInfoManager& infoMgr = CServiceBroker::GetGUI()->GetInfoManager();
infoMgr.ResetCache();
infoMgr.GetInfoProviders().GetGUIControlsInfoProvider().ResetContainerMovingCache();
m_visibleViews.clear();
for (unsigned int i = 0; i < m_allViews.size(); i++)
{
CGUIControl *view = m_allViews[i];
if (view->HasVisibleCondition())
{
view->UpdateVisibility(nullptr);
if (view->IsVisibleFromSkin())
m_visibleViews.push_back(view);
}
else
m_visibleViews.push_back(view);
}
}
示例10: Render
void CGUIControlGroupList::Render()
{
if (m_scrollSpeed != 0)
{
m_offset += m_scrollSpeed * (m_renderTime - m_scrollTime);
if (m_scrollSpeed < 0 && m_offset < m_scrollOffset ||
m_scrollSpeed > 0 && m_offset > m_scrollOffset)
{
m_offset = m_scrollOffset;
m_scrollSpeed = 0;
}
}
m_scrollTime = m_renderTime;
ValidateOffset();
if (m_pageControl)
{
CGUIMessage message(GUI_MSG_LABEL_RESET, GetParentID(), m_pageControl, (DWORD)m_height, (DWORD)m_totalSize);
SendWindowMessage(message);
CGUIMessage message2(GUI_MSG_ITEM_SELECT, GetParentID(), m_pageControl, (DWORD)m_offset);
SendWindowMessage(message2);
}
// we run through the controls, rendering as we go
bool render(g_graphicsContext.SetClipRegion(m_posX, m_posY, m_width, m_height));
float pos = 0;
float focusedPos = 0;
CGUIControl *focusedControl = NULL;
for (iControls it = m_children.begin(); it != m_children.end(); ++it)
{
// note we render all controls, even if they're offscreen, as then they'll be updated
// with respect to animations
CGUIControl *control = *it;
control->UpdateVisibility();
if (m_renderFocusedLast && control->HasFocus())
{
focusedControl = control;
focusedPos = pos;
}
else
{
if (m_orientation == VERTICAL)
g_graphicsContext.SetOrigin(m_posX, m_posY + pos - m_offset);
else
g_graphicsContext.SetOrigin(m_posX + pos - m_offset, m_posY);
control->DoRender(m_renderTime);
}
if (control->IsVisible())
pos += Size(control) + m_itemGap;
g_graphicsContext.RestoreOrigin();
}
if (focusedControl)
{
if (m_orientation == VERTICAL)
g_graphicsContext.SetOrigin(m_posX, m_posY + focusedPos - m_offset);
else
g_graphicsContext.SetOrigin(m_posX + focusedPos - m_offset, m_posY);
focusedControl->DoRender(m_renderTime);
}
if (render) g_graphicsContext.RestoreClipRegion();
CGUIControl::Render();
}