📄 siteuser.cpp
字号:
if (pSurf && pExpose) { MLOG_LAYOUT(m_pErrorMessages, "CSmilSiteUser::HandleEvent() HX_SURFACE_UPDATE2 " "region=%s root=%lu tick=%lu color=0x%08x\n", m_pszID, m_bIsARoot, HX_GET_BETTERTICKCOUNT(), m_ulBackgroundColor); pSurf->AddRef(); pEvent->result = pSurf->BltSubRects(m_pucBuffer, m_pBitmapInfoHeader, pExpose->pRegion, pExpose->pRegion, 1.0, 1.0); pSurf->Release(); if (SUCCEEDED(pEvent->result)) { pEvent->handled = TRUE; } } } } break; default: break; } // If we have not handled the event, then pass it // on to the response interface if (!pEvent->handled && m_pResponse) { m_pResponse->SiteUserHandleEvent(this, pEvent); } } return retVal;}STDMETHODIMP CSmilSiteUser::SetPropertyULONG32(const char* pName, ULONG32 ulVal){ HX_RESULT retVal = HXR_FAIL; if (m_pValues) { retVal = m_pValues->SetPropertyULONG32(pName, ulVal); } return retVal;}STDMETHODIMP CSmilSiteUser::GetPropertyULONG32(const char* pName, REF(ULONG32) rulVal){ HX_RESULT retVal = HXR_FAIL; if (m_pValues) { retVal = m_pValues->GetPropertyULONG32(pName, rulVal); } return retVal;}STDMETHODIMP CSmilSiteUser::GetFirstPropertyULONG32(REF(const char*) rpName, REF(ULONG32) rulVal){ HX_RESULT retVal = HXR_FAIL; if (m_pValues) { retVal = m_pValues->GetFirstPropertyULONG32(rpName, rulVal); } return retVal;}STDMETHODIMP CSmilSiteUser::GetNextPropertyULONG32(REF(const char*) rpName, REF(ULONG32) rulVal){ HX_RESULT retVal = HXR_FAIL; if (m_pValues) { retVal = m_pValues->GetNextPropertyULONG32(rpName, rulVal); } return retVal;}STDMETHODIMP CSmilSiteUser::SetPropertyBuffer(const char* pName, IHXBuffer* pVal){ HX_RESULT retVal = HXR_FAIL; if (m_pValues) { retVal = m_pValues->SetPropertyBuffer(pName, pVal); } return retVal;}STDMETHODIMP CSmilSiteUser::GetPropertyBuffer(const char* pName, REF(IHXBuffer*) rpVal){ HX_RESULT retVal = HXR_FAIL; if (m_pValues) { retVal = m_pValues->GetPropertyBuffer(pName, rpVal); } return retVal;}STDMETHODIMP CSmilSiteUser::GetFirstPropertyBuffer(REF(const char*) rpName, REF(IHXBuffer*) rpVal){ HX_RESULT retVal = HXR_FAIL; if (m_pValues) { retVal = m_pValues->GetFirstPropertyBuffer(rpName, rpVal); } return retVal;}STDMETHODIMP CSmilSiteUser::GetNextPropertyBuffer(REF(const char*) rpName, REF(IHXBuffer*) rpVal){ HX_RESULT retVal = HXR_FAIL; if (m_pValues) { retVal = m_pValues->GetNextPropertyBuffer(rpName, rpVal); } return retVal;}STDMETHODIMP CSmilSiteUser::SetPropertyCString(const char* pName, IHXBuffer* pVal){ HX_RESULT retVal = HXR_FAIL; if (m_pValues) { retVal = m_pValues->SetPropertyCString(pName, pVal); } return retVal;}STDMETHODIMP CSmilSiteUser::GetPropertyCString(const char* pName, REF(IHXBuffer*) rpVal){ HX_RESULT retVal = HXR_FAIL; if (m_pValues) { retVal = m_pValues->GetPropertyCString(pName, rpVal); } return retVal;}STDMETHODIMP CSmilSiteUser::GetFirstPropertyCString(REF(const char*) rpName, REF(IHXBuffer*) rpVal){ HX_RESULT retVal = HXR_FAIL; if (m_pValues) { retVal = m_pValues->GetFirstPropertyCString(rpName, rpVal); } return retVal;}STDMETHODIMP CSmilSiteUser::GetNextPropertyCString(REF(const char*) rpName, REF(IHXBuffer*) rpVal){ HX_RESULT retVal = HXR_FAIL; if (m_pValues) { retVal = m_pValues->GetNextPropertyCString(rpName, rpVal); } return retVal;}STDMETHODIMP CSmilSiteUser::SetBackgroundColor(UINT32 ulBackgroundColor){ HX_RESULT retVal = HXR_OK; m_ulBackgroundColor = ulBackgroundColor; return retVal;}STDMETHODIMP_(UINT32) CSmilSiteUser::GetBackgroundColor(){ return m_ulBackgroundColor;}STDMETHODIMP CSmilSiteUser::Close(){ HX_RESULT retVal = HXR_OK; if (m_pResponse) { m_pResponse->Release(); m_pResponse = NULL; } HX_RELEASE(m_pSite); HX_RELEASE(m_pValues); HX_VECTOR_DELETE(m_pszID); HX_RELEASE(m_pErrorMessages); HX_VECTOR_DELETE(m_pBitmapInfoHeader); HX_VECTOR_DELETE(m_pucBuffer); return retVal;}STDMETHODIMP_(UINT32) CSmilSiteUser::GetLastMediaEndOverrideTime(){ return m_ulLastMediaEndOverrideTime;}STDMETHODIMP CSmilSiteUser::SetLastMediaEndOverrideTime(UINT32 ulTime){ m_ulLastMediaEndOverrideTime = ulTime; return HXR_OK;}STDMETHODIMP CSmilSiteUser::Redraw(){ HX_RESULT retVal = HXR_FAIL; if (m_pSite) { // Get the current site size HXxSize cSize = {0, 0}; m_pSite->GetSize(cSize); // Create a damage rect HXxRect cRect = {0, 0, cSize.cx, cSize.cy}; m_pSite->DamageRect(cRect); m_pSite->ForceRedraw(); // Clear the return value retVal = HXR_OK; } return retVal;}HX_RESULT CSmilSiteUser::SetupBuffer(){ HX_RESULT retVal = HXR_FAIL; if (m_pSite && m_pBitmapInfoHeader) { // Set the color we are going to blt UINT32 ulColor = m_ulBackgroundColor; // If we are a root, then force the // background color to be non-transparent if (m_bIsARoot) { ulColor &= 0x00FFFFFF; } // Get the site's current size HXxSize cSize = {0, 0}; m_pSite->GetSize(cSize); // Make sure the site has non-zero dimensions if (cSize.cx > 0 && cSize.cy > 0) { // Do we need to allocate a buffer? BOOL bAllocated = FALSE; if (!m_pucBuffer || m_pBitmapInfoHeader->biWidth != cSize.cx || m_pBitmapInfoHeader->biHeight != cSize.cy) { UINT32 ulNumBytes = (UINT32) cSize.cx * cSize.cy * 4; HX_VECTOR_DELETE(m_pucBuffer); m_pucBuffer = new BYTE [ulNumBytes]; if (m_pucBuffer) { m_pBitmapInfoHeader->biWidth = cSize.cx; m_pBitmapInfoHeader->biHeight = cSize.cy; m_pBitmapInfoHeader->biSizeImage = ulNumBytes; bAllocated = TRUE; } } if (m_pucBuffer) { // Do we need to fill in the color? if (bAllocated || m_ulLastBackgroundColor != ulColor) { // Fill in the buffer UINT32 ulNumPix = (UINT32) cSize.cx * cSize.cy; UINT32* pPix = (UINT32*) m_pucBuffer; while (ulNumPix--) { *pPix++ = ulColor; } // Save this color m_ulLastBackgroundColor = ulColor; // Set the bitmap info header compression m_pBitmapInfoHeader->biCompression = (ulColor & 0xFF000000 ? HX_ARGB : HX_RGB); } // Clear the return value retVal = HXR_OK; } } } return retVal;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -