rpfile.cpp
来自「symbian 下的helix player源代码」· C++ 代码 · 共 1,170 行 · 第 1/3 页
CPP
1,170 行
HX_RESULT PXRealPixFile::SetImageName(UINT32 ulHandle, const char* pszName)
{
PXImageInfo* pInfo = NULL;
HX_RESULT retVal = GetImageInfo(ulHandle, pInfo);
if (SUCCEEDED(retVal))
{
HX_RELEASE(pInfo->m_pNameStr);
retVal = SetString(pszName, &pInfo->m_pNameStr);
}
return retVal;
}
HX_RESULT PXRealPixFile::GetImageErrorStatus(UINT32 ulHandle, REF(HX_RESULT) rlStatus)
{
PXImageInfo* pInfo = NULL;
HX_RESULT retVal = GetImageInfo(ulHandle, pInfo);
if (SUCCEEDED(retVal))
{
rlStatus = pInfo->m_lErrorStatus;
}
return retVal;
}
HX_RESULT PXRealPixFile::SetImageErrorStatus(UINT32 ulHandle, HX_RESULT lStatus)
{
PXImageInfo* pInfo = NULL;
HX_RESULT retVal = GetImageInfo(ulHandle, pInfo);
if (SUCCEEDED(retVal))
{
pInfo->m_lErrorStatus = lStatus;
}
return retVal;
}
HX_RESULT PXRealPixFile::GetImageSize(UINT32 ulHandle, REF(UINT32) rulSize)
{
PXImageInfo* pInfo = NULL;
HX_RESULT retVal = GetImageInfo(ulHandle, pInfo);
if (SUCCEEDED(retVal))
{
rulSize = pInfo->m_ulSize;
}
return retVal;
}
UINT32 PXRealPixFile::GetImageSize(UINT32 ulHandle)
{
UINT32 ulSize = 0;
GetImageSize(ulHandle, ulSize);
return ulSize;
}
HX_RESULT PXRealPixFile::SetImageSize(UINT32 ulHandle, UINT32 ulSize)
{
PXImageInfo* pInfo = NULL;
HX_RESULT retVal = GetImageInfo(ulHandle, pInfo);
if (SUCCEEDED(retVal))
{
if (ulSize)
{
pInfo->m_ulSize = ulSize;
pInfo->m_lErrorStatus = HXR_OK;
}
else
{
retVal = HXR_FAIL;
}
}
return retVal;
}
BOOL PXRealPixFile::IsImageSizeInitialized(UINT32 ulHandle)
{
BOOL bRet = FALSE;
PXImageInfo* pInfo = NULL;
GetImageInfo(ulHandle, pInfo);
if (pInfo && pInfo->m_lErrorStatus == HXR_OK)
{
bRet = TRUE;
}
return bRet;
}
HX_RESULT PXRealPixFile::GetImageFileMimeType(UINT32 ulHandle, REF(IHXBuffer*) rpMimeStr)
{
PXImageInfo* pInfo = NULL;
HX_RESULT retVal = GetImageInfo(ulHandle, pInfo);
if (SUCCEEDED(retVal))
{
if (pInfo->m_pFileMimeStr)
{
HX_RELEASE(rpMimeStr);
rpMimeStr = pInfo->m_pFileMimeStr;
rpMimeStr->AddRef();
}
else
{
retVal = HXR_FAIL;
}
}
return retVal;
}
HX_RESULT PXRealPixFile::GetImageFileMimeType(UINT32 ulHandle, REF(const char*) rpszMime)
{
PXImageInfo* pInfo = NULL;
HX_RESULT retVal = GetImageInfo(ulHandle, pInfo);
if (SUCCEEDED(retVal))
{
rpszMime = (const char*) (pInfo->m_pFileMimeStr ? pInfo->m_pFileMimeStr->GetBuffer() : NULL);
}
return retVal;
}
const char* PXRealPixFile::GetImageFileMimeType(UINT32 ulHandle)
{
const char* pszMime = NULL;
GetImageFileMimeType(ulHandle, pszMime);
return pszMime;
}
HX_RESULT PXRealPixFile::SetImageFileMimeType(UINT32 ulHandle, IHXBuffer* pMimeStr)
{
PXImageInfo* pInfo = NULL;
HX_RESULT retVal = GetImageInfo(ulHandle, pInfo);
if (SUCCEEDED(retVal))
{
HX_RELEASE(pInfo->m_pFileMimeStr);
retVal = SetString(pMimeStr, &pInfo->m_pFileMimeStr);
}
return retVal;
}
HX_RESULT PXRealPixFile::SetImageFileMimeType(UINT32 ulHandle, const char* pszMime)
{
PXImageInfo* pInfo = NULL;
HX_RESULT retVal = GetImageInfo(ulHandle, pInfo);
if (SUCCEEDED(retVal))
{
HX_RELEASE(pInfo->m_pFileMimeStr);
retVal = SetString(pszMime, &pInfo->m_pFileMimeStr);
}
return retVal;
}
HX_RESULT PXRealPixFile::GetImageStreamMimeType(UINT32 ulHandle, REF(IHXBuffer*) rpMimeStr)
{
PXImageInfo* pInfo = NULL;
HX_RESULT retVal = GetImageInfo(ulHandle, pInfo);
if (SUCCEEDED(retVal))
{
if (pInfo->m_pStreamMimeStr)
{
HX_RELEASE(rpMimeStr);
rpMimeStr = pInfo->m_pStreamMimeStr;
rpMimeStr->AddRef();
}
else
{
retVal = HXR_FAIL;
}
}
return retVal;
}
HX_RESULT PXRealPixFile::GetImageStreamMimeType(UINT32 ulHandle, REF(const char*) rpszMime)
{
PXImageInfo* pInfo = NULL;
HX_RESULT retVal = GetImageInfo(ulHandle, pInfo);
if (SUCCEEDED(retVal))
{
rpszMime = (const char*) (pInfo->m_pStreamMimeStr ? pInfo->m_pStreamMimeStr->GetBuffer() : NULL);
}
return retVal;
}
const char* PXRealPixFile::GetImageStreamMimeType(UINT32 ulHandle)
{
const char* pszMime = NULL;
GetImageStreamMimeType(ulHandle, pszMime);
return pszMime;
}
HX_RESULT PXRealPixFile::SetImageStreamMimeType(UINT32 ulHandle, IHXBuffer* pMimeStr)
{
PXImageInfo* pInfo = NULL;
HX_RESULT retVal = GetImageInfo(ulHandle, pInfo);
if (SUCCEEDED(retVal))
{
HX_RELEASE(pInfo->m_pStreamMimeStr);
retVal = SetString(pMimeStr, &pInfo->m_pStreamMimeStr);
}
return retVal;
}
HX_RESULT PXRealPixFile::SetImageStreamMimeType(UINT32 ulHandle, const char* pszMime)
{
PXImageInfo* pInfo = NULL;
HX_RESULT retVal = GetImageInfo(ulHandle, pInfo);
if (SUCCEEDED(retVal))
{
HX_RELEASE(pInfo->m_pStreamMimeStr);
retVal = SetString(pszMime, &pInfo->m_pStreamMimeStr);
}
return retVal;
}
HX_RESULT PXRealPixFile::GetAllImageInfo(UINT32 ulHandle, REF(UINT32) rulSize, REF(IHXBuffer*) rpNameStr,
REF(IHXBuffer*) rpFileMimeStr, REF(IHXBuffer*) rpStreamMimeStr)
{
PXImageInfo* pInfo = NULL;
HX_RESULT retVal = GetImageInfo(ulHandle, pInfo);
if (SUCCEEDED(retVal))
{
rulSize = pInfo->m_ulSize;
if (pInfo->m_pNameStr)
{
HX_RELEASE(rpNameStr);
rpNameStr = pInfo->m_pNameStr;
rpNameStr->AddRef();
}
if (pInfo->m_pFileMimeStr)
{
HX_RELEASE(rpFileMimeStr);
rpFileMimeStr = pInfo->m_pFileMimeStr;
rpFileMimeStr->AddRef();
}
if (pInfo->m_pStreamMimeStr)
{
HX_RELEASE(rpStreamMimeStr);
rpStreamMimeStr = pInfo->m_pStreamMimeStr;
rpStreamMimeStr->AddRef();
}
}
return retVal;
}
HX_RESULT PXRealPixFile::GetAllImageInfo(UINT32 ulHandle, REF(UINT32) rulSize, REF(const char*) rpszName,
REF(const char*) rpszFileMime, REF(const char*) rpszStreamMime)
{
PXImageInfo* pInfo = NULL;
HX_RESULT retVal = GetImageInfo(ulHandle, pInfo);
if (SUCCEEDED(retVal))
{
rulSize = pInfo->m_ulSize;
rpszName = (const char*) (pInfo->m_pNameStr ? pInfo->m_pNameStr->GetBuffer() : NULL);
rpszFileMime = (const char*) (pInfo->m_pFileMimeStr ? pInfo->m_pFileMimeStr->GetBuffer() : NULL);
rpszStreamMime = (const char*) (pInfo->m_pStreamMimeStr ? pInfo->m_pStreamMimeStr->GetBuffer() : NULL);
}
return retVal;
}
BOOL PXRealPixFile::AllImageSizesInitialized()
{
BOOL bRet = TRUE;
if (m_pImageMap)
{
// Run through the map, deleting all image objects
POSITION pos = m_pImageMap->GetStartPosition();
while (pos)
{
// Get the object pointer at the current position
// and advance to the next position
LONG32 lKey = 0;
void* pElement = NULL;
m_pImageMap->GetNextAssoc(pos, lKey, pElement);
// Check the PXImageInfo object
if (pElement)
{
PXImageInfo* pInfo = (PXImageInfo*) pElement;
if (pInfo->m_lErrorStatus == HXR_NOT_INITIALIZED)
{
bRet = FALSE;
break;
}
}
}
}
return bRet;
}
BOOL PXRealPixFile::AllImageSizesOK()
{
BOOL bRet = TRUE;
if (m_pImageMap)
{
// Run through the map, deleting all image objects
POSITION pos = m_pImageMap->GetStartPosition();
while (pos)
{
// Get the object pointer at the current position
// and advance to the next position
LONG32 lKey = 0;
void* pElement = NULL;
m_pImageMap->GetNextAssoc(pos, lKey, pElement);
// Check the PXImageInfo object
if (pElement)
{
PXImageInfo* pInfo = (PXImageInfo*) pElement;
if (pInfo->m_lErrorStatus != HXR_OK)
{
bRet = FALSE;
break;
}
}
}
}
return bRet;
}
HX_RESULT PXRealPixFile::GetFailedImageName(REF(IHXBuffer*) rpFailedNameStr)
{
HX_RESULT retVal = HXR_FAIL;
if (m_pImageMap)
{
// Run through the map, deleting all image objects
POSITION pos = m_pImageMap->GetStartPosition();
while (pos)
{
// Get the object pointer at the current position
// and advance to the next position
LONG32 lKey = 0;
void* pElement = NULL;
m_pImageMap->GetNextAssoc(pos, lKey, pElement);
// Check the PXImageInfo object
if (pElement)
{
PXImageInfo* pInfo = (PXImageInfo*) pElement;
if (pInfo->m_lErrorStatus != HXR_OK)
{
if (pInfo->m_pNameStr)
{
HX_RELEASE(rpFailedNameStr);
rpFailedNameStr = pInfo->m_pNameStr;
rpFailedNameStr->AddRef();
retVal = HXR_OK;
break;
}
}
}
}
}
return retVal;
}
HX_RESULT PXRealPixFile::AddEffect(PXEffect* pEffect)
{
HX_RESULT retVal = HXR_OK;
if (pEffect)
{
if (!m_pEffectsList)
{
m_pEffectsList = new CHXSimpleList();
if (!m_pEffectsList)
{
retVal = HXR_OUTOFMEMORY;
}
}
if (SUCCEEDED(retVal))
{
// Check for a few shortcuts before searching the whole list
// If there aren't any elements in the queue, we know just to
// add ourselves to the end of the list.
if (m_pEffectsList->GetCount() > 0)
{
// Now we check the last element in the queue. If our start time is
// greater than or equal to its start time, then we know just to
// add ourselves at the tail of the queue.
PXEffect *pTailEffect = (PXEffect *) m_pEffectsList->GetTail();
if (pTailEffect)
{
if (pEffect->GetStart() < pTailEffect->GetStart())
{
// Now we have to search the list.
// Insert effect into list which is sorted by increasing start time
// We look for the first effect which has a start time greater
// than the one we're inserting
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?