XlcGeneric.h 4.46 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164
/* $Xorg: XlcGeneric.h,v 1.3 2000/08/17 19:45:06 cpqbld Exp $ */
/*
 * Copyright 1992, 1993 by TOSHIBA Corp.
 *
 * Permission to use, copy, modify, and distribute this software and its
 * documentation for any purpose and without fee is hereby granted, provided
 * that the above copyright notice appear in all copies and that both that
 * copyright notice and this permission notice appear in supporting
 * documentation, and that the name of TOSHIBA not be used in advertising
 * or publicity pertaining to distribution of the software without specific,
 * written prior permission. TOSHIBA make no representations about the
 * suitability of this software for any purpose.  It is provided "as is"
 * without express or implied warranty.
 *
 * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
 * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
 * TOSHIBA BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
 * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
 * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
 * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
 * SOFTWARE.
 *
 * Author: Katsuhisa Yano	TOSHIBA Corp.
 *			   	mopi@osa.ilab.toshiba.co.jp
 */
/*
 * Copyright 1995 by FUJITSU LIMITED
 * This is source code modified by FUJITSU LIMITED under the Joint
 * Development Agreement for the CDE/Motif PST.
 *
 * Modifier: Takanori Tateno   FUJITSU LIMITED
 *
 */
/* $XFree86: xc/lib/X11/XlcGeneric.h,v 1.4 2001/07/25 15:04:44 dawes Exp $ */

#ifndef _XLCGENERIC_H_
#define _XLCGENERIC_H_

#include "XlcPubI.h"

typedef struct _ByteInfo {
     unsigned char start,end;
} ByteInfoRec, *ByteInfo;

typedef struct _ByteInfoList {
    int 	M;                          /* 1 <= M <= length */
    int 	byteinfo_num;
    ByteInfo 	byteinfo;
} ByteInfoListRec, *ByteInfoList;

/* conversion_type values */
#define LOCALCONV      1
#define FILECONV       2
#define FUNCTIONCONV   4

typedef struct _Conversion {
    unsigned long 	conversion_type;
    int       		conv_num;
    FontScope 		convlist;
    char      		*cnv_file;
    XlcConv    		cnvfunc;
} ConversionRec, *Conversion;

typedef struct _ExtdSegment {
    char    	*name;
    XlcSide 	side;
    FontScope 	area;
    int 	area_num;
    XlcCharSet  charset;
} ExtdSegmentRec, *ExtdSegment;

typedef struct _SegConvRec {
    int         	length;
    char        	*source_encoding;
    XlcCharSet		source;
    char        	*destination_encoding;
    XlcCharSet		dest;
    FontScopeRec   	range;
    int         	conv_num;
    FontScope   	conv;
} SegConvRec, *SegConv;

typedef struct _ParseInfoRec *ParseInfo;

typedef struct _CodeSetRec {
    XlcCharSet 		*charset_list;
    int 		num_charsets;
    int 		cs_num;
    XlcSide 		side;
    int 		length;
    ByteInfoList 	byteM;
    Conversion 		mbconv;
    Conversion 		ctconv;
    ExtdSegment 	ctextseg;
    ParseInfo 		parse_info;
    unsigned long 	wc_encoding;
    Bool		string_encoding;
} CodeSetRec, *CodeSet;

typedef enum {
    E_GL,			/* GL encoding */
    E_GR,			/* GR encoding */
    E_SS,			/* single shift */
    E_LSL,			/* locking shift left */
    E_LSR,			/* locking shift right */
    E_LAST
} EncodingType;

typedef struct _ParseInfoRec {
    EncodingType 	type;
    char 		*encoding;
    CodeSet 		codeset;
} ParseInfoRec;

/*
 * XLCd private data
 */

#define XLC_GENERIC(lcd, x)	(((XLCdGeneric) lcd->core)->gen.x)
#define XLC_GENERIC_PART(lcd)	(&(((XLCdGeneric) lcd->core)->gen))

typedef struct _XLCdGenericPart {
    int 		codeset_num;
    CodeSet 		*codeset_list;
    unsigned char 	*mb_parse_table;
    int 		mb_parse_list_num;
    ParseInfo 		*mb_parse_list;
    unsigned long 	wc_encode_mask;
    unsigned long 	wc_shift_bits;
    CodeSet 		initial_state_GL;
    CodeSet 		initial_state_GR;
    int  		segment_conv_num;  /* UDC */
    SegConv 		segment_conv;      /* UDC */
    Bool 		use_stdc_env;
    Bool 		force_convert_to_mb;
} XLCdGenericPart;

typedef struct _XLCdGenericRec {
    XLCdCoreRec 	core;	
    XLCdPublicPart 	pub;
    XLCdGenericPart 	gen;	
} XLCdGenericRec, *XLCdGeneric;

extern XLCdMethods _XlcGenericMethods;

extern FontScope
_XlcParse_scopemaps(
    const char *str,
    int *size);
extern void
_XlcDbg_printValue(
    const char *str,
    char **value,
    int num);

extern XIM
_XDefaultOpenIM(
    XLCd                lcd,
    Display             *dpy,
    XrmDatabase         rdb,
    char                *res_name,
    char                *res_class);

#endif  /* _XLCGENERIC_H_ */