📄 string_generate.c
字号:
}
#pragma argsused
UINT8 STR_GenerateLanguage(INT16 sLang, UINT16* szBuffStr, UINT8 cBuffOffset, UINT8 cBuffSize)
{
UINT8 cIndex = 0;
ASSERT(NULL != szBuffStr);
if (eClipType_AVI == CoreAPI_GetCurrentClipType())
{
while(cIndex < MAX_LANG_CODE)
{
if(sLang == aLanguageCodeArray[cIndex].mwCode)
{
UINT8 cLangIndex = 0;
while(aLanguageCodeArray[cIndex].mszLang[cLangIndex])
szBuffStr[cBuffOffset++] = (UINT16)aLanguageCodeArray[cIndex].mszLang[cLangIndex++];
break;
}
cIndex++;
}
}
else
{
while(cIndex < MAX_LANG_CODE)
{
if(sLang == aLanguageCodeArray[cIndex].mwCode)
{
szBuffStr[cBuffOffset++] = (UINT16)aLanguageCodeArray[cIndex].mszLang[0];
szBuffStr[cBuffOffset++] = (UINT16)aLanguageCodeArray[cIndex].mszLang[1];
szBuffStr[cBuffOffset++] = (UINT16)aLanguageCodeArray[cIndex].mszLang[2];
break;
}
cIndex++;
}
}
TerminateStringGenerationFunction(szBuffStr, cBuffOffset, cBuffSize);
}
UINT8 STR_GenerateDivXVersion(UINT16 sDivXVer, UINT16 sDivXWidth, UINT16 sDivXHeight, UINT16 sBitRate, UINT16* szBuffStr, UINT8 cBuffOffset, UINT8 cBuffSize)
{
ASSERT(NULL != szBuffStr);
switch(sDivXVer)
{
case DIVX_3_11:
cBuffOffset = STR_GenerateOSDMESSAGEString(S_DIVX3P11, szBuffStr, cBuffOffset, cBuffSize);
break;
case DIVX_4_12:
cBuffOffset = STR_GenerateOSDMESSAGEString(S_DIVX4P12, szBuffStr, cBuffOffset, cBuffSize);
break;
case DIVX_5_0:
cBuffOffset = STR_GenerateOSDMESSAGEString(S_DIVX5PX, szBuffStr, cBuffOffset, cBuffSize);
break;
case XVID:
cBuffOffset = STR_GenerateOSDMESSAGEString(S_XVID, szBuffStr, cBuffOffset, cBuffSize);
break;
case _3IVX:
cBuffOffset = STR_GenerateOSDMESSAGEString(S_3IVX, szBuffStr, cBuffOffset, cBuffSize);
break;
case MP43:
cBuffOffset = STR_GenerateOSDMESSAGEString(S_MP43, szBuffStr, cBuffOffset, cBuffSize);
break;
case MP4S:
cBuffOffset = STR_GenerateOSDMESSAGEString(S_MP4S, szBuffStr, cBuffOffset, cBuffSize);
break;
case RMP4:
cBuffOffset = STR_GenerateOSDMESSAGEString(S_RMP4, szBuffStr, cBuffOffset, cBuffSize);
break;
case MP4V:
cBuffOffset = STR_GenerateOSDMESSAGEString(S_MP4V, szBuffStr, cBuffOffset, cBuffSize);
break;
case DIVX_UNKNOWN:
cBuffOffset = STR_GenerateOSDMESSAGEString(S_UNKNOWN, szBuffStr, cBuffOffset, cBuffSize);
break;
}
szBuffStr[cBuffOffset++]= L',';
szBuffStr[cBuffOffset++]= L' ';
cBuffOffset = STR_GenerateNumericValue(sDivXWidth, szBuffStr, cBuffOffset, cBuffSize);
szBuffStr[cBuffOffset++]= L'x';
cBuffOffset = STR_GenerateNumericValue(sDivXHeight, szBuffStr, cBuffOffset, cBuffSize);
szBuffStr[cBuffOffset++]= L',';
szBuffStr[cBuffOffset++]= L' ';
cBuffOffset = STR_GenerateNumericValue(sBitRate, szBuffStr, cBuffOffset, cBuffSize);
cBuffOffset = STR_GenerateOSDMESSAGEString(S_FPS, szBuffStr, cBuffOffset, cBuffSize);
TerminateStringGenerationFunction(szBuffStr, cBuffOffset, cBuffSize);
}
#if 0 // not used for now
UINT8 STR_GenerateAudioCodecInfo(INT16 sAudio, INT16 sTotalAudio, INT16 sCodec, INT16 sSampleRate, INT16 sChannels, UINT8* pcLang, UINT16* szBuffStr, UINT8 cBuffOffset, UINT8 cBuffSize)
{
ASSERT(NULL != szBuffStr);
cBuffOffset = STR_GenerateNumericAndTotalNumeric(sAudio, sTotalAudio, szBuffStr, cBuffOffset, cBuffSize);
szBuffStr[cBuffOffset++]= L',';
szBuffStr[cBuffOffset++]= L' ';
switch(sCodec)
{
case MP2:
cBuffOffset = STR_GenerateOSDMESSAGEString(S_MP2, szBuffStr, cBuffOffset, cBuffSize);
break;
case MP3:
cBuffOffset = STR_GenerateOSDMESSAGEString(S_MP3, szBuffStr, cBuffOffset, cBuffSize);
break;
case PCM:
cBuffOffset = STR_GenerateOSDMESSAGEString(S_PCM, szBuffStr, cBuffOffset, cBuffSize);
break;
case ADPCM:
cBuffOffset = STR_GenerateOSDMESSAGEString(S_ADPCM, szBuffStr, cBuffOffset, cBuffSize);
break;
case WMA:
cBuffOffset = STR_GenerateOSDMESSAGEString(S_WMA, szBuffStr, cBuffOffset, cBuffSize);
break;
case AC3:
cBuffOffset = STR_GenerateOSDMESSAGEString(S_AC3, szBuffStr, cBuffOffset, cBuffSize);
break;
case AAC:
cBuffOffset = STR_GenerateOSDMESSAGEString(S_AAC, szBuffStr, cBuffOffset, cBuffSize);
break;
case AUDIO_UNKNOWN:
cBuffOffset = STR_GenerateOSDMESSAGEString(S_UNKNOWN, szBuffStr, cBuffOffset, cBuffSize);
break;
}
szBuffStr[cBuffOffset++]= L',';
szBuffStr[cBuffOffset++]= L' ';
cBuffOffset = STR_GenerateNumericValue(sSampleRate, szBuffStr, cBuffOffset, cBuffSize);
cBuffOffset = STR_GenerateOSDMESSAGEString(S_KHZ, szBuffStr, cBuffOffset, cBuffSize);
szBuffStr[cBuffOffset++]= L',';
szBuffStr[cBuffOffset++]= L' ';
cBuffOffset = STR_GenerateNumericValue(sChannels, szBuffStr, cBuffOffset, cBuffSize);
szBuffStr[cBuffOffset++]= L'C';
szBuffStr[cBuffOffset++]= L'h';
cBuffOffset = STR_GenerateStrLanguage(pcLang, szBuffStr, cBuffOffset, cBuffSize);
TerminateStringGenerationFunction(szBuffStr, cBuffOffset, cBuffSize);
}
#endif // if 0
UINT8 STR_GenerateStrLanguage(UINT8* pcLang, UINT16* szBuffStr, UINT8 cBuffOffset, UINT8 cBuffSize)
{
ASSERT(NULL != szBuffStr);
if (pcLang[0] != '\0' && pcLang[1] != '\0')
{
if (pcLang[2] != '\0')
{
szBuffStr[cBuffOffset++]= pcLang[0];
szBuffStr[cBuffOffset++]= pcLang[1];
szBuffStr[cBuffOffset++]= pcLang[2];
}
else
{
STR_GenerateLanguage(MLC(pcLang[0],pcLang[1]), szBuffStr, cBuffOffset, cBuffSize);
}
}
TerminateStringGenerationFunction(szBuffStr, cBuffOffset, cBuffSize);
}
UINT8 STR_GenerateItemColonNumericAndTotalNumeric(OSD_MESSAGES sItem, UINT16 sNum, UINT16 sTotal, UINT16* szBuffStr, UINT8 cBuffOffset, UINT8 cBuffSize)
{
ASSERT(NULL != szBuffStr);
cBuffOffset = STR_GenerateOSDMESSAGEString(sItem, szBuffStr, cBuffOffset, cBuffSize);
szBuffStr[cBuffOffset++] = ':';
szBuffStr[cBuffOffset++] = ' ';
cBuffOffset = STR_GenerateNumericAndTotalNumeric(sNum, sTotal, szBuffStr, cBuffOffset, cBuffSize);
TerminateStringGenerationFunction(szBuffStr, cBuffOffset, cBuffSize);
}
// OLD FUNCTIONS UPDATED FOR CONSISTENCY
#pragma argsused
UINT8 STR_ValueToStrLength(UINT32 lNumToConvert, UINT16 uiNumDigits, UINT16* szBuffStr, UINT8 cBuffOffset, UINT8 cBuffSize)
{
UINT32 uMod = 1;
UINT32 uValue = lNumToConvert;
ASSERT(NULL != szBuffStr);
while ( uiNumDigits-- > 1 )
{
uMod *= 10;
}
uValue = lNumToConvert % (uMod * 10);
while ( uMod > 1 )
{
szBuffStr[cBuffOffset++] = NUM_TO_CHAR(uValue / uMod);
uValue %= uMod;
uMod /= 10;
}
szBuffStr[cBuffOffset++] = NUM_TO_CHAR(uValue);
TerminateStringGenerationFunction(szBuffStr, cBuffOffset, cBuffSize);
}
UINT8 STR_TextToTimeStr(wchar_t* text, UINT8 iLength, UINT16* szBuffStr, UINT8 cBuffOffset, UINT8 cBuffSize)
{
const UINT8 iFirstChar[] = {7, 6, 4, 3, 1, 0};
UINT8 iFirstCharIndex;
UINT8 iCharIndex;
ASSERT(NULL != szBuffStr);
// Fill the time string with a NULL time indicator:
cBuffOffset = STR_GenerateOSDMESSAGEString(S_EMPTY_TIME, szBuffStr, cBuffOffset, cBuffSize);
if(0 == iLength)
{
return cBuffOffset;
}
iFirstCharIndex = iLength - 1; // e.g., 3
for(iCharIndex = 0; iCharIndex < iLength; iCharIndex++)
{
szBuffStr[iFirstChar[iFirstCharIndex--]] = text[iCharIndex];
}
TerminateStringGenerationFunction(szBuffStr, cBuffOffset, cBuffSize);
}
UINT8 STR_GenerateTime(UINT32 lNumToConvert, UINT16 uiNumDigits, UINT16* szBuffStr, UINT8 cBuffOffset, UINT8 cBuffSize)
{
UINT16 szTemp[10];
if(INVALID_TIME == lNumToConvert)
cBuffOffset = STR_GenerateOSDMESSAGEString(S_EMPTY_TIME, szBuffStr, cBuffOffset, cBuffSize);
else
{
STR_ValueToStrLength(lNumToConvert, uiNumDigits, szTemp, 0, sizeof(szTemp));
cBuffOffset = STR_TextToTimeStr((wchar_t*)szTemp, wcslen((wchar_t*)szTemp), szBuffStr, 0, cBuffSize);
}
return cBuffOffset;
}
#pragma argsused
UINT8 STR_GenerateCheckSum(UINT16 wCheckSum, UINT16* szBuffStr, UINT8 cBuffOffset, UINT8 cBuffSize)
{
szBuffStr[cBuffOffset++] = ((((wCheckSum & 0xf000) >> 12) & 0x0f) > 0x9)? ('A' + ((((wCheckSum & 0xf000) >> 12) & 0x0f) - 10)):('0' + (((wCheckSum & 0xf000) >> 12) & 0x0f));
szBuffStr[cBuffOffset++] = ((((wCheckSum & 0x0f00) >> 8 ) & 0x0f) > 0x9)? ('A' + ((((wCheckSum & 0x0F00) >> 8 ) & 0x0f) - 10)):('0' + (((wCheckSum & 0x0f00) >> 8 ) & 0x0f));
szBuffStr[cBuffOffset++] = ((((wCheckSum & 0x00f0) >> 4 ) & 0x0f) > 0x9)? ('A' + ((((wCheckSum & 0x00f0) >> 4 ) & 0x0f) - 10)):('0' + (((wCheckSum & 0x00f0) >> 4 ) & 0x0f));
szBuffStr[cBuffOffset++] = ((wCheckSum & 0x0f) > 0x9)? ('A' + ((wCheckSum & 0x0f) - 10)):('0' + (wCheckSum & 0x0f));
TerminateStringGenerationFunction(szBuffStr, cBuffOffset, cBuffSize);
}
#ifdef D_HDMI_ENABLED
#pragma argsused
UINT8 STR_GenerateHDVideoOutResolution(UINT16 wTVStdAndHDResolution, UINT16* szBuffStr, UINT8 cBuffOffset, UINT8 cBuffSize)
{
UINT8 cTVStandard = (wTVStdAndHDResolution >> 8);
UINT8 cHDVideoOutResolution = (UINT8)wTVStdAndHDResolution;
switch(cTVStandard)
{
case DEC_LL_OUT_VIDEO_STANDARD_NTSC:
{
switch (cHDVideoOutResolution)
{
case HD_NTSC_IN_OUT_480P:
cBuffOffset = STR_GenerateOSDMESSAGEString(S_NTSC_PROGRESSIVE_480, szBuffStr, cBuffOffset, cBuffSize);
break;
case HD_NTSC_IN_OUT_720P:
cBuffOffset = STR_GenerateOSDMESSAGEString(S_NTSC_PROGRESSIVE_720, szBuffStr, cBuffOffset, cBuffSize);
break;
case HD_NTSC_IN_OUT_1080I:
cBuffOffset = STR_GenerateOSDMESSAGEString(S_NTSC_INTERLACED_1080, szBuffStr, cBuffOffset, cBuffSize);
break;
case HD_NTSC_IN_OUT_1024X768:
cBuffOffset = STR_GenerateOSDMESSAGEString(S_NTSC_PROGRESSIVE_1024x768, szBuffStr, cBuffOffset, cBuffSize);
break;
case HD_NTSC_IN_OUT_1360X768:
cBuffOffset = STR_GenerateOSDMESSAGEString(S_NTSC_PROGRESSIVE_1360x768, szBuffStr, cBuffOffset, cBuffSize);
break;
case HD_NTSC_IN_OUT_AUTO:
cBuffOffset = STR_GenerateOSDMESSAGEString(S_NTSC_AUTO, szBuffStr, cBuffOffset, cBuffSize);
break;
default:
break;
}
}
break;
case DEC_LL_OUT_VIDEO_STANDARD_PAL:
{
switch (cHDVideoOutResolution)
{
case HD_PAL_IN_OUT_576P:
cBuffOffset = STR_GenerateOSDMESSAGEString(S_PAL_PROGRESSIVE_576, szBuffStr, cBuffOffset, cBuffSize);
break;
case HD_PAL_IN_OUT_720P:
cBuffOffset = STR_GenerateOSDMESSAGEString(S_PAL_PROGRESSIVE_720, szBuffStr, cBuffOffset, cBuffSize);
break;
case HD_PAL_IN_OUT_1080I:
cBuffOffset = STR_GenerateOSDMESSAGEString(S_PAL_INTERLACED_1080, szBuffStr, cBuffOffset, cBuffSize);
break;
case HD_PAL_IN_OUT_1024X768:
cBuffOffset = STR_GenerateOSDMESSAGEString(S_PAL_PROGRESSIVE_1024x768, szBuffStr, cBuffOffset, cBuffSize);
break;
case HD_PAL_IN_OUT_1360X768:
cBuffOffset = STR_GenerateOSDMESSAGEString(S_PAL_PROGRESSIVE_1360x768, szBuffStr, cBuffOffset, cBuffSize);
break;
case HD_PAL_IN_OUT_AUTO:
cBuffOffset = STR_GenerateOSDMESSAGEString(S_PAL_AUTO, szBuffStr, cBuffOffset, cBuffSize);
break;
default:
break;
}
}
break;
default:
break;
}
return cBuffOffset;
}
#endif //D_HDMI_ENABLED
/**************************************************************************
* Function : STR_GeneratePartialCached
*
* In :
*
* Out :
*
* Return :
*
* Desc :
***************************************************************************/
UINT8 STR_GeneratePartialCached(UINT16 uiNumCachedFiles, UINT16* szBuffStr, UINT8 cBuffOffset, UINT8 cBuffSize)
{
cBuffOffset = STR_GenerateOSDMESSAGEString(S_DISC_PARTIALLY_CACHED, szBuffStr, cBuffOffset, cBuffSize);
szBuffStr[cBuffOffset++] = ' ';
cBuffOffset = STR_GenerateNumericValue( uiNumCachedFiles , szBuffStr, cBuffOffset, cBuffSize);
TerminateStringGenerationFunction(szBuffStr, cBuffOffset, cBuffSize);
}
/**************************************************************************
* Function : STR_GenerateDiscName
*
* In :
*
* Out :
*
* Return :
*
* Desc :
***************************************************************************/
UINT8 STR_GenerateDiscName(LPWSTR pwszSrcBuffer, UINT8 cSrcBufferOffset, UINT8 cSrcBufferSize)
{
CoreAPI_GetDiscName((LPWSTR)&pwszSrcBuffer[cSrcBufferOffset], cSrcBufferSize);
return wcslen(pwszSrcBuffer);
}
/***************************************************************************************
* Function : STR_AppendPaddingSpace
*
* In : 1. pwszBuffer = Pointer to a buffer.
*
* 2. cBufferLen = Buffer size.
*
* 3. cStrMaxLen = Maximum string length.
*
* 4. cNumPaddingSpaces = Number of spaces to pad to the end of the string.
*
* Out : None.
*
* Desc : Remove all the spaces from the end of the supplied string, and appends
* cNumPaddingSpaces number of spaces.
****************************************************************************************/
void STR_AppendPaddingSpace(LPWSTR pwszBuffer, UINT8 cBufferLen, UINT8 cStrMaxLen, UINT8 cNumPaddingSpaces)
{
UINT16 wCount;
MS_ASSERT(cBufferLen <= cStrMaxLen);
// Remove spaces until the end of the string is found.
for(wCount = cBufferLen; (wCount > 0) && (L' ' == pwszBuffer[wCount-1]); wCount--);
// Add the padding spaces back on
for(cBufferLen = wCount, wCount = 0; (cBufferLen < cStrMaxLen) && (wCount < cNumPaddingSpaces); wCount++)
{
pwszBuffer[cBufferLen + wCount] = L' ';
}
pwszBuffer[cBufferLen + wCount] = 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -