]> git.lyx.org Git - features.git/commitdiff
support for \dfrac
authorAndré Pönitz <poenitz@gmx.net>
Tue, 7 Oct 2003 08:51:14 +0000 (08:51 +0000)
committerAndré Pönitz <poenitz@gmx.net>
Tue, 7 Oct 2003 08:51:14 +0000 (08:51 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@7868 a592a061-630c-0410-9148-cb99ea01b6c8

src/mathed/ChangeLog
src/mathed/Makefile.am
src/mathed/math_dfracinset.C [new file with mode: 0644]
src/mathed/math_dfracinset.h [new file with mode: 0644]
src/mathed/math_factory.C

index acb14647407796f93529609438c44267166a3ea5..96af4bfd75917b0cd54095329fc1f80b1c8a9caa 100644 (file)
@@ -1,4 +1,9 @@
 
+2003-10-07  André Pönitz  <poenitz@gmx.net>
+
+       * math_dfracinset.[Ch]: support for \dfrac
+       * math_colorinset.[Ch]: support for colors in formulas
+
 2003-10-07  Martin Vermeer  <martin.vermeer@hut.fi>
 
        * math_macrotable.h: add <string> and other small fixes to make
index 3d70f1e480421eb9d96aa20247c5ffdb4b9e878c..8a90dd005de906a54e2e6d1637c5e3fcee159476 100644 (file)
@@ -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 (file)
index 0000000..b13bdc7
--- /dev/null
@@ -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 <config.h>
+
+#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<InsetBase> MathDfracInset::clone() const
+{
+       return auto_ptr<InsetBase>(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 (file)
index 0000000..e1c9120
--- /dev/null
@@ -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<InsetBase> 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
index 49ef14c45dd404c9d847c87c878cd54498a2c074..865736a5234a2b860521910086eefb3ad1e592b5 100644 (file)
@@ -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));