00001 #ifndef __AICharacterEncoding__
00002 #define __AICharacterEncoding__
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #ifndef __AITypes__
00031 #include "AITypes.h"
00032 #endif
00033
00034 #include "AIHeaderBegin.h"
00035
00039
00040
00041
00042
00043
00044
00045 #define kAICharacterEncodingSuite "AI Character Encoding Suite"
00046 #define kAICharacterEncodingSuiteVersion5 AIAPI_VERSION(5)
00047 #define kAICharacterEncodingSuiteVersion kAICharacterEncodingSuiteVersion5
00048 #define kAICharacterEncodingVersion kAICharacterEncodingSuiteVersion
00049
00050
00056 typedef enum {
00057
00059 kAIPlatformCharacterEncoding = 0,
00061 kAIUTF8CharacterEncoding,
00063 kAIUTF16CharacterEncoding,
00064
00066 kAIRomanCharacterEncoding = 0x10,
00068 kAIJapaneseCharacterEncoding,
00070 kAITraditionalChineseCharacterEncoding,
00072 kAISimplifiedChineseCharacterEncoding,
00074 kAIKoreanCharacterEncoding,
00076 kAIArabicCharacterEncoding,
00078 kAIHebrewCharacterEncoding,
00080 kAIGreekCharacterEncoding,
00082 kAICyrillicCharacterEncoding,
00084 kAICentralEuroRomanCharacterEncoding,
00086 kAITurkishCharacterEncoding,
00088 kAIBalticCharacterEncoding,
00090 kAIRomanianCharacterEncoding,
00092 kAIUkrainianCharacterEncoding,
00093
00094
00095 kAICentralEuropeanRomanCharacterEncoding = kAICentralEuroRomanCharacterEncoding,
00096 kAIIcelandicCharacterEncoding = 0x1C,
00097 kAICroatianCharacterEncoding,
00098 kAIMacRomanCharacterEncoding,
00099 kAIWinRomanCharacterEncoding,
00100 kAIMacArabicCharacterEncoding,
00101 kAIWinArabicCharacterEncoding,
00102 kAIMacHebrewCharacterEncoding,
00103 kAIWinHebrewCharacterEncoding,
00104 kAIMacGreekCharacterEncoding,
00105 kAIWinGreekCharacterEncoding,
00106 kAIMacCyrillicCharacterEncoding,
00107 kAIWinCyrillicCharacterEncoding,
00108 kAIMacCentralEuroRomanCharacterEncoding,
00109 kAIMacCentralEuropeanRomanCharacterEncoding = kAIMacCentralEuroRomanCharacterEncoding,
00110 kAIWinCentralEuroRomanCharacterEncoding,
00111 kAIWinCentralEuropeanRomanCharacterEncoding = kAIWinCentralEuroRomanCharacterEncoding,
00112 kAIMacIcelandicCharacterEncoding,
00113 kAIWinIcelandicCharacterEncoding,
00114 kAIMacTurkishCharacterEncoding,
00115 kAIWinTurkishCharacterEncoding,
00116 kAIMacCroatianCharacterEncoding,
00117 kAIWinCroatianCharacterEncoding,
00118 kAIMacRomanianCharacterEncoding,
00119 kAIWinRomanianCharacterEncoding,
00120 kAIMacUkrainianCharacterEncoding,
00121 kAIWinUkrainianCharacterEncoding,
00122 kAIMacBalticCharacterEncoding,
00123 kAIWinBalticCharacterEncoding,
00124
00125
00126
00127
00129 kAIJapaneseX0213CharacterEncoding = 0x00000100,
00131 kAIChineseGB18030CharacterEncoding,
00133 kAIChineseHKSCSCharacterEncoding,
00135 kAISymbolCharacterEncoding,
00136
00137 kAIDummyCharacterEncoding = 0xFFFFFFFF
00138
00139 } AICharacterEncoding;
00140
00141
00144 typedef enum {
00146 kAISJISEncoding,
00148 kAIJISEncoding,
00150 kAIKutenEncoding,
00151
00152 kAIDummyJapaneseEncoding = 0xFFFFFFFF
00153
00154 } AIJapaneseEncoding;
00155
00156
00157
00162 #define kDstBufferTooShortErr 'Shrt'
00163
00167 #define kSrcHasInvalidBytesErr 'InvB'
00168
00172 #define kSrcCantMapBytesErr '!Map'
00173
00176 #define kSrcCantMapBytesExactlyErr '~Map'
00177
00178
00179
00180
00181
00182
00183
00193 typedef struct AICharacterEncodingSuite {
00194
00216 AIAPI AIErr (*ConvertBuffer) (
00217 const void* srcBuffer, size_t srcBytes, AICharacterEncoding srcEncoding,
00218 void* dstBuffer, size_t dstBytes, AICharacterEncoding dstEncoding,
00219 size_t* dstLength, AIBoolean errIfCantMap);
00220
00221
00222
00232 AIAPI AIErr (*ConvertJapaneseChar) (
00233 AIJapaneseEncoding srcEncoding, AIJapaneseEncoding dstEncoding, ai::uint16* ch );
00234
00235
00236
00237
00244 AIAPI AIBool8 (*IsPunct)(ASUnicode inChar);
00245
00252 AIAPI AIBool8 (*IsSpace)(ASUnicode inChar);
00253
00259 AIAPI AIErr (*GetCheckedPreferredEncoding)(const ASUnicode* inUnicodeText, AICharacterEncoding inDefaultEncoding, AICharacterEncoding* outMBCSEncoding);
00260
00261 } AICharacterEncodingSuite;
00262
00263
00264 #include "AIHeaderEnd.h"
00265
00266
00267 #endif