本文整理汇总了C++中MarkDirtyRegion函数的典型用法代码示例。如果您正苦于以下问题:C++ MarkDirtyRegion函数的具体用法?C++ MarkDirtyRegion怎么用?C++ MarkDirtyRegion使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了MarkDirtyRegion函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: MarkDirtyRegion
void CGUIBaseContainer::UpdateScrollOffset(unsigned int currentTime)
{
if (m_scroller.Update(currentTime))
MarkDirtyRegion();
else if (m_lastScrollStartTimer.IsRunning() && m_lastScrollStartTimer.GetElapsedMilliseconds() >= SCROLLING_GAP)
{
m_scrollTimer.Stop();
m_lastScrollStartTimer.Stop();
}
}
示例2: MarkDirtyRegion
void CGUIControl::SetWidth(float width)
{
if (m_width != width)
{
MarkDirtyRegion();
m_width = width;
m_hitRect.x2 = m_hitRect.x1 + width;
SetInvalid();
}
}
示例3: MarkDirtyRegion
bool CGUIDialogTeletext::OnAction(const CAction& action)
{
if (m_TextDecoder.HandleAction(action))
{
MarkDirtyRegion();
return true;
}
return CGUIDialog::OnAction(action);
}
示例4: MarkDirtyRegion
void CGUIWindowFullScreen::Process(unsigned int currentTime, CDirtyRegionList &dirtyregion)
{
if (g_renderManager.IsGuiLayer())
MarkDirtyRegion();
CGUIWindow::Process(currentTime, dirtyregion);
// TODO: This isn't quite optimal - ideally we'd only be dirtying up the actual video render rect
// which is probably the job of the renderer as it can more easily track resizing etc.
m_renderRegion.SetRect(0, 0, (float)g_graphicsContext.GetWidth(), (float)g_graphicsContext.GetHeight());
}
示例5: MarkDirtyRegion
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);
}
示例6: MarkDirtyRegion
void CGUIWindowPointer::Process(unsigned int currentTime, CDirtyRegionList &dirtyregions)
{
bool active = g_Mouse.IsActive();
if (active != m_active)
{
MarkDirtyRegion();
m_active = active;
}
SetPosition((float)g_Mouse.GetX(), (float)g_Mouse.GetY());
SetPointer(g_Mouse.GetState());
return CGUIWindow::Process(currentTime, dirtyregions);
}
示例7: if
bool CGUIWindowDebugInfo::OnMessage(CGUIMessage &message)
{
if (message.GetMessage() == GUI_MSG_WINDOW_DEINIT)
{
delete m_layout;
m_layout = nullptr;
}
else if (message.GetMessage() == GUI_MSG_REFRESH_TIMER)
MarkDirtyRegion();
return CGUIDialog::OnMessage(message);
}
示例8: MarkDirtyRegion
bool CGUIFixedListContainer::SelectItemFromPoint(const CPoint &point)
{
if (!m_focusedLayout || !m_layout)
return false;
MarkDirtyRegion();
const float mouse_scroll_speed = 0.25f;
const float mouse_max_amount = 1.5f;
float sizeOfItem = m_layout->Size(m_orientation);
int minCursor, maxCursor;
GetCursorRange(minCursor, maxCursor);
// see if the point is either side of our focus range
float start = (minCursor + 0.2f) * sizeOfItem;
float end = (maxCursor - 0.2f) * sizeOfItem + m_focusedLayout->Size(m_orientation);
float pos = (m_orientation == VERTICAL) ? point.y : point.x;
if (pos < start && GetOffset() > -minCursor)
{ // scroll backward
if (!InsideLayout(m_layout, point))
return false;
float amount = std::min((start - pos) / sizeOfItem, mouse_max_amount);
m_analogScrollCount += amount * amount * mouse_scroll_speed;
if (m_analogScrollCount > 1)
{
ScrollToOffset(GetOffset() - 1);
m_analogScrollCount = 0;
}
return true;
}
else if (pos > end && GetOffset() + maxCursor < (int)m_items.size() - 1)
{
if (!InsideLayout(m_layout, point))
return false;
// scroll forward
float amount = std::min((pos - end) / sizeOfItem, mouse_max_amount);
m_analogScrollCount += amount * amount * mouse_scroll_speed;
if (m_analogScrollCount > 1)
{
ScrollToOffset(GetOffset() + 1);
m_analogScrollCount = 0;
}
return true;
}
else
{ // select the appropriate item
int cursor = GetCursorFromPoint(point);
if (cursor < 0)
return false;
// calling SelectItem() here will focus the item and scroll, which isn't really what we're after
SetCursor(cursor);
return true;
}
}
示例9: CalculateLayout
void CGUIBaseContainer::UpdateLayout(bool updateAllItems)
{
if (updateAllItems)
{ // free memory of items
for (iItems it = m_items.begin(); it != m_items.end(); ++it)
(*it)->FreeMemory();
}
// and recalculate the layout
CalculateLayout();
SetPageControlRange();
MarkDirtyRegion();
}
示例10: QueueAnimation
void CGUIControl::UpdateVisibility(const CGUIListItem *item)
{
if (m_visibleCondition)
{
bool bWasVisible = m_visibleFromSkinCondition;
m_visibleFromSkinCondition = m_visibleCondition->Get(item);
if (!bWasVisible && m_visibleFromSkinCondition)
{ // automatic change of visibility - queue the in effect
// CLog::Log(LOGDEBUG, "Visibility changed to visible for control id %i", m_controlID);
QueueAnimation(ANIM_TYPE_VISIBLE);
}
else if (bWasVisible && !m_visibleFromSkinCondition)
{ // automatic change of visibility - do the out effect
// CLog::Log(LOGDEBUG, "Visibility changed to hidden for control id %i", m_controlID);
QueueAnimation(ANIM_TYPE_HIDDEN);
}
}
// check for conditional animations
for (unsigned int i = 0; i < m_animations.size(); i++)
{
CAnimation &anim = m_animations[i];
if (anim.GetType() == ANIM_TYPE_CONDITIONAL)
anim.UpdateCondition(item);
}
// and check for conditional enabling - note this overrides SetEnabled() from the code currently
// this may need to be reviewed at a later date
bool enabled = m_enabled;
if (m_enableCondition)
m_enabled = m_enableCondition->Get(item);
if (m_enabled != enabled)
MarkDirtyRegion();
m_allowHiddenFocus.Update(item);
if (UpdateColors())
MarkDirtyRegion();
// and finally, update our control information (if not pushed)
if (!m_pushedUpdates)
UpdateInfo(item);
}
示例11: MarkDirtyRegion
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);
}
示例12: MarkDirtyRegion
void CGUICheckMarkControl::Process(unsigned int currentTime, CDirtyRegionList &dirtyregions)
{
bool changed = false;
changed |= m_imgCheckMark.Process(currentTime);
changed |= m_imgCheckMarkNoFocus.Process(currentTime);
changed |= m_label.Process(currentTime);
if (changed)
MarkDirtyRegion();
CGUIControl::Process(currentTime, dirtyregions);
}
示例13: MarkDirtyRegion
void CGUIWindowPointer::Process(unsigned int currentTime, CDirtyRegionList &dirtyregions)
{
bool active = CInputManager::Get().IsMouseActive();
if (active != m_active)
{
MarkDirtyRegion();
m_active = active;
}
MousePosition pos = CInputManager::Get().GetMousePosition();
SetPosition((float)pos.x, (float)pos.y);
SetPointer(CInputManager::Get().GetMouseState());
return CGUIWindow::Process(currentTime, dirtyregions);
}
示例14: MarkDirtyRegion
bool CGUISpinControl::OnMouseOver(const CPoint &point)
{
int select = m_iSelect;
if (m_imgspinDownFocus.HitTest(point))
m_iSelect = SPIN_BUTTON_DOWN;
else
m_iSelect = SPIN_BUTTON_UP;
if (select != m_iSelect)
MarkDirtyRegion();
return CGUIControl::OnMouseOver(point);
}
示例15: GetWidth
void CGUIToggleButtonControl::ProcessToggle(unsigned int currentTime)
{
bool changed = false;
changed |= m_label.SetMaxRect(m_posX, m_posY, GetWidth(), m_height);
changed |= m_label.SetText(GetDescription());
changed |= m_label.SetColor(GetTextColor());
changed |= m_label.SetScrolling(HasFocus());
changed |= m_label.Process(currentTime);
if (changed)
MarkDirtyRegion();
}