pximage.cpp
来自「symbian 下的helix player源代码」· C++ 代码 · 共 1,933 行 · 第 1/5 页
CPP
1,933 行
{
*pDst = MAKE_RGB32(pLUT1[GETRED32(*pSrc1)] + ucFadedR,
pLUT1[GETGREEN32(*pSrc1)] + ucFadedG,
pLUT1[GETBLUE32(*pSrc1)] + ucFadedB);
pSrc1++;
pDst++;
}
pSrcRow1 += lSrc1Jump;
pDstRow += lDstJump;
}
return HXR_OK;
}
HX_RESULT PXImage::RecursiveBlendToColor(const PXColor& rColor, BYTE* pLUT1, BYTE* pLUT2)
{
if (!pLUT1 || !pLUT2 || !m_bInitialized)
{
HX_ASSERT(FALSE);
return HXR_FAIL;
}
FILTER_OUT_UNSUPPORTED_FORMATS;
BYTE ucFadedR = pLUT2[rColor.GetRed()];
BYTE ucFadedG = pLUT2[rColor.GetGreen()];
BYTE ucFadedB = pLUT2[rColor.GetBlue()];
UINT32* pDstRow = (UINT32*) m_pImageBuffer;
INT32 lDstJump = m_lRowJump >> 2;
for (INT32 lY = m_lSubImageHeight; lY; lY--)
{
UINT32* pDst = pDstRow;
for (INT32 lX = m_lSubImageWidth; lX; lX--)
{
*pDst = MAKE_RGB32(pLUT1[GETRED32(*pDst)] + ucFadedR,
pLUT1[GETGREEN32(*pDst)] + ucFadedG,
pLUT1[GETBLUE32(*pDst)] + ucFadedB);
pDst++;
}
pDstRow += lDstJump;
}
return HXR_OK;
}
HX_RESULT PXImage::ChangeSizeFromNN(PXImage* pImg)
{
if (!pImg || !m_bInitialized || !pImg->m_bInitialized)
{
HX_ASSERT(FALSE);
return HXR_FAIL;
}
FILTER_OUT_UNSUPPORTED_FORMATS;
if (!Compatible(pImg))
{
HX_ASSERT(FALSE);
return HXR_FAIL;
}
return ChangeSize32NN((UINT32*) pImg->m_pImageBuffer, pImg->m_lSubImageWidth,
pImg->m_lSubImageHeight, pImg->m_lRowJump >> 2,
(UINT32*) m_pImageBuffer, m_lSubImageWidth,
m_lSubImageHeight, m_lRowJump >> 2);
}
HX_RESULT PXImage::ChangeSizeFromNNTransparent32(PXImage* pImg)
{
HX_RESULT retVal = HXR_OK;
if (pImg)
{
if (m_bInitialized && pImg->m_bInitialized)
{
if (m_cBitmapInfo.biBitCount == 32 &&
pImg->m_cBitmapInfo.biBitCount == 32 &&
CompressionSupported() &&
pImg->CompressionSupported())
{
if (Compatible(pImg))
{
retVal = ChangeSize32NNTransparent((UINT32*) pImg->m_pImageBuffer, pImg->m_lSubImageWidth,
pImg->m_lSubImageHeight, pImg->m_lRowJump >> 2,
(UINT32*) m_pImageBuffer, m_lSubImageWidth,
m_lSubImageHeight, m_lRowJump >> 2);
}
else
{
retVal = HXR_FAIL;
}
}
else
{
retVal = HXR_FAIL;
}
}
else
{
retVal = HXR_NOT_INITIALIZED;
}
}
else
{
retVal = HXR_INVALID_PARAMETER;
}
return retVal;
}
HX_RESULT PXImage::ChangeSizeIntoNN(PXImage* pImg)
{
if (!pImg || !m_bInitialized || !pImg->m_bInitialized)
{
HX_ASSERT(FALSE);
return HXR_FAIL;
}
FILTER_OUT_UNSUPPORTED_FORMATS;
if (!Compatible(pImg))
{
HX_ASSERT(FALSE);
return HXR_FAIL;
}
return ChangeSize32NN((UINT32*) m_pImageBuffer, m_lSubImageWidth,
m_lSubImageHeight, m_lRowJump >> 2,
(UINT32*) pImg->m_pImageBuffer, pImg->m_lSubImageWidth,
pImg->m_lSubImageHeight, pImg->m_lRowJump >> 2);
}
HX_RESULT PXImage::ChangeSizeIntoNNTransparent32(PXImage* pImg)
{
HX_RESULT retVal = HXR_OK;
if (pImg)
{
if (m_bInitialized && pImg->m_bInitialized)
{
if (m_cBitmapInfo.biBitCount == 32 &&
pImg->m_cBitmapInfo.biBitCount == 32 &&
CompressionSupported() &&
pImg->CompressionSupported())
{
if (Compatible(pImg))
{
retVal = ChangeSize32NNTransparent((UINT32*) m_pImageBuffer, m_lSubImageWidth,
m_lSubImageHeight, m_lRowJump >> 2,
(UINT32*) pImg->m_pImageBuffer, pImg->m_lSubImageWidth,
pImg->m_lSubImageHeight, pImg->m_lRowJump >> 2);
}
else
{
retVal = HXR_FAIL;
}
}
else
{
retVal = HXR_FAIL;
}
}
else
{
retVal = HXR_NOT_INITIALIZED;
}
}
else
{
retVal = HXR_INVALID_PARAMETER;
}
return retVal;
}
HX_RESULT PXImage::CopyFrom(PXImage* pImg)
{
if (!pImg || !m_bInitialized)
{
HX_ASSERT(FALSE);
return HXR_FAIL;
}
FILTER_OUT_UNSUPPORTED_FORMATS;
if (!Compatible(pImg) || !SameSize(pImg))
{
HX_ASSERT(FALSE);
return HXR_FAIL;
}
Copy32((UINT32*) pImg->m_pImageBuffer, (UINT32*) m_pImageBuffer,
pImg->m_lRowJump >> 2, m_lRowJump >> 2,
pImg->m_bHasAlpha);
return HXR_OK;
}
HX_RESULT PXImage::CopyFromTransparent32(PXImage* pImg)
{
HX_RESULT retVal = HXR_OK;
if (pImg)
{
if (m_bInitialized && pImg->m_bInitialized)
{
if (m_cBitmapInfo.biBitCount == 32 &&
pImg->m_cBitmapInfo.biBitCount == 32 &&
CompressionSupported() &&
pImg->CompressionSupported())
{
if (Compatible(pImg) && SameSize(pImg))
{
CopyTransparent32((UINT32*) pImg->m_pImageBuffer,
(UINT32*) m_pImageBuffer,
pImg->m_lRowJump >> 2,
m_lRowJump >> 2);
}
else
{
retVal = HXR_INVALID_PARAMETER;
}
}
else
{
retVal = HXR_FAIL;
}
}
else
{
retVal = HXR_NOT_INITIALIZED;
}
}
else
{
retVal = HXR_INVALID_PARAMETER;
}
return retVal;
}
HX_RESULT PXImage::CopyFromAlpha32(PXImage* pImg, BYTE* pLUT)
{
HX_RESULT retVal = HXR_FAIL;
if (pImg)
{
if (m_bInitialized && pImg->m_bInitialized)
{
if (m_cBitmapInfo.biBitCount == 32 &&
pImg->m_cBitmapInfo.biBitCount == 32 &&
CompressionSupported() &&
pImg->CompressionSupported())
{
if (Compatible(pImg) && SameSize(pImg))
{
CopyAlpha32((UINT32*) pImg->m_pImageBuffer,
(UINT32*) m_pImageBuffer,
pImg->m_lRowJump >> 2,
m_lRowJump >> 2,
pLUT);
retVal = HXR_OK;
}
}
}
}
return retVal;
}
HX_RESULT PXImage::CopyTo(PXImage* pImg)
{
if (!pImg || !m_bInitialized)
{
HX_ASSERT(FALSE);
return HXR_FAIL;
}
FILTER_OUT_UNSUPPORTED_FORMATS;
if (!Compatible(pImg) || !SameSize(pImg))
{
HX_ASSERT(FALSE);
return HXR_FAIL;
}
Copy32((UINT32*) m_pImageBuffer, (UINT32*) pImg->m_pImageBuffer,
m_lRowJump >> 2, pImg->m_lRowJump >> 2,
m_bHasAlpha);
return HXR_OK;
}
HX_RESULT PXImage::CopyToTransparent32(PXImage* pImg)
{
HX_RESULT retVal = HXR_OK;
if (pImg)
{
if (m_bInitialized && pImg->m_bInitialized)
{
if (m_cBitmapInfo.biBitCount == 32 &&
pImg->m_cBitmapInfo.biBitCount == 32 &&
CompressionSupported() &&
pImg->CompressionSupported())
{
if (Compatible(pImg) && SameSize(pImg))
{
CopyTransparent32((UINT32*) m_pImageBuffer,
(UINT32*) pImg->m_pImageBuffer,
m_lRowJump >> 2,
pImg->m_lRowJump >> 2);
}
else
{
retVal = HXR_INVALID_PARAMETER;
}
}
else
{
retVal = HXR_FAIL;
}
}
else
{
retVal = HXR_NOT_INITIALIZED;
}
}
else
{
retVal = HXR_INVALID_PARAMETER;
}
return retVal;
}
HX_RESULT PXImage::CopyToAlpha32(PXImage* pImg, BYTE* pLUT)
{
HX_RESULT retVal = HXR_FAIL;
if (pImg)
{
if (m_bInitialized && pImg->m_bInitialized)
{
if (m_cBitmapInfo.biBitCount == 32 &&
pImg->m_cBitmapInfo.biBitCount == 32 &&
CompressionSupported() &&
pImg->CompressionSupported())
{
if (Compatible(pImg) && SameSize(pImg))
{
CopyAlpha32((UINT32*) m_pImageBuffer,
(UINT32*) pImg->m_pImageBuffer,
m_lRowJump >> 2,
pImg->m_lRowJump >> 2,
pLUT);
retVal = HXR_OK;
}
}
}
}
return retVal;
}
HX_RESULT PXImage::FlipFrom(PXImage* pImg, BOOL bVerticalAxis)
{
HX_RESULT retVal = HXR_OK;
if (pImg)
{
if (m_bInitialized)
{
if (Compatible(pImg) && SameSize(pImg))
{
if (bVerticalAxis)
{
VertAxisFlip32((UINT32*) pImg->m_pImageBuffer, pImg->m_lSubImageWidth,
pImg->m_lSubImageHeight, pImg->m_lRowJump >> 2,
(UINT32*) m_pImageBuffer, m_lSubImageWidth,
m_lSubImageHeight, m_lRowJump >> 2);
}
else
{
HorzAxisFlip32((UINT32*) pImg->m_pImageBuffer, pImg->m_lSubImageWidth,
pImg->m_lSubImageHeight, pImg->m_lRowJump >> 2,
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?