#include "MathStream.h"
#include "debug.h"
-#include "dimension.h"
-#include "support/lstrings.h"
+#include "Dimension.h"
#include "TextPainter.h"
+#include "support/lstrings.h"
+
#include "frontends/FontMetrics.h"
namespace lyx {
-using std::auto_ptr;
-
extern bool has_math_fonts;
namespace {
-auto_ptr<InsetBase> InsetMathChar::doClone() const
+Inset * InsetMathChar::clone() const
{
- return auto_ptr<InsetBase>(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");
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);
dim.wid += 2 * theFontMetrics(font_).width(' ');
lyxerr << "InsetMathChar::metrics: " << dim << endl;
#endif
- dim_ = dim;
- return true;
+ // Cache the inset dimension.
+ setDimCache(mi, dim);
}
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_);