X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fmathed%2Fmath_exfuncinset.C;h=667b4461e63db1862893bc3a9187e525e09202e5;hb=46880e2b9b49632c56bab2377ce9a3c826cf8d1d;hp=475932c23bb63d0144adfea38a318227607ef9d8;hpb=9921635d78cc2c1c304584dc8d18a7e83488ed1b;p=lyx.git diff --git a/src/mathed/math_exfuncinset.C b/src/mathed/math_exfuncinset.C index 475932c23b..667b4461e6 100644 --- a/src/mathed/math_exfuncinset.C +++ b/src/mathed/math_exfuncinset.C @@ -1,15 +1,20 @@ +#include + #include "math_exfuncinset.h" #include "math_support.h" #include "math_mathmlstream.h" +#include "math_streamstr.h" -using std::ostream; +MathExFuncInset::MathExFuncInset(string const & name) + : MathNestInset(1), name_(name) +{} -MathExFuncInset::MathExFuncInset(string const & name, MathArray const & arg) +MathExFuncInset::MathExFuncInset(string const & name, MathArray const & ar) : MathNestInset(1), name_(name) { - cell(0) = arg; + cell(0) = ar; } @@ -19,32 +24,74 @@ MathInset * MathExFuncInset::clone() const } -void MathExFuncInset::write(WriteStream & os) const +void MathExFuncInset::metrics(MathMetricsInfo & mi) const { - os << '\\' << name_.c_str() << '{' << cell(0) << '}'; + mathed_string_dim(mi.base.font, name_, ascent_, descent_, width_); +} + + +void MathExFuncInset::draw(MathPainterInfo & pi, int x, int y) const +{ + drawStrBlack(pi, x, y, name_); } 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) << '}'; }