XlcGeneric.h revision 1ab64890
11ab64890Smrg/* $Xorg: XlcGeneric.h,v 1.3 2000/08/17 19:45:06 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/XlcGeneric.h,v 1.4 2001/07/25 15:04:44 dawes Exp $ */
351ab64890Smrg
361ab64890Smrg#ifndef _XLCGENERIC_H_
371ab64890Smrg#define _XLCGENERIC_H_
381ab64890Smrg
391ab64890Smrg#include "XlcPubI.h"
401ab64890Smrg
411ab64890Smrgtypedef struct _ByteInfo {
421ab64890Smrg     unsigned char start,end;
431ab64890Smrg} ByteInfoRec, *ByteInfo;
441ab64890Smrg
451ab64890Smrgtypedef struct _ByteInfoList {
461ab64890Smrg    int 	M;                          /* 1 <= M <= length */
471ab64890Smrg    int 	byteinfo_num;
481ab64890Smrg    ByteInfo 	byteinfo;
491ab64890Smrg} ByteInfoListRec, *ByteInfoList;
501ab64890Smrg
511ab64890Smrg/* conversion_type values */
521ab64890Smrg#define LOCALCONV      1
531ab64890Smrg#define FILECONV       2
541ab64890Smrg#define FUNCTIONCONV   4
551ab64890Smrg
561ab64890Smrgtypedef struct _Conversion {
571ab64890Smrg    unsigned long 	conversion_type;
581ab64890Smrg    int       		conv_num;
591ab64890Smrg    FontScope 		convlist;
601ab64890Smrg    char      		*cnv_file;
611ab64890Smrg    XlcConv    		cnvfunc;
621ab64890Smrg} ConversionRec, *Conversion;
631ab64890Smrg
641ab64890Smrgtypedef struct _ExtdSegment {
651ab64890Smrg    char    	*name;
661ab64890Smrg    XlcSide 	side;
671ab64890Smrg    FontScope 	area;
681ab64890Smrg    int 	area_num;
691ab64890Smrg    XlcCharSet  charset;
701ab64890Smrg} ExtdSegmentRec, *ExtdSegment;
711ab64890Smrg
721ab64890Smrgtypedef struct _SegConvRec {
731ab64890Smrg    int         	length;
741ab64890Smrg    char        	*source_encoding;
751ab64890Smrg    XlcCharSet		source;
761ab64890Smrg    char        	*destination_encoding;
771ab64890Smrg    XlcCharSet		dest;
781ab64890Smrg    FontScopeRec   	range;
791ab64890Smrg    int         	conv_num;
801ab64890Smrg    FontScope   	conv;
811ab64890Smrg} SegConvRec, *SegConv;
821ab64890Smrg
831ab64890Smrgtypedef struct _ParseInfoRec *ParseInfo;
841ab64890Smrg
851ab64890Smrgtypedef struct _CodeSetRec {
861ab64890Smrg    XlcCharSet 		*charset_list;
871ab64890Smrg    int 		num_charsets;
881ab64890Smrg    int 		cs_num;
891ab64890Smrg    XlcSide 		side;
901ab64890Smrg    int 		length;
911ab64890Smrg    ByteInfoList 	byteM;
921ab64890Smrg    Conversion 		mbconv;
931ab64890Smrg    Conversion 		ctconv;
941ab64890Smrg    ExtdSegment 	ctextseg;
951ab64890Smrg    ParseInfo 		parse_info;
961ab64890Smrg    unsigned long 	wc_encoding;
971ab64890Smrg    Bool		string_encoding;
981ab64890Smrg} CodeSetRec, *CodeSet;
991ab64890Smrg
1001ab64890Smrgtypedef enum {
1011ab64890Smrg    E_GL,			/* GL encoding */
1021ab64890Smrg    E_GR,			/* GR encoding */
1031ab64890Smrg    E_SS,			/* single shift */
1041ab64890Smrg    E_LSL,			/* locking shift left */
1051ab64890Smrg    E_LSR,			/* locking shift right */
1061ab64890Smrg    E_LAST
1071ab64890Smrg} EncodingType;
1081ab64890Smrg
1091ab64890Smrgtypedef struct _ParseInfoRec {
1101ab64890Smrg    EncodingType 	type;
1111ab64890Smrg    char 		*encoding;
1121ab64890Smrg    CodeSet 		codeset;
1131ab64890Smrg} ParseInfoRec;
1141ab64890Smrg
1151ab64890Smrg/*
1161ab64890Smrg * XLCd private data
1171ab64890Smrg */
1181ab64890Smrg
1191ab64890Smrg#define XLC_GENERIC(lcd, x)	(((XLCdGeneric) lcd->core)->gen.x)
1201ab64890Smrg#define XLC_GENERIC_PART(lcd)	(&(((XLCdGeneric) lcd->core)->gen))
1211ab64890Smrg
1221ab64890Smrgtypedef struct _XLCdGenericPart {
1231ab64890Smrg    int 		codeset_num;
1241ab64890Smrg    CodeSet 		*codeset_list;
1251ab64890Smrg    unsigned char 	*mb_parse_table;
1261ab64890Smrg    int 		mb_parse_list_num;
1271ab64890Smrg    ParseInfo 		*mb_parse_list;
1281ab64890Smrg    unsigned long 	wc_encode_mask;
1291ab64890Smrg    unsigned long 	wc_shift_bits;
1301ab64890Smrg    CodeSet 		initial_state_GL;
1311ab64890Smrg    CodeSet 		initial_state_GR;
1321ab64890Smrg    int  		segment_conv_num;  /* UDC */
1331ab64890Smrg    SegConv 		segment_conv;      /* UDC */
1341ab64890Smrg    Bool 		use_stdc_env;
1351ab64890Smrg    Bool 		force_convert_to_mb;
1361ab64890Smrg} XLCdGenericPart;
1371ab64890Smrg
1381ab64890Smrgtypedef struct _XLCdGenericRec {
1391ab64890Smrg    XLCdCoreRec 	core;
1401ab64890Smrg    XLCdPublicPart 	pub;
1411ab64890Smrg    XLCdGenericPart 	gen;
1421ab64890Smrg} XLCdGenericRec, *XLCdGeneric;
1431ab64890Smrg
1441ab64890Smrgextern XLCdMethods _XlcGenericMethods;
1451ab64890Smrg
1461ab64890Smrgextern FontScope
1471ab64890Smrg_XlcParse_scopemaps(
1481ab64890Smrg    const char *str,
1491ab64890Smrg    int *size);
1501ab64890Smrgextern void
1511ab64890Smrg_XlcDbg_printValue(
1521ab64890Smrg    const char *str,
1531ab64890Smrg    char **value,
1541ab64890Smrg    int num);
1551ab64890Smrg
1561ab64890Smrgextern XIM
1571ab64890Smrg_XDefaultOpenIM(
1581ab64890Smrg    XLCd                lcd,
1591ab64890Smrg    Display             *dpy,
1601ab64890Smrg    XrmDatabase         rdb,
1611ab64890Smrg    char                *res_name,
1621ab64890Smrg    char                *res_class);
1631ab64890Smrg
1641ab64890Smrg#endif  /* _XLCGENERIC_H_ */
165