#include "BufferView.h"
#include "cursor.h"
+#include "debug.h"
#include "gettext.h"
#include "LColor.h"
#include "lyxlex.h"
#include "frontends/font_metrics.h"
#include "support/lstrings.h"
-#include "support/std_sstream.h"
+
+#include <sstream>
using lyx::support::bformat;
using std::string;
using std::auto_ptr;
using std::ostream;
+using std::endl;
InsetFormulaMacro::InsetFormulaMacro()
- : MathNestInset(2), name_("unknown")
+ : MathNestInset(2), name_("unknownA")
{}
InsetFormulaMacro::InsetFormulaMacro(string const & s)
- : MathNestInset(2), name_("unknown")
+ : MathNestInset(2), name_("unknownB")
{
std::istringstream is(s);
read(is);
void InsetFormulaMacro::write(Buffer const &, ostream & os) const
{
- os << "FormulaMacro ";
+ os << "FormulaMacro\n";
WriteStream wi(os, false, false);
- MathNestInset::write(wi);
+ tmpl()->write(wi);
}
int InsetFormulaMacro::latex(Buffer const &, ostream & os,
OutputParams const & runparams) const
{
+ //lyxerr << "InsetFormulaMacro::latex" << endl;
WriteStream wi(os, runparams.moving_arg, true);
- MathNestInset::write(wi);
+ tmpl()->write(wi);
return 2;
}
OutputParams const &) const
{
WriteStream wi(os, false, true);
- MathNestInset::write(wi);
+ tmpl()->write(wi);
return 0;
}
auto_ptr<MathMacroTemplate> p(new MathMacroTemplate(is));
name_ = p->name();
MathMacroTable::create(MathAtom(p.release()));
- //metrics();
}
void InsetFormulaMacro::metrics(MetricsInfo & mi, Dimension & dim) const
{
- MathNestInset::metrics(mi);
- dim = cell(0).dim();
- dim += cell(1).dim();
+ //lyxerr << "InsetFormulaMacro: " << this << " -- " << &tmpl() << endl;
+ tmpl()->metrics(mi, dim);
dim.asc += 5;
dim.des += 5;
dim.wid += 10 + font_metrics::width(prefix(), mi.base.font);
- dim = dim_;
+ dim_ = dim;
}
-#warning FIXME
-#if 0
-MathAtom const & InsetFormulaMacro::par() const
-{
- return MathMacroTable::provide(getInsetName());
-}
-
-
-MathAtom & InsetFormulaMacro::par()
-{
- return MathMacroTable::provide(getInsetName());
-}
-#endif
-
-
void InsetFormulaMacro::draw(PainterInfo & p, int x, int y) const
{
// label
LyXFont font = p.base.font;
font.setColor(LColor::math);
- PainterInfo pi(p.base.bv);
+ PainterInfo pi(p.base.bv, p.pain);
pi.base.style = LM_ST_TEXT;
pi.base.font = font;
pi.pain.fillRectangle(x, a, w, h, LColor::mathmacrobg);
pi.pain.rectangle(x, a, w, h, LColor::mathframe);
+#ifdef WITH_WARNINGS
#warning FIXME
+#endif
#if 0
LCursor & cur = p.base.bv->cursor();
if (cur.isInside(this))
pi.pain.text(x + 2, y, prefix(), font);
- // formula
-#warning FIXME
-#if 0
- par()->draw(pi, x + font_metrics::width(prefix(), p.base.font) + 5, y);
-#endif
+ // body
+ tmpl()->draw(pi, x + font_metrics::width(prefix(), p.base.font) + 5, y);
+
setPosCache(pi, x, y);
}
+
+
+MathAtom & InsetFormulaMacro::tmpl() const
+{
+ return MathMacroTable::provide(name_);
+}