]> git.lyx.org Git - lyx.git/blobdiff - src/mathed/InsetMathKern.cpp
Improve the list of equations
[lyx.git] / src / mathed / InsetMathKern.cpp
index c5cab3ec30a00d23227afd4201062142c98b705a..d223887e3b6c2d712f0c9a4a1b577dc1e285b70c 100644 (file)
@@ -3,7 +3,7 @@
  * This file is part of LyX, the document processor.
  * Licence details can be found in the file COPYING.
  *
- * \author André Pönitz
+ * \author André Pönitz
  *
  * Full author contact details are available in file CREDITS.
  */
 #include <config.h>
 
 #include "InsetMathKern.h"
-#include "MathStream.h"
+
 #include "MathStream.h"
 #include "MathSupport.h"
-#include "dimension.h"
 
+#include "Dimension.h"
+#include "MetricsInfo.h"
 
-namespace lyx {
-
-using std::string;
-using std::auto_ptr;
+#include "support/docstring.h"
 
+namespace lyx {
 
 InsetMathKern::InsetMathKern()
 {
-       dim_.asc = 0;
-       dim_.des = 0;
 }
 
 
-InsetMathKern::InsetMathKern(LyXLength const & w)
+InsetMathKern::InsetMathKern(Length const & w)
        : wid_(w)
 {
-       dim_.asc = 0;
-       dim_.des = 0;
 }
 
 
 InsetMathKern::InsetMathKern(docstring const & s)
        : wid_(to_utf8(s))
 {
-       dim_.asc = 0;
-       dim_.des = 0;
 }
 
 
-auto_ptr<InsetBase> InsetMathKern::doClone() const
+Inset * InsetMathKern::clone() const
 {
-       return auto_ptr<InsetBase>(new InsetMathKern(*this));
+       return new InsetMathKern(*this);
 }
 
 
-bool InsetMathKern::metrics(MetricsInfo & mi, Dimension & dim) const
+void InsetMathKern::metrics(MetricsInfo & mi, Dimension & dim) const
 {
-       int wid_pixel = wid_.inPixels(0, mathed_char_width(mi.base.font, 'M'));
-       if (wid_pixel == dim_.wid)
-               return false;
-       dim_.wid = wid_pixel;
-       dim = dim_;
-       return true;
+       dim.asc = 0;
+       dim.des = 0;
+       dim.wid = wid_.inPixels(mi.base);
 }
 
 
@@ -69,13 +59,29 @@ void InsetMathKern::draw(PainterInfo &, int, int) const
 
 void InsetMathKern::write(WriteStream & os) const
 {
-       os << "\\kern" << from_utf8(wid_.asLatexString()) << ' ';
+       if (wid_.empty())
+               os << "\\kern" << ' ';
+       else if (wid_.unit() == Length::MU)
+               os << "\\mkern" << from_utf8(wid_.asLatexString()) << ' ';
+       else
+               os << "\\kern" << from_utf8(wid_.asLatexString()) << ' ';
 }
 
 
 void InsetMathKern::normalize(NormalStream & os) const
 {
-       os << "[kern " << from_utf8(wid_.asLatexString()) << ']';
+       if (wid_.empty())
+               os << "[kern]";
+       else
+               os << "[kern " << from_utf8(wid_.asLatexString()) << ']';
+}
+
+
+void InsetMathKern::infoize2(odocstream & os) const
+{
+       os << "Kern";
+       if (!wid_.empty())
+               os << ": " << from_utf8(wid_.asLatexString());
 }