402 lines
8.9 KiB
C
402 lines
8.9 KiB
C
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
|
/*************************************************************************
|
|
*
|
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
*
|
|
* Copyright 2000, 2010 Oracle and/or its affiliates.
|
|
*
|
|
* OpenOffice.org - a multi-platform office productivity suite
|
|
*
|
|
* This file is part of OpenOffice.org.
|
|
*
|
|
* OpenOffice.org is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU Lesser General Public License version 3
|
|
* only, as published by the Free Software Foundation.
|
|
*
|
|
* OpenOffice.org 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 Lesser General Public License version 3 for more details
|
|
* (a copy is included in the LICENSE file that accompanied this code).
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public License
|
|
* version 3 along with OpenOffice.org. If not, see
|
|
* <http://www.openoffice.org/license.html>
|
|
* for a copy of the LGPLv3 License.
|
|
*
|
|
************************************************************************/
|
|
|
|
#ifndef __MAPPING_H__
|
|
#define __MAPPING_H__
|
|
|
|
#include <string.h>
|
|
#include <stdio.h>
|
|
#include <sal/macros.h>
|
|
|
|
typedef unsigned short hchar;
|
|
|
|
struct FormulaEntry{
|
|
const char *tex;
|
|
hchar ucs;
|
|
};
|
|
|
|
// empty square
|
|
#define DEFAULT_VALUE 0x25a1
|
|
const struct FormulaEntry FormulaMapTab[] = {
|
|
/* Capital Greek */
|
|
{"Alpha", 0x0391},
|
|
{"Beta", 0x0392},
|
|
{"Gamma", 0x0393},
|
|
{"Delta", 0x0394},
|
|
{"Epsilon", 0x0395},
|
|
{"Zeta", 0x0396},
|
|
{"Eta", 0x0397},
|
|
{"Theta", 0x0398},
|
|
{"Iota", 0x0399},
|
|
{"Kappa", 0x039a},
|
|
{"Lambda",0x039b },
|
|
{"Mu", 0x039c},
|
|
{"Nu", 0x039d},
|
|
{"Xi", 0x039e},
|
|
{"Omicron", 0x039f},
|
|
{"Pi", 0x03a0},
|
|
{"Rho", 0x03a1},
|
|
{"Sigma", 0x03a3},
|
|
{"Tau", 0x03a4},
|
|
{"Upsilon", 0x03a5},
|
|
{"Phi", 0x03a6},
|
|
{"Chi", 0x03a7},
|
|
{"Psi", 0x03a8},
|
|
{"Omega", 0x03a9},
|
|
|
|
/* Small Greek */
|
|
{"alpha", 0x03b1},
|
|
{"beta", 0x03b2},
|
|
{"gamma", 0x03b3},
|
|
{"delta", 0x03b4},
|
|
{"epsilon", 0x03b5},
|
|
{"zeta", 0x03b6},
|
|
{"eta", 0x03b7},
|
|
{"theta", 0x03b8},
|
|
{"iota", 0x03b9},
|
|
{"kappa", 0x03ba},
|
|
{"lambda",0x03bb },
|
|
{"mu", 0x03bc},
|
|
{"nu", 0x03bd},
|
|
{"xi", 0x03be},
|
|
{"omicron", 0x03bf},
|
|
{"pi", 0x03c0},
|
|
{"rho", 0x03c1},
|
|
{"varrho", 0},
|
|
{"sigma", 0x03c3},
|
|
{"tau", 0x03c4},
|
|
{"upsilon", 0x03c5},
|
|
{"phi", 0x03d5},
|
|
{"chi", 0x03c7},
|
|
{"psi", 0x03c8},
|
|
{"omega", 0x03c9},
|
|
|
|
/* General Symbol */
|
|
{"aleph", 0x2135},
|
|
{"hbar", 0x045b},
|
|
{"imath", 0x2129},
|
|
{"jmath", 0x2110},
|
|
{"mho", 0x2127},
|
|
{"ell", 0x2113},
|
|
{"wp", 0x2118},
|
|
{"imag", 0x2111},
|
|
{"angstrom", 0x212b},
|
|
{"vartheta", 0x03d1},
|
|
{"varpi", 0x03d6},
|
|
{"varsigma", 0x04aa},
|
|
{"varupsilon", 0x03d2},
|
|
{"varphi", 0x03c6},
|
|
|
|
|
|
// Big Symbol
|
|
{"sum", 0x2211},
|
|
{"smallsum", 0x03a3},
|
|
{"prod", 0x220f},
|
|
{"amalg", 0x2210},
|
|
{"int", 0x222b},
|
|
{"oint", 0x222e},
|
|
{"cap", 0x22c2},
|
|
{"cup", 0x22c3},
|
|
{"uplus", 0x2282},
|
|
{"vee", 0x22c1},
|
|
{"wedge", 0x22c0},
|
|
{"bigcap", 0x22c2},
|
|
{"bigcup", 0x22c3},
|
|
{"bigsqcap", 0x2293},
|
|
{"bigsqcup", 0x2294},
|
|
{"bigoplus", 0x2295},
|
|
{"bigominus", 0x2296},
|
|
{"bigotimes", 0x2297},
|
|
{"bigodiv", 0x2298},
|
|
{"bigodot", 0x2299},
|
|
{"oplus", 0x2295},
|
|
{"ominus", 0x2296},
|
|
{"otimes", 0x2297},
|
|
{"oslash", 0x2298},
|
|
{"odot", 0x2299},
|
|
{"bigvee", 0x22c1},
|
|
{"bigwedge", 0x22c0},
|
|
{"subset", 0x2282},
|
|
{"superset", 0x2283},
|
|
{"supset", 0x2283},
|
|
{"subseteq", 0x2286},
|
|
{"supseteq", 0x2287},
|
|
{"in", 0x2208},
|
|
{"ni", 0x220b},
|
|
{"notin", 0x2209},
|
|
{"notni", 0x220c},
|
|
{"leq", 0x2264},
|
|
{"geq", 0x2265},
|
|
{"sqsubset", 0x228f},
|
|
{"sqsupset", 0x2290},
|
|
{"sqsubseteq", 0x2291},
|
|
{"sqsupseteq", 0x2292},
|
|
{"mlt", 0x2292}, // much less than
|
|
{"mgt", 0x2292}, // much greater than
|
|
{"vmlt", 0x22d8}, // much less than
|
|
{"vmgt", 0x22d9}, // much greater than
|
|
{"prec", 0x227a},
|
|
{"succ", 0x227b},
|
|
{"biguplus", 0x228e},
|
|
|
|
// Binary Operator
|
|
{"pm", 0x00b1},
|
|
{"mp", 0x2213},
|
|
{"times", 0x00d7},
|
|
{"div", 0x00f7},
|
|
{"circ", 0x2218},
|
|
{"cdot", 0x2219},
|
|
{"bullet", 0x2022},
|
|
{"deg", 0x00b0},
|
|
{"ast", 0x002a},
|
|
{"star", 0x2205},
|
|
{"bigcirc", 0x25cb},
|
|
{"emptyset", 0x2205},
|
|
{"therefore", 0x2234},
|
|
{"because", 0x2235},
|
|
{"identical", 0x2237},
|
|
{"exists", 0x2203},
|
|
{"noteq", 0x2260}, // !=
|
|
{"neq", 0x2260},
|
|
{"doteq", 0x2250},
|
|
{"image", 0x2252},
|
|
{"reimage", 0x2253},
|
|
{"sim", 0x223c},
|
|
{"approx", 0x2248},
|
|
{"simeq", 0x2243},
|
|
{"cong", 0x2245},
|
|
{"equiv", 0x2261},
|
|
{"asymp", 0x224d},
|
|
{"iso", 0x224e},
|
|
{"diamond", 0x22c4},
|
|
{"dsum", 0x2214}, // add
|
|
{"forall", 0x2200},
|
|
{"prime", DEFAULT_VALUE}, // '
|
|
{"partial", 0x2202},
|
|
{"infty", 0x221e},
|
|
{"propto", 0x221d},
|
|
{"xor", 0x22bb},
|
|
{"del", 0x2207},
|
|
{"dagger", 0x2020},
|
|
{"ddagger", 0x2021},
|
|
{"LNOT", DEFAULT_VALUE},
|
|
|
|
// Arrows
|
|
{"leftarrow", 0x2190},
|
|
{"uparrow", 0x2191},
|
|
{"rightarrow", 0x2192},
|
|
{"downarrow", 0x2193},
|
|
{"Leftarrow", 0x21d0},
|
|
{"Uparrow", 0x21d1},
|
|
{"Rightarrow", 0x21d2},
|
|
{"Downarrow", 0x21d3},
|
|
{"updownarrow", 0x2195},
|
|
{"Updownarrow", 0x21d5},
|
|
{"leftrightarrow", 0x2194},
|
|
{"Leftrightarrow", 0x21d4},
|
|
{"nwarrow", 0x2196},
|
|
{"searrow", 0x2198},
|
|
{"nearrow", 0x2197},
|
|
{"swarrow", 0x2199},
|
|
{"hookleft", 0x21a9},
|
|
{"hookleftarrow", 0x21a9},
|
|
{"hookright", 0x21aa},
|
|
{"hookrightarrow", 0x21aa},
|
|
{"mapsto", 0x21a6},
|
|
{"vert", 0x2223},
|
|
{"dline", 0x2225},
|
|
|
|
{"cdots", 0x22ef},
|
|
{"ldots", 0x2026},
|
|
{"vdots", 0x22ee},
|
|
{"ddots", 0x22f1},
|
|
{"triangle", 0x2206},
|
|
{"triangled", 0x2207},
|
|
{"angle", 0x2220},
|
|
{"msangle", 0x2221},
|
|
{"sangle", 0x2222},
|
|
{"rtangle", 0x22be},
|
|
{"vdash", 0x22a2},
|
|
{"dashv", 0x22a3},
|
|
{"bot", 0x22a5},
|
|
{"top", 0x22a4},
|
|
{"models", 0x22a8},
|
|
|
|
{"coprod", DEFAULT_VALUE},
|
|
{"varepsilon", DEFAULT_VALUE},
|
|
{"setminus", DEFAULT_VALUE},
|
|
{"sqcap", DEFAULT_VALUE},
|
|
{"sqcup", DEFAULT_VALUE},
|
|
{"wr", DEFAULT_VALUE},
|
|
{"bigtriangleup", DEFAULT_VALUE},
|
|
{"bigtriangledown", DEFAULT_VALUE},
|
|
{"triangleleft", DEFAULT_VALUE},
|
|
{"triangleright", DEFAULT_VALUE},
|
|
{"lhd", DEFAULT_VALUE},
|
|
{"rhd", DEFAULT_VALUE},
|
|
{"unlhd", DEFAULT_VALUE},
|
|
{"unrhd", DEFAULT_VALUE},
|
|
{"nabla", DEFAULT_VALUE},
|
|
{"surd", DEFAULT_VALUE},
|
|
{"Box", DEFAULT_VALUE},
|
|
{"Diamond", DEFAULT_VALUE},
|
|
{"neg", DEFAULT_VALUE},
|
|
{"flat", DEFAULT_VALUE},
|
|
{"natural", DEFAULT_VALUE},
|
|
{"sharp", DEFAULT_VALUE},
|
|
{"clubsuit", DEFAULT_VALUE},
|
|
{"diamondsuit", DEFAULT_VALUE},
|
|
{"heartsuit", DEFAULT_VALUE},
|
|
{"spadesuit", DEFAULT_VALUE},
|
|
{"Re", DEFAULT_VALUE},
|
|
{"Im", DEFAULT_VALUE},
|
|
{"S", DEFAULT_VALUE},
|
|
{"P", DEFAULT_VALUE},
|
|
{"smallint", DEFAULT_VALUE},
|
|
{"backslash", DEFAULT_VALUE},
|
|
|
|
// Relation Operator
|
|
{"le", DEFAULT_VALUE},
|
|
{"ge", DEFAULT_VALUE},
|
|
{"perp", DEFAULT_VALUE},
|
|
{"preceq", DEFAULT_VALUE},
|
|
{"succeq", DEFAULT_VALUE},
|
|
{"mid", DEFAULT_VALUE},
|
|
{"ll", DEFAULT_VALUE},
|
|
{"gg", DEFAULT_VALUE},
|
|
{"parallel", DEFAULT_VALUE},
|
|
{"bowtie", DEFAULT_VALUE},
|
|
{"Join", DEFAULT_VALUE},
|
|
{"smile", DEFAULT_VALUE},
|
|
{"frown", DEFAULT_VALUE},
|
|
{"not", DEFAULT_VALUE},
|
|
{"mapsto", DEFAULT_VALUE},
|
|
|
|
// Arrows
|
|
{"to", DEFAULT_VALUE},
|
|
|
|
{"leftharpoonup", DEFAULT_VALUE},
|
|
{"leftharpoondown", DEFAULT_VALUE},
|
|
{"longleftarrow", DEFAULT_VALUE},
|
|
{"Longleftarrow", DEFAULT_VALUE},
|
|
{"longrightarrow", DEFAULT_VALUE},
|
|
{"Longrightarrow", DEFAULT_VALUE},
|
|
{"longleftrightarrow", DEFAULT_VALUE},
|
|
{"Longleftrightarrow", DEFAULT_VALUE},
|
|
{"longmapsto", DEFAULT_VALUE},
|
|
{"rightharpoonup", DEFAULT_VALUE},
|
|
{"rightharpoondown", DEFAULT_VALUE},
|
|
|
|
// Delimeter
|
|
{"(", DEFAULT_VALUE},
|
|
{")", DEFAULT_VALUE},
|
|
{"[", DEFAULT_VALUE},
|
|
{"]", DEFAULT_VALUE},
|
|
{"{", DEFAULT_VALUE},
|
|
{"}", DEFAULT_VALUE},
|
|
{"lfloor", DEFAULT_VALUE},
|
|
{"rfloor", DEFAULT_VALUE},
|
|
{"lceil", DEFAULT_VALUE},
|
|
{"rceil", DEFAULT_VALUE},
|
|
{"langle", DEFAULT_VALUE},
|
|
{"rangle", DEFAULT_VALUE},
|
|
{"mid", DEFAULT_VALUE},
|
|
|
|
// Large Delimeter
|
|
{"rmoustache", DEFAULT_VALUE},
|
|
{"lmoustache", DEFAULT_VALUE},
|
|
{"rgroup", DEFAULT_VALUE},
|
|
{"lgroup", DEFAULT_VALUE},
|
|
{"arrowvert", DEFAULT_VALUE},
|
|
{"Arrowvert", DEFAULT_VALUE},
|
|
{"bracevert", DEFAULT_VALUE},
|
|
|
|
// Accent
|
|
{"hat", DEFAULT_VALUE},
|
|
{"breve", DEFAULT_VALUE},
|
|
{"grave", DEFAULT_VALUE},
|
|
{"bar", DEFAULT_VALUE},
|
|
{"ddot", DEFAULT_VALUE},
|
|
{"check", DEFAULT_VALUE},
|
|
{"acute", DEFAULT_VALUE},
|
|
{"tilde", DEFAULT_VALUE},
|
|
{"dot", DEFAULT_VALUE},
|
|
{"vec", DEFAULT_VALUE},
|
|
|
|
// Decoration
|
|
{"overline", DEFAULT_VALUE},
|
|
{"underline", DEFAULT_VALUE},
|
|
{"overbrace", DEFAULT_VALUE},
|
|
{"underbrace", DEFAULT_VALUE},
|
|
{"widehat", DEFAULT_VALUE},
|
|
{"widetilde", DEFAULT_VALUE},
|
|
{"overleftarrow", DEFAULT_VALUE},
|
|
{"overrightarrow", DEFAULT_VALUE},
|
|
|
|
// Space Symbol
|
|
{",", DEFAULT_VALUE},
|
|
{":", DEFAULT_VALUE},
|
|
{";", DEFAULT_VALUE},
|
|
{"!", DEFAULT_VALUE},
|
|
{"quad", DEFAULT_VALUE},
|
|
{"qquad", DEFAULT_VALUE}, // double size of character
|
|
|
|
};
|
|
|
|
#ifndef DEBUG
|
|
hchar *getMathMLEntity(const char *tex, hchar *buf)
|
|
{
|
|
static int tabSize = SAL_N_ELEMENTS( FormulaMapTab );
|
|
int i, len;
|
|
|
|
for( i = 0 ; i < tabSize ; i++ ){
|
|
if( !strcmp(tex, FormulaMapTab[i].tex ) ) {
|
|
buf[0] = FormulaMapTab[i].ucs;
|
|
buf[1] = '\0';
|
|
return buf;
|
|
}
|
|
}
|
|
len = strlen(tex);
|
|
|
|
for( i = 0 ; i < len ; i++ )
|
|
buf[i] = tex[i];
|
|
buf[len] = 0;
|
|
return buf;
|
|
}
|
|
|
|
#else
|
|
char *getMathMLEntity(const char *tex, char *buf)
|
|
{
|
|
strcpy(buf,tex);
|
|
return buf;
|
|
}
|
|
#endif
|
|
|
|
#endif
|
|
|
|
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|