X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fmathed%2Fmath_exfuncinset.C;h=667b4461e63db1862893bc3a9187e525e09202e5;hb=46880e2b9b49632c56bab2377ce9a3c826cf8d1d;hp=4be96200cbfd427df075b007ed9e37da6badacb9;hpb=1b787e207d68610c6c8a1b3e21fce15891e38bef;p=lyx.git diff --git a/src/mathed/math_exfuncinset.C b/src/mathed/math_exfuncinset.C index 4be96200cb..667b4461e6 100644 --- a/src/mathed/math_exfuncinset.C +++ b/src/mathed/math_exfuncinset.C @@ -1,9 +1,9 @@ +#include + #include "math_exfuncinset.h" #include "math_support.h" #include "math_mathmlstream.h" - - -using std::ostream; +#include "math_streamstr.h" MathExFuncInset::MathExFuncInset(string const & name) @@ -11,38 +11,87 @@ MathExFuncInset::MathExFuncInset(string const & name) {} +MathExFuncInset::MathExFuncInset(string const & name, MathArray const & ar) + : MathNestInset(1), name_(name) +{ + cell(0) = ar; +} + + MathInset * MathExFuncInset::clone() const { return new MathExFuncInset(*this); } -void MathExFuncInset::write(MathWriteInfo & os) const +void MathExFuncInset::metrics(MathMetricsInfo & mi) const +{ + mathed_string_dim(mi.base.font, name_, ascent_, descent_, width_); +} + + +void MathExFuncInset::draw(MathPainterInfo & pi, int x, int y) const { - os << '\\' << name_.c_str() << '{' << cell(0) << '}'; + drawStrBlack(pi, x, y, name_); } -void MathExFuncInset::writeNormal(NormalStream & os) const +void MathExFuncInset::normalize(NormalStream & os) const { - os << '[' << name_.c_str() << ' ' << cell(0) << ']'; + os << '[' << name_ << ' ' << cell(0) << ']'; } -void MathExFuncInset::metrics(MathMetricsInfo const & mi) const +void MathExFuncInset::maplize(MapleStream & os) const { - mi_ = mi; - mathed_string_dim(LM_TC_TEXTRM, mi_, name_, ascent_, descent_, width_); + if (name_ == "det") + os << "linalg[det](" << cell(0) << ')'; + else + os << name_ << '(' << cell(0) << ')'; } -void MathExFuncInset::draw(Painter & pain, int x, int y) const -{ - drawStr(pain, LM_TC_TEXTRM, mi_, x, y, name_); +string asMathematicaName(string const & name) +{ + if (name == "sin") return "Sin"; + if (name == "sinh") return "Sinh"; + if (name == "arcsin") return "ArcSin"; + if (name == "cos") return "Cos"; + if (name == "cosh") return "Cosh"; + if (name == "arcos") return "ArcCos"; + if (name == "tan") return "Tan"; + if (name == "tanh") return "Tanh"; + if (name == "arctan") return "ArcTan"; + if (name == "cot") return "Cot"; + if (name == "coth") return "Coth"; + if (name == "csc") return "Csc"; + if (name == "sec") return "Sec"; + if (name == "exp") return "Exp"; + if (name == "log") return "Log"; + if (name == "ln" ) return "Log"; + return name; +} + + +void MathExFuncInset::mathematicize(MathematicaStream & os) const +{ + os << asMathematicaName(name_) << '[' << cell(0) << ']'; +} + + +void MathExFuncInset::mathmlize(MathMLStream & os) const +{ + os << MTag(name_.c_str()) << cell(0) << ETag(name_.c_str()); } void MathExFuncInset::octavize(OctaveStream & os) const { - os << name_.c_str() << '(' << cell(0) << ')'; + os << name_ << '(' << cell(0) << ')'; +} + + +void MathExFuncInset::write(WriteStream & os) const +{ + os << '\\' << name_ << '{' << cell(0) << '}'; }