⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pxtransp.cpp

📁 linux下的一款播放器
💻 CPP
字号:
// include#include "hxtypes.h"#include "hxwintyp.h"#include "hxcom.h"#include "ihxpckts.h"// pnmisc#include "hxparse.h"// pxcomlib#include "pxtransp.h"HX_RESULT ParseTransparencyParameters(IHXValues* pValues,                                      REF(UINT32) rulBgOpacity,                                      REF(BOOL)   rbBgOpacitySpecified,                                      REF(UINT32) rulMediaOpacity,                                      REF(BOOL)   rbMediaOpacitySpecified,                                      REF(UINT32) rulChromaKey,                                      REF(BOOL)   rbChromaKeySpecified,                                      REF(UINT32) rulChromaKeyTolerance,                                      REF(UINT32) rulChromaKeyOpacity,                                      REF(BOOL)   rbAlphaChannelNeeded){    HX_RESULT retVal = HXR_OK;    if (pValues)    {        // Get the background opacity        IHXBuffer* pStr = NULL;        HX_RESULT   rv   = pValues->GetPropertyCString("backgroundOpacity", pStr);        if (SUCCEEDED(rv))        {            UINT32 ulTmp = 0;            retVal = HXParseOpacity((const char*) pStr->GetBuffer(), ulTmp);            if (SUCCEEDED(retVal))            {                rulBgOpacity         = ulTmp;                rbBgOpacitySpecified = TRUE;                if (rulBgOpacity < 255)                {                    rbAlphaChannelNeeded = TRUE;                }            }        }        if (SUCCEEDED(retVal))        {            // Get the media opacity            HX_RELEASE(pStr);            rv = pValues->GetPropertyCString("mediaOpacity", pStr);            if (SUCCEEDED(rv))            {                UINT32 ulTmp = 0;                retVal = HXParseOpacity((const char*) pStr->GetBuffer(), ulTmp);                if (SUCCEEDED(retVal))                {                    rulMediaOpacity         = ulTmp;                    rbMediaOpacitySpecified = TRUE;                    if (rulMediaOpacity < 255)                    {                        rbAlphaChannelNeeded = TRUE;                    }                }            }        }        if (SUCCEEDED(retVal))        {            // Get the media chromakey            HX_RELEASE(pStr);            rv = pValues->GetPropertyCString("chromaKey", pStr);            if (SUCCEEDED(rv))            {                UINT32 ulTmp = 0;                retVal = HXParseColorUINT32((const char*) pStr->GetBuffer(), ulTmp);                if (SUCCEEDED(retVal))                {                    rulChromaKey         = ulTmp;                    rbChromaKeySpecified = TRUE;                    rbAlphaChannelNeeded = TRUE;                }            }        }        if (SUCCEEDED(retVal))        {            // Get the media chromakey tolerance            HX_RELEASE(pStr);            rv = pValues->GetPropertyCString("chromaKeyTolerance", pStr);            if (SUCCEEDED(rv))            {                UINT32 ulTmp = 0;                retVal = HXParseColorUINT32((const char*) pStr->GetBuffer(), ulTmp);                if (SUCCEEDED(retVal))                {                    rulChromaKeyTolerance = ulTmp;                }            }        }        if (SUCCEEDED(retVal))        {            // Get the chroma key opacity            HX_RELEASE(pStr);            rv = pValues->GetPropertyCString("chromaKeyOpacity", pStr);            if (SUCCEEDED(rv))            {                UINT32 ulTmp = 0;                retVal = HXParseOpacity((const char*) pStr->GetBuffer(), ulTmp);                if (SUCCEEDED(rv))                {                    rulChromaKeyOpacity = ulTmp;                }            }        }        HX_RELEASE(pStr);    }    else    {        retVal = HXR_FAIL;    }    return retVal;}BOOL DoesChromaKeyChannelMatch(UINT32 ulColor,                               UINT32 ulChromaKey,                               UINT32 ulChromaKeyTol){    BOOL bRet = FALSE;    INT32 lDiff = ((INT32) ulColor) - ((INT32) ulChromaKey);    if (lDiff < 0)    {        lDiff = -lDiff;    }    if (lDiff <= (INT32) ulChromaKeyTol)    {        bRet = TRUE;    }    return bRet;}BOOL DoesChromaKeyMatch(UINT32 ulColor,                        UINT32 ulChromaKey,                        UINT32 ulChromaKeyTol){    BOOL bRet = FALSE;    if (DoesChromaKeyChannelMatch(ARGB32_RED(ulColor),                                  ARGB32_RED(ulChromaKey),                                  ARGB32_RED(ulChromaKeyTol)) &&        DoesChromaKeyChannelMatch(ARGB32_GREEN(ulColor),                                  ARGB32_GREEN(ulChromaKey),                                  ARGB32_GREEN(ulChromaKeyTol)) &&        DoesChromaKeyChannelMatch(ARGB32_BLUE(ulColor),                                  ARGB32_BLUE(ulChromaKey),                                  ARGB32_BLUE(ulChromaKeyTol)))    {        bRet = TRUE;    }    return bRet;}

⌨️ 快捷键说明

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