]> git.lyx.org Git - lyx.git/blobdiff - src/mathed/math_funcinset.C
fix pullArg when pressing <Delete> at the end of an cell
[lyx.git] / src / mathed / math_funcinset.C
index 4a5c4d74fd166f48dc47bcd9bf06474b9a4de74f..a75ba7360cc7efe63629e5f3039766d9340e08d2 100644 (file)
@@ -1,77 +1,60 @@
-#include <config.h>
+#ifdef __GNUG__
+#pragma implementation
+#endif
 
 #include "math_funcinset.h"
-#include "lyxfont.h"
 #include "font.h"
 #include "Painter.h"
 #include "mathed/support.h"
+#include "support/LOstream.h"
 
 
-extern LyXFont WhichFont(short type, int size);
+using std::ostream;
 
-MathFuncInset::~MathFuncInset()
-{}
+extern LyXFont WhichFont(short type, int size);
 
 
-bool MathFuncInset::GetLimits() const 
-{  
-   return bool(lims && (GetStyle() == LM_ST_DISPLAY)); 
-} 
+MathFuncInset::MathFuncInset(string const & nm, MathInsetTypes ot)
+       : MathInset(0, nm, ot)
+{
+       lims_ = (GetType() == LM_OT_FUNCLIM);
+}
 
 
-void MathFuncInset::Write(std::ostream & os, bool /* fragile */)
+MathInset * MathFuncInset::clone() const
 {
-       os << "\\" << name << ' ';
+       return new MathFuncInset(*this);
 }
 
 
-MathFuncInset::MathFuncInset(string const & nm, short ot, short st)
-       : MathedInset("", ot, st)
+void MathFuncInset::Write(std::ostream & os, bool /* fragile */) const
 {
-       ln = 0;
-       lims = (GetType() == LM_OT_FUNCLIM);
-       if (GetType() == LM_OT_UNDEF) {
-               fname = nm;
-               SetName(fname);
-       } else {
-               //fname = 0;
-               SetName(nm);
-       }
+       os << "\\" << name_ << ' ';
 }
 
 
-MathedInset * MathFuncInset::Clone()
+void MathFuncInset::WriteNormal(std::ostream & os) const
 {
-       return new MathFuncInset(name, GetType(), GetStyle());
+       os << "[" << name_ << "] ";
 }
 
 
-
-void
-MathFuncInset::draw(Painter & pain, int x, int y)
-{ 
-       if (!name.empty() && name[0] > ' ') {
-               LyXFont font = WhichFont(LM_TC_TEXTRM, size);
-               font.setLatex(LyXFont::ON);
-               x += (lyxfont::width('I', font) + 3) / 4;
-               pain.text(x, y, name, font);
-       }
+void MathFuncInset::Metrics(MathStyles st, int, int) 
+{
+       size_ = st;
+       if (name_.empty()) 
+               mathed_char_dim(LM_TC_TEXTRM, size_, 'I', ascent_, descent_, width_);
+       else 
+               mathed_string_dim(LM_TC_TEXTRM, size_, name_, ascent_, descent_, width_);
 }
 
 
-
-void MathFuncInset::Metrics() 
-{
-       //ln = (name) ? strlen(name): 0;
-       LyXFont  font = WhichFont(LM_TC_TEXTRM, size);
-       font.setLatex(LyXFont::ON);
-       if (name.empty()) {
-               width = df_width;
-               descent = df_des;
-               ascent = df_asc;
-       } else {
-               width = lyxfont::width(name, font)
-                       + lyxfont::width('I', font) / 2;
-               mathed_string_height(LM_TC_TEXTRM, size, name, ascent, descent);
-       }
+void MathFuncInset::draw(Painter & pain, int x, int y)
+{ 
+       xo(x);
+       yo(y);
+       if (name_.empty()) 
+               drawChar(pain, LM_TC_TEXTRM, size_, x, y, ' ');
+       else
+               drawStr(pain, LM_TC_TEXTRM, size_, x, y, name_);
 }