office-gobmx/hwpfilter/source/mapping.h
2003-10-15 13:44:37 +00:00

434 lines
10 KiB
C

/*************************************************************************
*
* $RCSfile: mapping.h,v $
*
* $Revision: 1.1 $
*
* last change: $Author: dvo $ $Date: 2003-10-15 14:37:58 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
*
* - GNU Lesser General Public License Version 2.1
* - Sun Industry Standards Source License Version 1.1
*
* Sun Microsystems Inc., October, 2000
*
* GNU Lesser General Public License Version 2.1
* =============================================
* Copyright 2001 by Mizi Research Inc.
* Copyright 2003 by Sun Microsystems, Inc.
* 901 San Antonio Road, Palo Alto, CA 94303, USA
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2.1, as published by the Free Software Foundation.
*
* This library 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 for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
* MA 02111-1307 USA
*
*
* Sun Industry Standards Source License Version 1.1
* =================================================
* The contents of this file are subject to the Sun Industry Standards
* Source License Version 1.1 (the "License"); You may not use this file
* except in compliance with the License. You may obtain a copy of the
* License at http://www.openoffice.org/license.html.
*
* Software provided under this License is provided on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
* WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
* MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
* See the License for the specific provisions governing your rights and
* obligations concerning the Software.
*
* The Initial Developer of the Original Code is: Mizi Research Inc.
*
* Copyright: 2001 by Mizi Research Inc.
* Copyright: 2003 by Sun Microsystems, Inc.
*
* All Rights Reserved.
*
* Contributor(s): _______________________________________
*
*
************************************************************************/
#ifndef __MAPPING_H__
#define __MAPPING_H__
#include <string.h>
#include <stdio.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 = sizeof( FormulaMapTab ) / sizeof( FormulaMapTab[0] );
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