diff --git a/bazaar/Functions4U/Functions4U_Gui.h b/bazaar/Functions4U/Functions4U_Gui.h index b165352c1..7d5092261 100644 --- a/bazaar/Functions4U/Functions4U_Gui.h +++ b/bazaar/Functions4U/Functions4U_Gui.h @@ -51,6 +51,8 @@ private: static Drawing Bracket(Drawing &data); static Drawing Sqrt(Drawing &right); static Drawing Exponent(Drawing &right); + static Drawing Der(Drawing &data); + static Drawing Abs(Drawing &data); static Drawing Integral(Drawing &data, Drawing &sub, Drawing &sup); static Drawing Summat(Drawing &data, Drawing &sub, Drawing &sup); static Drawing Exp(Drawing &data, Drawing &exp); diff --git a/bazaar/Functions4U/QtfEquation.cpp b/bazaar/Functions4U/QtfEquation.cpp index 8b2a2f528..15bbbef82 100644 --- a/bazaar/Functions4U/QtfEquation.cpp +++ b/bazaar/Functions4U/QtfEquation.cpp @@ -196,6 +196,20 @@ Drawing EquationDraw::Exponent(Drawing &right) return EquationDraw::Exp(left, right); } +Drawing EquationDraw::Der(Drawing &data) +{ + return EquationDraw::Function("d", data); +} + +Drawing EquationDraw::Abs(Drawing &data) +{ + Drawing pizq = Text("|", true, 0, 0, 1.3); + Drawing pder = Text("|"); + Drawing parizq = JoinFlex(pizq, 1, data, 1); + + return JoinFlex(parizq, 1, pder, 1); +} + Drawing EquationDraw::Integral(Drawing &data, Drawing &sub, Drawing &sup) { Drawing left = Text("∫"); @@ -318,6 +332,18 @@ Drawing EquationDraw::Term(CParser& p, bool noBracket) p.PassChar(')'); return EquationDraw::Exponent(x); } + if(p.Id("der")) { + p.PassChar('('); + Drawing x = Exp(p); + p.PassChar(')'); + return EquationDraw::Der(x); + } + if(p.Id("abs")) { + p.PassChar('('); + Drawing x = Exp(p); + p.PassChar(')'); + return EquationDraw::Abs(x); + } String trig = TermTrig(p); if (!IsNull(trig)) { p.PassChar('(');