]> git.lyx.org Git - lyx.git/blobdiff - src/mathed/math_support.C
whichFont down to 5.3%
[lyx.git] / src / mathed / math_support.C
index b19eeab53a14799344383825d634ff516a9218ac..8bea104b7d35149920c49c1c57dea63906b26f36 100644 (file)
@@ -219,9 +219,9 @@ LyXFont const & whichFontBase(MathTextCodes type)
 }
 
 
-LyXFont whichFont(MathTextCodes type, MathMetricsInfo const & size)
+void whichFont(LyXFont & f, MathTextCodes type, MathMetricsInfo const & size)
 {
-       LyXFont f = whichFontBase(type);
+       f = whichFontBase(type);
        // use actual size
        f.setSize(size.font.size());
 
@@ -257,8 +257,6 @@ LyXFont whichFont(MathTextCodes type, MathMetricsInfo const & size)
 
        if (type == LM_TC_TEX)
                f.setColor(LColor::latex);
-
-       return f;
 }
 
 } // namespace
@@ -473,10 +471,12 @@ named_deco_struct deco_table[] = {
        {"overbrace",      brace,      3 },
        {"overleftarrow",  arrow,      1 },
        {"overrightarrow", arrow,      3 },
+       {"overleftrightarrow", udarrow, 1 },
        {"xleftarrow",     arrow,      1 },
        {"xrightarrow",    arrow,      3 },
        {"underleftarrow", arrow,      1 },
        {"underrightarrow", arrow,     3 },
+       {"underleftrightarrow",udarrow, 1 },
 
        // Delimiters
        {"(",              parenth,    0 },
@@ -556,7 +556,8 @@ deco_struct const * search_deco(string const & name)
 void mathed_char_dim(MathTextCodes type, MathMetricsInfo const & size,
        unsigned char c, int & asc, int & des, int & wid)
 {
-       LyXFont const font = whichFont(type, size);
+       LyXFont font;
+       whichFont(font, type, size);
        des = lyxfont::descent(c, font);
        asc = lyxfont::ascent(c, font);
        wid = mathed_char_width(type, size, c);
@@ -566,7 +567,8 @@ void mathed_char_dim(MathTextCodes type, MathMetricsInfo const & size,
 int mathed_char_height(MathTextCodes type, MathMetricsInfo const & size,
        unsigned char c, int & asc, int & des)
 {
-       LyXFont const font = whichFont(type, size);
+       LyXFont font;
+       whichFont(font, type, size);
        des = lyxfont::descent(c, font);
        asc = lyxfont::ascent(c, font);
        return asc + des;
@@ -585,7 +587,8 @@ int mathed_char_height(MathTextCodes type, MathMetricsInfo const & size,
 int mathed_char_ascent(MathTextCodes type, MathMetricsInfo const & size,
        unsigned char c)
 {
-       LyXFont const font = whichFont(type, size);
+       LyXFont font;
+       whichFont(font, type, size);
        return lyxfont::ascent(c, font);
 }
 
@@ -593,7 +596,8 @@ int mathed_char_ascent(MathTextCodes type, MathMetricsInfo const & size,
 int mathed_char_descent(MathTextCodes type, MathMetricsInfo const & size,
        unsigned char c)
 {
-       LyXFont const font = whichFont(type, size);
+       LyXFont font;
+       whichFont(font, type, size);
        return lyxfont::descent(c, font);
 }
 
@@ -601,7 +605,8 @@ int mathed_char_descent(MathTextCodes type, MathMetricsInfo const & size,
 int mathed_char_width(MathTextCodes type, MathMetricsInfo const & size,
        unsigned char c)
 {
-       LyXFont const font = whichFont(type, size);
+       LyXFont font;
+       whichFont(font, type, size);
        if (isBinaryOp(c, type))
                return lyxfont::width(c, font) + 2 * lyxfont::width(' ', font);
        else
@@ -620,7 +625,8 @@ void mathed_string_dim(MathTextCodes type, MathMetricsInfo const & size,
 int mathed_string_height(MathTextCodes type, MathMetricsInfo const & size,
        string const & s, int & asc, int & des)
 {
-       LyXFont const font = whichFont(type, size);
+       LyXFont font;
+       whichFont(font, type, size);
        asc = des = 0;
        for (string::const_iterator it = s.begin(); it != s.end(); ++it) {
                des = max(des, lyxfont::descent(*it, font));
@@ -633,14 +639,17 @@ int mathed_string_height(MathTextCodes type, MathMetricsInfo const & size,
 int mathed_string_width(MathTextCodes type, MathMetricsInfo const & size,
        string const & s)
 {
-       return lyxfont::width(s, whichFont(type, size));
+       LyXFont font;
+       whichFont(font, type, size);
+       return lyxfont::width(s, font);
 }
 
 
 int mathed_string_ascent(MathTextCodes type, MathMetricsInfo const & size,
        string const & s)
 {
-       LyXFont const font = whichFont(type, size);
+       LyXFont font;
+       whichFont(font, type, size);
        int asc = 0;
        for (string::const_iterator it = s.begin(); it != s.end(); ++it)
                asc = max(asc, lyxfont::ascent(*it, font));
@@ -651,7 +660,8 @@ int mathed_string_ascent(MathTextCodes type, MathMetricsInfo const & size,
 int mathed_string_descent(MathTextCodes type, MathMetricsInfo const & size,
        string const & s)
 {
-       LyXFont const font = whichFont(type, size);
+       LyXFont font;
+       whichFont(font, type, size);
        int des = 0;
        for (string::const_iterator it = s.begin(); it != s.end(); ++it)
                des = max(des, lyxfont::descent(*it, font));
@@ -737,14 +747,16 @@ void mathed_draw_framebox(Painter & pain, int x, int y, MathInset const * p)
 
 
 // In the future maybe we use a better fonts renderer
-void drawStr(Painter & pain, MathTextCodes type, MathMetricsInfo const & siz,
-       int x, int y, string const & s)
+void drawStr(Painter & pain, MathTextCodes type, MathMetricsInfo const & size,
+       int x, int y, string const & str)
 {
-       pain.text(x, y, s, whichFont(type, siz));
+       LyXFont font;
+       whichFont(font, type, size);
+       pain.text(x, y, str, font);
 }
 
 
-void drawChar(Painter & pain, MathTextCodes type, MathMetricsInfo const & siz,
+void drawChar(Painter & pain, MathTextCodes type, MathMetricsInfo const & size,
        int x, int y, char c)
 {
        string s;
@@ -753,7 +765,7 @@ void drawChar(Painter & pain, MathTextCodes type, MathMetricsInfo const & siz,
        s += c;
        if (isBinaryOp(c, type))
                s += ' ';
-       drawStr(pain, type, siz, x, y, s);
+       drawStr(pain, type, size, x, y, s);
 }
 
 
@@ -779,10 +791,11 @@ void smallerStyleFrac(MathMetricsInfo & st)
 }
 
 
-void math_font_max_dim(MathTextCodes code, MathMetricsInfo const & siz,
+void math_font_max_dim(MathTextCodes code, MathMetricsInfo const & size,
        int & asc, int & des)
 {
-       LyXFont font = whichFont(code, siz);
+       LyXFont font;
+       whichFont(font, code, size);
        asc = lyxfont::maxAscent(font);
        des = lyxfont::maxDescent(font);
 }