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

📄 hxparse.cpp

📁 linux下的一款播放器
💻 CPP
📖 第 1 页 / 共 2 页
字号:
        else if (!strcasecmp(pColorString, "InactiveCaption"))        {            lIndex = COLOR_INACTIVECAPTION;            bMatch = TRUE;        }        else if (!strcasecmp(pColorString, "InactiveCaptionText"))        {            lIndex = COLOR_INACTIVECAPTIONTEXT;            bMatch = TRUE;        }        else if (!strcasecmp(pColorString, "InfoBackground"))        {            lIndex = COLOR_INFOBK;            bMatch = TRUE;        }        else if (!strcasecmp(pColorString, "InfoText"))        {            lIndex = COLOR_INFOTEXT;            bMatch = TRUE;        }        else if (!strcasecmp(pColorString, "Menu"))        {            lIndex = COLOR_MENU;            bMatch = TRUE;        }        else if (!strcasecmp(pColorString, "MenuText"))        {            lIndex = COLOR_MENUTEXT;            bMatch = TRUE;        }        else if (!strcasecmp(pColorString, "Scrollbar"))        {            lIndex = COLOR_SCROLLBAR;            bMatch = TRUE;        }        else if (!strcasecmp(pColorString, "ThreeDDarkShadow"))        {            lIndex = COLOR_3DDKSHADOW;            bMatch = TRUE;        }        else if (!strcasecmp(pColorString, "ThreeDFace"))        {            lIndex = COLOR_3DFACE;            bMatch = TRUE;        }        else if (!strcasecmp(pColorString, "ThreeDHighlight"))        {            lIndex = COLOR_3DHILIGHT;            bMatch = TRUE;        }        else if (!strcasecmp(pColorString, "ThreeDLightShadow"))        {            lIndex = COLOR_3DLIGHT;            bMatch = TRUE;        }        else if (!strcasecmp(pColorString, "ThreeDShadow"))        {            lIndex = COLOR_3DSHADOW;            bMatch = TRUE;        }        else if (!strcasecmp(pColorString, "Window"))        {            lIndex = COLOR_WINDOW;            bMatch = TRUE;        }        else if (!strcasecmp(pColorString, "WindowFrame"))        {            lIndex = COLOR_WINDOWFRAME;            bMatch = TRUE;        }        else if (!strcasecmp(pColorString, "WindowText"))        {            lIndex = COLOR_WINDOWTEXT;            bMatch = TRUE;        }        if (bMatch)        {            UINT32 ulColor = GetSysColor(lIndex);            ucRed          = GetRValue(ulColor);            ucGreen        = GetGValue(ulColor);            ucBlue         = GetBValue(ulColor);            theErr         = HXR_OK;        }    }#endif#ifdef _WINDOWS    theColor = (HXxColor)(RGB(ucRed, ucGreen, ucBlue));#else    theColor = (HXxColor)	    (ucRed << 16 |	    ucGreen << 8 |	    ucBlue);#endif    return theErr;}HX_RESULTHXParseDigit(const char* pDigitString, REF(INT32) ulOut){    // validate it first. ([whitespace][sign]digits)    HX_RESULT ret = HXR_OK;    const char* pBuf = pDigitString;        // clear white space.    while (*pBuf && isspace(*pBuf))    {	++pBuf;    }    // check for sign    if (*pBuf == '+' || *pBuf == '-')    {	++pBuf;    }    // validate all else is a digit    while (*pBuf)    {	if (!isdigit(*pBuf))	{	    ret = HXR_FAIL;	    break;	}	++pBuf;    }    // run the conversion anyway... just in case the user wants    // to ignor the error.    ulOut = atol(pDigitString);    return ret;}HX_RESULTHXParseDouble(const char* pDoubleString, REF(double) dOut){    // validate it first.     // ([whitespace][sign][digits][.digits][{d|D|e|E}[sign]digits])    HX_RESULT ret = HXR_OK;    const char* pBuf = pDoubleString;    // clear white space.    while (*pBuf && isspace(*pBuf))    {	++pBuf;    }    // check for sign    if (*pBuf == '+' || *pBuf == '-')    {	++pBuf;    }    while (isdigit(*pBuf))    {	++pBuf;    }    if (*pBuf == '.')    {	++pBuf;    }    while (isdigit(*pBuf))    {	++pBuf;    }    if (*pBuf == 'd' || *pBuf == 'D' || *pBuf == 'e' || *pBuf == 'E')    {	++pBuf;	if (*pBuf == '+' || *pBuf == '-')	{	    ++pBuf;	}	while (isdigit(*pBuf))	{	    ++pBuf;	}    }        // we will allow whitespace at the end of the buffer,    while (isspace(*pBuf))    {	++pBuf;    }    // now if we are not at the NULL termination something is wrong with the    // string.    if (*pBuf != '\0')    {	ret = HXR_INVALID_PARAMETER;    }    // run the conversion anyway...  The string might simply have junk at     // the end of it, in which case the error *might* want to be ignored.    dOut = atof(pDoubleString);    return ret;}HX_RESULT HXParseColorUINT32(const char* pszStr, REF(UINT32) rulValue){    HX_RESULT retVal = HXR_OK;    if (pszStr)    {        HXxColor cColor;        retVal = HXParseColor(pszStr, cColor);        if (SUCCEEDED(retVal))        {            rulValue = (UINT32) cColor;#if defined(_WINDOWS)            // HXParseColor produces 0x00BBGGRR on Windows -             // do the swap back to 0x00RRGGBB            rulValue = ((rulValue & 0x00FF0000) >> 16)  |                        (rulValue & 0x0000FF00)         |                       ((rulValue & 0x000000FF) << 16);#endif        }    }    else    {        retVal = HXR_FAIL;    }    return retVal;}HX_RESULT HXParsePercent(const char* pszStr, REF(double) rdValue){    HX_RESULT retVal = HXR_FAIL;    if (pszStr)    {        char*  pEndPtr = NULL;        double dVal    = strtod(pszStr, &pEndPtr);        if (pEndPtr && *pEndPtr == '%')        {            rdValue = dVal;            retVal  = HXR_OK;        }    }    return retVal;}HX_RESULT HXParseUINT32(const char* pszStr, REF(UINT32) rulValue){    HX_RESULT retVal = HXR_OK;    if (pszStr)    {        INT32 lVal = 0;        retVal     = HXParseDigit(pszStr, lVal);        if (SUCCEEDED(retVal))        {            if (lVal >= 0)            {                rulValue = (UINT32) lVal;            }            else            {                retVal = HXR_FAIL;            }        }    }    else    {        retVal = HXR_FAIL;    }    return retVal;}HX_RESULT HXParseOpacity(const char* pszStr, REF(UINT32) rulValue){    HX_RESULT retVal = HXR_OK;    if (pszStr)    {        // First attempt to parse as a percent        INT32  lValue   = 0;        double dPercent = 0.0;        retVal = HXParsePercent(pszStr, dPercent);        if (SUCCEEDED(retVal))        {            // Scale from 0-100% to 0-255 with rounding            lValue = (INT32) (dPercent * 255.0 / 100.0 + 0.5);        }        else        {            // It wasn't a percent, so try and parse as digits            retVal = HXParseDigit(pszStr, lValue);        }        if (SUCCEEDED(retVal))        {            // Clamp to 0-255            if (lValue < 0)   lValue = 0;            if (lValue > 255) lValue = 255;            // Assign the out parameter            rulValue = (UINT32) lValue;        }    }    else    {        retVal = HXR_FAIL;    }    return retVal;}

⌨️ 快捷键说明

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