Files

342 lines
18 KiB
C

/*
* Copyright (C) 2000-2007 Beijing Komoxo Inc.
* All rights reserved.
*/
#ifndef SE_MINIGUI_H
#define SE_MINIGUI_H
#ifdef __cplusplus
extern "C"{
#endif
#define SE_FONT_DYNAMIC_LOADING_SUPPORT
#define SE_PALETTE_AUTO_ADJUST
/* Script Easy integration API with minigui */
#ifndef SE_EXPORT
#define SE_EXPORT extern
#endif
typedef int sestatus;
typedef unsigned short seunichar16;
/*{{ status_code_definition {{*/
#define SE_STATUS_OK 0
#define SE_STATUS_VISIBLE 1
#define SE_STATUS_INVISIBLE 2
#define SE_STATUS_OUTSIDE 3
#define SE_STATUS_NO_TEXT 4
#define SE_STATUS_OUT_OF_START 5
#define SE_STATUS_OUT_OF_END 6
#define SE_STATUS_INVALID_PARAMETER -1
#define SE_STATUS_INVALID_DEVICE_CONTEXT -2
#define SE_STATUS_TEXT_ILL_FORMED -3
#define SE_STATUS_MARKUP_ILL_FORMED -4
#define SE_STATUS_TEXT_TOO_LONG -5
#define SE_STATUS_NO_FONT -6
#define SE_STATUS_NOT_INITIALIZED -7
/*}} status_code_definition }}*/
typedef unsigned int (*SeFontAccessFunc)(
void* name,
void* buffer,
unsigned int offset,
unsigned int size);
typedef struct
{
int language;
const void* language_data;
const void* font_table;
const void* logical_font_table;
SeFontAccessFunc font_access_callback;
void* mem_pool;
int mem_pool_size;
void* cache_mem_pool;
int cache_mem_pool_size;
} SeInitInfo;
sestatus se_minigui_initialize(const SeInitInfo* init_info);
sestatus se_minigui_cleanup(void);
sestatus se_minigui_set_chip_param(void* chip_param);
sestatus se_minigui_set_cache(void* cache_mem_pool, int cache_mem_pool_size);
/*{{ SeLogFont_constants {{*/
#define SE_LOGFONT_BOLD 0x01
#define SE_LOGFONT_ITALIC 0x02
#define SE_LOGFONT_UNDERLINE 0x04
#define SE_LOGFONT_STRIKETHROUGH 0x08
#define SE_LOGFONT_PREFERRED 0x10
#define SE_LOGFONT_MONO 0x20
/*}} SeLogFont_constants }}*/
/*{{ SeLogFont_type {{*/
typedef struct
{
unsigned short size;
unsigned char attr;
unsigned char id;
} SeLogFont;
/*}} SeLogFont_type }}*/
int se_minigui_get_char_width (SeLogFont *logfont, seunichar16 wc);
int se_minigui_get_font_ascent (SeLogFont *logfont);
int se_minigui_get_font_descent (SeLogFont *logfont);
const void *se_minigui_get_char_pixmap(
const SeLogFont *logfont,
const seunichar16 wc,
int *pitch);
int se_minigui_get_char_bbox(
SeLogFont *logfont,
seunichar16 wc,
int *px,
int *py,
int *pwidth,
int *pheight);
void se_minigui_get_char_advance(
SeLogFont *logfont,
seunichar16 wc,
int *px,
int *py);
/*{{ language_code_constants {{*/
#define SE_LANG_AA 0 /* Afar */
#define SE_LANG_AB 1 /* Abkhazia */
#define SE_LANG_AF 2 /* Afrikaans */
#define SE_LANG_AM 3 /* Amharic */
#define SE_LANG_AR 4 /* Arabic */
#define SE_LANG_AS 5 /* Assamese */
#define SE_LANG_AST 6 /* Asturian */
#define SE_LANG_AVA 7 /* Avaric */
#define SE_LANG_AY 8 /* Aymara */
#define SE_LANG_AZ 9 /* Azerbaijani */
#define SE_LANG_AZ_IR 10 /* Azerbaijani in Iran */
#define SE_LANG_BA 11 /* Bashkir */
#define SE_LANG_BAM 12 /* Bambara */
#define SE_LANG_BE 13 /* Byelorussian */
#define SE_LANG_BG 14 /* Bulgarian */
#define SE_LANG_BH 15 /* Bihari (Devanagari script) */
#define SE_LANG_BHO 16 /* Bhojpuri (Devanagari script) */
#define SE_LANG_BI 17 /* Bislama */
#define SE_LANG_BIN 18 /* Edo or Bini */
#define SE_LANG_BN 19 /* Bengali (Bengali script) */
#define SE_LANG_BO 20 /* Tibetan */
#define SE_LANG_BR 21 /* Breton */
#define SE_LANG_BS 22 /* Bosnian */
#define SE_LANG_BUA 23 /* Buriat (Buryat) */
#define SE_LANG_CA 24 /* Catalan */
#define SE_LANG_CE 25 /* Chechen */
#define SE_LANG_CH 26 /* Chamorro */
#define SE_LANG_CHM 27 /* Mari (Lower & Upper Cheremis) */
#define SE_LANG_CHR 28 /* Cherokee */
#define SE_LANG_CO 29 /* Corsican */
#define SE_LANG_CS 30 /* Czech */
#define SE_LANG_CU 31 /* Old Church Slavonic */
#define SE_LANG_CV 32 /* Chuvash */
#define SE_LANG_CY 33 /* Welsh */
#define SE_LANG_DA 34 /* Danish */
#define SE_LANG_DE 35 /* German */
#define SE_LANG_DZ 36 /* Dzongkha */
#define SE_LANG_EL 37 /* Greek */
#define SE_LANG_EN 38 /* English */
#define SE_LANG_EO 39 /* Esperanto */
#define SE_LANG_ES 40 /* Spanish */
#define SE_LANG_ET 41 /* Estonian */
#define SE_LANG_EU 42 /* Basque */
#define SE_LANG_FA 43 /* Persian */
#define SE_LANG_FI 44 /* Finnish */
#define SE_LANG_FJ 45 /* Fijian */
#define SE_LANG_FO 46 /* Faroese */
#define SE_LANG_FR 47 /* French */
#define SE_LANG_FUL 48 /* Fulah (Fula) */
#define SE_LANG_FUR 49 /* Friulian */
#define SE_LANG_FY 50 /* Frisian */
#define SE_LANG_GA 51 /* Irish */
#define SE_LANG_GD 52 /* Scots Gaelic */
#define SE_LANG_GEZ 53 /* Ethiopic (Geez) */
#define SE_LANG_GL 54 /* Galician */
#define SE_LANG_GN 55 /* Guarani */
#define SE_LANG_GU 56 /* Gujarati */
#define SE_LANG_GV 57 /* Manx Gaelic */
#define SE_LANG_HA 58 /* Hausa */
#define SE_LANG_HAW 59 /* Hawaiian */
#define SE_LANG_HE 60 /* Hebrew */
#define SE_LANG_HI 61 /* Hindi (Devanagari script) */
#define SE_LANG_HO 62 /* Hiri Motu */
#define SE_LANG_HR 63 /* Croatian */
#define SE_LANG_HU 64 /* Hungarian */
#define SE_LANG_HY 65 /* Armenian */
#define SE_LANG_IA 66 /* Interlingua */
#define SE_LANG_IBO 67 /* Igbo (Ibo) */
#define SE_LANG_ID 68 /* Indonesian */
#define SE_LANG_IE 69 /* Interlingue */
#define SE_LANG_IK 70 /* Inupiaq (Inupiak, Eskimo) */
#define SE_LANG_IO 71 /* Ido */
#define SE_LANG_IS 72 /* Icelandic */
#define SE_LANG_IT 73 /* Italian */
#define SE_LANG_IU 74 /* Inuktitut */
#define SE_LANG_JA 75 /* Japaness */
#define SE_LANG_KA 76 /* Georgian */
#define SE_LANG_KAA 77 /* Kara-Kalpak (Karakalpak) */
#define SE_LANG_KI 78 /* Kikuyu */
#define SE_LANG_KK 79 /* Kazakh */
#define SE_LANG_KL 80 /* Greenlandic */
#define SE_LANG_KM 81 /* Khmer */
#define SE_LANG_KN 82 /* Kannada */
#define SE_LANG_KO 83 /* Korean */
#define SE_LANG_KOK 84 /* Kokani (Devanagari script) */
#define SE_LANG_KS 85 /* Kashmiri (Devanagari script) */
#define SE_LANG_KU 86 /* Kurdish */
#define SE_LANG_KU_IR 87 /* Kurdish in Iran */
#define SE_LANG_KUM 88 /* Kumyk */
#define SE_LANG_KV 89 /* Komi (Komi-Permyak/Komi-Siryan) */
#define SE_LANG_KW 90 /* Cornish */
#define SE_LANG_KY 91 /* Kirgiz */
#define SE_LANG_LA 92 /* Latin */
#define SE_LANG_LB 93 /* Luxembourgish (Letzeburgesch) */
#define SE_LANG_LEZ 94 /* Lezghian (Lezgian) */
#define SE_LANG_LN 95 /* Lingala */
#define SE_LANG_LO 96 /* Lao */
#define SE_LANG_LT 97 /* Lithuanian */
#define SE_LANG_LV 98 /* Latvian */
#define SE_LANG_MG 99 /* Malagasy */
#define SE_LANG_MH 100 /* Marshallese */
#define SE_LANG_MI 101 /* Maori */
#define SE_LANG_MK 102 /* Macedonian */
#define SE_LANG_ML 103 /* Malayalam */
#define SE_LANG_MN 104 /* Mongolian */
#define SE_LANG_MO 105 /* Moldavian */
#define SE_LANG_MR 106 /* Marathi (Devanagari script) */
#define SE_LANG_MT 107 /* Maltese */
#define SE_LANG_MY 108 /* Burmese (Myanmar) */
#define SE_LANG_NB 109 /* Norwegian Bokmal */
#define SE_LANG_NDS 110 /* Low Saxon */
#define SE_LANG_NE 111 /* Nepali (Devanagari script) */
#define SE_LANG_NL 112 /* Dutch */
#define SE_LANG_NN 113 /* Norwegian Nynorsk */
#define SE_LANG_NO 114 /* Norwegian */
#define SE_LANG_NY 115 /* Chichewa */
#define SE_LANG_OC 116 /* Occitan */
#define SE_LANG_OM 117 /* Oromo or Galla */
#define SE_LANG_OR 118 /* Oriya */
#define SE_LANG_OS 119 /* Ossetic */
#define SE_LANG_PA 120 /* Punjabi (Gurumukhi script) */
#define SE_LANG_PL 121 /* Polish */
#define SE_LANG_PS_AF 122 /* Pashto in Afghanistan */
#define SE_LANG_PS_PK 123 /* Pashto in Pakistan */
#define SE_LANG_PT 124 /* Portuguese */
#define SE_LANG_RM 125 /* Rhaeto-Romance */
#define SE_LANG_RO 126 /* Romanian */
#define SE_LANG_RU 127 /* Russian */
#define SE_LANG_SA 128 /* Sanskrit (Devanagari script) */
#define SE_LANG_SAH 129 /* Yakut */
#define SE_LANG_SCO 130 /* Scots */
#define SE_LANG_SE 131 /* North Sami */
#define SE_LANG_SEL 132 /* Selkup (Ostyak-Samoyed) */
#define SE_LANG_SH 133 /* Serbo-Croatian */
#define SE_LANG_SI 134 /* Sinhala (Sinhalese) */
#define SE_LANG_SK 135 /* Slovak */
#define SE_LANG_SL 136 /* Slovenian */
#define SE_LANG_SM 137 /* Samoan */
#define SE_LANG_SMA 138 /* South Sami */
#define SE_LANG_SMJ 139 /* Lule Sami */
#define SE_LANG_SMN 140 /* Inari Sami */
#define SE_LANG_SMS 141 /* Skolt Sami */
#define SE_LANG_SO 142 /* Somali */
#define SE_LANG_SQ 143 /* Albanian */
#define SE_LANG_SR 144 /* Serbian */
#define SE_LANG_SV 145 /* Swedish */
#define SE_LANG_SW 146 /* Swahili */
#define SE_LANG_SYR 147 /* Syriac */
#define SE_LANG_TA 148 /* Tamil */
#define SE_LANG_TE 149 /* Telugu */
#define SE_LANG_TG 150 /* Tajik */
#define SE_LANG_TH 151 /* Thai */
#define SE_LANG_TI_ER 152 /* Eritrean Tigrinya */
#define SE_LANG_TI_ET 153 /* Ethiopian Tigrinya */
#define SE_LANG_TIG 154 /* Tigre */
#define SE_LANG_TK 155 /* Turkmen */
#define SE_LANG_TL 156 /* Tagalog */
#define SE_LANG_TN 157 /* Tswana */
#define SE_LANG_TO 158 /* Tonga */
#define SE_LANG_TR 159 /* Turkish */
#define SE_LANG_TS 160 /* Tsonga */
#define SE_LANG_TT 161 /* Tatar */
#define SE_LANG_TW 162 /* Twi */
#define SE_LANG_TYV 163 /* Tuvinian */
#define SE_LANG_UG 164 /* Uighur */
#define SE_LANG_UK 165 /* Ukrainian */
#define SE_LANG_UR 166 /* Urdu */
#define SE_LANG_UZ 167 /* Uzbek */
#define SE_LANG_VEN 168 /* Venda */
#define SE_LANG_VI 169 /* Vietnamese */
#define SE_LANG_VO 170 /* Volapuk */
#define SE_LANG_VOT 171 /* Votic */
#define SE_LANG_WA 172 /* Walloon */
#define SE_LANG_WEN 173 /* Sorbian */
#define SE_LANG_WO 174 /* Wolof */
#define SE_LANG_XH 175 /* Xhosa */
#define SE_LANG_YAP 176 /* Yapese */
#define SE_LANG_YI 177 /* Yiddish */
#define SE_LANG_YO 178 /* Yoruba */
#define SE_LANG_ZH_CN 179 /* Chinese (simplified) */
#define SE_LANG_ZH_HK 180 /* Chinese (Hong Kong) */
#define SE_LANG_ZH_MO 181 /* Chinese (Macau) */
#define SE_LANG_ZH_SG 182 /* Chinese (Singapore) */
#define SE_LANG_ZH_TW 183 /* Chinese (traditional) */
#define SE_LANG_ZU 184 /* Zulu */
/*}} language_code_constants }}*/
/* Script Easy font description type definition */
typedef struct{
const char *font_name;
const int font_id;
} se_font_name_map;
typedef struct
{
int font_table_size;
int font_name_map_size;
const se_font_name_map *name_map;
const void **font_table;
const unsigned char *logical_font_table;
} se_font_description;
extern const se_font_description se_font_desc;
extern int se_minigui_mem_pool[];
extern int se_minigui_mem_pool_size;
extern int se_minigui_cache_mem_pool[];
extern int se_minigui_cache_mem_pool_size;
void se_minigui_init_fonts(void);
void se_minigui_destroy_fonts(void);
#ifdef SE_FONT_DYNAMIC_LOADING_SUPPORT
unsigned int se_minigui_read_font(
void* name,
void* buffer,
unsigned int offset,
unsigned int size);
#endif
#ifdef __cplusplus
}
#endif
#endif /* SE_MINIGUI_H */