📄 dic2.c
字号:
return( table6[code-0xFF61] );
return( code );
}
}
/**********************************************************************/
/* */
/* ZenToHan( code ) */
/* */
/* A function which converts full size character to half size */
/* */
/* code */
/* Specify full size character code */
/* */
/* return */
/* Return half size character code */
/* */
/**********************************************************************/
WORD PASCAL ZenToHan( code )
WORD code;
{
int i;
if( code >= 0xFF10 && code <= 0xFF19 )
return( code - 0xFF10 + 0x30 );
if( code >= 0xFF21 && code <= 0xFF3A )
return( code - 0xFF21 + 0x41 );
if( code >= 0xFF41 && code <= 0xFF5A )
return( code - 0xFF41 + 0x61 );
for( i = 0; i < 16; i++ )
if( code == table1[i] )
return( 0x20 + i );
for( i = 0; i < 6; i++ )
if( code == table2[i] )
return( 0x3a + i );
for( i = 0; i < 6; i++ )
if( code == table3[i] )
return( 0x5b + i );
for( i = 0; i < 5; i++ )
if( code == table4[i] )
return( 0x7b + i );
for( i = 0; i < 63; i++ ){
if( code == table5[i] )
return( 0xFF61 + i );
if( code == table6[i] )
return( 0xFF61 + i );
}
return 0;
}
BOOL PASCAL IsTenten( code )
WORD code;
{
register int i;
for( i = 0; table8[i]; i++ )
if( table8[i] == code )
return( TRUE );
return( FALSE );
}
WORD PASCAL ConvTenten( code )
WORD code;
{
if( IsTenten( code ) )
return( code + 1 );
return 0;
}
BOOL PASCAL IsMaru( code )
WORD code;
{
register int i;
for( i = 0; table7[i]; i++ )
if( table7[i] == code )
return( TRUE );
return( FALSE );
}
WORD PASCAL ConvMaru( code )
WORD code;
{
if( IsMaru( code ) )
return( code + 2 );
return 0;
}
WORD PASCAL HiraToKata(WORD code)
{
register int i;
for( i = 0; i < 63; i++ ){
if( code == table5[i] )
return table6[i];
}
for( i = 0; i < 63; i++ )
{
if( code-1 == table5[i] )
if (IsTenten(table5[i]))
return table6[i] + 1;
if( code-2 == table5[i] )
if (IsMaru(table5[i]))
return table6[i] + 2;
}
return code;
}
WORD PASCAL KataToHira(WORD code)
{
register int i;
for( i = 0; i < 63; i++ ){
if( code == table6[i] )
return table5[i];
}
for( i = 0; i < 63; i++ )
{
if( code-1 == table6[i] )
if (IsTenten(table6[i]))
return table5[i] + 1;
if( code-2 == table6[i] )
if (IsMaru(table6[i]))
return table5[i] + 2;
}
return code;
}
BOOL OneCharZenToHan(WCHAR code,WCHAR* pKatakanaLetter,WCHAR* pSound)
{
WCHAR NewCode;
*pKatakanaLetter = 0;
*pSound = 0;
NewCode = (MYCHAR)ZenToHan(code);
if (! NewCode)
{
if (IsTenten((WORD)(code-1)))
{
*pKatakanaLetter = (MYCHAR)ZenToHan((WORD)(code-1));
*pSound = (MYCHAR)0xFF9E;
return TRUE;
}
else if (IsMaru((WORD)(code-2)))
{
*pKatakanaLetter = (MYCHAR)ZenToHan((WORD)(code-2));
*pSound = (MYCHAR)0xFF9F;
return TRUE;
}
else{
return FALSE;
}
}
else
{
*pKatakanaLetter = NewCode;
return TRUE;
}
}
void PASCAL lZenToHan(LPMYSTR lpDst,LPMYSTR lpSrc)
{
WORD code;
while(*lpSrc)
{
code = *lpSrc;
*lpDst = (MYCHAR)ZenToHan(code);
if (!*lpDst)
{
if (IsTenten((WORD)(code-1)))
{
*lpDst++ = (MYCHAR)ZenToHan((WORD)(code-1));
*lpDst++ = (MYCHAR)0xFF9E;
}
else if (IsMaru((WORD)(code-2)))
{
*lpDst++ = (MYCHAR)ZenToHan((WORD)(code-2));
*lpDst++ = (MYCHAR)0xFF9F;
}
else {
//
// this case means it is not Korean char
//
*lpDst++ = *lpSrc;
}
}
else
lpDst++;
lpSrc++;
}
*lpDst = MYTEXT('\0');
}
void PASCAL lHanToZen(LPMYSTR lpDst,LPMYSTR lpSrc,DWORD fdwConversion)
{
WORD code;
WORD code0;
WORD code1;
while(*lpSrc)
{
WORD KatakanaLetter;
KatakanaLetter = 0;
code0 = (WORD)*lpSrc;
code1 = (WORD)*(lpSrc+1);
lpSrc++;
if ((code1 == 0xFF9E) || (code1 == 0xFF9F)) {
KatakanaLetter = code0;
code0 = code1;
lpSrc++;
}
code = HanToZen (code0,KatakanaLetter,fdwConversion);
*lpDst++ = code;
}
*lpDst = MYTEXT('\0');
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -