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#ifndef _XOMGENERIC_H_
351ab64890Smrg#define _XOMGENERIC_H_
361ab64890Smrg
371ab64890Smrg#include "XlcPublic.h"
381ab64890Smrg
391ab64890Smrg#define XOM_GENERIC(om)		(&((XOMGeneric) om)->gen)
401ab64890Smrg#define XOC_GENERIC(font_set)	(&((XOCGeneric) font_set)->gen)
411ab64890Smrg
421ab64890Smrg/* For VW/UDC */
431ab64890Smrgtypedef struct _CodeRangeRec {
441ab64890Smrg    unsigned long       start;
451ab64890Smrg    unsigned long       end;
461ab64890Smrg    unsigned long       dmy1;
471ab64890Smrg    unsigned long       dmy2;
481ab64890Smrg} CodeRangeRec, *CodeRange;
491ab64890Smrg
501ab64890Smrgtypedef struct _VRotateRec {
511ab64890Smrg    char        *charset_name;  /* Charset name                         */
521ab64890Smrg    XlcSide     side;           /* Encoding side                        */
531ab64890Smrg    int         num_cr;
541ab64890Smrg    CodeRange   code_range;
551ab64890Smrg    char        *xlfd_name;
561ab64890Smrg    XFontStruct *font;
571ab64890Smrg} VRotateRec, *VRotate;
581ab64890Smrg
591ab64890Smrgtypedef enum {
601ab64890Smrg    XOMMultiByte,
611ab64890Smrg    XOMWideChar,
621ab64890Smrg    XOMUtf8String
631ab64890Smrg} XOMTextType;
641ab64890Smrg
651ab64890Smrgtypedef struct _FontDataRec {
661ab64890Smrg    char 	*name;
671ab64890Smrg    XlcSide 	side;
681ab64890Smrg    /* For VW/UDC */
691ab64890Smrg    int       	scopes_num;
701ab64890Smrg    FontScope 	scopes;
711ab64890Smrg    char      	*xlfd_name;
721ab64890Smrg    XFontStruct *font;
731ab64890Smrg} FontDataRec, *FontData;
741ab64890Smrg
751ab64890Smrg#define VROTATE_NONE   0
761ab64890Smrg#define VROTATE_PART   1
771ab64890Smrg#define VROTATE_ALL    2
781ab64890Smrg
791ab64890Smrgtypedef struct _OMDataRec {
801ab64890Smrg    int 	charset_count;
811ab64890Smrg    XlcCharSet 	*charset_list;
821ab64890Smrg    int 	font_data_count;
831ab64890Smrg    FontData 	font_data;
841ab64890Smrg    /* For VW/UDC */
851ab64890Smrg    int substitute_num;
861ab64890Smrg    FontData substitute;
871ab64890Smrg    /* Vertical Writing */
881ab64890Smrg    int         vmap_num;
891ab64890Smrg    FontData    vmap;
901ab64890Smrg    int		vrotate_type;
911ab64890Smrg    int         vrotate_num;
921ab64890Smrg    CodeRange   vrotate;
931ab64890Smrg} OMDataRec, *OMData;
941ab64890Smrg
951ab64890Smrgtypedef struct _XOMGenericPart {
961ab64890Smrg    int 	data_num;
971ab64890Smrg    OMData 	data;
981ab64890Smrg    Bool 	on_demand_loading;
991ab64890Smrg    char 	*object_name;
1001ab64890Smrg} XOMGenericPart;
1011ab64890Smrg
1021ab64890Smrgtypedef struct _XOMGenericRec {
1031ab64890Smrg    XOMMethods 		methods;
1041ab64890Smrg    XOMCoreRec 		core;
1051ab64890Smrg    XOMGenericPart 	gen;
1061ab64890Smrg} XOMGenericRec, *XOMGeneric;
1071ab64890Smrg
1081ab64890Smrg/*
1091ab64890Smrg * XOC dependent data
1101ab64890Smrg */
1111ab64890Smrg
1121ab64890Smrgtypedef struct _FontSetRec {
1131ab64890Smrg    int 		id;
1141ab64890Smrg    int 		charset_count;
1151ab64890Smrg    XlcCharSet 		*charset_list;
1161ab64890Smrg    int 		font_data_count;
1171ab64890Smrg    FontData 		font_data;
1181ab64890Smrg    char 		*font_name;
1191ab64890Smrg    XFontStruct 	*info;
1201ab64890Smrg    XFontStruct 	*font;
1211ab64890Smrg    XlcSide 		side;
1221ab64890Smrg    Bool 		is_xchar2b;
1231ab64890Smrg    /* For VW/UDC */
1241ab64890Smrg    int 		substitute_num;
1251ab64890Smrg    FontData 		substitute;
1261ab64890Smrg    /* Vertical Writing */
1271ab64890Smrg    int		vpart_initialize;
1281ab64890Smrg    int         vmap_num;
1291ab64890Smrg    FontData    vmap;
1301ab64890Smrg    int         vrotate_num;
1311ab64890Smrg    VRotate     vrotate;
1321ab64890Smrg} FontSetRec, *FontSet;
1331ab64890Smrg
1341ab64890Smrgtypedef struct _XOCGenericPart {
1351ab64890Smrg    XlcConv 		mbs_to_cs;
1361ab64890Smrg    XlcConv 		wcs_to_cs;
1371ab64890Smrg    XlcConv 		utf8_to_cs;
1381ab64890Smrg    int 		font_set_num;
1391ab64890Smrg    FontSet 		font_set;
1401ab64890Smrg} XOCGenericPart;
1411ab64890Smrg
1421ab64890Smrgtypedef struct _XOCGenericRec {
1431ab64890Smrg    XOCMethods 		methods;
14461b2299dSmrg    XOCCoreRec 		core;
1451ab64890Smrg    XOCGenericPart 	gen;
1461ab64890Smrg} XOCGenericRec, *XOCGeneric;
1471ab64890Smrg
1481ab64890Smrg_XFUNCPROTOBEGIN
1491ab64890Smrg
1501ab64890Smrgextern XOM _XomGenericOpenOM(
1511ab64890Smrg    XLCd		/* lcd */,
1521ab64890Smrg    Display*		/* dpy */,
1531ab64890Smrg    XrmDatabase		/* rdb */,
1541ab64890Smrg    _Xconst char*	/* res_name */,
1551ab64890Smrg    _Xconst char*	/* res_class */
1561ab64890Smrg);
1571ab64890Smrg
1581ab64890Smrgextern XlcConv _XomInitConverter(
1591ab64890Smrg    XOC			/* oc */,
1601ab64890Smrg    XOMTextType		/* type */
1611ab64890Smrg);
1621ab64890Smrg
1631ab64890Smrgextern int _XomConvert(
1641ab64890Smrg    XOC			/* oc */,
1651ab64890Smrg    XlcConv		/* conv */,
1661ab64890Smrg    XPointer*		/* from */,
1671ab64890Smrg    int*		/* from_left */,
1681ab64890Smrg    XPointer*		/* to */,
1691ab64890Smrg    int*		/* to_left */,
1701ab64890Smrg    XPointer*		/* args */,
1711ab64890Smrg    int			/* num_args */
1721ab64890Smrg);
1731ab64890Smrg
1741ab64890Smrgextern int
1751ab64890Smrg_XmbDefaultTextEscapement(XOC oc, _Xconst char *text, int length);
1761ab64890Smrgextern int
1771ab64890Smrg_XwcDefaultTextEscapement(XOC oc, _Xconst wchar_t *text, int length);
1781ab64890Smrgextern int
1791ab64890Smrg_Xutf8DefaultTextEscapement(XOC oc, _Xconst char *text, int length);
1801ab64890Smrgextern int
1811ab64890Smrg_XmbDefaultTextExtents(XOC oc, _Xconst char *text, int length,
1821ab64890Smrg    XRectangle *overall_ink, XRectangle *overall_logical);
1831ab64890Smrgextern int
1841ab64890Smrg_XwcDefaultTextExtents(XOC oc, _Xconst wchar_t *text, int length,
1851ab64890Smrg    XRectangle *overall_ink, XRectangle *overall_logical);
1861ab64890Smrgextern int
1871ab64890Smrg_Xutf8DefaultTextExtents(XOC oc, _Xconst char *text, int length,
1881ab64890Smrg    XRectangle *overall_ink, XRectangle *overall_logical);
1891ab64890Smrgextern Status
1901ab64890Smrg_XmbDefaultTextPerCharExtents(
1911ab64890Smrg    XOC oc, _Xconst char *text, int length,
1921ab64890Smrg    XRectangle *ink_buf, XRectangle *logical_buf,
1931ab64890Smrg    int buf_size, int *num_chars,
1941ab64890Smrg    XRectangle *overall_ink,
1951ab64890Smrg    XRectangle *overall_logical);
1961ab64890Smrgextern Status
1971ab64890Smrg_XwcDefaultTextPerCharExtents(
1981ab64890Smrg    XOC oc, _Xconst wchar_t *text, int length,
1991ab64890Smrg    XRectangle *ink_buf, XRectangle *logical_buf,
2001ab64890Smrg    int buf_size, int *num_chars,
2011ab64890Smrg    XRectangle *overall_ink,
2021ab64890Smrg    XRectangle *overall_logical);
2031ab64890Smrgextern Status
2041ab64890Smrg_Xutf8DefaultTextPerCharExtents(
2051ab64890Smrg    XOC oc, _Xconst char *text, int length,
2061ab64890Smrg    XRectangle *ink_buf, XRectangle *logical_buf,
2071ab64890Smrg    int buf_size, int *num_chars,
2081ab64890Smrg    XRectangle *overall_ink,
2091ab64890Smrg    XRectangle *overall_logical);
2101ab64890Smrgextern int
2111ab64890Smrg_XmbDefaultDrawString(Display *dpy, Drawable d, XOC oc, GC gc, int x, int y,
2121ab64890Smrg    _Xconst char *text, int length);
2131ab64890Smrgextern int
2141ab64890Smrg_XwcDefaultDrawString(Display *dpy, Drawable d, XOC oc, GC gc, int x, int y,
2151ab64890Smrg    _Xconst wchar_t *text, int length);
2161ab64890Smrgextern int
2171ab64890Smrg_Xutf8DefaultDrawString(Display *dpy, Drawable d, XOC oc, GC gc, int x, int y,
2181ab64890Smrg    _Xconst char *text, int length);
2191ab64890Smrgextern void
2201ab64890Smrg_XmbDefaultDrawImageString(Display *dpy, Drawable d, XOC oc, GC gc, int x,
2211ab64890Smrg    int y, _Xconst char *text, int length);
2221ab64890Smrgextern void
2231ab64890Smrg_XwcDefaultDrawImageString(Display *dpy, Drawable d, XOC oc, GC gc, int x,
2241ab64890Smrg    int y, _Xconst wchar_t *text, int length);
2251ab64890Smrgextern void
2261ab64890Smrg_Xutf8DefaultDrawImageString(Display *dpy, Drawable d, XOC oc, GC gc, int x,
2271ab64890Smrg    int y, _Xconst char *text, int length);
2281ab64890Smrg
2291ab64890Smrgextern int
2301ab64890Smrg_XmbGenericTextEscapement(XOC oc, _Xconst char *text, int length);
2311ab64890Smrgextern int
2321ab64890Smrg_XmbGenericTextExtents(XOC oc, _Xconst char *text, int length,
2331ab64890Smrg    XRectangle *overall_ink, XRectangle *overall_logical);
2341ab64890Smrgextern int
2351ab64890Smrg_Xutf8GenericDrawString(Display *dpy, Drawable d, XOC oc, GC gc, int x, int y,
2361ab64890Smrg    _Xconst char *text, int length);
2371ab64890Smrgextern void
2381ab64890Smrg_Xutf8GenericDrawImageString(Display *dpy, Drawable d, XOC oc, GC gc, int x,
2391ab64890Smrg    int y, _Xconst char *text, int length);
2401ab64890Smrgextern Status
2411ab64890Smrg_Xutf8GenericTextPerCharExtents(
2421ab64890Smrg    XOC oc, _Xconst char *text, int length,
2431ab64890Smrg    XRectangle *ink_buf, XRectangle *logical_buf,
2441ab64890Smrg    int buf_size, int *num_chars,
2451ab64890Smrg    XRectangle *overall_ink,
2461ab64890Smrg    XRectangle *overall_logical);
2471ab64890Smrgextern int
2481ab64890Smrg_Xutf8GenericTextExtents(XOC oc, _Xconst char *text, int length,
2491ab64890Smrg    XRectangle *overall_ink, XRectangle *overall_logical);
2501ab64890Smrgextern int
2511ab64890Smrg_Xutf8GenericTextEscapement(XOC oc, _Xconst char *text, int length);
2521ab64890Smrgextern void
2531ab64890Smrg_XwcGenericDrawImageString(Display *dpy, Drawable d, XOC oc, GC gc, int x,
2541ab64890Smrg    int y, _Xconst wchar_t *text, int length);
2551ab64890Smrgextern int
2561ab64890Smrg_XwcGenericDrawString(Display *dpy, Drawable d, XOC oc, GC gc, int x, int y,
2571ab64890Smrg    _Xconst wchar_t *text, int length);
2581ab64890Smrgextern Status
2591ab64890Smrg_XwcGenericTextPerCharExtents(XOC oc, _Xconst wchar_t *text, int length,
2601ab64890Smrg    XRectangle *ink_buf, XRectangle *logical_buf,
2611ab64890Smrg    int buf_size, int *num_chars,
2621ab64890Smrg    XRectangle *overall_ink,
2631ab64890Smrg    XRectangle *overall_logical);
2641ab64890Smrgextern int
2651ab64890Smrg_XwcGenericTextExtents(XOC oc, _Xconst wchar_t *text, int length,
2661ab64890Smrg    XRectangle *overall_ink, XRectangle *overall_logical);
2671ab64890Smrgextern int
2681ab64890Smrg_XwcGenericTextEscapement(XOC oc, _Xconst wchar_t *text, int length);
2691ab64890Smrgextern void
2701ab64890Smrg_XmbGenericDrawImageString(Display *dpy, Drawable d, XOC oc, GC gc, int x,
2711ab64890Smrg    int y, _Xconst char *text, int length);
2721ab64890Smrgextern int
2731ab64890Smrg_XmbGenericDrawString(Display *dpy, Drawable d, XOC oc, GC gc, int x, int y,
2741ab64890Smrg    _Xconst char *text, int length);
2751ab64890Smrgextern Status
2761ab64890Smrg_XmbGenericTextPerCharExtents(XOC oc, _Xconst char *text, int length,
2771ab64890Smrg    XRectangle *ink_buf, XRectangle *logical_buf,
2781ab64890Smrg    int buf_size, int *num_chars,
2791ab64890Smrg    XRectangle *overall_ink,
2801ab64890Smrg    XRectangle *overall_logical);
2811ab64890Smrg
2821ab64890Smrgextern FontData
2831ab64890Smrgread_EncodingInfo(
2841ab64890Smrg    int count,
2851ab64890Smrg    char **value);
2861ab64890Smrg
2871ab64890Smrgextern int
2881ab64890Smrg_XomGenericDrawString(
2891ab64890Smrg    Display *dpy,
2901ab64890Smrg    Drawable d,
2911ab64890Smrg    XOC oc,
2921ab64890Smrg    GC gc,
2931ab64890Smrg    int x, int y,
2941ab64890Smrg    XOMTextType type,
2951ab64890Smrg    XPointer text,
2961ab64890Smrg    int length);
2971ab64890Smrgextern int
2981ab64890Smrg_XomGenericTextExtents(
2991ab64890Smrg    XOC oc,
3001ab64890Smrg    XOMTextType type,
3011ab64890Smrg    XPointer text,
3021ab64890Smrg    int length,
3031ab64890Smrg    XRectangle *overall_ink,
3041ab64890Smrg    XRectangle *overall_logical);
3051ab64890Smrgextern FontData
3061ab64890Smrg_XomGetFontDataFromFontSet(
3071ab64890Smrg    FontSet fs,
3081ab64890Smrg    unsigned char *str,
3091ab64890Smrg    int len,
3101ab64890Smrg    int *len_ret,
3111ab64890Smrg    int is2b,
3121ab64890Smrg    int type);
3131ab64890Smrg
3141ab64890Smrg_XFUNCPROTOEND
3151ab64890Smrg
3161ab64890Smrg#endif  /* _XOMGENERIC_H_ */
317