basesite.cpp

来自「symbian 下的helix player源代码」· C++ 代码 · 共 2,191 行 · 第 1/5 页

CPP
2,191
字号

    BOOL bHasReinsertedChild = FALSE;
    INT32 zOrder = 0;
    INT32 newZOrder = 0;
    LISTPOSITION posNext = m_ChildrenInZOrder.GetHeadPosition();
    while (posNext)
    {
	pos = posNext;
	CHXBaseSite* pSite = (CHXBaseSite*)m_ChildrenInZOrder.GetNext(posNext);
	if (!bHasReinsertedChild)
	{
	    pSite->GetZOrder(zOrder);

	    if (zOrder > lNewZOrder)
	    {
		m_ChildrenInZOrder.InsertBefore(pos, (void*)pUpdatedChildSite);
		bHasReinsertedChild = TRUE;
		pUpdatedChildSite->SetInternalZOrder(newZOrder++);
	    }
	}
	pSite->SetInternalZOrder(newZOrder++);
    }

    if (!bHasReinsertedChild)
    {
	m_ChildrenInZOrder.AddTail((void*)pUpdatedChildSite);
	pUpdatedChildSite->SetInternalZOrder(newZOrder++);
    }

    HX_ASSERT((newZOrder == m_ChildrenInZOrder.GetCount()) &&
		(m_ChildrenInZOrder.GetCount() == m_ChildrenMap.GetCount()));
}

/************************************************************************
 *  Method:
 *    IHXSite2::SetZOrder
 */
STDMETHODIMP CHXBaseSite::SetZOrder(INT32 lZOrder)
{
    if(!m_pParentSite)
    {
        return HXR_UNEXPECTED;
    }

    _TLSLock();

    if (lZOrder == -1)
    {
        lZOrder = m_pParentSite->GetNumberOfChildSites() - 1;
    }

    if (lZOrder >= (INT32) m_pParentSite->GetNumberOfChildSites())
    {
        lZOrder = m_pParentSite->GetNumberOfChildSites() - 1;
    }

    if (m_lZOrder != lZOrder)
    {
        m_pParentSite->UpdateZOrder(this, m_lZOrder, lZOrder);
        //Invalidate the rect....
        if( m_pTopLevelSite )
        {
            HXxRect pTmp = { m_topleft.x,
                             m_topleft.y,
                             m_topleft.x+m_size.cx,
                             m_topleft.y+m_size.cy};
            m_pTopLevelSite->_RecursiveDamageRect( &pTmp, TRUE );
        }
    }

    if( this == m_pTopLevelSite)
    {
        RecomputeClip();
    }
    else
    {
        if (m_pTopLevelSite)
            m_pTopLevelSite->ScheduleCallback(CLIP, 0);
    }

    _TLSUnlock();
    return HXR_OK;
}

/************************************************************************
 *  Method:
 *    IHXSite2::GetZOrder
 */
STDMETHODIMP CHXBaseSite::GetZOrder(REF(INT32) lZOrder)
{
    lZOrder = m_lZOrder;
    HX_ASSERT(m_lZOrder> -1 && m_lZOrder< 2000);
    return HXR_OK;
}

/************************************************************************
 *  Method:
 *    IHXSite2::MoveSiteToTop
 */
STDMETHODIMP CHXBaseSite::MoveSiteToTop()
{
    SetZOrder(-1); //-1 means the top.
    return HXR_OK;
}

//IHXSubRectSite::GetSubRectVideoSurface()
STDMETHODIMP CHXBaseSite::GetSubRectVideoSurface( REF(IHXSubRectVideoSurface*) pSurface )
{
    HX_RESULT res = HXR_FAIL;

    if (m_pVideoSurface)
    {
        res = m_pVideoSurface->QueryInterface(IID_IHXSubRectVideoSurface,
                                              (void**)&pSurface);
    }
    return res;
}

/************************************************************************
 *  Method:
 *    IHXSite2::GetVideoSurface
 */
STDMETHODIMP CHXBaseSite::GetVideoSurface(REF(IHXVideoSurface*) pSurface)
{
    HX_RESULT res = HXR_FAIL;

    if (m_pVideoSurface)
    {
        res = m_pVideoSurface->QueryInterface(IID_IHXVideoSurface,
                                              (void**)&pSurface);
    }

    return res;
}

/************************************************************************
 *  Method:
 *    IHXSite2::GetNumberOfChildSites
 *            and
 *    IHXSiteTreeNavigation::GetNumberOfChildSites
 */
STDMETHODIMP_(UINT32) CHXBaseSite::GetNumberOfChildSites()
{
    HX_ASSERT( m_ChildrenInZOrder.GetCount() == m_ChildrenMap.GetCount() );
    return (UINT32)m_ChildrenMap.GetCount();
}

/************************************************************************
 *  Method:
 *    IHXSite2::AddPassiveSiteWatcher
 */
