Typo: cirle->circle
[LibreOffice.git] / hwpfilter / source / mapping.h
blobe8d6c0d33a7c8428bfa884d44805f9d739ce30ac
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
20 #ifndef INCLUDED_HWPFILTER_SOURCE_MAPPING_H
21 #define INCLUDED_HWPFILTER_SOURCE_MAPPING_H
23 #include <string.h>
24 #include <stdio.h>
25 #include <sal/macros.h>
27 #include <hwplib.h>
30 struct FormulaEntry{
31 const char *tex;
32 hchar ucs;
35 // empty square
36 #define DEFAULT_VALUE 0x25a1
37 const struct FormulaEntry FormulaMapTab[] = {
38 /* Capital Greek */
39 {"Alpha", 0x0391},
40 {"Beta", 0x0392},
41 {"Gamma", 0x0393},
42 {"Delta", 0x0394},
43 {"Epsilon", 0x0395},
44 {"Zeta", 0x0396},
45 {"Eta", 0x0397},
46 {"Theta", 0x0398},
47 {"Iota", 0x0399},
48 {"Kappa", 0x039a},
49 {"Lambda",0x039b },
50 {"Mu", 0x039c},
51 {"Nu", 0x039d},
52 {"Xi", 0x039e},
53 {"Omicron", 0x039f},
54 {"Pi", 0x03a0},
55 {"Rho", 0x03a1},
56 {"Sigma", 0x03a3},
57 {"Tau", 0x03a4},
58 {"Upsilon", 0x03a5},
59 {"Phi", 0x03a6},
60 {"Chi", 0x03a7},
61 {"Psi", 0x03a8},
62 {"Omega", 0x03a9},
64 /* Small Greek */
65 {"alpha", 0x03b1},
66 {"beta", 0x03b2},
67 {"gamma", 0x03b3},
68 {"delta", 0x03b4},
69 {"epsilon", 0x03b5},
70 {"zeta", 0x03b6},
71 {"eta", 0x03b7},
72 {"theta", 0x03b8},
73 {"iota", 0x03b9},
74 {"kappa", 0x03ba},
75 {"lambda",0x03bb },
76 {"mu", 0x03bc},
77 {"nu", 0x03bd},
78 {"xi", 0x03be},
79 {"omicron", 0x03bf},
80 {"pi", 0x03c0},
81 {"rho", 0x03c1},
82 {"varrho", 0},
83 {"sigma", 0x03c3},
84 {"tau", 0x03c4},
85 {"upsilon", 0x03c5},
86 {"phi", 0x03d5},
87 {"chi", 0x03c7},
88 {"psi", 0x03c8},
89 {"omega", 0x03c9},
91 /* General Symbol */
92 {"aleph", 0x2135},
93 {"hbar", 0x045b},
94 {"imath", 0x2129},
95 {"jmath", 0x2110},
96 {"mho", 0x2127},
97 {"ell", 0x2113},
98 {"wp", 0x2118},
99 {"imag", 0x2111},
100 {"angstrom", 0x212b},
101 {"vartheta", 0x03d1},
102 {"varpi", 0x03d6},
103 {"varsigma", 0x04aa},
104 {"varupsilon", 0x03d2},
105 {"varphi", 0x03c6},
108 // Big Symbol
109 {"sum", 0x2211},
110 {"smallsum", 0x03a3},
111 {"prod", 0x220f},
112 {"amalg", 0x2210},
113 {"int", 0x222b},
114 {"oint", 0x222e},
115 {"cap", 0x22c2},
116 {"cup", 0x22c3},
117 {"uplus", 0x2282},
118 {"vee", 0x22c1},
119 {"wedge", 0x22c0},
120 {"bigcap", 0x22c2},
121 {"bigcup", 0x22c3},
122 {"bigsqcap", 0x2293},
123 {"bigsqcup", 0x2294},
124 {"bigoplus", 0x2295},
125 {"bigominus", 0x2296},
126 {"bigotimes", 0x2297},
127 {"bigodiv", 0x2298},
128 {"bigodot", 0x2299},
129 {"oplus", 0x2295},
130 {"ominus", 0x2296},
131 {"otimes", 0x2297},
132 {"oslash", 0x2298},
133 {"odot", 0x2299},
134 {"bigvee", 0x22c1},
135 {"bigwedge", 0x22c0},
136 {"subset", 0x2282},
137 {"superset", 0x2283},
138 {"supset", 0x2283},
139 {"subseteq", 0x2286},
140 {"supseteq", 0x2287},
141 {"in", 0x2208},
142 {"ni", 0x220b},
143 {"notin", 0x2209},
144 {"notni", 0x220c},
145 {"leq", 0x2264},
146 {"geq", 0x2265},
147 {"sqsubset", 0x228f},
148 {"sqsupset", 0x2290},
149 {"sqsubseteq", 0x2291},
150 {"sqsupseteq", 0x2292},
151 {"mlt", 0x2292}, // much less than
152 {"mgt", 0x2292}, // much greater than
153 {"vmlt", 0x22d8}, // much less than
154 {"vmgt", 0x22d9}, // much greater than
155 {"prec", 0x227a},
156 {"succ", 0x227b},
157 {"biguplus", 0x228e},
159 // Binary Operator
160 {"pm", 0x00b1},
161 {"mp", 0x2213},
162 {"times", 0x00d7},
163 {"div", 0x00f7},
164 {"circ", 0x2218},
165 {"cdot", 0x2219},
166 {"bullet", 0x2022},
167 {"deg", 0x00b0},
168 {"ast", 0x002a},
169 {"star", 0x2205},
170 {"bigcirc", 0x25cb},
171 {"emptyset", 0x2205},
172 {"therefore", 0x2234},
173 {"because", 0x2235},
174 {"identical", 0x2237},
175 {"exists", 0x2203},
176 {"noteq", 0x2260}, // !=
177 {"neq", 0x2260},
178 {"doteq", 0x2250},
179 {"image", 0x2252},
180 {"reimage", 0x2253},
181 {"sim", 0x223c},
182 {"approx", 0x2248},
183 {"simeq", 0x2243},
184 {"cong", 0x2245},
185 {"equiv", 0x2261},
186 {"asymp", 0x224d},
187 {"iso", 0x224e},
188 {"diamond", 0x22c4},
189 {"dsum", 0x2214}, // add
190 {"forall", 0x2200},
191 {"prime", DEFAULT_VALUE}, // '
192 {"partial", 0x2202},
193 {"infty", 0x221e},
194 {"propto", 0x221d},
195 {"xor", 0x22bb},
196 {"del", 0x2207},
197 {"dagger", 0x2020},
198 {"ddagger", 0x2021},
199 {"LNOT", DEFAULT_VALUE},
201 // Arrows
202 {"leftarrow", 0x2190},
203 {"uparrow", 0x2191},
204 {"rightarrow", 0x2192},
205 {"downarrow", 0x2193},
206 {"Leftarrow", 0x21d0},
207 {"Uparrow", 0x21d1},
208 {"Rightarrow", 0x21d2},
209 {"Downarrow", 0x21d3},
210 {"updownarrow", 0x2195},
211 {"Updownarrow", 0x21d5},
212 {"leftrightarrow", 0x2194},
213 {"Leftrightarrow", 0x21d4},
214 {"nwarrow", 0x2196},
215 {"searrow", 0x2198},
216 {"nearrow", 0x2197},
217 {"swarrow", 0x2199},
218 {"hookleft", 0x21a9},
219 {"hookleftarrow", 0x21a9},
220 {"hookright", 0x21aa},
221 {"hookrightarrow", 0x21aa},
222 {"mapsto", 0x21a6},
223 {"vert", 0x2223},
224 {"dline", 0x2225},
226 {"cdots", 0x22ef},
227 {"ldots", 0x2026},
228 {"vdots", 0x22ee},
229 {"ddots", 0x22f1},
230 {"triangle", 0x2206},
231 {"triangled", 0x2207},
232 {"angle", 0x2220},
233 {"msangle", 0x2221},
234 {"sangle", 0x2222},
235 {"rtangle", 0x22be},
236 {"vdash", 0x22a2},
237 {"dashv", 0x22a3},
238 {"bot", 0x22a5},
239 {"top", 0x22a4},
240 {"models", 0x22a8},
242 {"coprod", DEFAULT_VALUE},
243 {"varepsilon", DEFAULT_VALUE},
244 {"setminus", DEFAULT_VALUE},
245 {"sqcap", DEFAULT_VALUE},
246 {"sqcup", DEFAULT_VALUE},
247 {"wr", DEFAULT_VALUE},
248 {"bigtriangleup", DEFAULT_VALUE},
249 {"bigtriangledown", DEFAULT_VALUE},
250 {"triangleleft", DEFAULT_VALUE},
251 {"triangleright", DEFAULT_VALUE},
252 {"lhd", DEFAULT_VALUE},
253 {"rhd", DEFAULT_VALUE},
254 {"unlhd", DEFAULT_VALUE},
255 {"unrhd", DEFAULT_VALUE},
256 {"nabla", DEFAULT_VALUE},
257 {"surd", DEFAULT_VALUE},
258 {"Box", DEFAULT_VALUE},
259 {"Diamond", DEFAULT_VALUE},
260 {"neg", DEFAULT_VALUE},
261 {"flat", DEFAULT_VALUE},
262 {"natural", DEFAULT_VALUE},
263 {"sharp", DEFAULT_VALUE},
264 {"clubsuit", DEFAULT_VALUE},
265 {"diamondsuit", DEFAULT_VALUE},
266 {"heartsuit", DEFAULT_VALUE},
267 {"spadesuit", DEFAULT_VALUE},
268 {"Re", DEFAULT_VALUE},
269 {"Im", DEFAULT_VALUE},
270 {"S", DEFAULT_VALUE},
271 {"P", DEFAULT_VALUE},
272 {"smallint", DEFAULT_VALUE},
273 {"backslash", DEFAULT_VALUE},
275 // Relation Operator
276 {"le", DEFAULT_VALUE},
277 {"ge", DEFAULT_VALUE},
278 {"perp", DEFAULT_VALUE},
279 {"preceq", DEFAULT_VALUE},
280 {"succeq", DEFAULT_VALUE},
281 {"mid", DEFAULT_VALUE},
282 {"ll", DEFAULT_VALUE},
283 {"gg", DEFAULT_VALUE},
284 {"parallel", DEFAULT_VALUE},
285 {"bowtie", DEFAULT_VALUE},
286 {"Join", DEFAULT_VALUE},
287 {"smile", DEFAULT_VALUE},
288 {"frown", DEFAULT_VALUE},
289 {"not", DEFAULT_VALUE},
290 {"mapsto", DEFAULT_VALUE},
292 // Arrows
293 {"to", DEFAULT_VALUE},
295 {"leftharpoonup", DEFAULT_VALUE},
296 {"leftharpoondown", DEFAULT_VALUE},
297 {"longleftarrow", DEFAULT_VALUE},
298 {"Longleftarrow", DEFAULT_VALUE},
299 {"longrightarrow", DEFAULT_VALUE},
300 {"Longrightarrow", DEFAULT_VALUE},
301 {"longleftrightarrow", DEFAULT_VALUE},
302 {"Longleftrightarrow", DEFAULT_VALUE},
303 {"longmapsto", DEFAULT_VALUE},
304 {"rightharpoonup", DEFAULT_VALUE},
305 {"rightharpoondown", DEFAULT_VALUE},
307 // Delimeter
308 {"(", DEFAULT_VALUE},
309 {")", DEFAULT_VALUE},
310 {"[", DEFAULT_VALUE},
311 {"]", DEFAULT_VALUE},
312 {"{", DEFAULT_VALUE},
313 {"}", DEFAULT_VALUE},
314 {"lfloor", DEFAULT_VALUE},
315 {"rfloor", DEFAULT_VALUE},
316 {"lceil", DEFAULT_VALUE},
317 {"rceil", DEFAULT_VALUE},
318 {"langle", DEFAULT_VALUE},
319 {"rangle", DEFAULT_VALUE},
320 {"mid", DEFAULT_VALUE},
322 // Large Delimeter
323 {"rmoustache", DEFAULT_VALUE},
324 {"lmoustache", DEFAULT_VALUE},
325 {"rgroup", DEFAULT_VALUE},
326 {"lgroup", DEFAULT_VALUE},
327 {"arrowvert", DEFAULT_VALUE},
328 {"Arrowvert", DEFAULT_VALUE},
329 {"bracevert", DEFAULT_VALUE},
331 // Accent
332 {"hat", DEFAULT_VALUE},
333 {"breve", DEFAULT_VALUE},
334 {"grave", DEFAULT_VALUE},
335 {"bar", DEFAULT_VALUE},
336 {"ddot", DEFAULT_VALUE},
337 {"check", DEFAULT_VALUE},
338 {"acute", DEFAULT_VALUE},
339 {"tilde", DEFAULT_VALUE},
340 {"dot", DEFAULT_VALUE},
341 {"vec", DEFAULT_VALUE},
343 // Decoration
344 {"overline", DEFAULT_VALUE},
345 {"underline", DEFAULT_VALUE},
346 {"overbrace", DEFAULT_VALUE},
347 {"underbrace", DEFAULT_VALUE},
348 {"widehat", DEFAULT_VALUE},
349 {"widetilde", DEFAULT_VALUE},
350 {"overleftarrow", DEFAULT_VALUE},
351 {"overrightarrow", DEFAULT_VALUE},
353 // Space Symbol
354 {",", DEFAULT_VALUE},
355 {":", DEFAULT_VALUE},
356 {";", DEFAULT_VALUE},
357 {"!", DEFAULT_VALUE},
358 {"quad", DEFAULT_VALUE},
359 {"qquad", DEFAULT_VALUE}, // double size of character
363 #ifndef DEBUG
364 hchar_string getMathMLEntity(const char *tex)
366 static const size_t tabSize = sizeof(FormulaMapTab) / sizeof(FormulaMapTab[0]);
368 hchar_string buf;
369 for (size_t i = 0 ; i < tabSize ; i++) {
370 if( !strcmp(tex, FormulaMapTab[i].tex ) ) {
371 buf.push_back(FormulaMapTab[i].ucs);
372 return buf;
376 size_t const len = strlen(tex);
377 for (size_t i = 0 ; i < len ; i++)
379 buf.push_back(tex[i]);
381 return buf;
384 #else
385 ::std::string getMathMLEntity(const char *tex)
387 ::std::string buf;
388 buf.append(tex);
389 return buf;
391 #endif
393 #endif
395 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */