11ab64890Smrg/* 21ab64890Smrg 31ab64890SmrgCopyright 1991, 1998 The Open Group 41ab64890Smrg 51ab64890SmrgPermission to use, copy, modify, distribute, and sell this software and its 61ab64890Smrgdocumentation for any purpose is hereby granted without fee, provided that 71ab64890Smrgthe above copyright notice appear in all copies and that both that 81ab64890Smrgcopyright notice and this permission notice appear in supporting 91ab64890Smrgdocumentation. 101ab64890Smrg 111ab64890SmrgThe above copyright notice and this permission notice shall be included 121ab64890Smrgin all copies or substantial portions of the Software. 131ab64890Smrg 141ab64890SmrgTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 151ab64890SmrgOR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 161ab64890SmrgMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 171ab64890SmrgIN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR 181ab64890SmrgOTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 191ab64890SmrgARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 201ab64890SmrgOTHER DEALINGS IN THE SOFTWARE. 211ab64890Smrg 221ab64890SmrgExcept as contained in this notice, the name of The Open Group shall 231ab64890Smrgnot be used in advertising or otherwise to promote the sale, use or 241ab64890Smrgother dealings in this Software without prior written authorization 251ab64890Smrgfrom The Open Group. 261ab64890Smrg 271ab64890Smrg*/ 281ab64890Smrg 291ab64890Smrg/* 301ab64890Smrg * Copyright 1990, 1991 by OMRON Corporation, NTT Software Corporation, 311ab64890Smrg * and Nippon Telegraph and Telephone Corporation 321ab64890Smrg * Copyright 1991 by the Open Software Foundation 331ab64890Smrg * Copyright 1993 by the TOSHIBA Corp. 341ab64890Smrg * Copyright 1993, 1994 by Sony Corporation 351ab64890Smrg * Copyright 1993, 1994 by the FUJITSU LIMITED 361ab64890Smrg * 371ab64890Smrg * Permission to use, copy, modify, distribute, and sell this software and its 381ab64890Smrg * documentation for any purpose is hereby granted without fee, provided that 391ab64890Smrg * the above copyright notice appear in all copies and that both that 401ab64890Smrg * copyright notice and this permission notice appear in supporting 411ab64890Smrg * documentation, and that the names of OMRON, NTT Software, NTT, Open 421ab64890Smrg * Software Foundation, and Sony Corporation not be used in advertising 4361b2299dSmrg * or publicity pertaining to distribution of the software without specific, 441ab64890Smrg * written prior permission. OMRON, NTT Software, NTT, Open Software 4561b2299dSmrg * Foundation, and Sony Corporation make no representations about the 4661b2299dSmrg * suitability of this software for any purpose. It is provided "as is" 471ab64890Smrg * without express or implied warranty. 481ab64890Smrg * 4961b2299dSmrg * OMRON, NTT SOFTWARE, NTT, OPEN SOFTWARE FOUNDATION, AND SONY 5061b2299dSmrg * CORPORATION DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING 5161b2299dSmrg * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT 5261b2299dSmrg * SHALL OMRON, NTT SOFTWARE, NTT, OPEN SOFTWARE FOUNDATION, OR SONY 531ab64890Smrg * CORPORATION BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR 541ab64890Smrg * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER 5561b2299dSmrg * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT 561ab64890Smrg * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 5761b2299dSmrg * 581ab64890Smrg * Authors: Li Yuhong OMRON Corporation 591ab64890Smrg * Tatsuya Kato NTT Software Corporation 601ab64890Smrg * Hiroshi Kuribayashi OMRON Coproration 611ab64890Smrg * Muneiyoshi Suzuki Nippon Telegraph and Telephone Co. 6261b2299dSmrg * 6361b2299dSmrg * M. Collins OSF 641ab64890Smrg * Katsuhisa Yano TOSHIBA Corp. 651ab64890Smrg * Makoto Wakamatsu Sony Corporation 661ab64890Smrg * Takashi Fujiwara FUJITSU LIMITED 6761b2299dSmrg */ 681ab64890Smrg 691ab64890Smrg 701ab64890Smrg#ifndef _XLCINT_H_ 711ab64890Smrg#define _XLCINT_H_ 721ab64890Smrg 731ab64890Smrg#ifndef _XP_PRINT_SERVER_ 741ab64890Smrg 751ab64890Smrg#include <X11/Xresource.h> 761ab64890Smrg#include <X11/Xutil.h> 771ab64890Smrg#include <stdarg.h> 781ab64890Smrg 791ab64890Smrgtypedef Bool (*XFilterEventProc)( 801ab64890Smrg Display* /* display */, 811ab64890Smrg Window /* window */, 821ab64890Smrg XEvent* /* event */, 831ab64890Smrg XPointer /* client_data */ 841ab64890Smrg); 851ab64890Smrg 861ab64890Smrgtypedef struct _XIMFilter { 871ab64890Smrg struct _XIMFilter *next; 881ab64890Smrg Window window; 891ab64890Smrg unsigned long event_mask; 901ab64890Smrg int start_type, end_type; 911ab64890Smrg XFilterEventProc filter; 921ab64890Smrg XPointer client_data; 931ab64890Smrg} XFilterEventRec, *XFilterEventList; 941ab64890Smrg 951ab64890Smrgtypedef struct { 961ab64890Smrg char *name; 971ab64890Smrg XPointer value; 981ab64890Smrg} XIMArg; 991ab64890Smrg 1001ab64890Smrg#ifdef offsetof 1011ab64890Smrg#define XOffsetOf(s_type,field) offsetof(s_type,field) 1021ab64890Smrg#else 1031ab64890Smrg#define XOffsetOf(s_type,field) ((unsigned int)&(((s_type*)NULL)->field)) 1041ab64890Smrg#endif 1051ab64890Smrg 1061ab64890Smrg#define XIMNumber(arr) ((unsigned int) (sizeof(arr) / sizeof(arr[0]))) 1071ab64890Smrg 1081ab64890Smrg/* 1091ab64890Smrg * define secondary data structs which are part of Input Methods 1101ab64890Smrg * and Input Context 1111ab64890Smrg */ 1121ab64890Smrgtypedef struct { 1131ab64890Smrg const char *resource_name; /* Resource string */ 1141ab64890Smrg XrmQuark xrm_name; /* Resource name quark */ 1151ab64890Smrg int resource_size; /* Size in bytes of data */ 1161ab64890Smrg long resource_offset; /* Offset from base */ 1171ab64890Smrg unsigned short mode; /* Read Write Permission */ 1181ab64890Smrg unsigned short id; /* Input Method Protocol */ 1191ab64890Smrg} XIMResource, *XIMResourceList; 1201ab64890Smrg 1211ab64890Smrg/* 1221ab64890Smrg * data block describing the visual attributes associated with 1231ab64890Smrg * an input context 1241ab64890Smrg */ 1251ab64890Smrgtypedef struct { 1261ab64890Smrg XRectangle area; 1271ab64890Smrg XRectangle area_needed; 1281ab64890Smrg XPoint spot_location; 1291ab64890Smrg Colormap colormap; 1301ab64890Smrg Atom std_colormap; 1311ab64890Smrg unsigned long foreground; 1321ab64890Smrg unsigned long background; 1331ab64890Smrg Pixmap background_pixmap; 1341ab64890Smrg XFontSet fontset; 1351ab64890Smrg int line_spacing; 1361ab64890Smrg Cursor cursor; 1371ab64890Smrg XICCallback start_callback; 1381ab64890Smrg XICCallback done_callback; 1391ab64890Smrg XICCallback draw_callback; 1401ab64890Smrg XICCallback caret_callback; 1411ab64890Smrg XIMPreeditState preedit_state; 1421ab64890Smrg XICCallback state_notify_callback; 1431ab64890Smrg} ICPreeditAttributes, *ICPreeditAttributesPtr; 1441ab64890Smrg 1451ab64890Smrgtypedef struct { 1461ab64890Smrg XRectangle area; 1471ab64890Smrg XRectangle area_needed; 1481ab64890Smrg Colormap colormap; 1491ab64890Smrg Atom std_colormap; 1501ab64890Smrg unsigned long foreground; 1511ab64890Smrg unsigned long background; 1521ab64890Smrg Pixmap background_pixmap; 1531ab64890Smrg XFontSet fontset; 1541ab64890Smrg int line_spacing; 1551ab64890Smrg Cursor cursor; 1561ab64890Smrg XICCallback start_callback; 1571ab64890Smrg XICCallback done_callback; 1581ab64890Smrg XICCallback draw_callback; 1591ab64890Smrg} ICStatusAttributes, *ICStatusAttributesPtr; 1601ab64890Smrg 1611ab64890Smrg#endif /* !_XP_PRINT_SERVER_ */ 1621ab64890Smrg 1631ab64890Smrg/* 1641ab64890Smrg * Methods for Xrm parsing 1651ab64890Smrg */ 1661ab64890Smrg 1671ab64890Smrg/* The state is a pointer to an object created by the locale's 1681ab64890Smrg init_parse_info function (default: _XrmDefaultInitParseInfo). */ 1691ab64890Smrg 1701ab64890Smrg/* Sets the state to the initial state. 1711ab64890Smrg Initiates a sequence of calls to the XmbCharProc. */ 1721ab64890Smrgtypedef void (*XmbInitProc)( 1731ab64890Smrg XPointer state 1741ab64890Smrg); 1751ab64890Smrg 1761ab64890Smrg/* Transforms one multibyte character, starting at str, and return a 'char' 1771ab64890Smrg in the same parsing class (not a wide character!). Returns the number of 1781ab64890Smrg consumed bytes in *lenp. */ 1791ab64890Smrgtypedef char (*XmbCharProc)( 1801ab64890Smrg XPointer state, 1811ab64890Smrg const char * str, 1821ab64890Smrg int* lenp 1831ab64890Smrg); 1841ab64890Smrg 1851ab64890Smrg/* Terminates a sequence of calls to the XmbCharProc. */ 1861ab64890Smrgtypedef void (*XmbFinishProc)( 1871ab64890Smrg XPointer state 1881ab64890Smrg); 1891ab64890Smrg 1901ab64890Smrg/* Returns the name of the state's locale, as a static string. */ 1911ab64890Smrgtypedef const char* (*XlcNameProc)( 1921ab64890Smrg XPointer state 1931ab64890Smrg); 1941ab64890Smrg 1951ab64890Smrg/* Frees the state, which was allocated by the locale's init_parse_info 1961ab64890Smrg function. */ 1971ab64890Smrgtypedef void (*XrmDestroyProc)( 1981ab64890Smrg XPointer state 1991ab64890Smrg); 2001ab64890Smrg 2011ab64890Smrg/* Set of methods for Xrm parsing. */ 2021ab64890Smrgtypedef struct { 2031ab64890Smrg XmbInitProc mbinit; 2041ab64890Smrg XmbCharProc mbchar; 2051ab64890Smrg XmbFinishProc mbfinish; 2061ab64890Smrg XlcNameProc lcname; 2071ab64890Smrg XrmDestroyProc destroy; 2081ab64890Smrg} XrmMethodsRec; 2091ab64890Smrgtypedef const XrmMethodsRec *XrmMethods; 2101ab64890Smrg 2111ab64890Smrg#ifndef _XP_PRINT_SERVER_ 2121ab64890Smrg 2131ab64890Smrgtypedef struct _XLCd *XLCd; /* need forward reference */ 2141ab64890Smrg 2151ab64890Smrg/* 2161ab64890Smrg * define an LC, it's methods, and data. 2171ab64890Smrg */ 2181ab64890Smrg 2191ab64890Smrgtypedef void (*XCloseLCProc)( 2201ab64890Smrg XLCd /* lcd */ 2211ab64890Smrg); 2221ab64890Smrg 2231ab64890Smrgtypedef char* (*XlcMapModifiersProc)( 2241ab64890Smrg XLCd /* lcd */, 2251ab64890Smrg _Xconst char* /* user_mods */, 2261ab64890Smrg _Xconst char* /* prog_mods */ 2271ab64890Smrg); 2281ab64890Smrg 2291ab64890Smrgtypedef XOM (*XOpenOMProc)( 2301ab64890Smrg XLCd /* lcd */, 2311ab64890Smrg Display* /* display */, 2321ab64890Smrg XrmDatabase /* rdb */, 2331ab64890Smrg _Xconst char* /* res_name */, 2341ab64890Smrg _Xconst char* /* res_class */ 2351ab64890Smrg); 2361ab64890Smrg 2371ab64890Smrgtypedef XIM (*XOpenIMProc)( 2381ab64890Smrg XLCd /* lcd */, 2391ab64890Smrg Display* /* display */, 2401ab64890Smrg XrmDatabase /* rdb */, 2411ab64890Smrg char* /* res_name */, 2421ab64890Smrg char* /* res_class */ 2431ab64890Smrg); 2441ab64890Smrg 2451ab64890Smrgtypedef Bool (*XRegisterIMInstantiateCBProc)( 2461ab64890Smrg XLCd /* lcd */, 2471ab64890Smrg Display* /* display */, 2481ab64890Smrg XrmDatabase /* rdb */, 2491ab64890Smrg char* /* res_name */, 2501ab64890Smrg char* /* res_class */, 2511ab64890Smrg XIDProc /* callback */, 2521ab64890Smrg XPointer /* client_data */ 2531ab64890Smrg); 2541ab64890Smrg 2551ab64890Smrgtypedef Bool (*XUnregisterIMInstantiateCBProc)( 2561ab64890Smrg XLCd /* lcd */, 2571ab64890Smrg Display* /* display */, 2581ab64890Smrg XrmDatabase /* rdb */, 2591ab64890Smrg char* /* res_name */, 2601ab64890Smrg char* /* res_class */, 2611ab64890Smrg XIDProc /* callback */, 2621ab64890Smrg XPointer /* client_data */ 2631ab64890Smrg); 2641ab64890Smrg 2651ab64890Smrgtypedef XrmMethods (*XrmInitParseInfoProc)( 2661ab64890Smrg XLCd /* lcd */, 2671ab64890Smrg XPointer* /* state */ 2681ab64890Smrg); 2691ab64890Smrg 2701ab64890Smrgtypedef int (*XmbTextPropertyToTextListProc)( 2711ab64890Smrg XLCd lcd, 2721ab64890Smrg Display* display, 2731ab64890Smrg const XTextProperty* text_prop, 2741ab64890Smrg char*** list_return, 2751ab64890Smrg int* count_return 2761ab64890Smrg); 2771ab64890Smrg 2781ab64890Smrgtypedef int (*XwcTextPropertyToTextListProc)( 2791ab64890Smrg XLCd lcd, 2801ab64890Smrg Display* display, 2811ab64890Smrg const XTextProperty* text_prop, 2821ab64890Smrg wchar_t*** list_return, 2831ab64890Smrg int* count_return 2841ab64890Smrg); 2851ab64890Smrg 2861ab64890Smrgtypedef int (*XmbTextListToTextPropertyProc)( 2871ab64890Smrg XLCd lcd, 2881ab64890Smrg Display* display, 2891ab64890Smrg char** list, 2901ab64890Smrg int count, 2911ab64890Smrg XICCEncodingStyle style, 2921ab64890Smrg XTextProperty* text_prop_return 2931ab64890Smrg); 2941ab64890Smrg 2951ab64890Smrgtypedef int (*XwcTextListToTextPropertyProc)( 2961ab64890Smrg XLCd lcd, 2971ab64890Smrg Display* display, 2981ab64890Smrg wchar_t** list, 2991ab64890Smrg int count, 3001ab64890Smrg XICCEncodingStyle style, 3011ab64890Smrg XTextProperty* text_prop_return 3021ab64890Smrg); 3031ab64890Smrg 3041ab64890Smrgtypedef void (*XwcFreeStringListProc)( 3051ab64890Smrg XLCd lcd, 3061ab64890Smrg wchar_t** list 3071ab64890Smrg); 3081ab64890Smrg 3091ab64890Smrgtypedef const char* (*XDefaultStringProc)( 3101ab64890Smrg XLCd lcd 3111ab64890Smrg); 3121ab64890Smrg 3131ab64890Smrgtypedef struct { 3141ab64890Smrg XCloseLCProc close; 3151ab64890Smrg XlcMapModifiersProc map_modifiers; 3161ab64890Smrg XOpenOMProc open_om; 3171ab64890Smrg XOpenIMProc open_im; 3181ab64890Smrg XrmInitParseInfoProc init_parse_info; 3191ab64890Smrg XmbTextPropertyToTextListProc mb_text_prop_to_list; 3201ab64890Smrg XwcTextPropertyToTextListProc wc_text_prop_to_list; 3211ab64890Smrg XmbTextPropertyToTextListProc utf8_text_prop_to_list; 3221ab64890Smrg XmbTextListToTextPropertyProc mb_text_list_to_prop; 3231ab64890Smrg XwcTextListToTextPropertyProc wc_text_list_to_prop; 3241ab64890Smrg XmbTextListToTextPropertyProc utf8_text_list_to_prop; 3251ab64890Smrg XwcFreeStringListProc wc_free_string_list; 3261ab64890Smrg XDefaultStringProc default_string; 3271ab64890Smrg XRegisterIMInstantiateCBProc register_callback; 3281ab64890Smrg XUnregisterIMInstantiateCBProc unregister_callback; 3291ab64890Smrg} XLCdMethodsRec, *XLCdMethods; 3301ab64890Smrg 3311ab64890Smrg 3321ab64890Smrgtypedef struct { 3331ab64890Smrg char* name; /* name of this LC */ 3341ab64890Smrg char* modifiers; /* modifiers of locale */ 3351ab64890Smrg} XLCdCoreRec, *XLCdCore; 3361ab64890Smrg 3371ab64890Smrg 3381ab64890Smrgtypedef struct _XLCd { 3391ab64890Smrg XLCdMethods methods; /* methods of this LC */ 3401ab64890Smrg XLCdCore core; /* data of this LC */ 3411ab64890Smrg XPointer opaque; /* LDX specific data */ 3421ab64890Smrg} XLCdRec; 3431ab64890Smrg 3441ab64890Smrgtypedef int XlcPosition; 3451ab64890Smrg 3461ab64890Smrg#define XlcHead 0 3471ab64890Smrg#define XlcTail -1 3481ab64890Smrg 3491ab64890Smrgtypedef struct { 3501ab64890Smrg char *name; 3511ab64890Smrg XPointer value; 3521ab64890Smrg} XlcArg, *XlcArgList; 3531ab64890Smrg 3541ab64890Smrgtypedef struct _XlcResource { 3551ab64890Smrg const char *name; 3561ab64890Smrg XrmQuark xrm_name; 3571ab64890Smrg int size; 3581ab64890Smrg int offset; 3591ab64890Smrg unsigned long mask; 3601ab64890Smrg} XlcResource, *XlcResourceList; 3611ab64890Smrg 3621ab64890Smrg#define XlcCreateMask (1L<<0) 3631ab64890Smrg#define XlcDefaultMask (1L<<1) 3641ab64890Smrg#define XlcGetMask (1L<<2) 3651ab64890Smrg#define XlcSetMask (1L<<3) 3661ab64890Smrg#define XlcIgnoreMask (1L<<4) 3671ab64890Smrg 3681ab64890Smrg#define XlcNumber(arr) (sizeof(arr) / sizeof(arr[0])) 3691ab64890Smrg 3701ab64890Smrgtypedef Status (*XCloseOMProc)( 3711ab64890Smrg XOM /* om */ 3721ab64890Smrg); 3731ab64890Smrg 3741ab64890Smrgtypedef char* (*XSetOMValuesProc)( 3751ab64890Smrg XOM /* om */, 3761ab64890Smrg XlcArgList /* args */, 3771ab64890Smrg int /* num_args */ 3781ab64890Smrg); 3791ab64890Smrg 3801ab64890Smrgtypedef char* (*XGetOMValuesProc)( 3811ab64890Smrg XOM /* om */, 3821ab64890Smrg XlcArgList /* args */, 3831ab64890Smrg int /* num_args */ 3841ab64890Smrg); 3851ab64890Smrg 3861ab64890Smrgtypedef XOC (*XCreateOCProc)( 3871ab64890Smrg XOM /* om */, 3881ab64890Smrg XlcArgList /* args */, 3891ab64890Smrg int /* num_args */ 3901ab64890Smrg); 3911ab64890Smrg 3921ab64890Smrgtypedef struct _XOMMethodsRec { 3931ab64890Smrg XCloseOMProc close; 3941ab64890Smrg XSetOMValuesProc set_values; 3951ab64890Smrg XGetOMValuesProc get_values; 3961ab64890Smrg XCreateOCProc create_oc; 3971ab64890Smrg} XOMMethodsRec, *XOMMethods; 3981ab64890Smrg 3991ab64890Smrgtypedef struct _XOMCoreRec { 4001ab64890Smrg XLCd lcd; /* lcd */ 4011ab64890Smrg Display *display; /* display */ 4021ab64890Smrg XrmDatabase rdb; /* database */ 4031ab64890Smrg char *res_name; /* resource name */ 4041ab64890Smrg char *res_class; /* resource class */ 4051ab64890Smrg XOC oc_list; /* xoc list */ 4061ab64890Smrg XlcResourceList resources; /* xom resources */ 4071ab64890Smrg int num_resources; /* number of xom resources */ 4081ab64890Smrg XOMCharSetList required_charset; /* required charset list */ 4091ab64890Smrg XOMOrientation orientation_list; /* orientation list */ 4101ab64890Smrg Bool directional_dependent; /* directional-dependent */ 4111ab64890Smrg Bool contextual_drawing; /* contextual drawing */ 4121ab64890Smrg Bool context_dependent; /* context-dependent drawing */ 4131ab64890Smrg} XOMCoreRec, *XOMCore; 4141ab64890Smrg 4151ab64890Smrgtypedef struct _XOM { 4161ab64890Smrg XOMMethods methods; 4171ab64890Smrg XOMCoreRec core; 4181ab64890Smrg} XOMRec; 4191ab64890Smrg 4201ab64890Smrgtypedef void (*XDestroyOCProc)( 4211ab64890Smrg XOC /* oc */ 4221ab64890Smrg); 4231ab64890Smrg 4241ab64890Smrgtypedef char* (*XSetOCValuesProc)( 4251ab64890Smrg XOC /* oc */, 4261ab64890Smrg XlcArgList /* args */, 4271ab64890Smrg int /* num_args */ 4281ab64890Smrg); 4291ab64890Smrg 4301ab64890Smrgtypedef char* (*XGetOCValuesProc)( 4311ab64890Smrg XOC /* oc */, 4321ab64890Smrg XlcArgList /* args */, 4331ab64890Smrg int /* num_args */ 4341ab64890Smrg); 4351ab64890Smrg 4361ab64890Smrg/* 43761b2299dSmrg * X Font Sets are an instantiable object, so we define it, the 4381ab64890Smrg * object itself, a method list and data 4391ab64890Smrg */ 4401ab64890Smrg 44161b2299dSmrg/* 4421ab64890Smrg * XFontSet object method list 4431ab64890Smrg */ 4441ab64890Smrg 4451ab64890Smrgtypedef int (*XmbTextEscapementProc)( 4461ab64890Smrg XFontSet /* font_set */, 4471ab64890Smrg _Xconst char* /* text */, 4481ab64890Smrg int /* text_len */ 4491ab64890Smrg); 4501ab64890Smrg 4511ab64890Smrgtypedef int (*XmbTextExtentsProc)( 4521ab64890Smrg XFontSet /* font_set */, 4531ab64890Smrg _Xconst char* /* text */, 4541ab64890Smrg int /* text_len */, 4551ab64890Smrg XRectangle* /* overall_ink_extents */, 4561ab64890Smrg XRectangle* /* overall_logical_extents */ 4571ab64890Smrg); 4581ab64890Smrg 4591ab64890Smrgtypedef Status (*XmbTextPerCharExtentsProc)( 4601ab64890Smrg XFontSet /* font_set */, 4611ab64890Smrg _Xconst char* /* text */, 4621ab64890Smrg int /* text_len */, 4631ab64890Smrg XRectangle* /* ink_extents_buffer */, 4641ab64890Smrg XRectangle* /* logical_extents_buffer */, 4651ab64890Smrg int /* buffer_size */, 4661ab64890Smrg int* /* num_chars */, 4671ab64890Smrg XRectangle* /* max_ink_extents */, 4681ab64890Smrg XRectangle* /* max_logical_extents */ 4691ab64890Smrg); 4701ab64890Smrg 4711ab64890Smrgtypedef int (*XmbDrawStringProc)( 4721ab64890Smrg Display* /* display */, 4731ab64890Smrg Drawable /* drawable */, 4741ab64890Smrg XFontSet /* font_set */, 4751ab64890Smrg GC /* gc */, 4761ab64890Smrg int /* x */, 4771ab64890Smrg int /* y */, 4781ab64890Smrg _Xconst char* /* text */, 4791ab64890Smrg int /* text_len */ 4801ab64890Smrg); 4811ab64890Smrg 4821ab64890Smrgtypedef void (*XmbDrawImageStringProc)( 4831ab64890Smrg Display* /* display */, 4841ab64890Smrg Drawable /* drawable */, 4851ab64890Smrg XFontSet /* font_set */, 4861ab64890Smrg GC /* gc */, 4871ab64890Smrg int /* x */, 4881ab64890Smrg int /* y */, 4891ab64890Smrg _Xconst char* /* text */, 4901ab64890Smrg int /* text_len */ 4911ab64890Smrg); 4921ab64890Smrg 4931ab64890Smrgtypedef int (*XwcTextEscapementProc)( 4941ab64890Smrg XFontSet /* font_set */, 4951ab64890Smrg _Xconst wchar_t* /* text */, 4961ab64890Smrg int /* text_len */ 4971ab64890Smrg); 4981ab64890Smrg 4991ab64890Smrgtypedef int (*XwcTextExtentsProc)( 5001ab64890Smrg XFontSet /* font_set */, 5011ab64890Smrg _Xconst wchar_t* /* text */, 5021ab64890Smrg int /* text_len */, 5031ab64890Smrg XRectangle* /* overall_ink_extents */, 5041ab64890Smrg XRectangle* /* overall_logical_extents */ 5051ab64890Smrg); 5061ab64890Smrg 5071ab64890Smrgtypedef Status (*XwcTextPerCharExtentsProc)( 5081ab64890Smrg XFontSet /* font_set */, 5091ab64890Smrg _Xconst wchar_t* /* text */, 5101ab64890Smrg int /* text_len */, 5111ab64890Smrg XRectangle* /* ink_extents_buffer */, 5121ab64890Smrg XRectangle* /* logical_extents_buffer */, 5131ab64890Smrg int /* buffer_size */, 5141ab64890Smrg int* /* num_chars */, 5151ab64890Smrg XRectangle* /* max_ink_extents */, 5161ab64890Smrg XRectangle* /* max_logical_extents */ 5171ab64890Smrg); 5181ab64890Smrg 5191ab64890Smrgtypedef int (*XwcDrawStringProc)( 5201ab64890Smrg Display* /* display */, 5211ab64890Smrg Drawable /* drawable */, 5221ab64890Smrg XFontSet /* font_set */, 5231ab64890Smrg GC /* gc */, 5241ab64890Smrg int /* x */, 5251ab64890Smrg int /* y */, 5261ab64890Smrg _Xconst wchar_t* /* text */, 5271ab64890Smrg int /* text_len */ 5281ab64890Smrg); 5291ab64890Smrg 5301ab64890Smrgtypedef void (*XwcDrawImageStringProc)( 5311ab64890Smrg Display* /* display */, 5321ab64890Smrg Drawable /* drawable */, 5331ab64890Smrg XFontSet /* font_set */, 5341ab64890Smrg GC /* gc */, 5351ab64890Smrg int /* x */, 5361ab64890Smrg int /* y */, 5371ab64890Smrg _Xconst wchar_t* /* text */, 5381ab64890Smrg int /* text_len */ 5391ab64890Smrg); 5401ab64890Smrg 5411ab64890Smrgtypedef struct { 5421ab64890Smrg XDestroyOCProc destroy; 5431ab64890Smrg XSetOCValuesProc set_values; 5441ab64890Smrg XGetOCValuesProc get_values; 5451ab64890Smrg 5461ab64890Smrg /* multi-byte text drawing methods */ 5471ab64890Smrg 5481ab64890Smrg XmbTextEscapementProc mb_escapement; 5491ab64890Smrg XmbTextExtentsProc mb_extents; 5501ab64890Smrg XmbTextPerCharExtentsProc mb_extents_per_char; 5511ab64890Smrg XmbDrawStringProc mb_draw_string; 5521ab64890Smrg XmbDrawImageStringProc mb_draw_image_string; 5531ab64890Smrg 5541ab64890Smrg /* wide character text drawing methods */ 5551ab64890Smrg 5561ab64890Smrg XwcTextEscapementProc wc_escapement; 5571ab64890Smrg XwcTextExtentsProc wc_extents; 5581ab64890Smrg XwcTextPerCharExtentsProc wc_extents_per_char; 5591ab64890Smrg XwcDrawStringProc wc_draw_string; 5601ab64890Smrg XwcDrawImageStringProc wc_draw_image_string; 5611ab64890Smrg 5621ab64890Smrg /* UTF-8 text drawing methods */ 5631ab64890Smrg 5641ab64890Smrg XmbTextEscapementProc utf8_escapement; 5651ab64890Smrg XmbTextExtentsProc utf8_extents; 5661ab64890Smrg XmbTextPerCharExtentsProc utf8_extents_per_char; 5671ab64890Smrg XmbDrawStringProc utf8_draw_string; 5681ab64890Smrg XmbDrawImageStringProc utf8_draw_image_string; 5691ab64890Smrg} XOCMethodsRec, *XOCMethods; 5701ab64890Smrg 5711ab64890Smrg 5721ab64890Smrg/* 5731ab64890Smrg * XOC independent data 5741ab64890Smrg */ 5751ab64890Smrg 5761ab64890Smrgtypedef struct { 5771ab64890Smrg XOM om; /* XOM */ 5781ab64890Smrg XOC next; /* next XOC */ 5791ab64890Smrg XlcResourceList resources; /* xoc resources */ 5801ab64890Smrg int num_resources; /* number of xoc resources */ 5811ab64890Smrg char *base_name_list; /* base font name list */ 5821ab64890Smrg Bool om_automatic; /* OM Automatic */ 5831ab64890Smrg XOMFontInfo font_info; /* font info */ 5841ab64890Smrg XFontSetExtents font_set_extents; /* font set extents */ 5851ab64890Smrg char *default_string; /* default string */ 5861ab64890Smrg XOMCharSetList missing_list; /* missing charset list */ 5871ab64890Smrg XOrientation orientation; /* orientation */ 5881ab64890Smrg char *res_name; /* resource name */ 5891ab64890Smrg char *res_class; /* resource class */ 5901ab64890Smrg} XOCCoreRec, *XOCCore; 5911ab64890Smrg 5921ab64890Smrgtypedef struct _XOC { 5931ab64890Smrg XOCMethods methods; 5941ab64890Smrg XOCCoreRec core; 5951ab64890Smrg} XOCRec; 5961ab64890Smrg 5971ab64890Smrg 5981ab64890Smrg/* 59961b2299dSmrg * X Input Managers are an instantiable object, so we define it, the 6001ab64890Smrg * object itself, a method list and data. 6011ab64890Smrg */ 6021ab64890Smrg 6031ab64890Smrg/* 6041ab64890Smrg * an Input Manager object method list 6051ab64890Smrg */ 6061ab64890Smrgtypedef struct { 6071ab64890Smrg Status (*close)( 6081ab64890Smrg XIM 6091ab64890Smrg ); 6101ab64890Smrg char* (*set_values)( 6111ab64890Smrg XIM, XIMArg* 6121ab64890Smrg ); 6131ab64890Smrg char* (*get_values)( 6141ab64890Smrg XIM, XIMArg* 6151ab64890Smrg ); 6161ab64890Smrg XIC (*create_ic)( 6171ab64890Smrg XIM, XIMArg* 6181ab64890Smrg ); 6191ab64890Smrg int (*ctstombs)( 6201ab64890Smrg XIM, char*, int, char*, int, Status * 6211ab64890Smrg ); 6221ab64890Smrg int (*ctstowcs)( 6231ab64890Smrg XIM, char*, int, wchar_t*, int, Status * 6241ab64890Smrg ); 6251ab64890Smrg int (*ctstoutf8)( 6261ab64890Smrg XIM, char*, int, char*, int, Status * 6271ab64890Smrg ); 6281ab64890Smrg} XIMMethodsRec, *XIMMethods; 6291ab64890Smrg 6301ab64890Smrg/* 6311ab64890Smrg * Input Manager LC independent data 6321ab64890Smrg */ 6331ab64890Smrgtypedef struct { 6341ab64890Smrg XLCd lcd; /* LC of this input method */ 6351ab64890Smrg XIC ic_chain; /* list of ICs for this IM */ 6361ab64890Smrg 6371ab64890Smrg Display * display; /* display */ 6381ab64890Smrg XrmDatabase rdb; 6391ab64890Smrg char * res_name; 6401ab64890Smrg char * res_class; 6411ab64890Smrg 6421ab64890Smrg XIMValuesList *im_values_list; 6431ab64890Smrg XIMValuesList *ic_values_list; 6441ab64890Smrg XIMStyles *styles; 6451ab64890Smrg XIMCallback destroy_callback; 6461ab64890Smrg char * im_name; /* XIMMODIFIER name */ 6471ab64890Smrg XIMResourceList im_resources; /* compiled IM resource list */ 6481ab64890Smrg unsigned int im_num_resources; 6491ab64890Smrg XIMResourceList ic_resources; /* compiled IC resource list */ 6501ab64890Smrg unsigned int ic_num_resources; 6511ab64890Smrg Bool visible_position; 6521ab64890Smrg} XIMCoreRec, *XIMCore; 6531ab64890Smrg 6541ab64890Smrg 6551ab64890Smrg 6561ab64890Smrg/* 65761b2299dSmrg * An X Input Manager (IM). Implementations may need to extend this data 6589c019ec5Smaya * structure to accommodate additional data, state information etc. 6591ab64890Smrg */ 6601ab64890Smrgtypedef struct _XIM { 6611ab64890Smrg XIMMethods methods; /* method list of this IM */ 6621ab64890Smrg XIMCoreRec core; /* data of this IM */ 6631ab64890Smrg} XIMRec; 6641ab64890Smrg 6651ab64890Smrg 6661ab64890Smrg 6671ab64890Smrg/* 66861b2299dSmrg * X Input Contexts (IC) are an instantiable object, so we define it, the 6691ab64890Smrg * object itself, a method list and data for this object 6701ab64890Smrg */ 6711ab64890Smrg 6721ab64890Smrg/* 6731ab64890Smrg * Input Context method list 67461b2299dSmrg */ 6751ab64890Smrgtypedef struct { 6761ab64890Smrg void (*destroy)( 6771ab64890Smrg XIC 6781ab64890Smrg ); 6791ab64890Smrg void (*set_focus)( 6801ab64890Smrg XIC 6811ab64890Smrg ); 6821ab64890Smrg void (*unset_focus)( 6831ab64890Smrg XIC 6841ab64890Smrg ); 6851ab64890Smrg char* (*set_values)( 6861ab64890Smrg XIC, XIMArg* 6871ab64890Smrg ); 6881ab64890Smrg char* (*get_values)( 6891ab64890Smrg XIC, XIMArg* 6901ab64890Smrg ); 6911ab64890Smrg char* (*mb_reset)( 6921ab64890Smrg XIC 6931ab64890Smrg ); 6941ab64890Smrg wchar_t* (*wc_reset)( 6951ab64890Smrg XIC 6961ab64890Smrg ); 6971ab64890Smrg char* (*utf8_reset)( 6981ab64890Smrg XIC 6991ab64890Smrg ); 7001ab64890Smrg int (*mb_lookup_string)( 7011ab64890Smrg XIC, XKeyEvent*, char*, int, KeySym*, Status* 7021ab64890Smrg ); 7031ab64890Smrg int (*wc_lookup_string)( 7041ab64890Smrg XIC, XKeyEvent*, wchar_t*, int, KeySym*, Status* 7051ab64890Smrg ); 7061ab64890Smrg int (*utf8_lookup_string)( 7071ab64890Smrg XIC, XKeyEvent*, char*, int, KeySym*, Status* 7081ab64890Smrg ); 7091ab64890Smrg} XICMethodsRec, *XICMethods; 7101ab64890Smrg 7111ab64890Smrg 7121ab64890Smrg/* 7131ab64890Smrg * Input Context LC independent data 7141ab64890Smrg */ 7151ab64890Smrgtypedef struct { 7161ab64890Smrg XIM im; /* XIM this IC belongs too */ 7171ab64890Smrg XIC next; /* linked list of ICs for IM */ 7181ab64890Smrg 7191ab64890Smrg Window client_window; /* window IM can use for */ 7201ab64890Smrg /* display or subwindows */ 7211ab64890Smrg XIMStyle input_style; /* IM's input style */ 7221ab64890Smrg Window focus_window; /* where key events go */ 7231ab64890Smrg unsigned long filter_events; /* event mask from IM */ 7241ab64890Smrg XICCallback geometry_callback; /* client callback */ 7251ab64890Smrg char * res_name; 7261ab64890Smrg char * res_class; 7271ab64890Smrg 7281ab64890Smrg XICCallback destroy_callback; 7291ab64890Smrg XICCallback string_conversion_callback; 7301ab64890Smrg XIMStringConversionText string_conversion; 7311ab64890Smrg XIMResetState reset_state; 7321ab64890Smrg XIMHotKeyTriggers *hotkey; 7331ab64890Smrg XIMHotKeyState hotkey_state; 7341ab64890Smrg 7351ab64890Smrg ICPreeditAttributes preedit_attr; /* visuals of preedit area */ 7361ab64890Smrg ICStatusAttributes status_attr; /* visuals of status area */ 7371ab64890Smrg} XICCoreRec, *XICCore; 7381ab64890Smrg 7391ab64890Smrg 7401ab64890Smrg/* 74161b2299dSmrg * an Input Context. Implementations may need to extend this data 7429c019ec5Smaya * structure to accommodate additional data, state information etc. 7431ab64890Smrg */ 7441ab64890Smrgtypedef struct _XIC { 7451ab64890Smrg XICMethods methods; /* method list of this IC */ 7461ab64890Smrg XICCoreRec core; /* data of this IC */ 7471ab64890Smrg} XICRec; 7481ab64890Smrg 7491ab64890Smrg 7501ab64890Smrg/* If the argument 'name' is appropriate for this loader, it instantiates an 7511ab64890Smrg XLCd object with appropriate locale methods and returns it. May return 7521ab64890Smrg NULL; in this case, the remaining loaders are tried. */ 7531ab64890Smrgtypedef XLCd (*XLCdLoadProc)( 7541ab64890Smrg const char* name 7551ab64890Smrg); 7561ab64890Smrg 7571ab64890Smrg_XFUNCPROTOBEGIN 7581ab64890Smrg 7591ab64890Smrgextern XLCd _XOpenLC( 7601ab64890Smrg char* name 7611ab64890Smrg); 7621ab64890Smrg 7631ab64890Smrgextern void _XCloseLC( 7641ab64890Smrg XLCd lcd 7651ab64890Smrg); 7661ab64890Smrg 7671ab64890Smrgextern XLCd _XlcCurrentLC (void); 7681ab64890Smrg 7691ab64890Smrgextern Bool _XlcValidModSyntax( 7701ab64890Smrg const char* mods, 7711ab64890Smrg const char* const * valid 7721ab64890Smrg); 7731ab64890Smrg 7741ab64890Smrgextern char *_XlcDefaultMapModifiers( 7751ab64890Smrg XLCd lcd, 7761ab64890Smrg _Xconst char* user_mods, 7771ab64890Smrg _Xconst char* prog_mods 7781ab64890Smrg); 7791ab64890Smrg 7801ab64890Smrgextern void _XIMCompileResourceList( 7811ab64890Smrg XIMResourceList /* res */, 7821ab64890Smrg unsigned int /* num_res */ 7831ab64890Smrg); 7841ab64890Smrg 7851ab64890Smrgextern void _XCopyToArg( 7861ab64890Smrg XPointer /* src */, 7871ab64890Smrg XPointer* /* dst */, 7881ab64890Smrg unsigned int /* size */ 7891ab64890Smrg); 7901ab64890Smrg 7911ab64890Smrgextern char ** _XParseBaseFontNameList( 7921ab64890Smrg char* /* str */, 7931ab64890Smrg int* /* num */ 7941ab64890Smrg); 7951ab64890Smrg 7961ab64890Smrgextern XrmMethods _XrmInitParseInfo( 7971ab64890Smrg XPointer* statep 7981ab64890Smrg); 7991ab64890Smrg 8001ab64890Smrgextern void _XRegisterFilterByMask( 8011ab64890Smrg Display* /* dpy */, 8021ab64890Smrg Window /* window */, 8031ab64890Smrg unsigned long /* event_mask */, 8041ab64890Smrg Bool (*)( 8051ab64890Smrg Display* /* display */, 8061ab64890Smrg Window /* window */, 8071ab64890Smrg XEvent* /* event */, 8081ab64890Smrg XPointer /* client_data */ 8091ab64890Smrg ) /* filter */, 8101ab64890Smrg XPointer /* client_data */ 8111ab64890Smrg); 8121ab64890Smrg 8131ab64890Smrgextern void _XRegisterFilterByType( 8141ab64890Smrg Display* /* dpy */, 8151ab64890Smrg Window /* window */, 8161ab64890Smrg int /* start_type */, 8171ab64890Smrg int /* end_type */, 8181ab64890Smrg Bool (*)( 8191ab64890Smrg Display* /* display */, 8201ab64890Smrg Window /* window */, 8211ab64890Smrg XEvent* /* event */, 8221ab64890Smrg XPointer /* client_data */ 8231ab64890Smrg ) /* filter */, 8241ab64890Smrg XPointer /* client_data */ 8251ab64890Smrg); 8261ab64890Smrg 8271ab64890Smrgextern void _XUnregisterFilter( 8281ab64890Smrg Display* /* dpy */, 8291ab64890Smrg Window /* window */, 8301ab64890Smrg Bool (*)( 8311ab64890Smrg Display* /* display */, 8321ab64890Smrg Window /* window */, 8331ab64890Smrg XEvent* /* event */, 8341ab64890Smrg XPointer /* client_data */ 8351ab64890Smrg ) /* filter */, 8361ab64890Smrg XPointer /* client_data */ 8371ab64890Smrg); 8381ab64890Smrg 8391ab64890Smrgextern void _XlcCountVaList( 8401ab64890Smrg va_list var, 8411ab64890Smrg int* count_return 8421ab64890Smrg); 8431ab64890Smrg 8441ab64890Smrgextern void _XlcVaToArgList( 8451ab64890Smrg va_list var, 8461ab64890Smrg int count, 8471ab64890Smrg XlcArgList* args_return 8481ab64890Smrg); 8491ab64890Smrg 8501ab64890Smrg 8511ab64890Smrgextern void _XlcCopyFromArg( 8521ab64890Smrg char * src, 8531ab64890Smrg char * dst, 8541ab64890Smrg int size 8551ab64890Smrg); 8561ab64890Smrg 8571ab64890Smrgextern void _XlcCopyToArg( 8581ab64890Smrg char * src, 8591ab64890Smrg char ** dst, 8601ab64890Smrg int size 8611ab64890Smrg); 8621ab64890Smrg 8631ab64890Smrgextern void _XlcCompileResourceList( 8641ab64890Smrg XlcResourceList resources, 8651ab64890Smrg int num_resources 8661ab64890Smrg); 8671ab64890Smrg 8681ab64890Smrgextern char *_XlcGetValues( 8691ab64890Smrg XPointer base, 8701ab64890Smrg XlcResourceList resources, 8711ab64890Smrg int num_resources, 8721ab64890Smrg XlcArgList args, 8731ab64890Smrg int num_args, 8741ab64890Smrg unsigned long mask 8751ab64890Smrg); 8761ab64890Smrg 8771ab64890Smrgextern char *_XlcSetValues( 8781ab64890Smrg XPointer base, 8791ab64890Smrg XlcResourceList resources, 8801ab64890Smrg int num_resources, 8811ab64890Smrg XlcArgList args, 8821ab64890Smrg int num_args, 8831ab64890Smrg unsigned long mask 8841ab64890Smrg); 8851ab64890Smrg 8861ab64890Smrg/* documented in i18n/Framework.PS */ 8871ab64890Smrgextern void _XlcInitLoader (void); 8881ab64890Smrg 8891ab64890Smrgextern void _XlcDeInitLoader (void); 8901ab64890Smrg 8911ab64890Smrg/* documented in i18n/Framework.PS */ 8921ab64890Smrg/* Returns True on success, False on failure. */ 8931ab64890Smrgextern Bool _XlcAddLoader( 8941ab64890Smrg XLCdLoadProc proc, 8951ab64890Smrg XlcPosition position 8961ab64890Smrg); 8971ab64890Smrg 8981ab64890Smrg/* documented in i18n/Framework.PS */ 8991ab64890Smrgextern void _XlcRemoveLoader( 9001ab64890Smrg XLCdLoadProc proc 9011ab64890Smrg); 9021ab64890Smrg 9031ab64890Smrg/* Registers UTF-8 converters for a non-UTF-8 locale. */ 9041ab64890Smrgextern void _XlcAddUtf8Converters( 9051ab64890Smrg XLCd lcd 9061ab64890Smrg); 9071ab64890Smrg 9081ab64890Smrg/* Registers UTF-8 converters for a UTF-8 locale. */ 9091ab64890Smrgextern void _XlcAddUtf8LocaleConverters( 9101ab64890Smrg XLCd lcd 9111ab64890Smrg); 9121ab64890Smrg 91361b2299dSmrg/* Registers GB18030 converters for a GB18030 locale. */ 91461b2299dSmrgextern void _XlcAddGB18030LocaleConverters( 91561b2299dSmrg XLCd lcd 91661b2299dSmrg); 91761b2299dSmrg 9181ab64890Smrg/* The default locale loader. Assumes an ASCII encoding. */ 9191ab64890Smrgextern XLCd _XlcDefaultLoader( 9201ab64890Smrg const char* name 9211ab64890Smrg); 9221ab64890Smrg 9231ab64890Smrg/* The generic locale loader. Suitable for all encodings except UTF-8. 9241ab64890Smrg Uses an XLC_LOCALE configuration file. */ 9251ab64890Smrgextern XLCd _XlcGenericLoader( 9261ab64890Smrg const char* name 9271ab64890Smrg); 9281ab64890Smrg 9291ab64890Smrg/* The UTF-8 locale loader. Suitable for UTF-8 encoding. 9301ab64890Smrg Uses an XLC_LOCALE configuration file. */ 9311ab64890Smrgextern XLCd _XlcUtf8Loader( 9321ab64890Smrg const char* name 9331ab64890Smrg); 9341ab64890Smrg 9351ab64890Smrgextern XLCd _XlcDynamicLoad( 9361ab64890Smrg const char* name 9371ab64890Smrg); 9381ab64890Smrg 9391ab64890Smrg/* The old dynamic loader. */ 9401ab64890Smrgextern XLCd _XlcDynamicLoader( 9411ab64890Smrg const char* name 9421ab64890Smrg); 9431ab64890Smrg 9441ab64890Smrgextern Bool _XInitDefaultIM( 9451ab64890Smrg XLCd lcd 9461ab64890Smrg); 9471ab64890Smrg 9481ab64890Smrgextern Bool _XInitDefaultOM( 9491ab64890Smrg XLCd lcd 9501ab64890Smrg); 9511ab64890Smrg 9521ab64890Smrgextern Bool _XInitDynamicIM( 9531ab64890Smrg XLCd lcd 9541ab64890Smrg); 9551ab64890Smrg 9561ab64890Smrgextern Bool _XInitDynamicOM( 9571ab64890Smrg XLCd lcd 9581ab64890Smrg); 9591ab64890Smrg 9601ab64890Smrg_XFUNCPROTOEND 9611ab64890Smrg 9621ab64890Smrg#endif /* !_XP_PRINT_SERVER_ */ 9631ab64890Smrg 9641ab64890Smrg#endif /* _XLCINT_H_ */ 965