|
|
/*************************************************
* conv.h * * * * Copyright (C) 1995-1999 Microsoft Inc. * * * *************************************************/
#ifndef __CONV_H
#define __CONV_H
#include <windows.h>
#include <windowsx.h>
#include <io.h>
#include <stdio.h>
#include <string.h>
#define STRSAFE_NO_DEPRECATE
#include "strsafe.h"
#include "propshet.h"
#ifndef ARRAYSIZE
#define ARRAYSIZE(a) (sizeof(a)/sizeof(a[0]))
#endif
//****** PlatFormID ********
#define WIN95_PRC 0x00000001
#define WIN95_CJK 0x00000002
//****** EncodeID **********
#define GBK_IME 0x00000001
#define UNICODE_IME 0x00000002
//****** FileFlag **********
#define FFLG_SINGLEELEMENT 0x00000000
#define FFLG_MULTIELEMENT 0x00000002
#define FFLG_RULE 0x00000001
#define FFLG_NORULE 0x00000000
//****** Number of tables ******
#define NUMTABLES 0x00000007
//****** Version ***********
#define MBVERSION "1.00"
//****** Index tag *********
#define TAG_DESCRIPTION 0x00000001
#define TAG_RULE 0x00000002
#define TAG_ENCODE 0x00000003
#define TAG_CRTWORDCODE 0x00000004
#define TAG_RECONVINDEX 0x00000005
#define TAG_BASEDICINDEX 0x00000006
#define TAG_BASEDIC 0x00000007
//****** Get code direction mode ****
#define GETCODEFORWARD 0x00000001
#define GETCODEBACKWARD 0xffffffff
//****** define error number *******
#define ERR_MBNAME 1001
#define ERR_FILENOTEXIST 1002
#define ERR_FILENOTOPEN 1003
#define ERR_OUTOFMEMORY 1004
#define ERR_GLOBALLOCK 1005
#define ERR_IMEUSE 1006
#define ERR_MAXCODES 1101 //error:MaxCodes over 12!
#define ERR_ELEMENT 1102 //error:MaxElement above MaxCodes!
#define ERR_USEDCODE 1103 //error:not in {'0'~'9','a'~'z',...}
#define ERR_WILDCHAR 1104 //error:WildChar in {UsedCode} !
#define ERR_DESCRIPTSEG 1105
#define ERR_OVERWRITE 1106
#define ERR_IMENAMEENTRY 1107
#define ERR_MAXCODESENTRY 1108
#define ERR_ELEMENTENTRY 1109
#define ERR_USEDCODEENTRY 1110
#define ERR_NUMRULEENTRY 1111
#define ERR_RULEHEADER 1201
#define ERR_RULELOGICOPRA 1202
#define ERR_RULEWORDLEN 1203
#define ERR_RULEEQUAL 1204//error:not exist '='
#define ERR_RULEDBCSPOS 1205//error:DBCS position not in {'1'~'9','a'~'f'}
#define ERR_RULECODEPOS 1206
#define ERR_RULEDIRECTMODE 1207
#define ERR_NORULE 1210
#define ERR_NOTDEFRULE 1211//error:not defined this length word's ruler
#define ERR_RULENUM 1212
#define ERR_RULESEG 1213
#define ERR_DUPRULE 1214 //DUPLICATE RULE
#define ERR_DBCSCODE 1301
#define ERR_CODEUNITNOTEXIST 1302
#define ERR_CREATECODE 1303
#define ERR_CREATENOTEXIST 1304//multi-elements
#define ERR_CODEEMPTY 1305//when ruler doesnot exist
#define ERR_SINGLECODEWORDDOUBLE 1306
#define ERR_SBCS_IN_DBCS 1307
#define ERR_GB2312NOTENTIRE 1308
#define ERR_USERWORDLEN 1309
#define ERR_WORDNOTEXIST 1310
#define ERR_TEXTSEG 1311
#define ERR_TOOMANYUSERWORD 1312
#define ERR_WRITEID 1401
#define ERR_WRITEMAININDEX 1402
#define ERR_WRITEDESCRIPT 1403
#define ERR_WRITERULE 1404
#define ERR_READID 1411
#define ERR_READMAININDEX 1412
#define ERR_READDESCRIPT 1413
#define ERR_READRULE 1414
#define ERR_CONVEND 1501
#define ERR_RECONVEND 1502
#define ERR_SORTEND 1503
#define ERR_VERSION 1601
#define ERR_GROUP 1602
#define ERR 1
#define INFO 2
#define WARNING 3
#define GB2312WORDNUM 6763
#define NUM_OF_XGB_ENCODE 23940
#define NUM_OF_CJK_ENCODE 28528
#ifdef UNICODE
#define NUM_OF_ENCODE NUM_OF_CJK_ENCODE
#else
#define NUM_OF_ENCODE NUM_OF_XGB_ENCODE
#endif
//CJK Unified Ideograph subset
#define NUM_OF_CJK_CHINESE 20992
#ifdef UNICODE
#define NUMENCODEAREA 8
#else
#define NUMENCODEAREA 252
#endif
#define MAXNUMCODES 128
#define MAXUSEDCODES 48
#define NAMESIZE 128
#define MAXCODELEN 12
#define MAXREADBUFFER 0x4000
#define USER_WORD_SIZE 40
#define MAX_WORD_SIZE 256
//#define ID_LENGTH 28
#define ID_LENGTH sizeof(MAINID)
#define CODEMAPOFFSET 4
#define MAXUSERWORDS 1000
#define GMEM_PAGESIZE 0x10000
#define MbName "IME file"
//#define CaptionName "���뷨������"
#define ImeSubKey "System\\CurrentControlSet\\Control\\Keyboard Layouts"
#define szClassName "IMEGEN"
#define TplName "\\ImeGen.tpl"
#define BmpExt ".BMP"
#define IconExt ".ICO"
#define HlpExt ".HLP"
#define ImeExt ".IME"
#define MbExt ".MB"
#define EmbExt ".EMB"
#define TxtFileExt ".TXT"
#define Slope "\\"
#define LayoutTextKey "layout text"
#define PreImeKey "keyboard layout\\preload"
#define DescriptSeg "[Description]"
#define RuleSeg "[Rule]"
#define TextSeg "[Text]"
#define TempFile "$$$$$$$$.$$$"
#define DefVer "5.0"
#define DefOrgName "Microsoft"
#define NUMPROPSHEET 5
#define PROP_CRTIME 0
#define PROP_RECONV 1
#define PROP_SORT 2
#define PROP_CRTWORD 3
#define PROP_ABOUT 4
typedef unsigned char UCHAR; typedef LPTSTR LPCREATEWORD; typedef LPTSTR LPRECONVINDEX; typedef LPDWORD LPDICINDEX; typedef LPDWORD LPNUMXYWORDS;
typedef struct tagMAINID { TCHAR szVersion[4]; DWORD dwLanguageID; DWORD dwEncodeID; DWORD dwFileFlag; DWORD dwNumTables; DWORD dwNumWords; } MAINID, FAR *LPMAINID;
typedef struct tagMAININDEX { DWORD dwTag; DWORD dwOffset; DWORD dwLength; DWORD dwCheckSum; //Check if dwCheckSum=dwTag+dwOffset+dwLength
} MAININDEX, FAR *LPMAININDEX;
typedef struct tagDESCRIPTION { TCHAR szName[NAMESIZE]; WORD wMaxCodes; WORD wNumCodes; TCHAR szUsedCode[MAXUSEDCODES]; BYTE byMaxElement; TCHAR cWildChar; WORD wNumRules; } DESCRIPTION,FAR * LPDESCRIPTION;
typedef struct tagCREATEWORDRULE { BYTE byLogicOpra; BYTE byLength; WORD wNumCodeUnits; struct CODEUNIT { DWORD dwDirectMode; WORD wDBCSPosition; WORD wCodePosition; } CodeUnit[12]; } RULE,FAR *LPRULE;
typedef struct tagENCODEAREA { DWORD PreCount; DWORD StartEncode; DWORD EndEncode; } ENCODEAREA,FAR *LPENCODEAREA;
typedef struct tagEMBHEAD { TCHAR W_Code[MAXCODELEN]; TCHAR C_Char[USER_WORD_SIZE]; } EMB_Head,FAR *LPEMB_Head;
typedef struct tagWORDINDEX { TCHAR szCode[MAXCODELEN+1]; WORD wDBCSLen; DWORD dwOffset; } WORDINDEX,FAR *LPWORDINDEX;
typedef struct tagImeRes{ TCHAR Version[NAMESIZE]; TCHAR Depart[NAMESIZE/2]; TCHAR BmpName[MAX_PATH]; TCHAR IcoName[MAX_PATH]; TCHAR HlpFile[MAX_PATH]; WORD Value; }IMERES,FAR *LPIMERES;
extern HANDLE hDlgless; extern HGLOBAL hRule; HGLOBAL hEncode; HINSTANCE hInst; DWORD dwLineNo; WORD EMB_Count; HANDLE HmemEMB_Table; HANDLE hSRCFile,hMBFile; HANDLE hCmbFile; BYTE WriteCrtFlag[(NUM_OF_ENCODE+7)/8]; BOOL InitApplication(HINSTANCE);
BOOL ConvConv (HANDLE, LPCTSTR, LPCTSTR); BOOL ConvReConv (HANDLE, LPCTSTR, LPCTSTR); BOOL ConvGetMainID (HANDLE, LPMAINID); BOOL ConvWriteMainID (HANDLE, LPMAINID); BOOL ConvGetMainIndex (HANDLE, HANDLE, LPMAININDEX); BOOL ConvWriteMainIndex (HANDLE, LPMAININDEX);
BOOL ConvReadFile (HANDLE, LPCTSTR, LPCTSTR); BOOL WriteSortFile (HANDLE, HANDLE, HANDLE, LPWORDINDEX, LPCREATEWORD); BOOL ConvReadDescript (HANDLE, LPDESCRIPTION, LPMAININDEX); BOOL ConvWriteDescript (HANDLE, LPDESCRIPTION, LPMAININDEX); int ConvGetDescript (HANDLE, LPCTSTR, LPDWORD, LPDWORD, LPDESCRIPTION,BOOL); BOOL ConvSaveDescript (LPCTSTR, LPDESCRIPTION, DWORD, DWORD);
BOOL ConvReadRule (HANDLE, int, LPRULE, LPMAININDEX); BOOL ConvWriteRule (HANDLE, int, LPRULE, LPMAININDEX); int ConvGetRule (HANDLE, LPCTSTR, LPDWORD, LPDWORD, LPRULE, LPDESCRIPTION); BOOL ConvSaveRule (HANDLE, LPCTSTR, DWORD, DWORD, LPRULE, DWORD);
BOOL ConvInitEncode (HGLOBAL hEncode); BOOL ConvGetEncode (HANDLE, LPENCODEAREA, LPDWORD, LPDWORD, LPMAININDEX); BOOL ConvWriteEncode (HANDLE, LPENCODEAREA, LPMAININDEX);
BOOL ConvGetCrtData (HANDLE, LPCREATEWORD, LPMAININDEX); BOOL ConvWriteCrtData (HANDLE, LPCREATEWORD, LPMAININDEX); BOOL ConvGetReConvIndex (HANDLE, LPRECONVINDEX, LPMAININDEX); BOOL ConvWriteReConvIdx (HANDLE, LPRECONVINDEX, LPMAININDEX); BOOL ConvGetCodeIndex (HANDLE, LPDWORD, LPSTR, LPMAININDEX); BOOL ConvWriteCodeIndex (HANDLE, LPDWORD, LPTSTR, LPMAININDEX); BOOL ConvGetDicIndex (HANDLE, LPDWORD, DWORD, LPMAININDEX); BOOL ConvWriteDicIndex (HANDLE, LPDWORD, DWORD, LPMAININDEX); BOOL ConvGetNumXYWords (HANDLE, LPDWORD, DWORD, LPMAININDEX); BOOL ConvWriteNumXYWords(HANDLE, LPDWORD, DWORD, LPMAININDEX);
BOOL ConvInsNewWord (HANDLE, HANDLE, EMB_Head); BOOL ConvSort (HANDLE, LPWORDINDEX, int); BOOL ConvBatCreate (HANDLE, DESCRIPTION, LPRULE, LPCREATEWORD, LPTSTR, LPTSTR); LPTSTR ConvCreateWord (HWND, LPCTSTR, LPTSTR);
void ConvInit (LPDESCRIPTION,LPMAINID,LPMAININDEX); BOOL ConvGetBaseWord (HANDLE, WORDINDEX, LPTSTR); BOOL ConvWriteBaseWord (HANDLE, HANDLE, HANDLE, MAINID,DWORD, LPCREATEWORD, LPRECONVINDEX, DWORD); BOOL ReadSRCFile (HANDLE, LPINT, HANDLE, LPCREATEWORD, LPWORDINDEX, LPINT, LPDESCRIPTION,LPRECONVINDEX); BOOL ConvCalc (HANDLE ,HANDLE ,LPWORDINDEX ,LPMAININDEX ,LPDESCRIPTION); //BOOL WriteMBFile (HANDLE, HANDLE, HANDLE, LPWORDINDEX,
// LPMAININDEX, LPDESCRIPTION, LPCREATEWORD, LPRECONVINDEX);
BOOL WriteMBFile (HANDLE, HANDLE, HANDLE, LPWORDINDEX, LPMAININDEX, LPDESCRIPTION); int WordSplit (HANDLE, LPINT, LPTSTR, LPCREATEWORD, LPWORDINDEX, LPDESCRIPTION,LPRECONVINDEX); int SimpleSplit (HANDLE, LPINT, LPTSTR, LPCREATEWORD, LPWORDINDEX, WORD); void qSort (LPWORDINDEX, DWORD,DWORD); void qSortChar (LPTSTR , DWORD ,DWORD ); HANDLE IndexReAlloc (HANDLE, LPINT); BOOL RuleParse (HANDLE, LPTSTR, DWORD, LPRULE, WORD); void RuleToText (LPRULE, LPTSTR); void MoveFileBlock (HANDLE, DWORD, DWORD, DWORD); DWORD EncodeToNo (LPTSTR); DWORD EncodeToGBNo (UCHAR szDBCS[3]); void NoToEncode (DWORD, LPBYTE, DWORD, LPENCODEAREA); BOOL CheckCrtData (HANDLE, LPCREATEWORD, LPENCODEAREA, DWORD); void DispInfo (HANDLE, WORD); void lstrncpy0 (LPTSTR ,int ,LPTSTR ); BOOL ReadUserWord (HWND ,LPTSTR ,LPDWORD,WORD); INT ReadDescript (LPCTSTR , LPDESCRIPTION ,DWORD); BOOL ReadRule (HWND, LPCTSTR , int ,LPRULE ); int CheckUserWord (HWND ,LPTSTR, WORD); BOOL CheckUserDBCS (HWND ,LPTSTR); BOOL CheckCodeLegal (HWND ,LPTSTR ,LPTSTR, LPTSTR, LPDESCRIPTION ); BOOL CheckCodeCollection(HWND ,LPTSTR ) ; BOOL SaveFileAs (HWND , LPTSTR ); BOOL CreateMbKey (PHKEY ,LPCTSTR ,LPCTSTR); BOOL SetRegValue (HKEY ,LPDWORD ); BOOL GetRegValue (HWND, HKEY ,LPDWORD );
extern void DelSpace(); extern void trim(); extern BOOL ParseDBCSstr(); extern void lstrncpy(); extern HANDLE Create_File(); extern BOOL Copy_File(); extern void ProcessError(); extern BOOL QueryKey(); extern BOOL ErrMessage(); extern VOID WarnMessage(); extern VOID FatalMessage(); extern VOID InfoMessage(); extern void ErrorOut(); extern HANDLE CreateMapFile (); extern HANDLE CreateMap (); extern LPVOID MapView (); extern HANDLE OpenMap (); extern BOOL WriteEMBToFile(); extern BOOL ReadEMBFromFile(); extern void DelSelCU(); extern int AddZCItem(); extern void fnsplit(); extern int GetEntryInt(LPTSTR , LPTSTR, int ,LPINT); extern int GetEntryString(); extern void GetEntryName(); extern int CheckDescription(); extern int GetDescriptEntry(); extern BOOL searchPos(LPWORDINDEX , DWORD ); extern DWORD bSearch(LPWORDINDEX , DWORD , DWORD , WORDINDEX ); int ConvReconvIndex(HANDLE ,LPTSTR ,LPCREATEWORD ,WORDINDEX ,LPDESCRIPTION ,LPRECONVINDEX ); void DelIllegalCode(TCHAR *); LPTSTR _tcschr(LPTSTR, TCHAR); LPTSTR _tcsrchr(LPTSTR, TCHAR); LPTSTR _tcsstr(LPTSTR, LPTSTR); LPTSTR _tcsupr(LPTSTR); int _taccess(LPTSTR, int); int _ttoi(LPTSTR); #endif //__CONV_H
|