]> git.lyx.org Git - lyx.git/blobdiff - src/mathed/InsetMathChar.cpp
* dynamic macros as described in http://1stein.org/download/dynmacro.pdf
[lyx.git] / src / mathed / InsetMathChar.cpp
index 5e523c88a229003cc55e4805d801fcee791a4fcc..f1e21131e10ef7e06957f7c68d61502ea8368b92 100644 (file)
 
 #include "debug.h"
 #include "Dimension.h"
-#include "support/lstrings.h"
 #include "TextPainter.h"
 
+#include "support/lstrings.h"
+
 #include "frontends/FontMetrics.h"
 
 
 namespace lyx {
 
-using std::auto_ptr;
-
 extern bool has_math_fonts;
 
 namespace {
@@ -51,20 +50,14 @@ InsetMathChar::InsetMathChar(char_type c)
 
 
 
-auto_ptr<Inset> InsetMathChar::doClone() const
+Inset * InsetMathChar::clone() const
 {
-       return auto_ptr<Inset>(new InsetMathChar(*this));
+       return new InsetMathChar(*this);
 }
 
 
-bool InsetMathChar::metrics(MetricsInfo & mi, Dimension & dim) const
+void InsetMathChar::metrics(MetricsInfo & mi, Dimension & dim) const
 {
-       if (mi.base.font == font_cache_) {
-               dim = dim_;
-               return false;
-       }
-       font_cache_ = mi.base.font;
-
 #if 1
        if (char_ == '=' && has_math_fonts) {
                FontSetChanger dummy(mi.base, "cmr");
@@ -73,7 +66,7 @@ bool InsetMathChar::metrics(MetricsInfo & mi, Dimension & dim) const
                FontSetChanger dummy(mi.base, "cmm");
                dim = theFontMetrics(mi.base.font).dimension(char_);
        } else if (!slanted(char_) && mi.base.fontname == "mathnormal") {
-               ShapeChanger dummy(mi.base.font, LyXFont::UP_SHAPE);
+               ShapeChanger dummy(mi.base.font, UP_SHAPE);
                dim = theFontMetrics(mi.base.font).dimension(char_);
        } else {
                frontend::FontMetrics const & fm = theFontMetrics(mi.base.font);
@@ -92,8 +85,8 @@ bool InsetMathChar::metrics(MetricsInfo & mi, Dimension & dim) const
                dim.wid += 2 * theFontMetrics(font_).width(' ');
        lyxerr << "InsetMathChar::metrics: " << dim << endl;
 #endif
-       dim_ = dim;
-       return true;
+       // Cache the inset dimension. 
+       setDimCache(mi, dim);
 }
 
 
@@ -113,7 +106,7 @@ void InsetMathChar::draw(PainterInfo & pi, int x, int y) const
                FontSetChanger dummy(pi.base, "cmm");
                pi.draw(x, y, char_);
        } else if (!slanted(char_) && pi.base.fontname == "mathnormal") {
-               ShapeChanger dummy(pi.base.font, LyXFont::UP_SHAPE);
+               ShapeChanger dummy(pi.base.font, UP_SHAPE);
                pi.draw(x, y, char_);
        } else {
                pi.draw(x, y, char_);