]> git.lyx.org Git - lyx.git/blobdiff - src/mathed/InsetMathBoldSymbol.cpp
Coding style
[lyx.git] / src / mathed / InsetMathBoldSymbol.cpp
index 1d7c6f67607bb4af4e919e053f7c086e4c0f15f2..730185f919de386c6e49bc7d9010e8ea9b65d5e1 100644 (file)
 #include <config.h>
 
 #include "InsetMathBoldSymbol.h"
+
 #include "MathStream.h"
 #include "MathData.h"
 #include "LaTeXFeatures.h"
-#include "support/std_ostream.h"
-
 
-namespace lyx {
+#include <ostream>
 
-using std::auto_ptr;
 
+namespace lyx {
 
-InsetMathBoldSymbol::InsetMathBoldSymbol()
-       : InsetMathNest(1)
+InsetMathBoldSymbol::InsetMathBoldSymbol(Kind kind)
+       : InsetMathNest(1), kind_(kind)
 {}
 
 
-auto_ptr<InsetBase> InsetMathBoldSymbol::doClone() const
+Inset * InsetMathBoldSymbol::clone() const
 {
-       return auto_ptr<InsetBase>(new InsetMathBoldSymbol(*this));
+       return new InsetMathBoldSymbol(*this);
 }
 
 
-bool InsetMathBoldSymbol::metrics(MetricsInfo & mi, Dimension & dim) const
+void InsetMathBoldSymbol::metrics(MetricsInfo & mi, Dimension & dim) const
 {
        //FontSetChanger dummy(mi.base, "mathbf");
        cell(0).metrics(mi, dim);
        metricsMarkers(dim);
        ++dim.wid;  // for 'double stroke'
-       if (dim_ == dim)
-               return false;
-       dim_ = dim;
-       return true;
 }
 
 
@@ -57,7 +52,9 @@ void InsetMathBoldSymbol::draw(PainterInfo & pi, int x, int y) const
 
 void InsetMathBoldSymbol::metricsT(TextMetricsInfo const & mi, Dimension & /*dim*/) const
 {
-       cell(0).metricsT(mi, dim_);
+       // FIXME: BROKEN!
+       Dimension dim;
+       cell(0).metricsT(mi, dim);
 }
 
 
@@ -70,19 +67,43 @@ void InsetMathBoldSymbol::drawT(TextPainter & pain, int x, int y) const
 void InsetMathBoldSymbol::validate(LaTeXFeatures & features) const
 {
        InsetMathNest::validate(features);
-       features.require("amssymb");
+       if (kind_ == AMS_BOLD)
+               features.require("amsbsy");
+       else
+               features.require("bm");
 }
 
 
 void InsetMathBoldSymbol::write(WriteStream & os) const
 {
-       os << "\\boldsymbol{" << cell(0) << "}";
+       MathEnsurer ensurer(os);
+       switch (kind_) {
+       case AMS_BOLD:
+               os << "\\boldsymbol{" << cell(0) << "}";
+               break;
+       case BM_BOLD:
+               os << "\\bm{" << cell(0) << "}";
+               break;
+       case BM_HEAVY:
+               os << "\\hm{" << cell(0) << "}";
+               break;
+       }
 }
 
 
 void InsetMathBoldSymbol::infoize(odocstream & os) const
 {
-       os << "Boldsymbol ";
+       switch (kind_) {
+       case AMS_BOLD:
+               os << "Boldsymbol ";
+               break;
+       case BM_BOLD:
+               os << "Boldsymbol (bm)";
+               break;
+       case BM_HEAVY:
+               os << "Heavysymbol (bm)";
+               break;
+       }
 }