X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fmathed%2Fmath_inset.C;h=1a9b26d3e5d3924af921f8105d1240eea70ff8fd;hb=f1ff990de782f1a4c3ae14902f5242bdb012b264;hp=87bb14e34d3cee39fa17acc770a3a4a7ce181a77;hpb=d5905fabf640bac1abda9ac7174000c3f2e34260;p=lyx.git diff --git a/src/mathed/math_inset.C b/src/mathed/math_inset.C index 87bb14e34d..1a9b26d3e5 100644 --- a/src/mathed/math_inset.C +++ b/src/mathed/math_inset.C @@ -1,9 +1,9 @@ /* * File: math_inset.C * Purpose: Implementation of insets for mathed - * Author: Alejandro Aguilar Sierra + * Author: Alejandro Aguilar Sierra * Created: January 1996 - * Description: + * Description: * * Dependencies: Xlib, XForms * @@ -17,152 +17,256 @@ #include -#ifdef __GNUG__ -#pragma implementation -#endif - -#include "math_iter.h" #include "math_inset.h" -#include "symbol_def.h" -#include "lyxfont.h" -#include "mathed/support.h" -#include "Painter.h" +#include "math_scriptinset.h" +#include "math_mathmlstream.h" +#include "math_cursor.h" +#include "debug.h" + +#include "frontends/LyXView.h" +#include "frontends/Dialogs.h" +#include "BufferView.h" +#include "formulabase.h" -int MathedInset::df_asc; -int MathedInset::df_des; -int MathedInset::df_width; -int MathedInset::workWidth; +using std::ostream; +using std::endl; -MathedInset::MathedInset(MathedInset * inset) +BufferView * MathInset::view() const { - if (inset) { - name = inset->GetName(); - objtype = inset->GetType(); - size_ = inset->GetStyle(); - width = inset->Width(); - ascent = inset->Ascent(); - descent = inset->Descent(); - } else { - objtype = LM_OT_UNDEF; - size_ = LM_ST_TEXT; - width = ascent = descent = 0; - //name = 0; - } + return mathcursor ? mathcursor->formula()->view() : 0; } -MathedInset::MathedInset(string const & nm, short ot, short st) - : name(nm), objtype(ot), size_(st) +MathInset::size_type MathInset::nargs() const { - width = ascent = descent = 0; + return 0; } -// In a near future maybe we use a better fonts renderer -void MathedInset::drawStr(Painter & pain, short type, int siz, - int x, int y, string const & s) +MathArray dummyCell; + +MathArray & MathInset::cell(idx_type) { - string st; - if (MathIsBinary(type)) - for (string::const_iterator it = s.begin(); - it != s.end(); ++it) { - st += ' '; - st += *it; - st += ' '; - } - else - st = s; - - LyXFont const mf = mathed_get_font(type, siz); - pain.text(x, y, st, mf); + lyxerr << "I don't have a cell 1" << endl; + return dummyCell; } -int MathedInset::Ascent() const +MathArray const & MathInset::cell(idx_type) const { - return ascent; + lyxerr << "I don't have a cell 2" << endl; + return dummyCell; } -int MathedInset::Descent() const +MathInset::idx_type MathInset::index(row_type row, col_type col) const { - return descent; + if (row != 0) + lyxerr << "illegal row: " << row << endl; + if (col != 0) + lyxerr << "illegal col: " << col << endl; + return 0; } +void MathInset::substitute(MathMacro const &) +{} + -int MathedInset::Width() const +bool MathInset::idxNext(idx_type &, pos_type &) const { - return width; + return false; } -int MathedInset::Height() const +bool MathInset::idxRight(idx_type &, pos_type &) const { - return ascent + descent; + return false; } -bool MathedInset::GetLimits() const +bool MathInset::idxPrev(idx_type &, pos_type &) const { return false; } -void MathedInset::SetLimits(bool) {} +bool MathInset::idxLeft(idx_type &, pos_type &) const +{ + return false; +} -string const & MathedInset::GetName() const +bool MathInset::idxUpDown(idx_type &, pos_type &, bool, int) const { - return name; + return false; } -short MathedInset::GetType() const +bool MathInset::idxUpDown2(idx_type &, pos_type &, bool, int) const { - return objtype; + return false; } -short MathedInset::GetStyle() const +bool MathInset::idxFirst(idx_type &, pos_type &) const { - return size_; + return false; } -void MathedInset::SetType(short t) +bool MathInset::idxLast(idx_type &, pos_type &) const { - objtype = t; + return false; } -void MathedInset::SetStyle(short st) +bool MathInset::idxHome(idx_type &, pos_type &) const { - size_ = st; + return false; } -void MathedInset::SetName(string const & n) +bool MathInset::idxEnd(idx_type &, pos_type &) const { - name = n; + return false; } -void MathedInset::defaultAscent(int da) +void MathInset::getPos(idx_type, pos_type, int & x, int & y) const { - df_asc = da; + lyxerr << "MathInset::getPos() called directly!" << endl; + x = y = 0; } +void MathInset::dump() const +{ + lyxerr << "---------------------------------------------" << endl; + WriteStream wi(lyxerr, false, true); + write(wi); + lyxerr << "\n---------------------------------------------" << endl; +} + -void MathedInset::defaultDescent(int dd) +bool MathInset::idxBetween(idx_type idx, idx_type from, idx_type to) const { - df_des = dd; + return from <= idx && idx <= to; } -void MathedInset::defaultWidth(int dw) +void MathInset::drawSelection(PainterInfo &, + idx_type, pos_type, idx_type, pos_type) const { - df_width = dw; + lyxerr << "MathInset::drawSelection() called directly!" << endl; } + +void MathInset::metricsT(TextMetricsInfo const &, Dimension &) const +{ +#ifdef WITH_WARNINGS + lyxerr << "MathInset::metricsT(Text) called directly!" << endl; +#endif +} + + +void MathInset::drawT(TextPainter &, int, int) const +{ +#ifdef WITH_WARNINGS + lyxerr << "MathInset::drawT(Text) called directly!" << endl; +#endif +} + + + +void MathInset::write(WriteStream & os) const +{ + os << '\\' << name().c_str(); + os.pendingSpace(true); +} + + +void MathInset::normalize(NormalStream & os) const +{ + os << '[' << name().c_str() << "] "; +} + + +void MathInset::octave(OctaveStream & os) const +{ + NormalStream ns(os.os()); + normalize(ns); +} + + +void MathInset::maple(MapleStream & os) const +{ + NormalStream ns(os.os()); + normalize(ns); +} + + +void MathInset::maxima(MaximaStream & os) const +{ + MapleStream ns(os.os()); + maple(ns); +} + + +void MathInset::mathematica(MathematicaStream & os) const +{ + NormalStream ns(os.os()); + normalize(ns); +} + + +void MathInset::mathmlize(MathMLStream & os) const +{ + NormalStream ns(os.os()); + normalize(ns); +} + + +int MathInset::ascii(std::ostream &, int) const +{ + return 0; +} + + +int MathInset::linuxdoc(std::ostream &) const +{ + return 0; +} + + +int MathInset::docbook(std::ostream &, bool) const +{ + return 0; +} + + +string const & MathInset::getType() const +{ + static string const t("none"); + return t; +} + + +string MathInset::name() const +{ + return "unknown"; +} + + +ostream & operator<<(ostream & os, MathAtom const & at) +{ + WriteStream wi(os, false, false); + at->write(wi); + return os; +} + + +string MathInset::fileInsetLabel() const +{ + return "Formula"; +}