]> git.lyx.org Git - lyx.git/blobdiff - src/insets/InsetSpace.cpp
Andre's s/getTextClass/textClass/ cleanup.
[lyx.git] / src / insets / InsetSpace.cpp
index 26ab1b370f5888862573665355218a7b3e753371..bdc7d51d5eb9e5f595531ef8cabe33d0f335a46d 100644 (file)
@@ -15,8 +15,7 @@
 
 #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()
@@ -47,49 +46,48 @@ InsetSpace::Kind InsetSpace::kind() const
 }
 
 
-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 {
@@ -100,9 +98,9 @@ void InsetSpace::draw(PainterInfo & pi, int x, int y) const
        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);
 }
 
 
@@ -227,10 +225,9 @@ int InsetSpace::docbook(Buffer const &, odocstream & os,
 }
 
 
-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));
 }