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

📄 dic2.c

📁 手机上的韩文输入法 saenaru20031212.zip
💻 C
📖 第 1 页 / 共 2 页
字号:
                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 + -