X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fmathed%2FInsetMathBoldSymbol.cpp;h=5dbe1fda2859a0e7d0ae12865f0b781b288be64b;hb=21c92c8a129b5f3ff56de33bf2941a25967cffbb;hp=675afe50a830d8e4705e941e387ff2a4feb8f26b;hpb=ed858d73e57ce7aa89e38c1bc4d799362edb0227;p=lyx.git diff --git a/src/mathed/InsetMathBoldSymbol.cpp b/src/mathed/InsetMathBoldSymbol.cpp index 675afe50a8..5dbe1fda28 100644 --- a/src/mathed/InsetMathBoldSymbol.cpp +++ b/src/mathed/InsetMathBoldSymbol.cpp @@ -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. */ @@ -11,16 +11,19 @@ #include #include "InsetMathBoldSymbol.h" + #include "MathStream.h" #include "MathData.h" +#include "MetricsInfo.h" #include "LaTeXFeatures.h" -#include "support/std_ostream.h" + +#include namespace lyx { -InsetMathBoldSymbol::InsetMathBoldSymbol() - : InsetMathNest(1) +InsetMathBoldSymbol::InsetMathBoldSymbol(Buffer * buf, Kind kind) + : InsetMathNest(buf, 1), kind_(kind) {} @@ -30,31 +33,44 @@ Inset * InsetMathBoldSymbol::clone() const } -bool InsetMathBoldSymbol::metrics(MetricsInfo & mi, Dimension & dim) const +docstring InsetMathBoldSymbol::name() const { - //FontSetChanger dummy(mi.base, "mathbf"); + switch (kind_) { + case AMS_BOLD: + return from_ascii("boldsymbol"); + case BM_BOLD: + return from_ascii("bm"); + case BM_HEAVY: + return from_ascii("hm"); + } + // avoid compiler warning + return docstring(); +} + + +void InsetMathBoldSymbol::metrics(MetricsInfo & mi, Dimension & dim) const +{ + Changer dummy = mi.base.changeEnsureMath(); + //Changer dummy = mi.base.changeFontSet("mathbf"); cell(0).metrics(mi, dim); - metricsMarkers(dim); ++dim.wid; // for 'double stroke' - if (dim_ == dim) - return false; - dim_ = dim; - return true; } void InsetMathBoldSymbol::draw(PainterInfo & pi, int x, int y) const { - //FontSetChanger dummy(pi.base, "mathbf"); + Changer dummy = pi.base.changeEnsureMath(); + //Changer dummy = pi.base.changeFontSet("mathbf"); + cell(0).draw(pi, x, y); cell(0).draw(pi, x + 1, y); - cell(0).draw(pi, x + 2, y); - drawMarkers(pi, x, y); } void InsetMathBoldSymbol::metricsT(TextMetricsInfo const & mi, Dimension & /*dim*/) const { - cell(0).metricsT(mi, dim_); + // FIXME: BROKEN! + Dimension dim; + cell(0).metricsT(mi, dim); } @@ -67,19 +83,57 @@ 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::mathmlize(MathStream & ms) const +{ + ms << "<" << from_ascii(ms.namespacedTag("mstyle")) << " mathvariant='bold'>" + << cell(0) + << ""; +} + + +void InsetMathBoldSymbol::htmlize(HtmlStream & os) const +{ + os << MTag("b") << cell(0) << ETag("b"); } 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; + } }