|
|
// Copyright (c) 1995 Microsoft Corpration
//
// File Name : fechrcnv.h
// Owner : Tetsuhide Akaishi
// Revision : 1.00 07/20/'95 Tetsuhide Akaishi
//
#ifdef __cplusplus
extern "C" { #endif
// Shift JIS Kanji Code Check
#define SJISISKANJI(c) ( ( (UCHAR)(c) >= 0x81 && (UCHAR)(c) <= 0x9f ) || \
( (UCHAR)(c) >= 0xe0 && (UCHAR)(c) <= 0xfc ) )
// Shift JIS Kana Code Check
#define SJISISKANA(c) ( (UCHAR)(c) >= 0xa1 && (UCHAR)(c) <= 0xdf )
#define ESC 0x1b
#define SO 0x0e
#define SI 0x0f
#define IS2022_IN_CHAR '$'
#define IS2022_IN_KSC_CHAR1 ')'
#define IS2022_IN_KSC_CHAR2 'C'
// Define for JIS Code Kanji and Kana IN/OUT characters
#define KANJI_IN_1ST_CHAR '$'
#define KANJI_IN_2ND_CHAR1 'B'
#define KANJI_IN_2ND_CHAR2 '@'
#define KANJI_IN_2ND_CHAR3 '('
#define KANJI_IN_3RD_CHAR 'D'
#define KANJI_IN_STR "$B"
#define KANJI_IN_LEN 3
#define KANJI_OUT_1ST_CHAR '('
#define KANJI_OUT_2ND_CHAR1 'J'
#define KANJI_OUT_2ND_CHAR2 'B'
#define KANJI_OUT_LEN 3
#define KANJI_OUT_STR "(J"
// Define for Internet Code Type
#define CODE_UNKNOWN 0
#define CODE_ONLY_SBCS 0
#define CODE_JPN_JIS 1
#define CODE_JPN_EUC 2
#define CODE_JPN_SJIS 3
#define CODE_PRC_CNGB 4
#define CODE_PRC_HZGB 5
#define CODE_TWN_BIG5 6
#define CODE_KRN_KSC 7
#define CODE_KRN_UHC 8
// Minimum length to determine if the string is EUC
#define MIN_JPN_DETECTLEN 48
typedef struct _dbcs_status { int nCodeSet; UCHAR cSavedByte; BOOL fESC; } DBCS_STATUS;
typedef struct _conv_context { DBCS_STATUS dStatus0; DBCS_STATUS dStatus; BOOL blkanji0; // Kanji In Mode
BOOL blkanji; // Kanji In Mode
BOOL blkana; // Kana Mode
int nCurrentCodeSet;
void* pIncc0; void* pIncc; } CONV_CONTEXT;
// ----------------------------------
// Public Functions for All FarEast
//-----------------------------------
// Convert from PC Code Set to UNIX Code Set
int WINAPI PC_to_UNIX ( void *pcontext, int CodePage, int CodeSet, UCHAR *pPC, int PC_len, UCHAR *pUNIX, int UNIX_len );
// Convert from UNIX Code Set to PC Code Set
int WINAPI UNIX_to_PC ( void *pcontext, int CodePage, int CodeSet, UCHAR *pUNIX, int UNIX_len, UCHAR *pPC, int PC_len );
//--------------------------------
// Internal Functions for Japanese
//--------------------------------
// Detect Japanese Code
int DetectJPNCode ( UCHAR *string, int len );
// Convert from Shift JIS to JIS
int ShiftJIS_to_JIS ( UCHAR *pShiftJIS, int ShiftJIS_len, UCHAR *pJIS, int JIS_len );
// Convert from Shift JIS to EUC
int ShiftJIS_to_EUC ( UCHAR *pShiftJIS, int ShiftJIS_len, UCHAR *pJIS, int JIS_len );
#ifdef NOTIMPLEMENTED
// Convert from JIS to EUC
int JIS_to_EUC ( UCHAR *pJIS, int JIS_len, UCHAR *pEUC, int EUC_len ); #endif
// Convert from JIS to Shift JIS
int JIS_to_ShiftJIS ( CONV_CONTEXT *pcontext, UCHAR *pShiftJIS, int ShiftJIS_len, UCHAR *pJIS, int JIS_len );
#ifdef NOTIMPLEMENTED
// Convert from EUC to JIS
int EUC_to_JIS ( UCHAR *pJIS, int JIS_len, UCHAR *pEUC, int EUC_len ); #endif
// Convert from EUC to Shift JIS
int EUC_to_ShiftJIS ( CONV_CONTEXT *pcontext, UCHAR *pEUC, int EUC_len, UCHAR *pShiftJIS, int ShiftJIS_len );
//--------------------------------
// Internal Functions for PRC
//--------------------------------
// Convert from HZ-GB to GB2312
int HZGB_to_GB2312 ( CONV_CONTEXT *pcontext, UCHAR *pGB2312, int GB2312_len, UCHAR *pHZGB, int HZGB_len );
// Convert from GB2312 to HZ-GB
int GB2312_to_HZGB ( CONV_CONTEXT *pcontext, UCHAR *pGB2312, int GB2312_len, UCHAR *pHZGB, int HZGB_len );
//--------------------------------
// Internal Functions for Korea
//--------------------------------
// Convert from KSC to Hangeul
int KSC_to_Hangeul ( CONV_CONTEXT *pcontext, UCHAR *pHangeul, int Hangeul_len, UCHAR *pKSC, int KSC_len );
// Convert from Hangeul to KSC
int Hangeul_to_KSC ( CONV_CONTEXT *pcontext, UCHAR *pHangeul, int Hangeul_len, UCHAR *pKSC, int KSC_len );
void WINAPI FCC_Init( PVOID ); int WINAPI FCC_GetCurrentEncodingMode( PVOID );
#ifdef __cplusplus
} #endif
|