]> git.lyx.org Git - features.git/commitdiff
move things around, fix bug in ~MathArray.
authorAndré Pönitz <poenitz@gmx.net>
Fri, 20 Jul 2001 14:54:13 +0000 (14:54 +0000)
committerAndré Pönitz <poenitz@gmx.net>
Fri, 20 Jul 2001 14:54:13 +0000 (14:54 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@2297 a592a061-630c-0410-9148-cb99ea01b6c8

12 files changed:
src/mathed/array.C
src/mathed/formulabase.C
src/mathed/math_bigopinset.C
src/mathed/math_bigopinset.h
src/mathed/math_cursor.C
src/mathed/math_funcinset.C
src/mathed/math_matrixinset.C
src/mathed/math_parser.C
src/mathed/math_utils.C
src/mathed/math_utils.h
src/mathed/support.C
src/mathed/support.h

index 8963a66b714055b748981df4b78a40aef87ff288..a15ec82dedc3a38db7b14c4cb9c65aeb5c1070e8 100644 (file)
@@ -20,7 +20,7 @@ MathArray::MathArray()
 MathArray::~MathArray()
 {
        for (int pos = 0; pos < size(); next(pos)) 
-               if (MathIsInset(pos)) 
+               if (isInset(pos)) 
                        delete nextInset(pos);
 }
 
@@ -240,7 +240,7 @@ bool MathArray::isInset(int pos) const
 {
        if (pos >= size())
                return false;
-       return MathIsInset(bf_[pos]);
+       return MathIsInset(static_cast<MathTextCodes>(bf_[pos]));
 }
 
 
index 3e9159bf14eddc376aa2e46c2ba651f402a513c8..f89d4c85b66736236487e218f28aa47843f19796 100644 (file)
@@ -51,7 +51,6 @@ extern char const * latex_special_chars;
 
 int greek_kb_flag = 0;
 extern char const * latex_mathenv[];
-LyXFont           * Math_Fonts = 0;
 MathCursor        * mathcursor = 0;
 
 
@@ -108,120 +107,8 @@ bool openNewInset(BufferView * bv, UpdatableInset * new_inset)
 
 
 
-LyXFont WhichFont(short type, int size)
-{
-       LyXFont f;
-       
-       if (!Math_Fonts)
-               mathed_init_fonts();
-
-       switch (type) {
-       case LM_TC_SYMB:        
-               f = Math_Fonts[2];
-               break;
-
-       case LM_TC_BSYM:        
-               f = Math_Fonts[2];
-               break;
-
-       case LM_TC_VAR:
-       case LM_TC_IT:
-               f = Math_Fonts[0];
-               break;
-
-       case LM_TC_BF:
-               f = Math_Fonts[3];
-               break;
-
-       case LM_TC_SF:
-               f = Math_Fonts[7];
-               break;
-
-       case LM_TC_CAL:
-               f = Math_Fonts[4];
-               break;
-
-       case LM_TC_TT:
-               f = Math_Fonts[5];
-               break;
-
-       case LM_TC_SPECIAL: //f = Math_Fonts[0]; break;
-       case LM_TC_TEXTRM:
-       case LM_TC_TEX:
-       case LM_TC_RM:
-               f = Math_Fonts[6];
-               break;
-
-       default:
-               f = Math_Fonts[1];
-               break;
-       }
-
-       switch (size) {
-       case LM_ST_DISPLAY:
-               if (type == LM_TC_BSYM) {
-                       f.incSize();
-                       f.incSize();
-               }
-               break;
-
-       case LM_ST_TEXT:
-               break;
-
-       case LM_ST_SCRIPT:
-               f.decSize();
-               break;
-
-       case LM_ST_SCRIPTSCRIPT:
-               f.decSize();
-               f.decSize();
-               break;
-
-       default:
-               lyxerr << "Math Error: wrong font size: " << size << endl;
-               break;
-       }
-
-       if (type != LM_TC_TEXTRM)
-               f.setColor(LColor::math);
-
-       if (type == LM_TC_TEX)
-               f.setColor(LColor::latex);
-
-       return f;
-}
-
-
 namespace {
 
-void mathed_init_fonts()
-{
-       Math_Fonts = new LyXFont[8]; //DEC cxx cannot initialize all fonts
-       //at once (JMarc) rc
-
-       for (int i = 0 ; i < 8 ; ++i) {
-               Math_Fonts[i] = LyXFont(LyXFont::ALL_SANE);
-       }
-
-       Math_Fonts[0].setShape(LyXFont::ITALIC_SHAPE);
-
-       Math_Fonts[1].setFamily(LyXFont::SYMBOL_FAMILY);
-
-       Math_Fonts[2].setFamily(LyXFont::SYMBOL_FAMILY);
-       Math_Fonts[2].setShape(LyXFont::ITALIC_SHAPE);
-
-       Math_Fonts[3].setSeries(LyXFont::BOLD_SERIES);
-
-       Math_Fonts[4].setFamily(LyXFont::SANS_FAMILY);
-       Math_Fonts[4].setShape(LyXFont::ITALIC_SHAPE);
-
-       Math_Fonts[5].setFamily(LyXFont::TYPEWRITER_FAMILY);
-
-       Math_Fonts[6].setFamily(LyXFont::ROMAN_FAMILY);
-
-       Math_Fonts[7].setFamily(LyXFont::SANS_FAMILY);
-}
-
 
 // returns the nearest enclosing matrix
 MathArrayInset * matrixpar(int & idx)
@@ -360,11 +247,9 @@ void InsetFormulaBase::toggleInsetCursor(BufferView * bv)
                mathcursor->GetPos(x, y);
                //x -= par_->xo();
                y -= par_->yo();
-
-               LyXFont   font = WhichFont(LM_TC_TEXTRM, LM_ST_TEXT);
-               int const asc  = lyxfont::maxAscent(font);
-               int const desc = lyxfont::maxDescent(font);
-
+               int asc;
+               int desc;
+               math_font_max_dim(LM_TC_TEXTRM, LM_ST_TEXT, asc, desc);
                bv->showLockedInsetCursor(x, y, asc, desc);
        }
 
@@ -381,9 +266,9 @@ void InsetFormulaBase::showInsetCursor(BufferView * bv, bool)
                        mathcursor->GetPos(x, y);
                        x -= par_->xo();
                        y -= par_->yo();
-                       LyXFont font   = WhichFont(LM_TC_TEXTRM, LM_ST_TEXT);
-                       int const asc  = lyxfont::maxAscent(font);
-                       int const desc = lyxfont::maxDescent(font);
+                       int asc;
+                       int desc;
+                       math_font_max_dim(LM_TC_TEXTRM, LM_ST_TEXT, asc, desc);
                        bv->fitLockedInsetCursor(x, y, asc, desc);
                }
                toggleInsetCursor(bv);
