📄 viewport.cpp
字号:
while (pos) { IHXViewPortSink* pSink = (IHXViewPortSink*) m_pViewPortSinkList->GetNext(pos); if (pSink) { // QI for IHXViewPortSupplier IHXViewPortSupplier* pSupplier = NULL; pSink->QueryInterface(IID_IHXViewPortSupplier, (void**) &pSupplier); if (pSupplier != m_pViewPortSupplier) { HX_RELEASE(m_pViewPortSupplier); m_pViewPortSupplier = pSupplier; m_pViewPortSupplier->AddRef(); HX_RELEASE(pSupplier); break; } HX_RELEASE(pSupplier); } } } }#else if (m_pPlayer && !m_pViewPortSupplier) { if (HXR_OK != m_pPlayer->QueryInterface(IID_IHXViewPortSupplier, (void**)&m_pViewPortSupplier)) { m_pViewPortSupplier = NULL; } }#endif if (m_pViewPortSupplier) { m_pViewPortSupplier->OnViewPortOpen(pValues, pSiteUser); if (m_pViewPortSinkList) { ndx = m_pViewPortSinkList->Begin(); for (; ndx != m_pViewPortSinkList->End(); ++ndx) { pViewPortSink = (IHXViewPortSink*) (*ndx); pViewPortSink->ViewPortOpened(pszViewPort); } } }cleanup: HX_RELEASE(pBuffer); return rc;}/************************************************************************ * Method: * IHXViewPortManager::GetViewPort * Purpose: * get viewport */STDMETHODIMPHXViewPortManager::GetViewPort(const char* pszViewPort, REF(IHXViewPort*) pViewPort){ HX_RESULT rc = HXR_OK; pViewPort = NULL; if (!m_pViewPortMap) { rc = HXR_FAILED; goto cleanup; } if (!m_pViewPortMap->Lookup(pszViewPort, (void*&)pViewPort)) { rc = HXR_FAILED; goto cleanup; } pViewPort->AddRef();cleanup: return rc;}/************************************************************************ * Method: * IHXViewPortManager::CloseViewPort * Purpose: * remove viewport */STDMETHODIMPHXViewPortManager::CloseViewPort(const char* pszViewPort){ HX_RESULT rc = HXR_OK; IHXViewPort* pViewPort = NULL; IHXViewPortSink* pViewPortSink = NULL; CHXSimpleList::Iterator ndx; if (m_pViewPortMap && m_pViewPortMap->Lookup(pszViewPort, (void*&)pViewPort)) { m_pViewPortMap->RemoveKey(pszViewPort); HX_RELEASE(pViewPort); } if (m_pViewPortSupplier) { m_pViewPortSupplier->OnViewPortClose(pszViewPort); if (m_pViewPortSinkList) { ndx = m_pViewPortSinkList->Begin(); for (; ndx != m_pViewPortSinkList->End(); ++ndx) { pViewPortSink = (IHXViewPortSink*) (*ndx); pViewPortSink->ViewPortClosed(pszViewPort); } } } return rc;}/************************************************************************ * Method: * IHXViewPortManager::AddViewPortSink * Purpose: * add viewport sinker */STDMETHODIMPHXViewPortManager::AddViewPortSink(IHXViewPortSink* pViewPortSink){ HX_RESULT rc = HXR_OK; if (!m_pViewPortSinkList) { m_pViewPortSinkList = new CHXSimpleList(); } m_pViewPortSinkList->AddTail(pViewPortSink); pViewPortSink->AddRef(); return rc;}/************************************************************************ * Method: * IHXViewPortManager::RemoveViewPortSink * Purpose: * remove viewport sinker */STDMETHODIMPHXViewPortManager::RemoveViewPortSink(IHXViewPortSink* pViewPortSink){ if (!m_pViewPortSinkList) { return HXR_UNEXPECTED; } LISTPOSITION lPosition = m_pViewPortSinkList->Find(pViewPortSink); if (!lPosition) { return HXR_UNEXPECTED; } m_pViewPortSinkList->RemoveAt(lPosition); HX_RELEASE(pViewPortSink); return HXR_OK;}HX_RESULTHXViewPortManager::OnViewPortShow(const char* pszViewPortName){ HX_RESULT rc = HXR_OK; IHXViewPortSink* pViewPortSink = NULL; CHXSimpleList::Iterator ndx; if (!m_pViewPortSupplier) { rc = HXR_FAILED; goto cleanup; } m_pViewPortSupplier->OnViewPortShow(pszViewPortName); if (m_pViewPortSinkList) { ndx = m_pViewPortSinkList->Begin(); for (; ndx != m_pViewPortSinkList->End(); ++ndx) { pViewPortSink = (IHXViewPortSink*) (*ndx); pViewPortSink->ViewPortShown(pszViewPortName); } }cleanup: return rc;}HX_RESULTHXViewPortManager::OnViewPortHide(const char* pszViewPortName){ HX_RESULT rc = HXR_OK; IHXViewPortSink* pViewPortSink = NULL; CHXSimpleList::Iterator ndx; if (!m_pViewPortSupplier) { rc = HXR_FAILED; goto cleanup; } m_pViewPortSupplier->OnViewPortHide(pszViewPortName); if (m_pViewPortSinkList) { ndx = m_pViewPortSinkList->Begin(); for (; ndx != m_pViewPortSinkList->End(); ++ndx) { pViewPortSink = (IHXViewPortSink*) (*ndx); pViewPortSink->ViewPortHidden(pszViewPortName); } }cleanup: return rc;}HX_RESULTHXViewPortManager::OnViewPortFocus(const char* pszViewPortName){ HX_RESULT rc = HXR_OK; IHXViewPortSink* pViewPortSink = NULL; CHXSimpleList::Iterator ndx; if (!m_pViewPortSupplier) { rc = HXR_FAILED; goto cleanup; } m_pViewPortSupplier->OnViewPortFocus(pszViewPortName); if (m_pViewPortSinkList) { ndx = m_pViewPortSinkList->Begin(); for (; ndx != m_pViewPortSinkList->End(); ++ndx) { pViewPortSink = (IHXViewPortSink*) (*ndx); pViewPortSink->ViewPortFocusSet(pszViewPortName); } }cleanup: return rc;}HX_RESULTHXViewPortManager::OnViewPortZOrder(const char* pszViewPortName, UINT32 ulZOrder){ HX_RESULT rc = HXR_OK; IHXViewPortSink* pViewPortSink = NULL; CHXSimpleList::Iterator ndx; if (!m_pViewPortSupplier) { rc = HXR_FAILED; goto cleanup; } m_pViewPortSupplier->OnViewPortZOrder(pszViewPortName, ulZOrder); if (m_pViewPortSinkList) { ndx = m_pViewPortSinkList->Begin(); for (; ndx != m_pViewPortSinkList->End(); ++ndx) { pViewPortSink = (IHXViewPortSink*) (*ndx); pViewPortSink->ViewPortZOrderSet(pszViewPortName, ulZOrder); } }cleanup: return rc;}voidHXViewPortManager::Close(){ if (m_pViewPortMap) { CHXMapStringToOb::Iterator ndx = m_pViewPortMap->Begin(); for (; ndx != m_pViewPortMap->End(); ++ndx) { HXViewPort* pViewPort = (HXViewPort*)(*ndx); HX_RELEASE(pViewPort); } } HX_DELETE(m_pViewPortMap); if (m_pViewPortSinkList) { CHXSimpleList::Iterator ndx = m_pViewPortSinkList->Begin(); for (; ndx != m_pViewPortSinkList->End(); ++ndx) { IHXViewPortSink* pViewPortSink = (IHXViewPortSink*)(*ndx); HX_RELEASE(pViewPortSink); } } HX_DELETE(m_pViewPortSinkList); HX_RELEASE(m_pViewPortSupplier); HX_RELEASE(m_pPlayer);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -