#ifndef _XLCINT_H_
#define _XLCINT_H_
#ifndef _XP_PRINT_SERVER_
#include <X11/Xresource.h>
#include <X11/Xutil.h>
#include <stdarg.h>
typedef Bool (*XFilterEventProc)(
Display* ,
Window ,
XEvent* ,
XPointer
);
typedef struct _XIMFilter {
struct _XIMFilter *next;
Window window;
unsigned long event_mask;
int start_type, end_type;
XFilterEventProc filter;
XPointer client_data;
} XFilterEventRec, *XFilterEventList;
typedef struct {
char *name;
XPointer value;
} XIMArg;
#ifdef offsetof
#define XOffsetOf(s_type,field) offsetof(s_type,field)
#else
#define XOffsetOf(s_type,field) ((unsigned int)&(((s_type*)NULL)->field))
#endif
#define XIMNumber(arr) ((unsigned int) (sizeof(arr) / sizeof(arr[0])))
typedef struct {
const char *resource_name;
XrmQuark xrm_name;
int resource_size;
long resource_offset;
unsigned short mode;
unsigned short id;
} XIMResource, *XIMResourceList;
typedef struct {
XRectangle area;
XRectangle area_needed;
XPoint spot_location;
Colormap colormap;
Atom std_colormap;
unsigned long foreground;
unsigned long background;
Pixmap background_pixmap;
XFontSet fontset;
int line_spacing;
Cursor cursor;
XICCallback start_callback;
XICCallback done_callback;
XICCallback draw_callback;
XICCallback caret_callback;
XIMPreeditState preedit_state;
XICCallback state_notify_callback;
} ICPreeditAttributes, *ICPreeditAttributesPtr;
typedef struct {
XRectangle area;
XRectangle area_needed;
Colormap colormap;
Atom std_colormap;
unsigned long foreground;
unsigned long background;
Pixmap background_pixmap;
XFontSet fontset;
int line_spacing;
Cursor cursor;
XICCallback start_callback;
XICCallback done_callback;
XICCallback draw_callback;
} ICStatusAttributes, *ICStatusAttributesPtr;
#endif
typedef void (*XmbInitProc)(
XPointer state
);
typedef char (*XmbCharProc)(
XPointer state,
const char * str,
int* lenp
);
typedef void (*XmbFinishProc)(
XPointer state
);
typedef const char* (*XlcNameProc)(
XPointer state
);
typedef void (*XrmDestroyProc)(
XPointer state
);
typedef struct {
XmbInitProc mbinit;
XmbCharProc mbchar;
XmbFinishProc mbfinish;
XlcNameProc lcname;
XrmDestroyProc destroy;
} XrmMethodsRec;
typedef const XrmMethodsRec *XrmMethods;
#ifndef _XP_PRINT_SERVER_
typedef struct _XLCd *XLCd;
typedef void (*XCloseLCProc)(
XLCd
);
typedef char* (*XlcMapModifiersProc)(
XLCd ,
_Xconst char* ,
_Xconst char*
);
typedef XOM (*XOpenOMProc)(
XLCd ,
Display* ,
XrmDatabase ,
_Xconst char* ,
_Xconst char*
);
typedef XIM (*XOpenIMProc)(
XLCd ,
Display* ,
XrmDatabase ,
char* ,
char*
);
typedef Bool (*XRegisterIMInstantiateCBProc)(
XLCd ,
Display* ,
XrmDatabase ,
char* ,
char* ,
XIDProc ,
XPointer
);
typedef Bool (*XUnregisterIMInstantiateCBProc)(
XLCd ,
Display* ,
XrmDatabase ,
char* ,
char* ,
XIDProc ,
XPointer
);
typedef XrmMethods (*XrmInitParseInfoProc)(
XLCd ,
XPointer*
);
typedef int (*XmbTextPropertyToTextListProc)(
XLCd lcd,
Display* display,
const XTextProperty* text_prop,
char*** list_return,
int* count_return
);
typedef int (*XwcTextPropertyToTextListProc)(
XLCd lcd,
Display* display,
const XTextProperty* text_prop,
wchar_t*** list_return,
int* count_return
);
typedef int (*XmbTextListToTextPropertyProc)(
XLCd lcd,
Display* display,
char** list,
int count,
XICCEncodingStyle style,
XTextProperty* text_prop_return
);
typedef int (*XwcTextListToTextPropertyProc)(
XLCd lcd,
Display* display,
wchar_t** list,
int count,
XICCEncodingStyle style,
XTextProperty* text_prop_return
);
typedef void (*XwcFreeStringListProc)(
XLCd lcd,
wchar_t** list
);
typedef const char* (*XDefaultStringProc)(
XLCd lcd
);
typedef struct {
XCloseLCProc close;
XlcMapModifiersProc map_modifiers;
XOpenOMProc open_om;
XOpenIMProc open_im;
XrmInitParseInfoProc init_parse_info;
XmbTextPropertyToTextListProc mb_text_prop_to_list;
XwcTextPropertyToTextListProc wc_text_prop_to_list;
XmbTextPropertyToTextListProc utf8_text_prop_to_list;
XmbTextListToTextPropertyProc mb_text_list_to_prop;
XwcTextListToTextPropertyProc wc_text_list_to_prop;
XmbTextListToTextPropertyProc utf8_text_list_to_prop;
XwcFreeStringListProc wc_free_string_list;
XDefaultStringProc default_string;
XRegisterIMInstantiateCBProc register_callback;
XUnregisterIMInstantiateCBProc unregister_callback;
} XLCdMethodsRec, *XLCdMethods;
typedef struct {
char* name;
char* modifiers;
} XLCdCoreRec, *XLCdCore;
typedef struct _XLCd {
XLCdMethods methods;
XLCdCore core;
XPointer opaque;
} XLCdRec;
typedef int XlcPosition;
#define XlcHead 0
#define XlcTail -1
typedef struct {
char *name;
XPointer value;
} XlcArg, *XlcArgList;
typedef struct _XlcResource {
const char *name;
XrmQuark xrm_name;
int size;
int offset;
unsigned long mask;
} XlcResource, *XlcResourceList;
#define XlcCreateMask (1L<<0)
#define XlcDefaultMask (1L<<1)
#define XlcGetMask (1L<<2)
#define XlcSetMask (1L<<3)
#define XlcIgnoreMask (1L<<4)
#define XlcNumber(arr) (sizeof(arr) / sizeof(arr[0]))
typedef Status (*XCloseOMProc)(
XOM
);
typedef char* (*XSetOMValuesProc)(
XOM ,
XlcArgList ,
int
);
typedef char* (*XGetOMValuesProc)(
XOM ,
XlcArgList ,
int
);
typedef XOC (*XCreateOCProc)(
XOM ,
XlcArgList ,
int
);
typedef struct _XOMMethodsRec {
XCloseOMProc close;
XSetOMValuesProc set_values;
XGetOMValuesProc get_values;
XCreateOCProc create_oc;
} XOMMethodsRec, *XOMMethods;
typedef struct _XOMCoreRec {
XLCd lcd;
Display *display;
XrmDatabase rdb;
char *res_name;
char *res_class;
XOC oc_list;
XlcResourceList resources;
int num_resources;
XOMCharSetList required_charset;
XOMOrientation orientation_list;
Bool directional_dependent;
Bool contextual_drawing;
Bool context_dependent;
} XOMCoreRec, *XOMCore;
typedef struct _XOM {
XOMMethods methods;
XOMCoreRec core;
} XOMRec;
typedef void (*XDestroyOCProc)(
XOC
);
typedef char* (*XSetOCValuesProc)(
XOC ,
XlcArgList ,
int
);
typedef char* (*XGetOCValuesProc)(
XOC ,
XlcArgList ,
int
);
typedef int (*XmbTextEscapementProc)(
XFontSet ,
_Xconst char* ,
int
);
typedef int (*XmbTextExtentsProc)(
XFontSet ,
_Xconst char* ,
int ,
XRectangle* ,
XRectangle*
);
typedef Status (*XmbTextPerCharExtentsProc)(
XFontSet ,
_Xconst char* ,
int ,
XRectangle* ,
XRectangle* ,
int ,
int* ,
XRectangle* ,
XRectangle*
);
typedef int (*XmbDrawStringProc)(
Display* ,
Drawable ,
XFontSet ,
GC ,
int ,
int ,
_Xconst char* ,
int
);
typedef void (*XmbDrawImageStringProc)(
Display* ,
Drawable ,
XFontSet ,
GC ,
int ,
int ,
_Xconst char* ,
int
);
typedef int (*XwcTextEscapementProc)(
XFontSet ,
_Xconst wchar_t* ,
int
);
typedef int (*XwcTextExtentsProc)(
XFontSet ,
_Xconst wchar_t* ,
int ,
XRectangle* ,
XRectangle*
);
typedef Status (*XwcTextPerCharExtentsProc)(
XFontSet ,
_Xconst wchar_t* ,
int ,
XRectangle* ,
XRectangle* ,
int ,
int* ,
XRectangle* ,
XRectangle*
);
typedef int (*XwcDrawStringProc)(
Display* ,
Drawable ,
XFontSet ,
GC ,
int ,
int ,
_Xconst wchar_t* ,
int
);
typedef void (*XwcDrawImageStringProc)(
Display* ,
Drawable ,
XFontSet ,
GC ,
int ,
int ,
_Xconst wchar_t* ,
int
);
typedef struct {
XDestroyOCProc destroy;
XSetOCValuesProc set_values;
XGetOCValuesProc get_values;
XmbTextEscapementProc mb_escapement;
XmbTextExtentsProc mb_extents;
XmbTextPerCharExtentsProc mb_extents_per_char;
XmbDrawStringProc mb_draw_string;
XmbDrawImageStringProc mb_draw_image_string;
XwcTextEscapementProc wc_escapement;
XwcTextExtentsProc wc_extents;
XwcTextPerCharExtentsProc wc_extents_per_char;
XwcDrawStringProc wc_draw_string;
XwcDrawImageStringProc wc_draw_image_string;
XmbTextEscapementProc utf8_escapement;
XmbTextExtentsProc utf8_extents;
XmbTextPerCharExtentsProc utf8_extents_per_char;
XmbDrawStringProc utf8_draw_string;
XmbDrawImageStringProc utf8_draw_image_string;
} XOCMethodsRec, *XOCMethods;
typedef struct {
XOM om;
XOC next;
XlcResourceList resources;
int num_resources;
char *base_name_list;
Bool om_automatic;
XOMFontInfo font_info;
XFontSetExtents font_set_extents;
char *default_string;
XOMCharSetList missing_list;
XOrientation orientation;
char *res_name;
char *res_class;
} XOCCoreRec, *XOCCore;
typedef struct _XOC {
XOCMethods methods;
XOCCoreRec core;
} XOCRec;
typedef struct {
Status (*close)(
XIM
);
char* (*set_values)(
XIM, XIMArg*
);
char* (*get_values)(
XIM, XIMArg*
);
XIC (*create_ic)(
XIM, XIMArg*
);
int (*ctstombs)(
XIM, char*, int, char*, int, Status *
);
int (*ctstowcs)(
XIM, char*, int, wchar_t*, int, Status *
);
int (*ctstoutf8)(
XIM, char*, int, char*, int, Status *
);
} XIMMethodsRec, *XIMMethods;
typedef struct {
XLCd lcd;
XIC ic_chain;
Display * display;
XrmDatabase rdb;
char * res_name;
char * res_class;
XIMValuesList *im_values_list;
XIMValuesList *ic_values_list;
XIMStyles *styles;
XIMCallback destroy_callback;
char * im_name;
XIMResourceList im_resources;
unsigned int im_num_resources;
XIMResourceList ic_resources;
unsigned int ic_num_resources;
Bool visible_position;
} XIMCoreRec, *XIMCore;
typedef struct _XIM {
XIMMethods methods;
XIMCoreRec core;
} XIMRec;
typedef struct {
void (*destroy)(
XIC
);
void (*set_focus)(
XIC
);
void (*unset_focus)(
XIC
);
char* (*set_values)(
XIC, XIMArg*
);
char* (*get_values)(
XIC, XIMArg*
);
char* (*mb_reset)(
XIC
);
wchar_t* (*wc_reset)(
XIC
);
char* (*utf8_reset)(
XIC
);
int (*mb_lookup_string)(
XIC, XKeyEvent*, char*, int, KeySym*, Status*
);
int (*wc_lookup_string)(
XIC, XKeyEvent*, wchar_t*, int, KeySym*, Status*
);
int (*utf8_lookup_string)(
XIC, XKeyEvent*, char*, int, KeySym*, Status*
);
} XICMethodsRec, *XICMethods;
typedef struct {
XIM im;
XIC next;
Window client_window;
XIMStyle input_style;
Window focus_window;
unsigned long filter_events;
XICCallback geometry_callback;
char * res_name;
char * res_class;
XICCallback destroy_callback;
XICCallback string_conversion_callback;
XIMStringConversionText string_conversion;
XIMResetState reset_state;
XIMHotKeyTriggers *hotkey;
XIMHotKeyState hotkey_state;
ICPreeditAttributes preedit_attr;
ICStatusAttributes status_attr;
} XICCoreRec, *XICCore;
typedef struct _XIC {
XICMethods methods;
XICCoreRec core;
} XICRec;
typedef XLCd (*XLCdLoadProc)(
const char* name
);
_XFUNCPROTOBEGIN
extern XLCd _XOpenLC(
char* name
);
extern void _XCloseLC(
XLCd lcd
);
extern XLCd _XlcCurrentLC (void);
extern Bool _XlcValidModSyntax(
const char* mods,
const char* const * valid
);
extern char *_XlcDefaultMapModifiers(
XLCd lcd,
_Xconst char* user_mods,
_Xconst char* prog_mods
);
extern void _XIMCompileResourceList(
XIMResourceList ,
unsigned int
);
extern void _XCopyToArg(
XPointer ,
XPointer* ,
unsigned int
);
extern char ** _XParseBaseFontNameList(
char* ,
int*
);
extern XrmMethods _XrmInitParseInfo(
XPointer* statep
);
extern void _XRegisterFilterByMask(
Display* ,
Window ,
unsigned long ,
Bool (*)(
Display* ,
Window ,
XEvent* ,
XPointer
) ,
XPointer
);
extern void _XRegisterFilterByType(
Display* ,
Window ,
int ,
int ,
Bool (*)(
Display* ,
Window ,
XEvent* ,
XPointer
) ,
XPointer
);
extern void _XUnregisterFilter(
Display* ,
Window ,
Bool (*)(
Display* ,
Window ,
XEvent* ,
XPointer
) ,
XPointer
);
extern void _XlcCountVaList(
va_list var,
int* count_return
);
extern void _XlcVaToArgList(
va_list var,
int count,
XlcArgList* args_return
);
extern void _XlcCopyFromArg(
char * src,
char * dst,
int size
);
extern void _XlcCopyToArg(
char * src,
char ** dst,
int size
);
extern void _XlcCompileResourceList(
XlcResourceList resources,
int num_resources
);
extern char *_XlcGetValues(
XPointer base,
XlcResourceList resources,
int num_resources,
XlcArgList args,
int num_args,
unsigned long mask
);
extern char *_XlcSetValues(
XPointer base,
XlcResourceList resources,
int num_resources,
XlcArgList args,
int num_args,
unsigned long mask
);
extern void _XlcInitLoader (void);
extern void _XlcDeInitLoader (void);
extern Bool _XlcAddLoader(
XLCdLoadProc proc,
XlcPosition position
);
extern void _XlcRemoveLoader(
XLCdLoadProc proc
);
extern void _XlcAddUtf8Converters(
XLCd lcd
);
extern void _XlcAddUtf8LocaleConverters(
XLCd lcd
);
extern XLCd _XlcDefaultLoader(
const char* name
);
extern XLCd _XlcGenericLoader(
const char* name
);
extern XLCd _XlcUtf8Loader(
const char* name
);
extern XLCd _XlcEucLoader(
const char* name
);
extern XLCd _XlcSjisLoader(
const char* name
);
extern XLCd _XlcJisLoader(
const char* name
);
extern XLCd _XlcDynamicLoad(
const char* name
);
extern XLCd _XlcDynamicLoader(
const char* name
);
extern Bool _XInitDefaultIM(
XLCd lcd
);
extern Bool _XInitDefaultOM(
XLCd lcd
);
extern Bool _XInitDynamicIM(
XLCd lcd
);
extern Bool _XInitDynamicOM(
XLCd lcd
);
_XFUNCPROTOEND
#endif
#endif