@@ -882,7 +767,7 @@ InsetFormulaBase::localDispatch(BufferView * bv, kb_action action,
                                        mathcursor->clearLastCode();
                                        varcode = LM_TC_MIN;
                                } else if (!varcode) {          
-                                       short f = mathcursor->getLastCode() ?
+                                       MathTextCodes f = mathcursor->getLastCode() ?
                                                mathcursor->getLastCode() :
                                                mathcursor->nextCode();
                                        varcode = MathIsAlphaFont(f) ?
index d08140621796e8c411abae6e8524ea268668f668..96eeb84aa82c2e5dd6be4a8801758cab5ec23475 100644 (file)
@@ -117,7 +117,7 @@ void MathBigopInset::draw(Painter & pain, int x, int y)
        xo(x);
        yo(y);
 
-       pain.text(x + dxx_, y, ssym_, mathed_get_font(code_, size()));
+       drawStr(pain, code_, size_, x + dxx_, y, ssym_);
 
        if (up())
                xcell(0).draw(pain, x + dx0_, y + dy0_);
index c347e35166941967b5167ab0b70a2348d8edca41..cf4f50ed57e1bb8ce3a64234bc311c4cd4b824c7 100644 (file)
@@ -33,7 +33,7 @@ private:
        ///
        string ssym_;
        ///
-       short code_;
+       MathTextCodes code_;
        /// 1: \limits, -1: \nolimits, 0: use default
        int limits_;
        /// x offset for drawing the superscript
index 51fe37089e0801c2b4f785cacb7221784a45d27d..43b6ef3a95fdebda8a9e4ce6627569a23abc0794 100644 (file)
@@ -719,12 +719,14 @@ in_word_set(s) << " \n";
                                        p = new MathBigopInset(l->name, l->id);
                                        break;
                                
-                       case LM_TK_SYM: 
-                               if (l->id < 255)
-                                       insert(l->id, MathIsBOPS(l->id) ? LM_TC_BOPS : LM_TC_SYMB);
+                       case LM_TK_SYM: {
+                               MathTextCodes code = static_cast<MathTextCodes>(l->id);
+                               if (code < 255)
+                                       insert(l->id, MathIsBOPS(code) ? LM_TC_BOPS : LM_TC_SYMB);
                                else
                                        p = new MathFuncInset(l->name);
                                break;
+                       }
 
                        case LM_TK_STACK:
                                p = new MathFracInset("stackrel");
index f88af12da8064e0aed2efe39b2971c375fa0e7d8..a75ba7360cc7efe63629e5f3039766d9340e08d2 100644 (file)
@@ -27,19 +27,6 @@ MathInset * MathFuncInset::clone() const
 }
 
 
