1 /***************************************************************************
2 * Copyright (C) 2011~2011 by CSSlayer *
3 * wengxt@gmail.com *
4 * *
5 * This program is free software; you can redistribute it and/or modify *
6 * it under the terms of the GNU General Public License as published by *
7 * the Free Software Foundation; either version 2 of the License, or *
8 * (at your option) any later version. *
9 * *
10 * This program is distributed in the hope that it will be useful, *
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
13 * GNU General Public License for more details. *
14 * *
15 * You should have received a copy of the GNU General Public License *
16 * along with this program; if not, write to the *
17 * Free Software Foundation, Inc., *
18 * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. *
19 ***************************************************************************/
20
21 #include <assert.h>
22 #include <iostream>
23 #include "enummap.h"
24
FcitxLibPinyinTransAmbiguity(FCITX_AMBIGUITY ambiguity)25 PinyinAmbiguity2 FcitxLibPinyinTransAmbiguity(FCITX_AMBIGUITY ambiguity)
26 {
27 switch(ambiguity) {
28 case FCITX_AMB_CiChi:
29 return PINYIN_AMB_C_CH;
30 case FCITX_AMB_ZiZhi:
31 return PINYIN_AMB_Z_ZH;
32 case FCITX_AMB_SiShi:
33 return PINYIN_AMB_S_SH;
34 case FCITX_AMB_LeNe:
35 return PINYIN_AMB_L_N;
36 case FCITX_AMB_FoHe:
37 return PINYIN_AMB_F_H;
38 case FCITX_AMB_LeRi:
39 return PINYIN_AMB_L_R;
40 case FCITX_AMB_GeKe:
41 return PINYIN_AMB_G_K;
42 case FCITX_AMB_AnAng:
43 return PINYIN_AMB_AN_ANG;
44 case FCITX_AMB_EnEng:
45 return PINYIN_AMB_EN_ENG;
46 case FCITX_AMB_InIng:
47 return PINYIN_AMB_IN_ING;
48 default:
49 return PINYIN_AMB_ALL;
50 }
51 }
52
FcitxLibPinyinTransCorrection(FCITX_CORRECTION correction)53 PinyinCorrection2 FcitxLibPinyinTransCorrection(FCITX_CORRECTION correction)
54 {
55 switch(correction) {
56 case FCITX_CR_V_U:
57 return PINYIN_CORRECT_V_U;
58 case FCITX_CR_GN_NG:
59 return PINYIN_CORRECT_GN_NG;
60 case FCITX_CR_MG_NG:
61 return PINYIN_CORRECT_MG_NG;
62 case FCITX_CR_IOU_IU:
63 return PINYIN_CORRECT_IOU_IU;
64 case FCITX_CR_UEI_UI:
65 return PINYIN_CORRECT_UEI_UI;
66 case FCITX_CR_UEN_UN:
67 return PINYIN_CORRECT_UEN_UN;
68 case FCITX_CR_UE_VE:
69 return PINYIN_CORRECT_UE_VE;
70 case FCITX_CR_ON_ONG:
71 return PINYIN_CORRECT_ON_ONG;
72 default:
73 return PINYIN_CORRECT_ALL;
74 }
75 }
76
FcitxLibPinyinTransShuangpinScheme(FCITX_SHUANGPIN_SCHEME scheme)77 DoublePinyinScheme FcitxLibPinyinTransShuangpinScheme(FCITX_SHUANGPIN_SCHEME scheme)
78 {
79 switch(scheme) {
80 case FCITX_SHUANG_PIN_ZRM:
81 return DOUBLE_PINYIN_ZRM;
82 case FCITX_SHUANG_PIN_MS:
83 return DOUBLE_PINYIN_MS;
84 case FCITX_SHUANG_PIN_ZIGUANG:
85 return DOUBLE_PINYIN_ZIGUANG;
86 case FCITX_SHUANG_PIN_ABC:
87 return DOUBLE_PINYIN_ABC;
88 case FCITX_SHUANG_PIN_PYJJ:
89 return DOUBLE_PINYIN_PYJJ;
90 case FCITX_SHUANG_PIN_XHE:
91 return DOUBLE_PINYIN_XHE;
92 default:
93 return DOUBLE_PINYIN_ZRM;
94 }
95 }
96
FcitxLibPinyinTransZhuyinLayout(FCITX_ZHUYIN_LAYOUT layout)97 ZhuyinScheme FcitxLibPinyinTransZhuyinLayout(FCITX_ZHUYIN_LAYOUT layout)
98 {
99 switch(layout) {
100 case FCITX_ZHUYIN_STANDARD:
101 return ZHUYIN_STANDARD;
102 case FCITX_ZHUYIN_IBM:
103 return ZHUYIN_IBM;
104 case FCITX_ZHUYIN_GIN_YIEH:
105 return ZHUYIN_GINYIEH;
106 case FCITX_ZHUYIN_ET:
107 return ZHUYIN_ETEN;
108 default:
109 return ZHUYIN_STANDARD;
110 }
111 }
112
113 static const int dictMap[] =
114 {
115 4,
116 5,
117 6,
118 7,
119 8,
120 9,
121 10,
122 11,
123 12,
124 13,
125 14,
126 15,
127 };
128
FcitxLibPinyinTransDictionary(FCITX_DICTIONARY dict)129 int FcitxLibPinyinTransDictionary(FCITX_DICTIONARY dict)
130 {
131 int sz = sizeof(dictMap) / sizeof(dictMap[0]);
132 int sz2 = FCITX_DICT_LAST + 1;
133 assert(sz == sz2);
134 return dictMap[dict];
135 }
136
137 static const int dictMapZhuyin[] =
138 {
139 4,
140 5,
141 6,
142 7,
143 8,
144 9,
145 10,
146 11,
147 12,
148 13
149 };
150
FcitxLibPinyinTransZhuyinDictionary(FCITX_ZHUYIN_DICTIONARY dict)151 int FcitxLibPinyinTransZhuyinDictionary(FCITX_ZHUYIN_DICTIONARY dict)
152 {
153 int sz = sizeof(dictMapZhuyin) / sizeof(dictMapZhuyin[0]);
154 int sz2 = FCITX_ZHUYIN_DICT_LAST + 1;
155 assert(sz == sz2);
156 return dictMapZhuyin[dict];
157 }
158
FcitxLibPinyinTransSortOption(FCITX_LIBPINYIN_SORT sort)159 sort_option_t FcitxLibPinyinTransSortOption(FCITX_LIBPINYIN_SORT sort) {
160 switch(sort) {
161 case FLS_PhraseLengthAndFreq:
162 return SORT_BY_PHRASE_LENGTH_AND_FREQUENCY;
163 case FLS_PhraseLengthAndPinyinLengthAndFreq:
164 default:
165 return SORT_BY_PHRASE_LENGTH_AND_PINYIN_LENGTH_AND_FREQUENCY;
166 }
167 }
168