]> git.lyx.org Git - lyx.git/blobdiff - src/mathed/math_charinset.C
rename commandtags.h to lfuns.h and renumber/cleanup. Rebuild the tree !
[lyx.git] / src / mathed / math_charinset.C
index b44ad7111f438ce21a8d89695a179304707365ed..b7e49f6c73eece644e15441dd037c409173cec9a 100644 (file)
@@ -1,8 +1,5 @@
 #include <config.h>
 
-#ifdef __GNUG__
-#pragma implementation
-#endif
 
 #include "math_charinset.h"
 #include "LColor.h"
@@ -27,6 +24,7 @@ using std::strchr;
 using std::isalpha;
 #endif
 
+extern bool has_math_fonts;
 
 namespace {
 
@@ -60,14 +58,23 @@ MathInset * MathCharInset::clone() const
 void MathCharInset::metrics(MathMetricsInfo & mi) const
 {
 #if 1
-       if (slanted(char_) && mi.base.fontname == "mathnormal") {
+       if (char_ == '=' && has_math_fonts) {
+               MathFontSetChanger dummy(mi.base, "cmr");
+               mathed_char_dim(mi.base.font, char_, dim_);
+       } else if ((char_ == '>' || char_ == '<') && has_math_fonts) {
+               MathFontSetChanger dummy(mi.base, "cmm");
+               mathed_char_dim(mi.base.font, char_, dim_);
+       } else if (slanted(char_) && mi.base.fontname == "mathnormal") {
                MathShapeChanger dummy(mi.base.font, LyXFont::ITALIC_SHAPE);
                mathed_char_dim(mi.base.font, char_, dim_);
        } else {
                mathed_char_dim(mi.base.font, char_, dim_);
        }
+       int const em = mathed_char_width(mi.base.font, 'M');
        if (isBinaryOp(char_))
-               dim_.w += 2 * font_metrics::width(' ', mi.base.font);
+               dim_.w += static_cast<int>(0.5*em+0.5);
+       else if (char_ == '\'')
+               dim_.w += static_cast<int>(0.1667*em+0.5);
 #else
        whichFont(font_, code_, mi);
        mathed_char_dim(font_, char_, dim_);
@@ -81,10 +88,19 @@ void MathCharInset::metrics(MathMetricsInfo & mi) const
 void MathCharInset::draw(MathPainterInfo & pi, int x, int y) const
 {
        //lyxerr << "drawing '" << char_ << "' font: " << pi.base.fontname << endl;
+       int const em = mathed_char_width(pi.base.font, 'M');
        if (isBinaryOp(char_))
-               x += font_metrics::width(' ', pi.base.font);
+               x += static_cast<int>(0.25*em+0.5);
+       else if (char_ == '\'')
+               x += static_cast<int>(0.0833*em+0.5);
 #if 1
-       if (slanted(char_) && pi.base.fontname == "mathnormal") {
+       if (char_ == '=' && has_math_fonts) {
+               MathFontSetChanger dummy(pi.base, "cmr");
+               pi.draw(x, y, char_);
+       } else if ((char_ == '>' || char_ == '<') && has_math_fonts) {
+               MathFontSetChanger dummy(pi.base, "cmm");
+               pi.draw(x, y, char_);
+       } else if (slanted(char_) && pi.base.fontname == "mathnormal") {
                MathShapeChanger dummy(pi.base.font, LyXFont::ITALIC_SHAPE);
                pi.draw(x, y, char_);
        } else {
@@ -119,11 +135,11 @@ void MathCharInset::write(WriteStream & os) const
 
 void MathCharInset::normalize(NormalStream & os) const
 {
-       os << "[char " << char_ << " " << "mathalpha" << "]";
+       os << "[char " << char_ << ' ' << "mathalpha]";
 }
 
 
-void MathCharInset::octavize(OctaveStream & os) const
+void MathCharInset::octave(OctaveStream & os) const
 {
        os << char_;
 }