Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Search  

LETypes.h

Go to the documentation of this file.
00001 
00002 /*
00003  * @(#)LETypes.h        1.2 00/03/15
00004  *
00005  * (C) Copyright IBM Corp. 1998-2003 - All Rights Reserved
00006  *
00007  */
00008 
00009 #ifndef __LETYPES_H
00010 #define __LETYPES_H
00011 
00012 #if !defined(LE_USE_CMEMORY) && (defined(U_LAYOUT_IMPLEMENTATION) || defined(U_LAYOUTEX_IMPLEMENTATION))
00013 #define LE_USE_CMEMORY
00014 #endif
00015 
00016 #include "unicode/utypes.h"
00017 #include "unicode/uobject.h"
00018 
00019 #ifdef LE_USE_CMEMORY
00020 #include "cmemory.h"
00021 #endif
00022 
00023 U_NAMESPACE_BEGIN
00024 
00030 typedef int32_t le_int32;
00031 
00037 typedef uint32_t le_uint32;
00038 
00044 typedef int16_t le_int16;
00045 
00051 typedef uint16_t le_uint16;
00052 
00058 typedef int8_t le_int8;
00059 
00065 typedef uint8_t le_uint8;
00066 
00067 
00073 typedef UBool le_bool;
00074 
00075 #ifndef true
00076 
00081 #define true 1
00082 #endif
00083 
00084 #ifndef false
00085 
00090 #define false 0
00091 #endif
00092 
00093 #ifndef NULL
00094 
00099 #define NULL 0
00100 #endif
00101 
00107 typedef le_uint32 LETag;
00108 
00115 typedef le_uint16 TTGlyphID;
00116 
00126 typedef le_uint32 LEGlyphID;
00127 
00134 #define LE_GLYPH_MASK     0x0000FFFF
00135 
00143 #define LE_GLYPH_SHIFT    0
00144 
00145 
00152 #define LE_SUB_FONT_MASK  0x00FF0000
00153 
00161 #define LE_SUB_FONT_SHIFT 16
00162 
00163 
00170 #define LE_CLIENT_MASK    0xFF000000
00171 
00179 #define LE_CLIENT_SHIFT   24
00180 
00181 
00188 #define LE_GET_GLYPH(gid) ((gid & LE_GLYPH_MASK) >> LE_GLYPH_SHIFT)
00189 
00196 #define LE_GET_SUB_FONT(gid) ((gid & LE_SUB_FONT_MASK) >> LE_SUB_FONT_SHIFT)
00197 
00204 #define LE_GET_CLIENT(gid) ((gid & LE_CLIENT_MASK) >> LE_CLIENT_SHIFT)
00205 
00206 
00213 #define LE_SET_GLYPH(gid, glyph) ((gid & ~LE_GLYPH_MASK) | ((glyph << LE_GLYPH_SHIFT) & LE_GLYPH_MASK))
00214 
00221 #define LE_SET_SUB_FONT(gid, font) ((gid & ~LE_SUB_FONT_MASK) | ((font << LE_SUB_FONT_SHIFT) & LE_SUB_FONT_MASK))
00222 
00229 #define LE_SET_CLIENT(gid, client) ((gid & ~LE_CLIENT_MASK) | ((client << LE_CLIENT_SHIFT) & LE_CLIENT_MASK))
00230 
00231 
00237 typedef UChar LEUnicode16;
00238 
00244 typedef UChar32 LEUnicode32;
00245 
00251 typedef UChar LEUnicode;
00252 
00258 struct LEPoint
00259 {
00265     float fX;
00266 
00272     float fY;
00273 };
00274 
00275 #ifndef XP_CPLUSPLUS
00276 
00281 typedef struct LEPoint LEPoint;
00282 #endif
00283 
00284 #ifdef LE_USE_CMEMORY
00285 
00290 #define LE_ARRAY_COPY(dst, src, count) uprv_memcpy((void *) (dst), (void *) (src), (count) * sizeof (src)[0])
00291 
00298 #define LE_NEW_ARRAY(type, count) (type *) uprv_malloc((count) * sizeof(type))
00299 
00306 #define LE_GROW_ARRAY(array, newSize) uprv_realloc((void *) (array), (newSize) * sizeof (array)[0])
00307 
00314 #define LE_DELETE_ARRAY(array) uprv_free((void *) (array))
00315 #endif
00316 
00327 #define LE_MAKE_TAG(a, b, c, d) \
00328     (((le_uint32)(a) << 24) |   \
00329      ((le_uint32)(b) << 16) |   \
00330      ((le_uint32)(c) << 8)  |   \
00331       (le_uint32)(d))
00332 
00339 enum LETableTags {
00340     LE_ACNT_TABLE_TAG = 0x61636E74UL, /* 'acnt' */
00341     LE_AVAR_TABLE_TAG = 0x61766172UL, /* 'avar' */
00342     LE_BASE_TABLE_TAG = 0x42415345UL, /* 'BASE' */
00343     LE_BDAT_TABLE_TAG = 0x62646174UL, /* 'bdat' */
00344     LE_BHED_TABLE_TAG = 0x62686564UL, /* 'bhed' */
00345     LE_BLOC_TABLE_TAG = 0x626C6F63UL, /* 'bloc' */
00346     LE_BSLN_TABLE_TAG = 0x62736C6EUL, /* 'bsln' */
00347     LE_CFF__TABLE_TAG = 0x43464620UL, /* 'CFF ' */
00348     LE_CMAP_TABLE_TAG = 0x636D6170UL, /* 'cmap' */
00349     LE_CVAR_TABLE_TAG = 0x63766172UL, /* 'cvar' */
00350     LE_CVT__TABLE_TAG = 0x63767420UL, /* 'cvt ' */
00351     LE_DSIG_TABLE_TAG = 0x44534947UL, /* 'DSIG' */
00352     LE_EBDT_TABLE_TAG = 0x45424454UL, /* 'EBDT' */
00353     LE_EBLC_TABLE_TAG = 0x45424C43UL, /* 'EBLC' */
00354     LE_EBSC_TABLE_TAG = 0x45425343UL, /* 'EBSC' */
00355     LE_FDSC_TABLE_TAG = 0x66647363UL, /* 'fdsc' */
00356     LE_FEAT_TABLE_TAG = 0x66656174UL, /* 'feat' */
00357     LE_FMTX_TABLE_TAG = 0x666D7478UL, /* 'fmtx' */
00358     LE_FPGM_TABLE_TAG = 0x6670676DUL, /* 'fpgm' */
00359     LE_FVAR_TABLE_TAG = 0x66766172UL, /* 'fvar' */
00360     LE_GASP_TABLE_TAG = 0x67617370UL, /* 'gasp' */
00361     LE_GDEF_TABLE_TAG = 0x47444546UL, /* 'GDEF' */
00362     LE_GLYF_TABLE_TAG = 0x676C7966UL, /* 'glyf' */
00363     LE_GPOS_TABLE_TAG = 0x47504F53UL, /* 'GPOS' */
00364     LE_GSUB_TABLE_TAG = 0x47535542UL, /* 'GSUB' */
00365     LE_GVAR_TABLE_TAG = 0x67766172UL, /* 'gvar' */
00366     LE_HDMX_TABLE_TAG = 0x68646D78UL, /* 'hdmx' */
00367     LE_HEAD_TABLE_TAG = 0x68656164UL, /* 'head' */
00368     LE_HHEA_TABLE_TAG = 0x68686561UL, /* 'hhea' */
00369     LE_HMTX_TABLE_TAG = 0x686D7478UL, /* 'hmtx' */
00370     LE_HSTY_TABLE_TAG = 0x68737479UL, /* 'hsty' */
00371     LE_JUST_TABLE_TAG = 0x6A757374UL, /* 'just' */
00372     LE_JSTF_TABLE_TAG = 0x4A535446UL, /* 'JSTF' */
00373     LE_KERN_TABLE_TAG = 0x6B65726EUL, /* 'kern' */
00374     LE_LCAR_TABLE_TAG = 0x6C636172UL, /* 'lcar' */
00375     LE_LOCA_TABLE_TAG = 0x6C6F6361UL, /* 'loca' */
00376     LE_LTSH_TABLE_TAG = 0x4C545348UL, /* 'LTSH' */
00377     LE_MAXP_TABLE_TAG = 0x6D617870UL, /* 'maxp' */
00378     LE_MORT_TABLE_TAG = 0x6D6F7274UL, /* 'mort' */
00379     LE_MORX_TABLE_TAG = 0x6D6F7278UL, /* 'morx' */
00380     LE_NAME_TABLE_TAG = 0x6E616D65UL, /* 'name' */
00381     LE_OPBD_TABLE_TAG = 0x6F706264UL, /* 'opbd' */
00382     LE_OS_2_TABLE_TAG = 0x4F532F32UL, /* 'OS/2' */
00383     LE_PCLT_TABLE_TAG = 0x50434C54UL, /* 'PCLT' */
00384     LE_POST_TABLE_TAG = 0x706F7374UL, /* 'post' */
00385     LE_PREP_TABLE_TAG = 0x70726570UL, /* 'prep' */
00386     LE_PROP_TABLE_TAG = 0x70726F70UL, /* 'prop' */
00387     LE_TRAK_TABLE_TAG = 0x7472616BUL, /* 'trak' */
00388     LE_VDMX_TABLE_TAG = 0x56444D58UL, /* 'VDMX' */
00389     LE_VHEA_TABLE_TAG = 0x76686561UL, /* 'vhea' */
00390     LE_VMTX_TABLE_TAG = 0x766D7478UL, /* 'vmtx' */
00391     LE_VORG_TABLE_TAG = 0x564F5247UL, /* 'VORG' */
00392     LE_ZAPF_TABLE_TAG = 0x5A617066UL  /* 'Zapf' */
00393 };
00394 
00401 enum LEFeatureTags {
00402     LE_AALT_FEATURE_TAG = 0x61616C74UL, /* 'aalt' */
00403     LE_ABVF_FEATURE_TAG = 0x61627666UL, /* 'abvf' */
00404     LE_ABVM_FEATURE_TAG = 0x6162766DUL, /* 'abvm' */
00405     LE_ABVS_FEATURE_TAG = 0x61627673UL, /* 'abvs' */
00406     LE_AFRC_FEATURE_TAG = 0x61667263UL, /* 'afrc' */
00407     LE_AKHN_FEATURE_TAG = 0x616B686EUL, /* 'akhn' */
00408     LE_BLWF_FEATURE_TAG = 0x626C7766UL, /* 'blwf' */
00409     LE_BLWM_FEATURE_TAG = 0x626C776DUL, /* 'blwm' */
00410     LE_BLWS_FEATURE_TAG = 0x626C7773UL, /* 'blws' */
00411     LE_CALT_FEATURE_TAG = 0x63616C74UL, /* 'calt' */
00412     LE_CASE_FEATURE_TAG = 0x63617365UL, /* 'case' */
00413     LE_CCMP_FEATURE_TAG = 0x63636D70UL, /* 'ccmp' */
00414     LE_CLIG_FEATURE_TAG = 0x636C6967UL, /* 'clig' */
00415     LE_CPSP_FEATURE_TAG = 0x63707370UL, /* 'cpsp' */
00416     LE_CSWH_FEATURE_TAG = 0x63737768UL, /* 'cswh' */
00417     LE_CURS_FEATURE_TAG = 0x63757273UL, /* 'curs' */
00418     LE_C2SC_FEATURE_TAG = 0x63327363UL, /* 'c2sc' */
00419     LE_C2PC_FEATURE_TAG = 0x63327063UL, /* 'c2pc' */
00420     LE_DIST_FEATURE_TAG = 0x64697374UL, /* 'dist' */
00421     LE_DLIG_FEATURE_TAG = 0x646C6967UL, /* 'dlig' */
00422     LE_DNOM_FEATURE_TAG = 0x646E6F6DUL, /* 'dnom' */
00423     LE_EXPT_FEATURE_TAG = 0x65787074UL, /* 'expt' */
00424     LE_FALT_FEATURE_TAG = 0x66616C74UL, /* 'falt' */
00425     LE_FIN2_FEATURE_TAG = 0x66696E32UL, /* 'fin2' */
00426     LE_FIN3_FEATURE_TAG = 0x66696E33UL, /* 'fin3' */
00427     LE_FINA_FEATURE_TAG = 0x66696E61UL, /* 'fina' */
00428     LE_FRAC_FEATURE_TAG = 0x66726163UL, /* 'frac' */
00429     LE_FWID_FEATURE_TAG = 0x66776964UL, /* 'fwid' */
00430     LE_HALF_FEATURE_TAG = 0x68616C66UL, /* 'half' */
00431     LE_HALN_FEATURE_TAG = 0x68616C6EUL, /* 'haln' */
00432     LE_HALT_FEATURE_TAG = 0x68616C74UL, /* 'halt' */
00433     LE_HIST_FEATURE_TAG = 0x68697374UL, /* 'hist' */
00434     LE_HKNA_FEATURE_TAG = 0x686B6E61UL, /* 'hkna' */
00435     LE_HLIG_FEATURE_TAG = 0x686C6967UL, /* 'hlig' */
00436     LE_HNGL_FEATURE_TAG = 0x686E676CUL, /* 'hngl' */
00437     LE_HWID_FEATURE_TAG = 0x68776964UL, /* 'hwid' */
00438     LE_INIT_FEATURE_TAG = 0x696E6974UL, /* 'init' */
00439     LE_ISOL_FEATURE_TAG = 0x69736F6CUL, /* 'isol' */
00440     LE_ITAL_FEATURE_TAG = 0x6974616CUL, /* 'ital' */
00441     LE_JALT_FEATURE_TAG = 0x6A616C74UL, /* 'jalt' */
00442     LE_JP78_FEATURE_TAG = 0x6A703738UL, /* 'jp78' */
00443     LE_JP83_FEATURE_TAG = 0x6A703833UL, /* 'jp83' */
00444     LE_JP90_FEATURE_TAG = 0x6A703930UL, /* 'jp90' */
00445     LE_KERN_FEATURE_TAG = 0x6B65726EUL, /* 'kern' */
00446     LE_LFBD_FEATURE_TAG = 0x6C666264UL, /* 'lfbd' */
00447     LE_LIGA_FEATURE_TAG = 0x6C696761UL, /* 'liga' */
00448     LE_LJMO_FEATURE_TAG = 0x6C6A6D6FUL, /* 'ljmo' */
00449     LE_LNUM_FEATURE_TAG = 0x6C6E756DUL, /* 'lnum' */
00450     LE_LOCL_FEATURE_TAG = 0x6C6F636CUL, /* 'locl' */
00451     LE_MARK_FEATURE_TAG = 0x6D61726BUL, /* 'mark' */
00452     LE_MED2_FEATURE_TAG = 0x6D656432UL, /* 'med2' */
00453     LE_MEDI_FEATURE_TAG = 0x6D656469UL, /* 'medi' */
00454     LE_MGRK_FEATURE_TAG = 0x6D67726BUL, /* 'mgrk' */
00455     LE_MKMK_FEATURE_TAG = 0x6D6B6D6BUL, /* 'mkmk' */
00456     LE_MSET_FEATURE_TAG = 0x6D736574UL, /* 'mset' */
00457     LE_NALT_FEATURE_TAG = 0x6E616C74UL, /* 'nalt' */
00458     LE_NLCK_FEATURE_TAG = 0x6E6C636BUL, /* 'nlck' */
00459     LE_NUKT_FEATURE_TAG = 0x6E756B74UL, /* 'nukt' */
00460     LE_NUMR_FEATURE_TAG = 0x6E756D72UL, /* 'numr' */
00461     LE_ONUM_FEATURE_TAG = 0x6F6E756DUL, /* 'onum' */
00462     LE_OPBD_FEATURE_TAG = 0x6F706264UL, /* 'opbd' */
00463     LE_ORDN_FEATURE_TAG = 0x6F72646EUL, /* 'ordn' */
00464     LE_ORNM_FEATURE_TAG = 0x6F726E6DUL, /* 'ornm' */
00465     LE_PALT_FEATURE_TAG = 0x70616C74UL, /* 'palt' */
00466     LE_PCAP_FEATURE_TAG = 0x70636170UL, /* 'pcap' */
00467     LE_PNUM_FEATURE_TAG = 0x706E756DUL, /* 'pnum' */
00468     LE_PREF_FEATURE_TAG = 0x70726566UL, /* 'pref' */
00469     LE_PRES_FEATURE_TAG = 0x70726573UL, /* 'pres' */
00470     LE_PSTF_FEATURE_TAG = 0x70737466UL, /* 'pstf' */
00471     LE_PSTS_FEATURE_TAG = 0x70737473UL, /* 'psts' */
00472     LE_PWID_FEATURE_TAG = 0x70776964UL, /* 'pwid' */
00473     LE_QWID_FEATURE_TAG = 0x71776964UL, /* 'qwid' */
00474     LE_RAND_FEATURE_TAG = 0x72616E64UL, /* 'rand' */
00475     LE_RLIG_FEATURE_TAG = 0x726C6967UL, /* 'rlig' */
00476     LE_RPHF_FEATURE_TAG = 0x72706866UL, /* 'rphf' */
00477     LE_RTBD_FEATURE_TAG = 0x72746264UL, /* 'rtbd' */
00478     LE_RTLA_FEATURE_TAG = 0x72746C61UL, /* 'rtla' */
00479     LE_RUBY_FEATURE_TAG = 0x72756279UL, /* 'ruby' */
00480     LE_SALT_FEATURE_TAG = 0x73616C74UL, /* 'salt' */
00481     LE_SINF_FEATURE_TAG = 0x73696E66UL, /* 'sinf' */
00482     LE_SIZE_FEATURE_TAG = 0x73697A65UL, /* 'size' */
00483     LE_SMCP_FEATURE_TAG = 0x736D6370UL, /* 'smcp' */
00484     LE_SMPL_FEATURE_TAG = 0x736D706CUL, /* 'smpl' */
00485     LE_SS01_FEATURE_TAG = 0x73733031UL, /* 'ss01' */
00486     LE_SS02_FEATURE_TAG = 0x73733032UL, /* 'ss02' */
00487     LE_SS03_FEATURE_TAG = 0x73733033UL, /* 'ss03' */
00488     LE_SS04_FEATURE_TAG = 0x73733034UL, /* 'ss04' */
00489     LE_SS05_FEATURE_TAG = 0x73733035UL, /* 'ss05' */
00490     LE_SS06_FEATURE_TAG = 0x73733036UL, /* 'ss06' */
00491     LE_SS07_FEATURE_TAG = 0x73733037UL, /* 'ss07' */
00492     LE_SS08_FEATURE_TAG = 0x73733038UL, /* 'ss08' */
00493     LE_SS09_FEATURE_TAG = 0x73733039UL, /* 'ss09' */
00494     LE_SS10_FEATURE_TAG = 0x73733130UL, /* 'ss10' */
00495     LE_SS11_FEATURE_TAG = 0x73733131UL, /* 'ss11' */
00496     LE_SS12_FEATURE_TAG = 0x73733132UL, /* 'ss12' */
00497     LE_SS13_FEATURE_TAG = 0x73733133UL, /* 'ss13' */
00498     LE_SS14_FEATURE_TAG = 0x73733134UL, /* 'ss14' */
00499     LE_SS15_FEATURE_TAG = 0x73733135UL, /* 'ss15' */
00500     LE_SS16_FEATURE_TAG = 0x73733136UL, /* 'ss16' */
00501     LE_SS17_FEATURE_TAG = 0x73733137UL, /* 'ss17' */
00502     LE_SS18_FEATURE_TAG = 0x73733138UL, /* 'ss18' */
00503     LE_SS19_FEATURE_TAG = 0x73733139UL, /* 'ss19' */
00504     LE_SS20_FEATURE_TAG = 0x73733230UL, /* 'ss20' */
00505     LE_SUBS_FEATURE_TAG = 0x73756273UL, /* 'subs' */
00506     LE_SUPS_FEATURE_TAG = 0x73757073UL, /* 'sups' */
00507     LE_SWSH_FEATURE_TAG = 0x73777368UL, /* 'swsh' */
00508     LE_TITL_FEATURE_TAG = 0x7469746CUL, /* 'titl' */
00509     LE_TJMO_FEATURE_TAG = 0x746A6D6FUL, /* 'tjmo' */
00510     LE_TNAM_FEATURE_TAG = 0x746E616DUL, /* 'tnam' */
00511     LE_TNUM_FEATURE_TAG = 0x746E756DUL, /* 'tnum' */
00512     LE_TRAD_FEATURE_TAG = 0x74726164UL, /* 'trad' */
00513     LE_TWID_FEATURE_TAG = 0x74776964UL, /* 'twid' */
00514     LE_UNIC_FEATURE_TAG = 0x756E6963UL, /* 'unic' */
00515     LE_VALT_FEATURE_TAG = 0x76616C74UL, /* 'valt' */
00516     LE_VATU_FEATURE_TAG = 0x76617475UL, /* 'vatu' */
00517     LE_VERT_FEATURE_TAG = 0x76657274UL, /* 'vert' */
00518     LE_VHAL_FEATURE_TAG = 0x7668616CUL, /* 'vhal' */
00519     LE_VJMO_FEATURE_TAG = 0x766A6D6FUL, /* 'vjmo' */
00520     LE_VKNA_FEATURE_TAG = 0x766B6E61UL, /* 'vkna' */
00521     LE_VKRN_FEATURE_TAG = 0x766B726EUL, /* 'vkrn' */
00522     LE_VPAL_FEATURE_TAG = 0x7670616CUL, /* 'vpal' */
00523     LE_VRT2_FEATURE_TAG = 0x76727432UL, /* 'vrt2' */
00524     LE_ZERO_FEATURE_TAG = 0x7A65726FUL  /* 'zero' */
00525 };
00526 
00532 enum LEErrorCode {
00533     /* informational */
00534     LE_NO_SUBFONT_WARNING          = U_USING_DEFAULT_WARNING,
00535 
00536     /* success */
00537     LE_NO_ERROR                     = U_ZERO_ERROR,
00538 
00539     /* failures */
00540     LE_ILLEGAL_ARGUMENT_ERROR       = U_ILLEGAL_ARGUMENT_ERROR,
00541     LE_MEMORY_ALLOCATION_ERROR      = U_MEMORY_ALLOCATION_ERROR,
00542     LE_INDEX_OUT_OF_BOUNDS_ERROR    = U_INDEX_OUTOFBOUNDS_ERROR,
00543     LE_NO_LAYOUT_ERROR              = U_UNSUPPORTED_ERROR,
00544     LE_INTERNAL_ERROR               = U_INTERNAL_PROGRAM_ERROR,
00545     LE_FONT_FILE_NOT_FOUND_ERROR    = U_FILE_ACCESS_ERROR,
00546     LE_MISSING_FONT_TABLE_ERROR     = U_MISSING_RESOURCE_ERROR
00547 };
00548 
00549 #ifndef XP_CPLUSPLUS
00550 
00555 typedef enum LEErrorCode LEErrorCode;
00556 #endif
00557 
00563 #define LE_SUCCESS(code) (U_SUCCESS((UErrorCode)code))
00564 
00570 #define LE_FAILURE(code) (U_FAILURE((UErrorCode)code))
00571 
00572 U_NAMESPACE_END
00573 #endif
00574 
00575 

Generated on Mon Nov 24 14:35:32 2003 for ICU 2.8 by doxygen1.2.11.1 written by Dimitri van Heesch, © 1997-2001