XomGeneric.h revision 61b2299d
11ab64890Smrg/* $Xorg: XomGeneric.h,v 1.3 2000/08/17 19:45:08 cpqbld Exp $ */
21ab64890Smrg/*
31ab64890Smrg * Copyright 1992, 1993 by TOSHIBA Corp.
41ab64890Smrg *
51ab64890Smrg * Permission to use, copy, modify, and distribute this software and its
61ab64890Smrg * documentation for any purpose and without fee is hereby granted, provided
71ab64890Smrg * that the above copyright notice appear in all copies and that both that
81ab64890Smrg * copyright notice and this permission notice appear in supporting
91ab64890Smrg * documentation, and that the name of TOSHIBA not be used in advertising
101ab64890Smrg * or publicity pertaining to distribution of the software without specific,
111ab64890Smrg * written prior permission. TOSHIBA make no representations about the
121ab64890Smrg * suitability of this software for any purpose.  It is provided "as is"
131ab64890Smrg * without express or implied warranty.
141ab64890Smrg *
151ab64890Smrg * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
161ab64890Smrg * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
171ab64890Smrg * TOSHIBA BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
181ab64890Smrg * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
191ab64890Smrg * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
201ab64890Smrg * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
211ab64890Smrg * SOFTWARE.
221ab64890Smrg *
231ab64890Smrg * Author: Katsuhisa Yano	TOSHIBA Corp.
241ab64890Smrg *			   	mopi@osa.ilab.toshiba.co.jp
251ab64890Smrg */
261ab64890Smrg/*
271ab64890Smrg * Copyright 1995 by FUJITSU LIMITED
281ab64890Smrg * This is source code modified by FUJITSU LIMITED under the Joint
291ab64890Smrg * Development Agreement for the CDE/Motif PST.
301ab64890Smrg *
311ab64890Smrg * Modifier: Takanori Tateno   FUJITSU LIMITED
321ab64890Smrg *
331ab64890Smrg */
341ab64890Smrg/* $XFree86: xc/lib/X11/XomGeneric.h,v 1.5 2003/04/13 19:22:19 dawes Exp $ */
351ab64890Smrg
361ab64890Smrg#ifndef _XOMGENERIC_H_
371ab64890Smrg#define _XOMGENERIC_H_
381ab64890Smrg
391ab64890Smrg#include "XlcPublic.h"
401ab64890Smrg
411ab64890Smrg#define XOM_GENERIC(om)		(&((XOMGeneric) om)->gen)
421ab64890Smrg#define XOC_GENERIC(font_set)	(&((XOCGeneric) font_set)->gen)
431ab64890Smrg
441ab64890Smrg/* For VW/UDC */
451ab64890Smrgtypedef struct _CodeRangeRec {
461ab64890Smrg    unsigned long       start;
471ab64890Smrg    unsigned long       end;
481ab64890Smrg    unsigned long       dmy1;
491ab64890Smrg    unsigned long       dmy2;
501ab64890Smrg} CodeRangeRec, *CodeRange;
511ab64890Smrg
521ab64890Smrgtypedef struct _VRotateRec {
531ab64890Smrg    char        *charset_name;  /* Charset name                         */
541ab64890Smrg    XlcSide     side;           /* Encoding side                        */
551ab64890Smrg    int         num_cr;
561ab64890Smrg    CodeRange   code_range;
571ab64890Smrg    char        *xlfd_name;
581ab64890Smrg    XFontStruct *font;
591ab64890Smrg} VRotateRec, *VRotate;
601ab64890Smrg
611ab64890Smrgtypedef enum {
621ab64890Smrg    XOMMultiByte,
631ab64890Smrg    XOMWideChar,
641ab64890Smrg    XOMUtf8String
651ab64890Smrg} XOMTextType;
661ab64890Smrg
671ab64890Smrgtypedef struct _FontDataRec {
681ab64890Smrg    char 	*name;
691ab64890Smrg    XlcSide 	side;
701ab64890Smrg    /* For VW/UDC */
711ab64890Smrg    int       	scopes_num;
721ab64890Smrg    FontScope 	scopes;
731ab64890Smrg    char      	*xlfd_name;
741ab64890Smrg    XFontStruct *font;
751ab64890Smrg} FontDataRec, *FontData;
761ab64890Smrg
771ab64890Smrg#define VROTATE_NONE   0
781ab64890Smrg#define VROTATE_PART   1
791ab64890Smrg#define VROTATE_ALL    2
801ab64890Smrg
811ab64890Smrgtypedef struct _OMDataRec {
821ab64890Smrg    int 	charset_count;
831ab64890Smrg    XlcCharSet 	*charset_list;
841ab64890Smrg    int 	font_data_count;
851ab64890Smrg    FontData 	font_data;
861ab64890Smrg    /* For VW/UDC */
871ab64890Smrg    int substitute_num;
881ab64890Smrg    FontData substitute;
891ab64890Smrg    /* Vertical Writing */
901ab64890Smrg    int         vmap_num;
911ab64890Smrg    FontData    vmap;
921ab64890Smrg    int		vrotate_type;
931ab64890Smrg    int         vrotate_num;
941ab64890Smrg    CodeRange   vrotate;
951ab64890Smrg} OMDataRec, *OMData;
961ab64890Smrg
971ab64890Smrgtypedef struct _XOMGenericPart {
981ab64890Smrg    int 	data_num;
991ab64890Smrg    OMData 	data;
1001ab64890Smrg    Bool 	on_demand_loading;
1011ab64890Smrg    char 	*object_name;
1021ab64890Smrg} XOMGenericPart;
1031ab64890Smrg
1041ab64890Smrgtypedef struct _XOMGenericRec {
1051ab64890Smrg    XOMMethods 		methods;
1061ab64890Smrg    XOMCoreRec 		core;
1071ab64890Smrg    XOMGenericPart 	gen;
1081ab64890Smrg} XOMGenericRec, *XOMGeneric;
1091ab64890Smrg
1101ab64890Smrg/*
1111ab64890Smrg * XOC dependent data
1121ab64890Smrg */
1131ab64890Smrg
1141ab64890Smrgtypedef struct _FontSetRec {
1151ab64890Smrg    int 		id;
1161ab64890Smrg    int 		charset_count;
1171ab64890Smrg    XlcCharSet 		*charset_list;
1181ab64890Smrg    int 		font_data_count;
1191ab64890Smrg    FontData 		font_data;
1201ab64890Smrg    char 		*font_name;
1211ab64890Smrg    XFontStruct 	*info;
1221ab64890Smrg    XFontStruct 	*font;
1231ab64890Smrg    XlcSide 		side;
1241ab64890Smrg    Bool 		is_xchar2b;
1251ab64890Smrg    /* For VW/UDC */
1261ab64890Smrg    int 		substitute_num;
1271ab64890Smrg    FontData 		substitute;
1281ab64890Smrg    /* Vertical Writing */
1291ab64890Smrg    int		vpart_initialize;
1301ab64890Smrg    int         vmap_num;
1311ab64890Smrg    FontData    vmap;
1321ab64890Smrg    int         vrotate_num;
1331ab64890Smrg    VRotate     vrotate;
1341ab64890Smrg} FontSetRec, *FontSet;
1351ab64890Smrg
1361ab64890Smrgtypedef struct _XOCGenericPart {
1371ab64890Smrg    XlcConv 		mbs_to_cs;
1381ab64890Smrg    XlcConv 		wcs_to_cs;
1391ab64890Smrg    XlcConv 		utf8_to_cs;
1401ab64890Smrg    int 		font_set_num;
1411ab64890Smrg    FontSet 		font_set;
1421ab64890Smrg} XOCGenericPart;
1431ab64890Smrg
1441ab64890Smrgtypedef struct _XOCGenericRec {
1451ab64890Smrg    XOCMethods 		methods;
14661b2299dSmrg    XOCCoreRec 		core;
1471ab64890Smrg    XOCGenericPart 	gen;
1481ab64890Smrg} XOCGenericRec, *XOCGeneric;
1491ab64890Smrg
1501ab64890Smrg_XFUNCPROTOBEGIN
1511ab64890Smrg
1521ab64890Smrgextern XOM _XomGenericOpenOM(
1531ab64890Smrg    XLCd		/* lcd */,
1541ab64890Smrg    Display*		/* dpy */,
1551ab64890Smrg    XrmDatabase		/* rdb */,
1561ab64890Smrg    _Xconst char*	/* res_name */,
1571ab64890Smrg    _Xconst char*	/* res_class */
1581ab64890Smrg);
1591ab64890Smrg
1601ab64890Smrgextern XlcConv _XomInitConverter(
1611ab64890Smrg    XOC			/* oc */,
1621ab64890Smrg    XOMTextType		/* type */
1631ab64890Smrg);
1641ab64890Smrg
1651ab64890Smrgextern int _XomConvert(
1661ab64890Smrg    XOC			/* oc */,
1671ab64890Smrg    XlcConv		/* conv */,
1681ab64890Smrg    XPointer*		/* from */,
1691ab64890Smrg    int*		/* from_left */,
1701ab64890Smrg    XPointer*		/* to */,
1711ab64890Smrg    int*		/* to_left */,
1721ab64890Smrg    XPointer*		/* args */,
1731ab64890Smrg    int			/* num_args */
1741ab64890Smrg);
1751ab64890Smrg
1761ab64890Smrgextern int
1771ab64890Smrg_XmbDefaultTextEscapement(XOC oc, _Xconst char *text, int length);
1781ab64890Smrgextern int
1791ab64890Smrg_XwcDefaultTextEscapement(XOC oc, _Xconst wchar_t *text, int length);
1801ab64890Smrgextern int
1811ab64890Smrg_Xutf8DefaultTextEscapement(XOC oc, _Xconst char *text, int length);
1821ab64890Smrgextern int
1831ab64890Smrg_XmbDefaultTextExtents(XOC oc, _Xconst char *text, int length,
1841ab64890Smrg    XRectangle *overall_ink, XRectangle *overall_logical);
1851ab64890Smrgextern int
1861ab64890Smrg_XwcDefaultTextExtents(XOC oc, _Xconst wchar_t *text, int length,
1871ab64890Smrg    XRectangle *overall_ink, XRectangle *overall_logical);
1881ab64890Smrgextern int
1891ab64890Smrg_Xutf8DefaultTextExtents(XOC oc, _Xconst char *text, int length,
1901ab64890Smrg    XRectangle *overall_ink, XRectangle *overall_logical);
1911ab64890Smrgextern Status
1921ab64890Smrg_XmbDefaultTextPerCharExtents(
1931ab64890Smrg    XOC oc, _Xconst char *text, int length,
1941ab64890Smrg    XRectangle *ink_buf, XRectangle *logical_buf,
1951ab64890Smrg    int buf_size, int *num_chars,
1961ab64890Smrg    XRectangle *overall_ink,
1971ab64890Smrg    XRectangle *overall_logical);
1981ab64890Smrgextern Status
1991ab64890Smrg_XwcDefaultTextPerCharExtents(
2001ab64890Smrg    XOC oc, _Xconst wchar_t *text, int length,
2011ab64890Smrg    XRectangle *ink_buf, XRectangle *logical_buf,
2021ab64890Smrg    int buf_size, int *num_chars,
2031ab64890Smrg    XRectangle *overall_ink,
2041ab64890Smrg    XRectangle *overall_logical);
2051ab64890Smrgextern Status
2061ab64890Smrg_Xutf8DefaultTextPerCharExtents(
2071ab64890Smrg    XOC oc, _Xconst char *text, int length,
2081ab64890Smrg    XRectangle *ink_buf, XRectangle *logical_buf,
2091ab64890Smrg    int buf_size, int *num_chars,
2101ab64890Smrg    XRectangle *overall_ink,
2111ab64890Smrg    XRectangle *overall_logical);
2121ab64890Smrgextern int
2131ab64890Smrg_XmbDefaultDrawString(Display *dpy, Drawable d, XOC oc, GC gc, int x, int y,
2141ab64890Smrg    _Xconst char *text, int length);
2151ab64890Smrgextern int
2161ab64890Smrg_XwcDefaultDrawString(Display *dpy, Drawable d, XOC oc, GC gc, int x, int y,
2171ab64890Smrg    _Xconst wchar_t *text, int length);
2181ab64890Smrgextern int
2191ab64890Smrg_Xutf8DefaultDrawString(Display *dpy, Drawable d, XOC oc, GC gc, int x, int y,
2201ab64890Smrg    _Xconst char *text, int length);
2211ab64890Smrgextern void
2221ab64890Smrg_XmbDefaultDrawImageString(Display *dpy, Drawable d, XOC oc, GC gc, int x,
2231ab64890Smrg    int y, _Xconst char *text, int length);
2241ab64890Smrgextern void
2251ab64890Smrg_XwcDefaultDrawImageString(Display *dpy, Drawable d, XOC oc, GC gc, int x,
2261ab64890Smrg    int y, _Xconst wchar_t *text, int length);
2271ab64890Smrgextern void
2281ab64890Smrg_Xutf8DefaultDrawImageString(Display *dpy, Drawable d, XOC oc, GC gc, int x,
2291ab64890Smrg    int y, _Xconst char *text, int length);
2301ab64890Smrg
2311ab64890Smrgextern int
2321ab64890Smrg_XmbGenericTextEscapement(XOC oc, _Xconst char *text, int length);
2331ab64890Smrgextern int
2341ab64890Smrg_XmbGenericTextExtents(XOC oc, _Xconst char *text, int length,
2351ab64890Smrg    XRectangle *overall_ink, XRectangle *overall_logical);
2361ab64890Smrgextern int
2371ab64890Smrg_Xutf8GenericDrawString(Display *dpy, Drawable d, XOC oc, GC gc, int x, int y,
2381ab64890Smrg    _Xconst char *text, int length);
2391ab64890Smrgextern void
2401ab64890Smrg_Xutf8GenericDrawImageString(Display *dpy, Drawable d, XOC oc, GC gc, int x,
2411ab64890Smrg    int y, _Xconst char *text, int length);
2421ab64890Smrgextern Status
2431ab64890Smrg_Xutf8GenericTextPerCharExtents(
2441ab64890Smrg    XOC oc, _Xconst char *text, int length,
2451ab64890Smrg    XRectangle *ink_buf, XRectangle *logical_buf,
2461ab64890Smrg    int buf_size, int *num_chars,
2471ab64890Smrg    XRectangle *overall_ink,
2481ab64890Smrg    XRectangle *overall_logical);
2491ab64890Smrgextern int
2501ab64890Smrg_Xutf8GenericTextExtents(XOC oc, _Xconst char *text, int length,
2511ab64890Smrg    XRectangle *overall_ink, XRectangle *overall_logical);
2521ab64890Smrgextern int
2531ab64890Smrg_Xutf8GenericTextEscapement(XOC oc, _Xconst char *text, int length);
2541ab64890Smrgextern void
2551ab64890Smrg_XwcGenericDrawImageString(Display *dpy, Drawable d, XOC oc, GC gc, int x,
2561ab64890Smrg    int y, _Xconst wchar_t *text, int length);
2571ab64890Smrgextern int
2581ab64890Smrg_XwcGenericDrawString(Display *dpy, Drawable d, XOC oc, GC gc, int x, int y,
2591ab64890Smrg    _Xconst wchar_t *text, int length);
2601ab64890Smrgextern Status
2611ab64890Smrg_XwcGenericTextPerCharExtents(XOC oc, _Xconst wchar_t *text, int length,
2621ab64890Smrg    XRectangle *ink_buf, XRectangle *logical_buf,
2631ab64890Smrg    int buf_size, int *num_chars,
2641ab64890Smrg    XRectangle *overall_ink,
2651ab64890Smrg    XRectangle *overall_logical);
2661ab64890Smrgextern int
2671ab64890Smrg_XwcGenericTextExtents(XOC oc, _Xconst wchar_t *text, int length,
2681ab64890Smrg    XRectangle *overall_ink, XRectangle *overall_logical);
2691ab64890Smrgextern int
2701ab64890Smrg_XwcGenericTextEscapement(XOC oc, _Xconst wchar_t *text, int length);
2711ab64890Smrgextern void
2721ab64890Smrg_XmbGenericDrawImageString(Display *dpy, Drawable d, XOC oc, GC gc, int x,
2731ab64890Smrg    int y, _Xconst char *text, int length);
2741ab64890Smrgextern int
2751ab64890Smrg_XmbGenericDrawString(Display *dpy, Drawable d, XOC oc, GC gc, int x, int y,
2761ab64890Smrg    _Xconst char *text, int length);
2771ab64890Smrgextern Status
2781ab64890Smrg_XmbGenericTextPerCharExtents(XOC oc, _Xconst char *text, int length,
2791ab64890Smrg    XRectangle *ink_buf, XRectangle *logical_buf,
2801ab64890Smrg    int buf_size, int *num_chars,
2811ab64890Smrg    XRectangle *overall_ink,
2821ab64890Smrg    XRectangle *overall_logical);
2831ab64890Smrg
2841ab64890Smrgextern FontData
2851ab64890Smrgread_EncodingInfo(
2861ab64890Smrg    int count,
2871ab64890Smrg    char **value);
2881ab64890Smrg
2891ab64890Smrgextern int
2901ab64890Smrg_XomGenericDrawString(
2911ab64890Smrg    Display *dpy,
2921ab64890Smrg    Drawable d,
2931ab64890Smrg    XOC oc,
2941ab64890Smrg    GC gc,
2951ab64890Smrg    int x, int y,
2961ab64890Smrg    XOMTextType type,
2971ab64890Smrg    XPointer text,
2981ab64890Smrg    int length);
2991ab64890Smrgextern int
3001ab64890Smrg_XomGenericTextExtents(
3011ab64890Smrg    XOC oc,
3021ab64890Smrg    XOMTextType type,
3031ab64890Smrg    XPointer text,
3041ab64890Smrg    int length,
3051ab64890Smrg    XRectangle *overall_ink,
3061ab64890Smrg    XRectangle *overall_logical);
3071ab64890Smrgextern FontData
3081ab64890Smrg_XomGetFontDataFromFontSet(
3091ab64890Smrg    FontSet fs,
3101ab64890Smrg    unsigned char *str,
3111ab64890Smrg    int len,
3121ab64890Smrg    int *len_ret,
3131ab64890Smrg    int is2b,
3141ab64890Smrg    int type);
3151ab64890Smrg
3161ab64890Smrg_XFUNCPROTOEND
3171ab64890Smrg
3181ab64890Smrg#endif  /* _XOMGENERIC_H_ */
319