11ab64890Smrg/* 21ab64890Smrg * Copyright 1992, 1993 by TOSHIBA Corp. 31ab64890Smrg * 41ab64890Smrg * Permission to use, copy, modify, and distribute this software and its 51ab64890Smrg * documentation for any purpose and without fee is hereby granted, provided 61ab64890Smrg * that the above copyright notice appear in all copies and that both that 71ab64890Smrg * copyright notice and this permission notice appear in supporting 81ab64890Smrg * documentation, and that the name of TOSHIBA not be used in advertising 91ab64890Smrg * or publicity pertaining to distribution of the software without specific, 101ab64890Smrg * written prior permission. TOSHIBA make no representations about the 111ab64890Smrg * suitability of this software for any purpose. It is provided "as is" 121ab64890Smrg * without express or implied warranty. 131ab64890Smrg * 141ab64890Smrg * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING 151ab64890Smrg * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL 161ab64890Smrg * TOSHIBA BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR 171ab64890Smrg * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, 181ab64890Smrg * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, 191ab64890Smrg * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS 201ab64890Smrg * SOFTWARE. 211ab64890Smrg * 221ab64890Smrg * Author: Katsuhisa Yano TOSHIBA Corp. 231ab64890Smrg * mopi@osa.ilab.toshiba.co.jp 241ab64890Smrg */ 251ab64890Smrg/* 261ab64890Smrg * Copyright 1995 by FUJITSU LIMITED 271ab64890Smrg * This is source code modified by FUJITSU LIMITED under the Joint 281ab64890Smrg * Development Agreement for the CDE/Motif PST. 291ab64890Smrg * 301ab64890Smrg * Modifier: Takanori Tateno FUJITSU LIMITED 311ab64890Smrg * 321ab64890Smrg */ 331ab64890Smrg/* 341ab64890Smrg * Most of this API is documented in i18n/Framework.PS 351ab64890Smrg */ 361ab64890Smrg 371ab64890Smrg#ifndef _XLCPUBLIC_H_ 381ab64890Smrg#define _XLCPUBLIC_H_ 391ab64890Smrg 401ab64890Smrg#include "Xlcint.h" 411ab64890Smrg 421ab64890Smrg 431ab64890Smrg/* 441ab64890Smrg * Character sets. 451ab64890Smrg */ 461ab64890Smrg 471ab64890Smrg/* Every character set has a "side". It denotes the range of byte values for 481ab64890Smrg which the character set is responsible. This means that the character 491ab64890Smrg set's encoded characters will only assumes bytes within the range, and 501ab64890Smrg that the character set can be used simultaneously with another character 511ab64890Smrg set responsible for a disjoint range. */ 521ab64890Smrgtypedef enum { 531ab64890Smrg XlcUnknown, 541ab64890Smrg XlcC0, /* responsible for values 0x00..0x1F */ 551ab64890Smrg XlcGL, /* responsible for values 0x00..0x7F or 0x20..0x7F */ 561ab64890Smrg XlcC1, /* responsible for values 0x80..0x9F */ 571ab64890Smrg XlcGR, /* responsible for values 0x80..0xFF or 0xA0..0xFF */ 581ab64890Smrg XlcGLGR, /* responsible for values 0x00..0xFF */ 591ab64890Smrg XlcOther, /* unused */ 601ab64890Smrg XlcNONE 611ab64890Smrg} XlcSide; 621ab64890Smrg 631ab64890Smrg/* Data read from XLC_LOCALE files. 641ab64890Smrg XXX Apparently superseded by _XUDCGlyphRegion. */ 651ab64890Smrgtypedef struct _UDCArea { 661ab64890Smrg unsigned long start; 671ab64890Smrg unsigned long end; 681ab64890Smrg} UDCAreaRec, *UDCArea; 691ab64890Smrg 701ab64890Smrg/* Where the character set comes from. */ 711ab64890Smrgtypedef enum { 721ab64890Smrg CSsrcUndef, /* unused */ 731ab64890Smrg CSsrcStd, /* defined in libX11 */ 741ab64890Smrg CSsrcXLC /* defined in an XLC_LOCALE file */ 751ab64890Smrg} CSSrc; 761ab64890Smrg 771ab64890Smrg/* These are the supported properties of XlcCharSet. */ 781ab64890Smrg#define XlcNCharSize "charSize" 791ab64890Smrg#define XlcNControlSequence "controlSequence" 801ab64890Smrg#define XlcNEncodingName "encodingName" 811ab64890Smrg#define XlcNName "name" 821ab64890Smrg#define XlcNSetSize "setSize" 831ab64890Smrg#define XlcNSide "side" 841ab64890Smrg 851ab64890Smrg/* This is the structure of an XlcCharSet. 861ab64890Smrg Once allocated, they are never freed. */ 871ab64890Smrgtypedef struct _XlcCharSetRec { 881ab64890Smrg /* Character set name, including side suffix */ 891ab64890Smrg const char *name; 901ab64890Smrg XrmQuark xrm_name; 911ab64890Smrg 921ab64890Smrg /* XLFD encoding name, no side suffix */ 931ab64890Smrg const char *encoding_name; 941ab64890Smrg XrmQuark xrm_encoding_name; 951ab64890Smrg 961ab64890Smrg /* Range for which the charset is responsible: XlcGL, XlcGR or XlcGLGR */ 971ab64890Smrg XlcSide side; 981ab64890Smrg 991ab64890Smrg /* Number of bytes per character. 0 means a varying number (e.g. UTF-8) */ 1001ab64890Smrg int char_size; 1011ab64890Smrg /* Classification of the character set according to ISO-2022 */ 1021ab64890Smrg int set_size; /* e.g. 94 or 96 */ 1031ab64890Smrg const char *ct_sequence; /* control sequence of CT */ 1041ab64890Smrg /* (normally at most 4 bytes) */ 1051ab64890Smrg 1061ab64890Smrg /* for UDC */ 1071ab64890Smrg Bool string_encoding; 1081ab64890Smrg UDCArea udc_area; 1091ab64890Smrg int udc_area_num; 1101ab64890Smrg 1111ab64890Smrg /* Description source */ 1121ab64890Smrg CSSrc source; 1131ab64890Smrg} XlcCharSetRec, *XlcCharSet; 1141ab64890Smrg 1151ab64890Smrg_XFUNCPROTOBEGIN 1161ab64890Smrg 1171ab64890Smrg/* Returns the charset with the given name (including side suffix). 1181ab64890Smrg Returns NULL if not found. */ 1191ab64890Smrgextern XlcCharSet _XlcGetCharSet( 1201ab64890Smrg const char* name 1211ab64890Smrg); 1221ab64890Smrg 1231ab64890Smrg/* Returns the charset with the given encoding (no side suffix) and 1241ab64890Smrg responsible for at least the given side (XlcGL or XlcGR). 1251ab64890Smrg Returns NULL if not found. */ 1261ab64890Smrgextern XlcCharSet _XlcGetCharSetWithSide( 1271ab64890Smrg const char* encoding_name, 1281ab64890Smrg XlcSide side 1291ab64890Smrg); 1301ab64890Smrg 1311ab64890Smrg/* Registers an XlcCharSet in the list of character sets. 1321ab64890Smrg Returns True if successful. */ 1331ab64890Smrgextern Bool _XlcAddCharSet( 1341ab64890Smrg XlcCharSet charset 1351ab64890Smrg); 1361ab64890Smrg 1371ab64890Smrg/* Retrieves a number of attributes of an XlcCharSet. 1381ab64890Smrg Return NULL if successful, otherwise the name of the first argument 1399c019ec5Smaya specifying a nonexistent attribute. */ 1401ab64890Smrgextern char *_XlcGetCSValues( 1411ab64890Smrg XlcCharSet charset, 1421ab64890Smrg ... 1431ab64890Smrg); 1441ab64890Smrg 1451ab64890Smrg_XFUNCPROTOEND 1461ab64890Smrg 1471ab64890Smrg 1481ab64890Smrg#define XlcNCodeset "codeset" 1491ab64890Smrg#define XlcNDefaultString "defaultString" 1501ab64890Smrg#define XlcNLanguage "language" 1511ab64890Smrg#define XlcNMbCurMax "mbCurMax" 1521ab64890Smrg#define XlcNStateDependentEncoding "stateDependentEncoding" 1531ab64890Smrg#define XlcNTerritory "territory" 1541ab64890Smrg 1551ab64890Smrgtypedef struct _FontScope { 1561ab64890Smrg unsigned long start; 1571ab64890Smrg unsigned long end; 1581ab64890Smrg unsigned long shift; 1591ab64890Smrg unsigned long shift_direction; 1601ab64890Smrg} FontScopeRec, *FontScope; 1611ab64890Smrg 1621ab64890Smrg/* 1631ab64890Smrg * conversion methods 1641ab64890Smrg */ 1651ab64890Smrg 1661ab64890Smrgtypedef struct _XlcConvRec *XlcConv; 1671ab64890Smrg 1681ab64890Smrgtypedef XlcConv (*XlcOpenConverterProc)( 1691ab64890Smrg XLCd from_lcd, 1701ab64890Smrg const char* from_type, 1711ab64890Smrg XLCd to_lcd, 1721ab64890Smrg const char* to_type 1731ab64890Smrg); 1741ab64890Smrg 1751ab64890Smrgtypedef void (*XlcCloseConverterProc)( 1761ab64890Smrg XlcConv /* conv */ 1771ab64890Smrg); 1781ab64890Smrg 1791ab64890Smrgtypedef int (*XlcConvertProc)( 1801ab64890Smrg XlcConv /* conv */, 1811ab64890Smrg XPointer* /* from */, 1821ab64890Smrg int* /* from_left */, 1831ab64890Smrg XPointer* /* to */, 1841ab64890Smrg int* /* to_left */, 1851ab64890Smrg XPointer* /* args */, 1861ab64890Smrg int /* num_args */ 1871ab64890Smrg); 1881ab64890Smrg 1891ab64890Smrgtypedef void (*XlcResetConverterProc)( 1901ab64890Smrg XlcConv /* conv */ 1911ab64890Smrg); 1921ab64890Smrg 1931ab64890Smrgtypedef struct _XlcConvMethodsRec{ 1941ab64890Smrg XlcCloseConverterProc close; 1951ab64890Smrg XlcConvertProc convert; 1961ab64890Smrg XlcResetConverterProc reset; 1971ab64890Smrg} XlcConvMethodsRec, *XlcConvMethods; 1981ab64890Smrg 1991ab64890Smrg/* 2001ab64890Smrg * conversion data 2011ab64890Smrg */ 2021ab64890Smrg 2031ab64890Smrg#define XlcNMultiByte "multiByte" 2041ab64890Smrg#define XlcNWideChar "wideChar" 2051ab64890Smrg#define XlcNCompoundText "compoundText" 2061ab64890Smrg#define XlcNString "string" 2071ab64890Smrg#define XlcNUtf8String "utf8String" 2081ab64890Smrg#define XlcNCharSet "charSet" 2091ab64890Smrg#define XlcNCTCharSet "CTcharSet" 2101ab64890Smrg#define XlcNFontCharSet "FontCharSet" 2111ab64890Smrg#define XlcNChar "char" 2121ab64890Smrg#define XlcNUcsChar "UCSchar" 2131ab64890Smrg 2141ab64890Smrgtypedef struct _XlcConvRec { 2151ab64890Smrg XlcConvMethods methods; 2161ab64890Smrg XPointer state; 2171ab64890Smrg} XlcConvRec; 2181ab64890Smrg 2191ab64890Smrg 2201ab64890Smrg_XFUNCPROTOBEGIN 2211ab64890Smrg 2221ab64890Smrgextern Bool _XInitOM( 2231ab64890Smrg XLCd /* lcd */ 2241ab64890Smrg); 2251ab64890Smrg 2261ab64890Smrgextern Bool _XInitIM( 2271ab64890Smrg XLCd /* lcd */ 2281ab64890Smrg); 2291ab64890Smrg 2301ab64890Smrgextern XIM _XimOpenIM( 2311ab64890Smrg XLCd /* lcd */, 2321ab64890Smrg Display * /* dpy */, 2331ab64890Smrg XrmDatabase /* rdb */, 2341ab64890Smrg char * /* res_name */, 2351ab64890Smrg char * /* res_class */ 2361ab64890Smrg); 2371ab64890Smrg 2381ab64890Smrgextern char *_XGetLCValues( 2391ab64890Smrg XLCd /* lcd */, 2401ab64890Smrg ... 2411ab64890Smrg); 2421ab64890Smrg 2431ab64890Smrgextern XlcConv _XlcOpenConverter( 2441ab64890Smrg XLCd from_lcd, 2451ab64890Smrg const char* from_type, 2461ab64890Smrg XLCd to_lcd, 2471ab64890Smrg const char* to_type 2481ab64890Smrg); 2491ab64890Smrg 2501ab64890Smrgextern void _XlcCloseConverter( 2511ab64890Smrg XlcConv conv 2521ab64890Smrg); 2531ab64890Smrg 2541ab64890Smrgextern int _XlcConvert( 2551ab64890Smrg XlcConv conv, 2561ab64890Smrg XPointer* from, 2571ab64890Smrg int* from_left, 2581ab64890Smrg XPointer* to, 2591ab64890Smrg int* to_left, 2601ab64890Smrg XPointer* args, 2611ab64890Smrg int num_args 2621ab64890Smrg); 2631ab64890Smrg 2641ab64890Smrgextern void _XlcResetConverter( 2651ab64890Smrg XlcConv conv 2661ab64890Smrg); 2671ab64890Smrg 2681ab64890Smrgextern Bool _XlcSetConverter( 2691ab64890Smrg XLCd from_lcd, 2701ab64890Smrg const char* from_type, 2711ab64890Smrg XLCd to_lcd, 2721ab64890Smrg const char* to_type, 2731ab64890Smrg XlcOpenConverterProc open_converter 2741ab64890Smrg); 2751ab64890Smrg 2761ab64890Smrgextern void _XlcGetResource( 2771ab64890Smrg XLCd lcd, 2781ab64890Smrg const char* category, 2791ab64890Smrg const char* _class, 2801ab64890Smrg char*** value, 2811ab64890Smrg int* count 2821ab64890Smrg); 2831ab64890Smrg 2841ab64890Smrgextern char *_XlcFileName( 2851ab64890Smrg XLCd lcd, 2861ab64890Smrg const char* category 2871ab64890Smrg); 2881ab64890Smrg 2891ab64890Smrgextern int _Xwcslen( 2901ab64890Smrg wchar_t* /* wstr */ 2911ab64890Smrg); 2921ab64890Smrg 2931ab64890Smrgextern wchar_t *_Xwcscpy( 2941ab64890Smrg wchar_t* /* wstr1 */, 2951ab64890Smrg wchar_t* /* wstr2 */ 2961ab64890Smrg); 2971ab64890Smrg 2981ab64890Smrgextern wchar_t *_Xwcsncpy(wchar_t *wstr1, wchar_t *wstr2, int len); 2991ab64890Smrgextern int _Xwcscmp(wchar_t *wstr1, wchar_t *wstr2); 3001ab64890Smrgextern int _Xwcsncmp(wchar_t *wstr1, wchar_t *wstr2, int len); 3011ab64890Smrg 3021ab64890Smrg/* Compares two ISO 8859-1 strings, ignoring case of ASCII letters. 3031ab64890Smrg Like strcasecmp in an ASCII locale. */ 3041ab64890Smrgextern int _XlcCompareISOLatin1( 3051ab64890Smrg const char* str1, 3061ab64890Smrg const char* str2 3071ab64890Smrg); 3081ab64890Smrg 3091ab64890Smrg/* Compares two ISO 8859-1 strings, at most len bytes of each, ignoring 3101ab64890Smrg case of ASCII letters. Like strncasecmp in an ASCII locale. */ 3111ab64890Smrgextern int _XlcNCompareISOLatin1( 3121ab64890Smrg const char* str1, 3131ab64890Smrg const char* str2, 3141ab64890Smrg int len 3151ab64890Smrg); 3161ab64890Smrg 3171ab64890Smrgextern XOM 3181ab64890Smrg_XDefaultOpenOM( 3191ab64890Smrg XLCd lcd, Display *dpy, XrmDatabase rdb, 3201ab64890Smrg _Xconst char *res_name, _Xconst char *res_class); 3211ab64890Smrg 3221ab64890Smrg_XFUNCPROTOEND 3231ab64890Smrg 3241ab64890Smrg#endif /* _XLCPUBLIC_H_ */ 325