From: André Pönitz Date: Tue, 7 Oct 2003 08:51:14 +0000 (+0000) Subject: support for \dfrac X-Git-Tag: 1.6.10~15998 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=8038cb8daede75935ff245f1ea4e666936b9c86c;p=features.git support for \dfrac git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@7868 a592a061-630c-0410-9148-cb99ea01b6c8 --- diff --git a/src/mathed/ChangeLog b/src/mathed/ChangeLog index acb1464740..96af4bfd75 100644 --- a/src/mathed/ChangeLog +++ b/src/mathed/ChangeLog @@ -1,4 +1,9 @@ +2003-10-07 André Pönitz + + * math_dfracinset.[Ch]: support for \dfrac + * math_colorinset.[Ch]: support for colors in formulas + 2003-10-07 Martin Vermeer * math_macrotable.h: add and other small fixes to make diff --git a/src/mathed/Makefile.am b/src/mathed/Makefile.am index 3d70f1e480..8a90dd005d 100644 --- a/src/mathed/Makefile.am +++ b/src/mathed/Makefile.am @@ -47,6 +47,8 @@ libmathed_la_SOURCES = \ math_decorationinset.h \ math_deliminset.C \ math_deliminset.h \ + math_dfracinset.C \ + math_dfracinset.h \ math_diffinset.C \ math_diffinset.h \ math_diminset.C \ diff --git a/src/mathed/math_dfracinset.C b/src/mathed/math_dfracinset.C new file mode 100644 index 0000000000..b13bdc7119 --- /dev/null +++ b/src/mathed/math_dfracinset.C @@ -0,0 +1,73 @@ +/** + * \file math_dfracinset.C + * This file is part of LyX, the document processor. + * Licence details can be found in the file COPYING. + * + * \author André Pönitz + * + * Full author contact details are available in file CREDITS. + */ + +#include + +#include "math_dfracinset.h" +#include "math_data.h" +#include "math_mathmlstream.h" +#include "LaTeXFeatures.h" +#include "LColor.h" +#include "frontends/Painter.h" + + +using std::string; +using std::max; +using std::auto_ptr; + + +MathDfracInset::MathDfracInset() + : MathFracInset(false) +{} + + +auto_ptr MathDfracInset::clone() const +{ + return auto_ptr(new MathDfracInset(*this)); +} + + +void MathDfracInset::metrics(MetricsInfo & mi, Dimension & dim) const +{ + cell(0).metrics(mi); + cell(1).metrics(mi); + dim_.wid = max(cell(0).width(), cell(1).width()) + 2; + dim_.asc = cell(0).height() + 2 + 5; + dim_.des = cell(1).height() + 2 - 5; + dim = dim_; +} + + +void MathDfracInset::draw(PainterInfo & pi, int x, int y) const +{ + int m = x + dim_.wid / 2; + cell(0).draw(pi, m - cell(0).width() / 2, y - cell(0).descent() - 2 - 5); + cell(1).draw(pi, m - cell(1).width() / 2, y + cell(1).ascent() + 2 - 5); + pi.pain.line(x + 1, y - 5, x + dim_.wid - 2, y - 5, LColor::math); +} + + +string MathDfracInset::name() const +{ + return "dfrac"; +} + + +void MathDfracInset::mathmlize(MathMLStream & os) const +{ + os << MTag("mdfrac") << cell(0) << cell(1) << ETag("mdfrac"); +} + + +void MathDfracInset::validate(LaTeXFeatures & features) const +{ + features.require("amsmath"); + MathNestInset::validate(features); +} diff --git a/src/mathed/math_dfracinset.h b/src/mathed/math_dfracinset.h new file mode 100644 index 0000000000..e1c91202f3 --- /dev/null +++ b/src/mathed/math_dfracinset.h @@ -0,0 +1,37 @@ +// -*- C++ -*- +/** + * \file math_fracinset.h + * This file is part of LyX, the document processor. + * Licence details can be found in the file COPYING. + * + * \author André Pönitz + * + * Full author contact details are available in file CREDITS. + */ + +#ifndef MATH_DFRACINSET_H +#define MATH_DFRACINSET_H + +#include "math_fracinset.h" + + +/// \dfrac support +class MathDfracInset : public MathFracInset { +public: + /// + MathDfracInset(); + /// + virtual std::auto_ptr clone() const; + /// + void metrics(MetricsInfo & mi, Dimension & dim) const; + /// + void draw(PainterInfo &, int x, int y) const; + /// + std::string name() const; + /// + void mathmlize(MathMLStream &) const; + /// + void validate(LaTeXFeatures & features) const; +}; + +#endif diff --git a/src/mathed/math_factory.C b/src/mathed/math_factory.C index 49ef14c45d..865736a523 100644 --- a/src/mathed/math_factory.C +++ b/src/mathed/math_factory.C @@ -20,6 +20,7 @@ #include "math_casesinset.h" #include "math_colorinset.h" #include "math_decorationinset.h" +#include "math_dfracinset.h" #include "math_dotsinset.h" #include "math_ertinset.h" #include "math_fboxinset.h" @@ -311,6 +312,8 @@ MathAtom createMathInset(string const & s) return MathAtom(new MathBoldsymbolInset); if (s == "color") return MathAtom(new MathColorInset); + if (s == "dfrac") + return MathAtom(new MathDfracInset); if (MathMacroTable::has(s)) return MathAtom(new MathMacro(s));