STDMETHODIMP CHXBaseSite::AddPassiveSiteWatcher(IHXPassiveSiteWatcher* pWatcher)
{
    pWatcher->AddRef();
    m_PassiveSiteWatchers.AddTail(pWatcher);
    return HXR_OK;
}

/************************************************************************
 *  Method:
 *    IHXSite2::RemovePassiveSiteWatcher
 */
STDMETHODIMP CHXBaseSite::RemovePassiveSiteWatcher(IHXPassiveSiteWatcher* pWatcher)
{
    // iterate child site list
    IHXPassiveSiteWatcher* pThisWatcher = NULL;
    LISTPOSITION pPos = m_PassiveSiteWatchers.Find(pWatcher);
    HX_RESULT retVal = HXR_FAIL;

    if (pPos)
    {
        m_PassiveSiteWatchers.RemoveAt(pPos);
        HX_RELEASE(pWatcher);
        retVal = HXR_OK;
    }

    return retVal;
}

#if defined(_DEBUG) && !defined(_MACINTOSH) && !defined(_MAC_UNIX)
void _PrintKeyboardEventInfo(HXxEvent* pEvent )
{
    char szBuff[256]; /* Flawfinder: ignore */

    if( pEvent->event == HX_CHAR )
        _DumpString( "HX_CHAR     " );
    if( pEvent->event == HX_KEY_DOWN )
        _DumpString( "HX_KEY_DOWN " );
    if( pEvent->event == HX_KEY_UP )
        _DumpString( "HX_KEY_UP   " );

    if( ((UINT32)pEvent->param2)&HX_VIRTUAL_KEY_MASK )
    {
        _DumpString( " key: " );

        switch((UINT32)pEvent->param1 )
        {
           case HX_VK_LBUTTON       :
               _DumpString( "HX_VK_LBUTTON   ");
               break;
           case HX_VK_RBUTTON       :
               _DumpString( "HX_VK_RBUTTON   ");
               break;
           case HX_VK_CANCEL        :
               _DumpString( "HX_VK_CANCEL    ");
               break;
           case HX_VK_MBUTTON       :
               _DumpString( "HX_VK_MBUTTON   ");
               break;
           case HX_VK_BACK          :
               _DumpString( "HX_VK_BACK      ");
               break;
           case HX_VK_TAB           :
               _DumpString( "HX_VK_TAB       ");
               break;
           case HX_VK_CLEAR         :
               _DumpString( "HX_VK_CLEAR     ");
               break;
           case HX_VK_RETURN        :
               _DumpString( "HX_VK_RETURN    ");
               break;
           case HX_VK_SHIFT         :
               _DumpString( "HX_VK_SHIFT     ");
               break;
           case HX_VK_CONTROL       :
               _DumpString( "HX_VK_CONTROL   ");
               break;
           case HX_VK_MENU          :
               _DumpString( "HX_VK_MENU      ");
               break;
           case HX_VK_PAUSE         :
               _DumpString( "HX_VK_PAUSE     ");
               break;
           case HX_VK_CAPITAL       :
               _DumpString( "HX_VK_CAPITAL   ");
               break;
           case HX_VK_ESCAPE        :
               _DumpString( "HX_VK_ESCAPE    ");
               break;
           case HX_VK_SPACE         :
               _DumpString( "HX_VK_SPACE     ");
               break;
           case HX_VK_PRIOR         :
               _DumpString( "HX_VK_PRIOR     ");
               break;
           case HX_VK_NEXT          :
               _DumpString( "HX_VK_NEXT      ");
               break;
           case HX_VK_END           :
               _DumpString( "HX_VK_END       ");
               break;
           case HX_VK_HOME          :
               _DumpString( "HX_VK_HOME      ");
               break;
           case HX_VK_LEFT          :
               _DumpString( "HX_VK_LEFT      ");
               break;
           case HX_VK_UP            :
               _DumpString( "HX_VK_UP        ");
               break;
           case HX_VK_RIGHT         :
               _DumpString( "HX_VK_RIGHT     ");
               break;
           case HX_VK_DOWN          :
               _DumpString( "HX_VK_DOWN      ");
               break;
           case HX_VK_SELECT        :
               _DumpString( "HX_VK_SELECT    ");
               break;
           case HX_VK_EXECUTE       :
               _DumpString( "HX_VK_EXECUTE   ");
               break;
           case HX_VK_SNAPSHOT      :
               _DumpString( "HX_VK_SNAPSHOT  ");
               break;
           case HX_VK_INSERT        :
               _DumpString( "HX_VK_INSERT    ");
               break;
           case HX_VK_DELETE        :
               _DumpString( "HX_VK_DELETE    ");
               break;
           case HX_VK_HELP          :
               _DumpString( "HX_VK_HELP      ");
               break;
           case HX_VK_LWIN          :
               _DumpString( "HX_VK_LWIN      ");
               break;
           case HX_VK_RWIN          :
               _DumpString( "HX_VK_RWIN      ");
               break;
           case HX_VK_APPS          :
               _DumpString( "HX_VK_APPS      ");
               break;
           case HX_VK_NUMPAD0       :
               _DumpString( "HX_VK_NUMPAD0   ");
               break;
           case HX_VK_NUMPAD1       :
               _DumpString( "HX_VK_NUMPAD1   ");
               break;
           case HX_VK_NUMPAD2       :
               _DumpString( "HX_VK_NUMPAD2   ");
               break;
           case HX_VK_NUMPAD3       :
               _DumpString( "HX_VK_NUMPAD3   ");
               break;
           case HX_VK_NUMPAD4       :
               _DumpString( "HX_VK_NUMPAD4   ");
               break;
           case HX_VK_NUMPAD5       :
               _DumpString( "HX_VK_NUMPAD5   ");
               break;
           case HX_VK_NUMPAD6       :
               _DumpString( "HX_VK_NUMPAD6   ");
               break;
           case HX_VK_NUMPAD7       :
               _DumpString( "HX_VK_NUMPAD7   ");
               break;
           case HX_VK_NUMPAD8       :
               _DumpString( "HX_VK_NUMPAD8   ");
               break;
           case HX_VK_NUMPAD9       :
               _DumpString( "HX_VK_NUMPAD9   ");
               break;
           case HX_VK_MULTIPLY      :
               _DumpString( "HX_VK_MULTIPLY  ");
               break;
           case HX_VK_ADD           :
               _DumpString( "HX_VK_ADD       ");
               break;
           case HX_VK_SEPARATOR     :
               _DumpString( "HX_VK_SEPARATOR ");
               break;
           case HX_VK_SUBTRACT      :
               _DumpString( "HX_VK_SUBTRACT  ");
               break;
           case HX_VK_DECIMAL       :
               _DumpString( "HX_VK_DECIMAL   ");
               break;
           case HX_VK_DIVIDE        :
               _DumpString( "HX_VK_DIVIDE    ");
               break;
           case HX_VK_F1            :
               _DumpString( "HX_VK_F1        ");
               break;
           case HX_VK_F2            :
               _DumpString( "HX_VK_F2        ");
               break;
           case HX_VK_F3            :
               _DumpString( "HX_VK_F3        ");
               break;
           case HX_VK_F4            :
               _DumpString( "HX_VK_F4        ");
               break;
           case HX_VK_F5            :
               _DumpString( "HX_VK_F5        ");
               break;
           case HX_VK_F6            :
               _DumpString( "HX_VK_F6        ");
               break;
           case HX_VK_F7            :
               _DumpString( "HX_VK_F7        ");
               break;
           case HX_VK_F8            :
               _DumpString( "HX_VK_F8        ");
               break;
           case HX_VK_F9            :
               _DumpString( "HX_VK_F9        ");
               break;
           case HX_VK_F10           :
               _DumpString( "HX_VK_F10       ");
               break;
           case HX_VK_F11           :
               _DumpString( "HX_VK_F11       ");
               break;
           case HX_VK_F12           :
               _DumpString( "HX_VK_F12       ");
               break;
           case HX_VK_F13           :
               _DumpString( "HX_VK_F13       ");
               break;
           case HX_VK_F14           :
               _DumpString( "HX_VK_F14       ");
               break;
           case HX_VK_F15           :
               _DumpString( "HX_VK_F15       ");
               break;
           case HX_VK_F16           :
               _DumpString( "HX_VK_F16       ");
               break;
           case HX_VK_F17           :
               _DumpString( "HX_VK_F17       ");
               break;
           case HX_VK_F18           :
               _DumpString( "HX_VK_F18       ");
               break;
           case HX_VK_F19           :
               _DumpString( "HX_VK_F19       ");
               break;
           case HX_VK_F20           :
               _DumpString( "HX_VK_F20       ");
               break;
           case HX_VK_F21           :
               _DumpString( "HX_VK_F21       ");
               break;
           case HX_VK_F22           :
               _DumpString( "HX_VK_F22       ");
               break;
           case HX_VK_F23           :
               _DumpString( "HX_VK_F23       ");
               break;
           case HX_VK_F24           :
               _DumpString( "HX_VK_F24       ");
               break;
           case HX_VK_NUMLOCK       :
               _DumpString( "HX_VK_NUMLOCK   ");
               break;
           case HX_VK_SCROLL        :
               _DumpString( "HX_VK_SCROLL    ");
               break;
           default:
               _DumpString( " !! UNKOWN VIRTUAL !! " );
        }
    }
    else
    {
        sprintf( szBuff, " key: \"%c\" (%d) ", pEvent->param1, pEvent->param1 ); /* Flawfinder: ignore */
        _DumpString( szBuff );
    }
    sprintf( szBuff, "scancode: %d flags: ", ((UINT32)pEvent->param2)&0x000000ff ); /* Flawfinder: ignore */
    _DumpString( szBuff );

    if( (UINT32)pEvent->param2 & HX_VIRTUAL_KEY_MASK )
        _DumpString( "VirtualKey " );
    if( (UINT32)pEvent->param2 & HX_EXTENDED_KEY_MASK )
        _DumpString( 

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?