-void MathFuncInset::draw(Painter & pain, int x, int y)
-{ 
-       if (!name_.empty() && name_[0] > ' ') {
-               LyXFont font = WhichFont(LM_TC_TEXTRM, size());
-#ifndef NO_LATEX
-               font.setLatex(LyXFont::ON);
-#endif
-               x += (lyxfont::width('I', font) + 3) / 4;
-               pain.text(x, y, name_, font);
-       }
-}
-
-
 void MathFuncInset::Write(std::ostream & os, bool /* fragile */) const
 {
        os << "\\" << name_ << ' ';
@@ -54,17 +41,20 @@ void MathFuncInset::WriteNormal(std::ostream & os) const
 
 void MathFuncInset::Metrics(MathStyles st, int, int) 
 {
-       LyXFont font = WhichFont(LM_TC_TEXTRM, size());
-#ifndef NO_LATEX
-       font.setLatex(LyXFont::ON);
-#endif
        size_ = st;
-       if (name_.empty()) {
-               width_   = lyxfont::width('M', font);
-               ascent_  = lyxfont::ascent('M', font);
-               descent_ = 0;
-       } else {
-               width_ = lyxfont::width(name_, font) + lyxfont::width('I', font) / 2;
-               mathed_string_height(LM_TC_TEXTRM, size_, name_, ascent_, descent_);
-       }
+       if (name_.empty()) 
+               mathed_char_dim(LM_TC_TEXTRM, size_, 'I', ascent_, descent_, width_);
+       else 
+               mathed_string_dim(LM_TC_TEXTRM, size_, name_, ascent_, descent_, width_);
+}
+
+
+void MathFuncInset::draw(Painter & pain, int x, int y)
+{ 
+       xo(x);
+       yo(y);
+       if (name_.empty()) 
+               drawChar(pain, LM_TC_TEXTRM, size_, x, y, ' ');
+       else
+               drawStr(pain, LM_TC_TEXTRM, size_, x, y, name_);
 }
index a7341f7d51f0d8972d8bb70e4ca9dd46ff0cab32..d552e20242c35a77f4e4c3fce6a0f920abb728e7 100644 (file)
@@ -11,8 +11,6 @@
 #include "LaTeXFeatures.h"
 
 
-LyXFont WhichFont(short type, int size);
-
 namespace {
 
 string const getAlign(short int type, int cols)
@@ -98,9 +96,6 @@ void MathMatrixInset::Metrics(MathStyles /* st */, int, int)
 {
        size_ = (GetType() == LM_OT_SIMPLE) ? LM_ST_TEXT : LM_ST_DISPLAY;
 
-       //LyXFont wfont = WhichFont(LM_TC_BF, size());
-       //wfont.setLatex(LyXFont::OFF);
-
        // let the cells adjust themselves
        MathGridInset::Metrics(size_);
 
@@ -112,7 +107,7 @@ void MathMatrixInset::Metrics(MathStyles /* st */, int, int)
        if (numberedType()) {
                int l = 0;
                for (int row = 0; row < nrows(); ++row)
-                       l = std::max(l, mathed_string_width(LM_TC_TEXTRM, size(), nicelabel(row)));
+                       l = std::max(l, mathed_string_width(LM_TC_BF, size(), nicelabel(row)));
 
                if (l)
                        width_ += 30 + l;
@@ -128,13 +123,11 @@ void MathMatrixInset::draw(Painter & pain, int x, int y)
        MathGridInset::draw(pain, x, y);
 
        if (numberedType()) {
-               LyXFont wfont = WhichFont(LM_TC_BF, size());
-#ifndef NO_LATEX
-               wfont.setLatex(LyXFont::OFF);
-#endif
                int xx = x + colinfo_.back().offset_ + colinfo_.back().width_ + 20;
-               for (int row = 0; row < nrows(); ++row) 
-                       pain.text(xx, y + rowinfo_[row].offset_, nicelabel(row), wfont);
+               for (int row = 0; row < nrows(); ++row) {
+                       int yy = y + rowinfo_[row].offset_;
+                       drawStr(pain, LM_TC_BF, size(), xx, yy, nicelabel(row));
+               }
        }
 }
 
index 535432d84e4947774c9e38a82df43aed5500097a..863346232d568f9c3700b9004101d92de39da019 100644 (file)
@@ -630,7 +630,8 @@ void mathed_parse(MathArray & array, unsigned flags)
                
                case LM_TK_SYM:
                        if (yylval.l->id < 256) {
-                               MathTextCodes tc = MathIsBOPS(yylval.l->id) ? LM_TC_BOPS : LM_TC_SYMB;
+                               MathTextCodes c = static_cast<MathTextCodes>(yylval.l->id);
+                               MathTextCodes tc = MathIsBOPS(c) ? LM_TC_BOPS : LM_TC_SYMB;
                                array.push_back(yylval.l->id, tc);
                        } else 
                                array.push_back(new MathFuncInset(yylval.l->name));
index 7d559ec52ccbdf012df268b30685777310c54601..0773885ed07efe7e92da2d1307b58dd5e49f7317 100644 (file)
@@ -64,11 +64,11 @@ binary_op_pair binary_op_table[] = {
 };
 
 
-struct compara {
+struct comparator {
        // used by sort and lower_bound
        inline
-       int operator()(binary_op_pair const & a,
-                      binary_op_pair const & b) const {
+       int operator()(binary_op_pair const & a, binary_op_pair const & b) const
+       {
                return a.id < b.id;
        }
 };
@@ -83,7 +83,7 @@ int MathLookupBOP(short id)
        static bool issorted = false;
        
        if (!issorted) {
-               sort(binary_op_table, binary_op_table + bopCount, compara());
+               sort(binary_op_table, binary_op_table + bopCount, comparator());
                issorted = true;
        }
 
@@ -91,7 +91,7 @@ int MathLookupBOP(short id)
        
        binary_op_pair * res = lower_bound(binary_op_table,
                                           binary_op_table + bopCount,
-                                          search_elem, compara());
+                                          search_elem, comparator());
        if (res != binary_op_table + bopCount && res->id == id)
                return res->isrel;
        else
index 9e0126ad1fc34e5ef83fe4e1b5dd630699e44dd1..2895ce17fcddd173ea39da63199547d0d2b23b45 100644 (file)
@@ -3,7 +3,6 @@
 #ifndef MATHUTILS_H
 #define MATHUTILS_H
 
-extern
 int MathLookupBOP(short id);
 
 #endif
index 4185742cd6f3c22b26e3ce404625c6f282f15c76..47f4736fcae19f4d3f20df71ee24080c0bc544a7 100644 (file)
@@ -8,7 +8,6 @@
 #include "math_defs.h"
 #include "math_parser.h"
 #include "Painter.h"
-#include "symbol_def.h"
 #include "debug.h"
 #include "math_utils.h"
 
@@ -18,31 +17,31 @@ using std::endl;
 using std::max;
 
 
-bool MathIsInset(short x)
+bool MathIsInset(MathTextCodes x)
 {
        return LM_TC_INSET == x;
 }
 
 
-bool MathIsAlphaFont(short x)
+bool MathIsAlphaFont(MathTextCodes x)
 {
        return LM_TC_VAR <= x && x <= LM_TC_TEXTRM;
 }
 
 
-bool MathIsBOPS(short x)
+bool MathIsBOPS(MathTextCodes x)
 {
-       return MathLookupBOP(x) > LMB_NONE;
+       return MathLookupBOP(x) != LMB_NONE;
 }
 
 
-bool MathIsBinary(short x)
+bool MathIsBinary(MathTextCodes x)
 {
        return x == LM_TC_BOP || x == LM_TC_BOPS;
 }
 
 
-bool MathIsSymbol(short x)
+bool MathIsSymbol(MathTextCodes x)
 {
        return x == LM_TC_SYMB || x == LM_TC_BOPS || x == LM_TC_BSYM;
 }
@@ -123,8 +122,123 @@ void Matrix::transform(float xp, float yp, float & x, float & y)
 }
 
 
+namespace {
+
+LyXFont           * Math_Fonts = 0;
+
+void mathed_init_fonts()
+{
+       Math_Fonts = new LyXFont[8]; //DEC cxx cannot initialize all fonts
+       //at once (JMarc) rc
+
+       for (int i = 0 ; i < 8 ; ++i) {
+               Math_Fonts[i] = LyXFont(LyXFont::ALL_SANE);
+       }
+
+       Math_Fonts[0].setShape(LyXFont::ITALIC_SHAPE);
+
+       Math_Fonts[1].setFamily(LyXFont::SYMBOL_FAMILY);
+
+       Math_Fonts[2].setFamily(LyXFont::SYMBOL_FAMILY);
+       Math_Fonts[2].setShape(LyXFont::ITALIC_SHAPE);
+
+       Math_Fonts[3].setSeries(LyXFont::BOLD_SERIES);
+
+       Math_Fonts[4].setFamily(LyXFont::SANS_FAMILY);
+       Math_Fonts[4].setShape(LyXFont::ITALIC_SHAPE);
+
+       Math_Fonts[5].setFamily(LyXFont::TYPEWRITER_FAMILY);
+
+       Math_Fonts[6].setFamily(LyXFont::ROMAN_FAMILY);
+
+       Math_Fonts[7].setFamily(LyXFont::SANS_FAMILY);
+}
+
+} // namespace
+
+
+LyXFont WhichFont(MathTextCodes type, MathStyles size)
+{
+       LyXFont f;
+       
+       if (!Math_Fonts)
+               mathed_init_fonts();
+
+       switch (type) {
+       case LM_TC_SYMB:        
+               f = Math_Fonts[2];
+               break;
+
+       case LM_TC_BSYM:        
+               f = Math_Fonts[2];
+               break;
+
+       case LM_TC_VAR:
+       case LM_TC_IT:
+               f = Math_Fonts[0];
+               break;
+
+       case LM_TC_BF:
+               f = Math_Fonts[3];
+               break;
+
+       case LM_TC_SF:
+               f = Math_Fonts[7];
+               break;
+
+       case LM_TC_CAL:
+               f = Math_Fonts[4];
+               break;
+
+       case LM_TC_TT:
+               f = Math_Fonts[5];
+               break;
+
+       case LM_TC_SPECIAL: //f = Math_Fonts[0]; break;
+       case LM_TC_TEXTRM:
+       case LM_TC_TEX:
+       case LM_TC_RM:
+               f = Math_Fonts[6];
+               break;
+
+       default:
+               f = Math_Fonts[1];
+               break;
+       }
+
+       switch (size) {
+       case LM_ST_DISPLAY:
+               if (type == LM_TC_BSYM) {
+                       f.incSize();
+                       f.incSize();
+               }
+               break;
+
+       case LM_ST_TEXT:
+               break;
+
+       case LM_ST_SCRIPT:
+               f.decSize();
+               break;
+
+       case LM_ST_SCRIPTSCRIPT:
+               f.decSize();
+               f.decSize();
+               break;
+
+       default:
+               lyxerr << "Math Error: wrong font size: " << size << endl;
+               break;
+       }
 
-extern LyXFont WhichFont(short type, int size);
+       if (type != LM_TC_TEXTRM)
+               f.setColor(LColor::math);
+
+       if (type == LM_TC_TEX)
+               f.setColor(LColor::latex);
+
+       return f;
+}
 
 char const * math_font_name[] = {
        "mathrm",
@@ -407,7 +521,7 @@ static init_deco_table idt;
 
 } // namespace anon
 
-void mathed_char_dim (short type, int size, unsigned char c,
+void mathed_char_dim (MathTextCodes type, MathStyles size, unsigned char c,
        int & asc, int & des, int & wid)
 {
        LyXFont const font = WhichFont(type, size);
@@ -416,7 +530,7 @@ void mathed_char_dim (short type, int size, unsigned char c,
        wid = mathed_char_width(type, size, c);
 }
 
-int mathed_char_height(short type, int size, unsigned char c,
+int mathed_char_height(MathTextCodes type, MathStyles size, unsigned char c,
        int & asc, int & des)
 {
        LyXFont const font = WhichFont(type, size);
@@ -426,7 +540,7 @@ int mathed_char_height(short type, int size, unsigned char c,
 }
 
 
-int mathed_char_width(short type, int size, unsigned char c)
+int mathed_char_width(MathTextCodes type, MathStyles size, unsigned char c)
 {
        if (MathIsBinary(type)) {
                string s;
@@ -437,14 +551,14 @@ int mathed_char_width(short type, int size, unsigned char c)
 }
 
 
-void mathed_string_dim(short type, int size, string const & s,
+void mathed_string_dim(MathTextCodes type, MathStyles size, string const & s,
                         int & asc, int & des, int & wid)
 {
        mathed_string_height(type, size, s, asc, des);
        wid = mathed_string_width(type, size, s);
 }
 
-int mathed_string_height(short type, int size, string const & s,
+int mathed_string_height(MathTextCodes type, MathStyles size, string const & s,
                         int & asc, int & des)
 {
        LyXFont const font = WhichFont(type, size);
@@ -457,7 +571,7 @@ int mathed_string_height(short type, int size, string const & s,
 }
 
 
-int mathed_string_width(short type, int size, string const & s)
+int mathed_string_width(MathTextCodes type, MathStyles size, string const & s)
 {
        string st;
        if (MathIsBinary(type))
@@ -470,20 +584,7 @@ int mathed_string_width(short type, int size, string const & s)
        else
                st = s;
        
-       LyXFont const f = WhichFont(type, size);
-       return lyxfont::width(st, f);
-}
-
-
-LyXFont mathed_get_font(short type, int size)
-{
-       LyXFont f = WhichFont(type, size);
-#ifndef NO_LATEX
-       if (type == LM_TC_TEX) {
-               f.setLatex(LyXFont::ON);
-       }
-#endif
-       return f;
+       return lyxfont::width(st, WhichFont(type, size));
 }
 
 
@@ -581,7 +682,7 @@ void mathed_draw_deco(Painter & pain, int x, int y, int w, int h, int code)
 
 
 // In a near future maybe we use a better fonts renderer
-void drawStr(Painter & pain, short type, int siz,
+void drawStr(Painter & pain, MathTextCodes type, MathStyles siz,
        int x, int y, string const & s)
 {
        string st;
@@ -595,11 +696,10 @@ void drawStr(Painter & pain, short type, int siz,
        else
                st = s;
        
-       LyXFont const mf = mathed_get_font(type, siz);
-       pain.text(x, y, st, mf);
+       pain.text(x, y, st, WhichFont(type, siz));
 }
 
-void drawChar(Painter & pain, short type, int siz, int x, int y, char c)
+void drawChar(Painter & pain, MathTextCodes type, MathStyles siz, int x, int y, char c)
 {
        string s;
        s += c;
@@ -639,3 +739,12 @@ bool MathIsRelOp(unsigned char c, MathTextCodes f)
                return true;
        return false;
 }
+
+
+void math_font_max_dim(MathTextCodes code, MathStyles siz, int & asc, int & des)
+{
+       LyXFont font = WhichFont(code, siz);
+       asc = lyxfont::maxAscent(font);
+       des = lyxfont::maxDescent(font);
+}
+
index 9f4b811f9897ae8cb05ba805ca8d8ed49867e89b..73282c194f6fbb2e2b4bc071fef6664b9a2596bc 100644 (file)
@@ -3,8 +3,8 @@
 #ifndef MATH_SUPPORT_H
 #define MATH_SUPPORT_H
 
-#include "lyxfont.h"
 #include "math_defs.h"
+#include "LString.h"
 
 class Painter;
 class MathArray;
@@ -13,31 +13,32 @@ class MathMatrixInset;
 extern char const * math_font_name[];
 extern char const * latex_mathspace[];
 
-int mathed_char_height(short type, int size, unsigned char c,
+int mathed_char_height(MathTextCodes type, MathStyles size, unsigned char c,
        int & asc, int & des);
-int mathed_char_width(short type, int size, unsigned char c);
-void mathed_char_dim(short type, int size, unsigned char c,
+int mathed_char_width(MathTextCodes type, MathStyles size, unsigned char c);
+void mathed_char_dim(MathTextCodes type, MathStyles size, unsigned char c,
        int & asc, int & des, int & wid);
 
 void mathed_draw_deco(Painter & pain, int x, int y, int w, int h, int code);
 
-LyXFont mathed_get_font(short type, int size);
-
-void mathed_string_dim(short type, int size, string const & s,
+void mathed_string_dim(MathTextCodes type, MathStyles size, string const & s,
   int & asc, int & des, int & wid);
-int mathed_string_height(short type, int size, string const & s,
+int mathed_string_height(MathTextCodes type, MathStyles size, string const & s,
   int & asc, int & des);
-int mathed_string_width(short type, int size, string const & s);
+int mathed_string_width(MathTextCodes type, MathStyles size, string const & s);
 
-bool MathIsInset(short x);
-bool MathIsAlphaFont(short x);
-bool MathIsBOPS(short x);
-bool MathIsSymbol(short x);
+bool MathIsInset(MathTextCodes x);
+bool MathIsAlphaFont(MathTextCodes x);
+bool MathIsBOPS(MathTextCodes x);
+bool MathIsSymbol(MathTextCodes x);
 bool MathIsRelOp(unsigned char c, MathTextCodes f);
 
-void drawStr(Painter & pain, short type, int siz,
+void drawStr(Painter & pain, MathTextCodes type, MathStyles siz,
        int x, int y, string const & s);
-void drawChar(Painter & pain, short type, int siz,
+void drawChar(Painter & pain, MathTextCodes type, MathStyles siz,
        int x, int y, char c);
 
+void math_font_max_dim
+       (MathTextCodes code, MathStyles siz, int & asc, int & desc);
+
 #endif