同步操作将从 Gitee 极速下载/MiniGUI 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
/////////////////////////////////////////////////////////////////////////////////// IMPORTANT NOTICE//// The following open source license statement does not apply to any// entity in the Exception List published by FMSoft.//// For more information, please visit://// https://www.fmsoft.cn/exception-list/////////////////////////////////////////////////////////////////////////////////** This file is part of MiniGUI, a mature cross-platform windowing* and Graphics User Interface (GUI) support system for embedded systems* and smart IoT devices.** Copyright (C) 2002~2018, Beijing FMSoft Technologies Co., Ltd.* Copyright (C) 1998~2002, WEI Yongming** This program is free software: you can redistribute it and/or modify* it under the terms of the GNU General Public License as published by* the Free Software Foundation, either version 3 of the License, or* (at your option) any later version.** This program is distributed in the hope that it will be useful,* but WITHOUT ANY WARRANTY; without even the implied warranty of* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the* GNU General Public License for more details.** You should have received a copy of the GNU General Public License* along with this program. If not, see <http://www.gnu.org/licenses/>.** Or,** As this program is a library, any link to this program must follow* GNU General Public License version 3 (GPLv3). If you cannot accept* GPLv3, you need to be licensed from FMSoft.** If you have got a commercial license of this program, please use it* under the terms and conditions of the commercial license.** For more information about the commercial license, please refer to* <http://www.minigui.com/en/about/licensing-policy/>.*/#include <stdlib.h>#include <string.h>#include <ctype.h>#include "common.h"#include "minigui.h"#include "gdi.h"#ifdef _MGCHARSET_UNICODEstatic const Uint16 iso639_1_codes[] ={#define PACK(a,b) ((Uint16)((((Uint8)(a))<<8)|((Uint8)(b))))PACK('a', 'a'), // AfarPACK('a', 'b'), // AbkhazianPACK('a', 'f'), // AfrikaansPACK('a', 'm'), // AmharicPACK('a', 'r'), // ArabicPACK('a', 's'), // AssamesePACK('a', 'y'), // AymaraPACK('a', 'z'), // AzerbaijaniPACK('b', 'a'), // BashkirPACK('b', 'e'), // ByelorussianPACK('b', 'g'), // BulgarianPACK('b', 'h'), // BihariPACK('b', 'i'), // BislamaPACK('b', 'n'), // BengaliPACK('b', 'o'), // TibetanPACK('b', 'r'), // BretonPACK('c', 'a'), // CatalanPACK('c', 'o'), // CorsicanPACK('c', 's'), // CzechPACK('c', 'y'), // WelchPACK('d', 'a'), // DanishPACK('d', 'e'), // GermanPACK('d', 'v'), // DivehiPACK('d', 'z'), // BhutaniPACK('e', 'l'), // GreekPACK('e', 'n'), // EnglishPACK('e', 'o'), // EsperantoPACK('e', 's'), // SpanishPACK('e', 't'), // EstonianPACK('e', 'u'), // BasquePACK('f', 'a'), // PersianPACK('f', 'i'), // FinnishPACK('f', 'j'), // FijiPACK('f', 'o'), // FaeroesePACK('f', 'r'), // FrenchPACK('f', 'y'), // FrisianPACK('g', 'a'), // IrishPACK('g', 'd'), // Scots GaelicPACK('g', 'l'), // GalicianPACK('g', 'n'), // GuaraniPACK('g', 'u'), // GujaratiPACK('h', 'a'), // HausaPACK('h', 'i'), // HindiPACK('h', 'e'), // HebrewPACK('h', 'r'), // CroatianPACK('h', 'u'), // HungarianPACK('h', 'y'), // ArmenianPACK('i', 'a'), // InterlinguaPACK('i', 'd'), // IndonesianPACK('i', 'e'), // InterlinguePACK('i', 'k'), // InupiakPACK('i', 'n'), // former IndonesianPACK('i', 's'), // IcelandicPACK('i', 't'), // ItalianPACK('i', 'u'), // Inuktitut (Eskimo)PACK('i', 'w'), // former HebrewPACK('j', 'a'), // JapanesePACK('j', 'i'), // former YiddishPACK('j', 'w'), // JavanesePACK('k', 'a'), // GeorgianPACK('k', 'k'), // KazakhPACK('k', 'l'), // GreenlandicPACK('k', 'm'), // CambodianPACK('k', 'n'), // KannadaPACK('k', 'o'), // KoreanPACK('k', 's'), // KashmiriPACK('k', 'u'), // KurdishPACK('k', 'y'), // KirghizPACK('l', 'a'), // LatinPACK('l', 'n'), // LingalaPACK('l', 'o'), // LaothianPACK('l', 't'), // LithuanianPACK('l', 'v'), // Latvian, LettishPACK('m', 'g'), // MalagasyPACK('m', 'i'), // MaoriPACK('m', 'k'), // MacedonianPACK('m', 'l'), // MalayalamPACK('m', 'n'), // MongolianPACK('m', 'o'), // MoldavianPACK('m', 'r'), // MarathiPACK('m', 's'), // MalayPACK('m', 't'), // MaltesePACK('m', 'y'), // BurmesePACK('n', 'a'), // NauruPACK('n', 'e'), // NepaliPACK('n', 'l'), // DutchPACK('n', 'o'), // NorwegianPACK('o', 'c'), // OccitanPACK('o', 'm'), // (Afan) OromoPACK('o', 'r'), // OriyaPACK('p', 'a'), // PunjabiPACK('p', 'l'), // PolishPACK('p', 's'), // Pashto, PushtoPACK('p', 't'), // PortuguesePACK('q', 'u'), // QuechuaPACK('r', 'm'), // Rhaeto-RomancePACK('r', 'n'), // KirundiPACK('r', 'o'), // RomanianPACK('r', 'u'), // RussianPACK('r', 'w'), // KinyarwandaPACK('s', 'a'), // SanskritPACK('s', 'd'), // SindhiPACK('s', 'g'), // SangroPACK('s', 'h'), // Serbo-CroatianPACK('s', 'i'), // SinghalesePACK('s', 'k'), // SlovakPACK('s', 'l'), // SlovenianPACK('s', 'm'), // SamoanPACK('s', 'n'), // ShonaPACK('s', 'o'), // SomaliPACK('s', 'q'), // AlbanianPACK('s', 'r'), // SerbianPACK('s', 's'), // SiswatiPACK('s', 't'), // SesothoPACK('s', 'u'), // SudanesePACK('s', 'v'), // SwedishPACK('s', 'w'), // SwahiliPACK('t', 'a'), // TamilPACK('t', 'e'), // TeguluPACK('t', 'g'), // TajikPACK('t', 'h'), // ThaiPACK('t', 'i'), // TigrinyaPACK('t', 'k'), // TurkmenPACK('t', 'l'), // TagalogPACK('t', 'n'), // SetswanaPACK('t', 'o'), // TongaPACK('t', 'r'), // TurkishPACK('t', 's'), // TsongaPACK('t', 't'), // TatarPACK('t', 'w'), // TwiPACK('u', 'g'), // UigurPACK('u', 'k'), // UkrainianPACK('u', 'r'), // UrduPACK('u', 'z'), // UzbekPACK('v', 'i'), // VietnamesePACK('v', 'o'), // VolapukPACK('w', 'o'), // WolofPACK('x', 'h'), // XhosaPACK('y', 'i'), // YiddishPACK('y', 'o'), // YorubaPACK('z', 'a'), // ZhuangPACK('z', 'h'), // ChinesePACK('z', 'u'), // Zulu#undef PACK};LanguageCode GUIAPI LanguageCodeFromISO639s1 (Uint16 iso639_1){unsigned int lower = 0;unsigned int upper = TABLESIZE (iso639_1_codes) - 1;unsigned int mid = TABLESIZE (iso639_1_codes) / 2;if (!iso639_1)return LANGCODE_unknown;do {if (iso639_1 < iso639_1_codes[mid])upper = mid - 1;else if (iso639_1 > iso639_1_codes[mid])lower = mid + 1;elsereturn (LanguageCode)mid;mid = (lower + upper) / 2;} while (lower <= upper);return LANGCODE_unknown;}static const char* iso639_1_codes_str[] ={"aa", // Afar"ab", // Abkhazian"af", // Afrikaans"am", // Amharic"ar", // Arabic"as", // Assamese"ay", // Aymara"az", // Azerbaijani"ba", // Bashkir"be", // Byelorussian"bg", // Bulgarian"bh", // Bihari"bi", // Bislama"bn", // Bengali"bo", // Tibetan"br", // Breton"ca", // Catalan"co", // Corsican"cs", // Czech"cy", // Welch"da", // Danish"de", // German"dv", // Divehi"dz", // Bhutani"el", // Greek"en", // English"eo", // Esperanto"es", // Spanish"et", // Estonian"eu", // Basque"fa", // Persian"fi", // Finnish"fj", // Fiji"fo", // Faeroese"fr", // French"fy", // Frisian"ga", // Irish"gd", // Scots Gaelic"gl", // Galician"gn", // Guarani"gu", // Gujarati"ha", // Hausa"hi", // Hindi"he", // Hebrew"hr", // Croatian"hu", // Hungarian"hy", // Armenian"ia", // Interlingua"id", // Indonesian"ie", // Interlingue"ik", // Inupiak"in", // former Indonesian"is", // Icelandic"it", // Italian"iu", // Inuktitut (Eskimo)"iw", // former Hebrew"ja", // Japanese"ji", // former Yiddish"jw", // Javanese"ka", // Georgian"kk", // Kazakh"kl", // Greenlandic"km", // Cambodian"kn", // Kannada"ko", // Korean"ks", // Kashmiri"ku", // Kurdish"ky", // Kirghiz"la", // Latin"ln", // Lingala"lo", // Laothian"lt", // Lithuanian"lv", // Latvian, Lettish"mg", // Malagasy"mi", // Maori"mk", // Macedonian"ml", // Malayalam"mn", // Mongolian"mo", // Moldavian"mr", // Marathi"ms", // Malay"mt", // Maltese"my", // Burmese"na", // Nauru"ne", // Nepali"nl", // Dutch"no", // Norwegian"oc", // Occitan"om", // (Afan) Oromo"or", // Oriya"pa", // Punjabi"pl", // Polish"ps", // Pashto, Pushto"pt", // Portuguese"qu", // Quechua"rm", // Rhaeto-Romance"rn", // Kirundi"ro", // Romanian"ru", // Russian"rw", // Kinyarwanda"sa", // Sanskrit"sd", // Sindhi"sg", // Sangro"sh", // Serbo-Croatian"si", // Singhalese"sk", // Slovak"sl", // Slovenian"sm", // Samoan"sn", // Shona"so", // Somali"sq", // Albanian"sr", // Serbian"ss", // Siswati"st", // Sesotho"su", // Sudanese"sv", // Swedish"sw", // Swahili"ta", // Tamil"te", // Tegulu"tg", // Tajik"th", // Thai"ti", // Tigrinya"tk", // Turkmen"tl", // Tagalog"tn", // Setswana"to", // Tonga"tr", // Turkish"ts", // Tsonga"tt", // Tatar"tw", // Twi"ug", // Uigur"uk", // Ukrainian"ur", // Urdu"uz", // Uzbek"vi", // Vietnamese"vo", // Volapuk"wo", // Wolof"xh", // Xhosa"yi", // Yiddish"yo", // Yoruba"za", // Zhuang"zh", // Chinese"zu", // Zulu};const char* GUIAPI LanguageCodeToISO639s1 (LanguageCode lc){switch (lc) {case LANGCODE_unknown:return "";default:return iso639_1_codes_str[lc];}return "";}static const LanguageCode sample_language_of_script[] = {LANGCODE_unknown, /* SCRIPT_COMMON */LANGCODE_unknown, /* SCRIPT_INHERITED */LANGCODE_ar, /* SCRIPT_ARABIC */LANGCODE_hy, /* SCRIPT_ARMENIAN */LANGCODE_bn, /* SCRIPT_BENGALI */LANGCODE_zh, /* SCRIPT_BOPOMOFO: Used primarily in Taiwan, but not part of the standard zh-tw orthography */LANGCODE_unknown, /* SCRIPT_CHEROKEE; no ISO639-1 code; ISO639-2 code: chr */LANGCODE_unknown, /* SCRIPT_COPTIC; no ISO639-1 code; ISO639-2 code: cop */LANGCODE_ru, /* SCRIPT_CYRILLIC */LANGCODE_unknown, /* SCRIPT_DESERET: Deseret was used to write English */LANGCODE_hi, /* SCRIPT_DEVANAGARI */LANGCODE_am, /* SCRIPT_ETHIOPIC */LANGCODE_ka, /* SCRIPT_GEORGIAN */LANGCODE_unknown, /* SCRIPT_GOTHIC */LANGCODE_el, /* SCRIPT_GREEK */LANGCODE_gu, /* SCRIPT_GUJARATI */LANGCODE_pa, /* SCRIPT_GURMUKHI */LANGCODE_unknown, /* SCRIPT_HAN */LANGCODE_ko, /* SCRIPT_HANGUL */LANGCODE_he, /* SCRIPT_HEBREW */LANGCODE_ja, /* SCRIPT_HIRAGANA */LANGCODE_kn, /* SCRIPT_KANNADA */LANGCODE_ja, /* SCRIPT_KATAKANA */LANGCODE_km, /* SCRIPT_KHMER */LANGCODE_lo, /* SCRIPT_LAO */LANGCODE_en, /* SCRIPT_LATIN */LANGCODE_ml, /* SCRIPT_MALAYALAM */LANGCODE_mn, /* SCRIPT_MONGOLIAN */LANGCODE_my, /* SCRIPT_MYANMAR */LANGCODE_unknown, /* SCRIPT_OGHAM; Ogham was used to write old Irish */LANGCODE_unknown, /* SCRIPT_OLD_ITALIC */LANGCODE_or, /* SCRIPT_ORIYA */LANGCODE_unknown, /* SCRIPT_RUNIC */LANGCODE_si, /* SCRIPT_SINHALA */LANGCODE_unknown, /* SCRIPT_SYRIAC; no ISO639-1 code; ISO639-2 code: syr */LANGCODE_ta, /* SCRIPT_TAMIL */LANGCODE_te, /* SCRIPT_TELUGU */LANGCODE_dv, /* SCRIPT_THAANA */LANGCODE_th, /* SCRIPT_THAI */LANGCODE_bo, /* SCRIPT_TIBETAN */LANGCODE_iu, /* SCRIPT_CANADIAN_ABORIGINAL */LANGCODE_unknown, /* SCRIPT_YI */LANGCODE_tl, /* SCRIPT_TAGALOG *//* Phillipino languages/scripts */LANGCODE_unknown, /* SCRIPT_HANUNOO; no ISO639-1 code and ISO639-2 code; hnn? */LANGCODE_unknown, /* SCRIPT_BUHID; no ISO639-1 code and ISO639-2 code; bku? */LANGCODE_unknown, /* SCRIPT_TAGBANWA; no ISO639-1 code and ISO639-2 code; tbw? */LANGCODE_unknown, /* SCRIPT_BRAILLE */LANGCODE_unknown, /* SCRIPT_CYPRIOT */LANGCODE_unknown, /* SCRIPT_LIMBU */LANGCODE_unknown, /* SCRIPT_OSMANYA; Used for Somali (so) in the past */LANGCODE_unknown, /* SCRIPT_SHAVIAN; The Shavian alphabet was designed for English */LANGCODE_unknown, /* SCRIPT_LINEAR_B */LANGCODE_unknown, /* SCRIPT_TAI_LE */LANGCODE_unknown, /* SCRIPT_UGARITIC; no ISO639-1 code; ISO639-2 code: uga */LANGCODE_unknown, /* SCRIPT_NEW_TAI_LUE */LANGCODE_unknown, /* SCRIPT_BUGINESE; no ISO639-1 code; ISO639-2 code: bug */LANGCODE_unknown, /* SCRIPT_GLAGOLITIC: The original script for Old Church Slavonic (chu), later written with Cyrillic */LANGCODE_unknown, /* SCRIPT_TIFINAGH: Used for for Berber (ber), but Arabic script is more common */LANGCODE_unknown, /* SCRIPT_SYLOTI_NAGRI; no ISO639-1 code and ISO639-2 code; syl? */LANGCODE_unknown, /* SCRIPT_OLD_PERSIAN; no ISO639-1 code; ISO639-2 code: peo */LANGCODE_unknown, /* SCRIPT_KHAROSHTHI */LANGCODE_unknown, /* SCRIPT_UNKNOWN */LANGCODE_unknown, /* SCRIPT_BALINESE */LANGCODE_unknown, /* SCRIPT_CUNEIFORM */LANGCODE_unknown, /* SCRIPT_PHOENICIAN */LANGCODE_unknown, /* SCRIPT_PHAGS_PA */LANGCODE_unknown, /* SCRIPT_NKO; no ISO639-1 code; ISO639-2 code: nqo *//* Unicode-5.1 additions */LANGCODE_unknown, /* SCRIPT_KAYAH_LI */LANGCODE_unknown, /* SCRIPT_LEPCHA */LANGCODE_unknown, /* SCRIPT_REJANG */LANGCODE_unknown, /* SCRIPT_SUNDANESE */LANGCODE_unknown, /* SCRIPT_SAURASHTRA */LANGCODE_unknown, /* SCRIPT_CHAM */LANGCODE_unknown, /* SCRIPT_OL_CHIKI */LANGCODE_unknown, /* SCRIPT_VAI */LANGCODE_unknown, /* SCRIPT_CARIAN */LANGCODE_unknown, /* SCRIPT_LYCIAN */LANGCODE_unknown, /* SCRIPT_LYDIAN *//* Unicode-6.0 additions */LANGCODE_unknown, /* SCRIPT_BATAK */LANGCODE_unknown, /* SCRIPT_BRAHMI */LANGCODE_unknown, /* SCRIPT_MANDAIC *//* Unicode-6.1 additions */LANGCODE_unknown, /* SCRIPT_CHAKMA */LANGCODE_unknown, /* SCRIPT_MEROITIC_CURSIVE */LANGCODE_unknown, /* SCRIPT_MEROITIC_HIEROGLYPHS */LANGCODE_unknown, /* SCRIPT_MIAO */LANGCODE_unknown, /* SCRIPT_SHARADA */LANGCODE_unknown, /* SCRIPT_SORA_SOMPENG */LANGCODE_unknown, /* SCRIPT_TAKRI *//* Unicode 7.0 additions */LANGCODE_unknown, /* SCRIPT_BASSA_VAH, Bass */LANGCODE_unknown, /* SCRIPT_CAUCASIAN_ALBANIAN, Aghb */LANGCODE_unknown, /* SCRIPT_DUPLOYAN, Dupl */LANGCODE_unknown, /* SCRIPT_ELBASAN, Elba */LANGCODE_unknown, /* SCRIPT_GRANTHA, Gran */LANGCODE_unknown, /* SCRIPT_KHOJKI, Khoj */LANGCODE_unknown, /* SCRIPT_KHUDAWADI, Sind */LANGCODE_unknown, /* SCRIPT_LINEAR_A, Lina */LANGCODE_unknown, /* SCRIPT_MAHAJANI, Mahj */LANGCODE_unknown, /* SCRIPT_MANICHAEAN, Manu */LANGCODE_unknown, /* SCRIPT_MENDE_KIKAKUI, Mend */LANGCODE_unknown, /* SCRIPT_MODI, Modi */LANGCODE_unknown, /* SCRIPT_MRO, Mroo */LANGCODE_unknown, /* SCRIPT_NABATAEAN, Nbat */LANGCODE_unknown, /* SCRIPT_OLD_NORTH_ARABIAN, Narb */LANGCODE_unknown, /* SCRIPT_OLD_PERMIC, Perm */LANGCODE_unknown, /* SCRIPT_PAHAWH_HMONG, Hmng */LANGCODE_unknown, /* SCRIPT_PALMYRENE, Palm */LANGCODE_unknown, /* SCRIPT_PAU_CIN_HAU, Pauc */LANGCODE_unknown, /* SCRIPT_PSALTER_PAHLAVI, Phlp */LANGCODE_unknown, /* SCRIPT_SIDDHAM, Sidd */LANGCODE_unknown, /* SCRIPT_TIRHUTA, Tirh */LANGCODE_unknown, /* SCRIPT_WARANG_CITI, Wara *//* Unicode 8.0 additions */LANGCODE_unknown, /* SCRIPT_AHOM, Ahom */LANGCODE_unknown, /* SCRIPT_ANATOLIAN_HIEROGLYPHS, Hluw */LANGCODE_unknown, /* SCRIPT_HATRAN, Hatr */LANGCODE_unknown, /* SCRIPT_MULTANI, Mult */LANGCODE_unknown, /* SCRIPT_OLD_HUNGARIAN, Hung */LANGCODE_unknown, /* SCRIPT_SIGNWRITING, Sgnw *//* Unicode 9.0 additions */LANGCODE_unknown, /* SCRIPT_ADLAM, Adlm */LANGCODE_unknown, /* SCRIPT_BHAIKSUKI, Bhks */LANGCODE_unknown, /* SCRIPT_MARCHEN, Marc */LANGCODE_unknown, /* SCRIPT_NEWA, Newa */LANGCODE_unknown, /* SCRIPT_OSAGE, Osge */LANGCODE_unknown, /* SCRIPT_TANGUT, Tang *//* Unicode 10.0 additions */LANGCODE_unknown, /* SCRIPT_MASARAM_GONDI, Gonm */LANGCODE_unknown, /* SCRIPT_NUSHU, Nshu */LANGCODE_unknown, /* SCRIPT_SOYOMBO, Soyo */LANGCODE_unknown, /* SCRIPT_ZANABAZAR_SQUARE, Zanb *//* Unicode 11.0 additions */LANGCODE_unknown, /* SCRIPT_DOGRA, Dogr */LANGCODE_unknown, /* SCRIPT_GUNJALA_GONDI, Gong */LANGCODE_unknown, /* SCRIPT_HANIFI_ROHINGYA, Rohg */LANGCODE_unknown, /* SCRIPT_MAKASAR, Maka */LANGCODE_unknown, /* SCRIPT_MEDEFAIDRIN, Medf */LANGCODE_unknown, /* SCRIPT_OLD_SOGDIAN, Sogo */LANGCODE_unknown, /* SCRIPT_SOGDIAN, Sogd *//* Unicode 12.0 additions */LANGCODE_unknown, /* SCRIPT_ELYMAIC, Elymaic */LANGCODE_unknown, /* SCRIPT_NANDINAGARI, Nandinagari */LANGCODE_unknown, /* SCRIPT_NYIAKENG_PUACHUE_HMONG, Nyiakeng Puachue Hmong */LANGCODE_unknown, /* SCRIPT_WANCHO, Wancho */};LanguageCode GetSampleLanguageForScript(ScriptType st){switch (st) {case SCRIPT_INVALID_CODE:return LANGCODE_unknown;default:return sample_language_of_script[st];}return LANGCODE_unknown;}#endif /* _MGCHARSET_UNICODE */
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。