X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fmathed%2FInsetMathFrac.h;h=5030730647db540a4f0047f8d875be434c0934ff;hb=61448d8cb2e922a9a891817a114c76c687be4811;hp=e80389281b4860468c71c512b4f72c0f7f93956d;hpb=32871c1284f15265f652ff01c438e539a7c8181f;p=lyx.git diff --git a/src/mathed/InsetMathFrac.h b/src/mathed/InsetMathFrac.h index e80389281b..5030730647 100644 --- a/src/mathed/InsetMathFrac.h +++ b/src/mathed/InsetMathFrac.h @@ -5,35 +5,60 @@ * Licence details can be found in the file COPYING. * * \author Alejandro Aguilar Sierra - * \author André Pönitz + * \author André Pönitz + * \author Uwe Stöhr * * Full author contact details are available in file CREDITS. */ -#ifndef MATH_FRACINSET_H -#define MATH_FRACINSET_H +#ifndef MATH_FRAC_H +#define MATH_FRAC_H -#include "InsetMathFracBase.h" +#include "InsetMathNest.h" namespace lyx { +class InsetMathFracBase : public InsetMathNest { +public: + /// + InsetMathFracBase(Buffer * buf, idx_type ncells = 2); + /// + bool idxUpDown(Cursor &, bool up) const; + /// + bool idxBackward(Cursor &) const { return false; } + /// + bool idxForward(Cursor &) const { return false; } +}; + + + /// Fraction like objects (frac, binom) class InsetMathFrac : public InsetMathFracBase { public: /// enum Kind { FRAC, + CFRAC, + CFRACLEFT, + CFRACRIGHT, + DFRAC, + TFRAC, OVER, ATOP, - NICEFRAC + NICEFRAC, + UNITFRAC, + UNIT }; - /// - explicit InsetMathFrac(Kind kind = FRAC); + explicit InsetMathFrac(Buffer * buf, Kind kind = FRAC, idx_type ncells = 2); + /// + bool idxForward(Cursor &) const; /// - bool metrics(MetricsInfo & mi, Dimension & dim) const; + bool idxBackward(Cursor &) const; + /// + void metrics(MetricsInfo & mi, Dimension & dim) const; /// void draw(PainterInfo &, int x, int y) const; /// @@ -48,7 +73,6 @@ public: docstring name() const; /// bool extraBraces() const; - /// void write(WriteStream & os) const; /// @@ -60,9 +84,56 @@ public: /// void mathmlize(MathStream &) const; /// + void htmlize(HtmlStream &) const; + /// void validate(LaTeXFeatures & features) const; public: - virtual std::auto_ptr doClone() const; + Inset * clone() const; + /// + Kind kind_; +}; + + + +/// Binom like objects +class InsetMathBinom : public InsetMathFracBase { +public: + /// + enum Kind { + BINOM, + DBINOM, + TBINOM, + CHOOSE, + BRACE, + BRACK + }; + /// + explicit InsetMathBinom(Buffer * buf, Kind kind = BINOM); + /// + void write(WriteStream & os) const; + /// + void normalize(NormalStream &) const; + /// + void metrics(MetricsInfo & mi, Dimension & dim) const; + /// + void draw(PainterInfo &, int x, int y) const; + /// draw decorations. + void drawDecoration(PainterInfo & pi, int x, int y) const + { drawMarkers2(pi, x, y); } + /// + bool extraBraces() const; + /// + void mathmlize(MathStream &) const; + /// + void htmlize(HtmlStream &) const; + /// + void validate(LaTeXFeatures & features) const; + /// + InsetCode lyxCode() const { return MATH_FRAC_CODE; } +private: + Inset * clone() const; + /// + int dw(int height) const; /// Kind kind_; }; @@ -70,4 +141,5 @@ public: } // namespace lyx + #endif