#include "InsetSpace.h"
-#include "debug.h"
-#include "Color.h"
+#include "Dimension.h"
#include "Lexer.h"
#include "MetricsInfo.h"
#include "OutputParams.h"
#include "frontends/FontMetrics.h"
#include "frontends/Painter.h"
+#include "support/debug.h"
+#include "support/docstream.h"
-namespace lyx {
+using namespace std;
-using std::string;
-using std::max;
-using std::ostream;
+namespace lyx {
InsetSpace::InsetSpace()
}
-bool InsetSpace::metrics(MetricsInfo & mi, Dimension & dim) const
+void InsetSpace::metrics(MetricsInfo & mi, Dimension & dim) const
{
- frontend::FontMetrics const & fm =
- theFontMetrics(mi.base.font);
+ frontend::FontMetrics const & fm = theFontMetrics(mi.base.font);
dim.asc = fm.maxAscent();
dim.des = fm.maxDescent();
switch (kind_) {
case THIN:
case NEGTHIN:
- dim.wid = fm.width(char_type('x')) / 3;
+ dim.wid = fm.width(char_type('M')) / 6;
break;
case PROTECTED:
case NORMAL:
- dim.wid = fm.width(char_type('x'));
+ dim.wid = fm.width(char_type(' '));
break;
case QUAD:
- dim.wid = 20;
+ dim.wid = fm.width(char_type('M'));
break;
case QQUAD:
- dim.wid = 40;
+ dim.wid = 2 * fm.width(char_type('M'));
break;
case ENSPACE:
case ENSKIP:
- dim.wid = 10;
+ dim.wid = int(0.5 * fm.width(char_type('M')));
break;
}
- bool const changed = dim_ != dim;
- dim_ = dim;
- return changed;
+ // Cache the inset dimension.
+ setDimCache(mi, dim);
}
void InsetSpace::draw(PainterInfo & pi, int x, int y) const
{
- int const w = width();
+ Dimension const dim = dimension(*pi.base.bv);
+ int const w = dim.wid;
int const h = theFontMetrics(pi.base.font)
.ascent('x');
int xp[4], yp[4];
xp[0] = x;
yp[0] = y - max(h / 4, 1);
- if (kind_ == NORMAL) {
+ if (kind_ == NORMAL || kind_ == PROTECTED) {
xp[1] = x; yp[1] = y;
xp[2] = x + w; yp[2] = y;
} else {
yp[3] = y - max(h / 4, 1);
if (kind_ == PROTECTED || kind_ == ENSPACE || kind_ == NEGTHIN)
- pi.pain.lines(xp, yp, 4, Color::latex);
+ pi.pain.lines(xp, yp, 4, Color_latex);
else
- pi.pain.lines(xp, yp, 4, Color::special);
+ pi.pain.lines(xp, yp, 4, Color_special);
}
}
-int InsetSpace::textString(Buffer const & buf, odocstream & os,
- OutputParams const & op) const
+void InsetSpace::textString(Buffer const & buf, odocstream & os) const
{
- return plaintext(buf, os, op);
+ plaintext(buf, os, OutputParams(0));
}