* Licence details can be found in the file COPYING.
*
* \author Alejandro Aguilar Sierra
- * \author André Pönitz
+ * \author André Pönitz
*
* Full author contact details are available in file CREDITS.
*/
#include "MathParser.h"
#include "MathStream.h"
-#include "debug.h"
-
-#include "support/docstream.h"
-
#include "frontends/FontLoader.h"
#include "frontends/FontMetrics.h"
#include "frontends/Painter.h"
+#include "support/debug.h"
+#include "support/docstream.h"
+
#include <map>
-#include <sstream>
+using namespace std;
namespace lyx {
using frontend::Painter;
-using std::max;
-using std::endl;
-
///
class Matrix {
double const ddot[] = {
- 1, 0.2, 0.5, 0.3, 0.5,
- 1, 0.7, 0.5, 0.8, 0.5,
+ 1, 0.2, 0.5, 0.3, 0.5,
+ 1, 0.7, 0.5, 0.8, 0.5,
0
};
double const dddot[] = {
- 1, 0.1, 0.5, 0.2, 0.5,
+ 1, 0.1, 0.5, 0.2, 0.5,
1, 0.45, 0.5, 0.55, 0.5,
- 1, 0.8, 0.5, 0.9, 0.5,
+ 1, 0.8, 0.5, 0.9, 0.5,
+ 0
+};
+
+
+double const ddddot[] = {
+ 1, 0.1, 0.5, 0.2, 0.5,
+ 1, 0.45, 0.5, 0.55, 0.5,
+ 1, 0.8, 0.5, 0.9, 0.5,
+ 1, 1.15, 0.5, 1.25, 0.5,
0
};
{"vert", vert, 0 },
{"Vert", Vert, 0 },
{"'", slash, 1 },
+ {"<", angle, 0 },
+ {">", angle, 2 },
{"\\", slash, 1 },
{"backslash", slash, 1 },
{"langle", angle, 0 },
// Accents
{"ddot", ddot, 0 },
{"dddot", dddot, 0 },
+ {"ddddot", ddddot, 0 },
{"hat", angle, 3 },
{"grave", slash, 1 },
{"acute", slash, 0 },
{"cdots", hline3, 0 },
{"vdots", hline3, 1 },
{"ddots", dline3, 0 },
+ {"adots", dline3, 1 },
+ {"iddots", dline3, 1 },
{"dotsb", hline3, 0 },
{"dotsc", hline3, 0 },
{"dotsi", hline3, 0 },
};
-std::map<docstring, deco_struct> deco_list;
+map<docstring, deco_struct> deco_list;
// sort the table on startup
class init_deco_table {
deco_struct const * search_deco(docstring const & name)
{
- std::map<docstring, deco_struct>::const_iterator p = deco_list.find(name);
+ map<docstring, deco_struct>::const_iterator p = deco_list.find(name);
return p == deco_list.end() ? 0 : &(p->second);
}
pi.pain.line(
int(x + xx + 0.5), int(y + yy + 0.5),
int(x + x2 + 0.5), int(y + y2 + 0.5),
- Color_math);
+ pi.base.font.color());
} else {
int xp[32];
int yp[32];
yp[j] = int(y + yy + 0.5);
// lyxerr << "P[" << j ' ' << xx << ' ' << yy << ' ' << x << ' ' << y << ']';
}
- pi.pain.lines(xp, yp, n, Color_math);
+ pi.pain.lines(xp, yp, n, pi.base.font.color());
}
}
}
struct fontinfo {
- std::string cmd_;
+ string cmd_;
FontFamily family_;
FontSeries series_;
FontShape shape_;
inh_shape, Color_math},
{"mathit", inh_family, inh_series,
ITALIC_SHAPE, Color_math},
+ {"mathscr", RSFS_FAMILY, inh_series,
+ inh_shape, Color_math},
{"cmex", CMEX_FAMILY, inh_series,
inh_shape, Color_math},
{"cmm", CMM_FAMILY, inh_series,
{"textipa", inh_family, inh_series,
inh_shape, Color_foreground},
+ // mhchem support
+ {"ce", inh_family, inh_series,
+ inh_shape, Color_foreground},
+ {"cf", inh_family, inh_series,
+ inh_shape, Color_foreground},
+
// LyX internal usage
{"lyxtex", inh_family, inh_series,
UP_SHAPE, Color_latex},
{
//lyxerr << "searching font '" << name << "'" << endl;
int const n = sizeof(fontinfos) / sizeof(fontinfo);
- std::string name = to_utf8(name0);
+ string name = to_utf8(name0);
for (int i = 0; i < n; ++i)
if (fontinfos[i].cmd_ == name) {
//lyxerr << "found '" << i << "'" << endl;
}
+bool isMathFont(docstring const & name)
+{
+ fontinfo * f = lookupFont(name);
+ return f && f->color_ == Color_math;
+}
+
+
+bool isTextFont(docstring const & name)
+{
+ fontinfo * f = lookupFont(name);
+ return f && f->color_ == Color_foreground;
+}
+
+
FontInfo getFont(docstring const & name)
{
FontInfo font;
}
-void asArray(docstring const & str, MathData & ar)
+void asArray(docstring const & str, MathData & ar, Parse::flags pf)
{
- mathed_parse_cell(ar, str);
+ bool quiet = pf & Parse::QUIET;
+ if ((str.size() == 1 && quiet) || (!mathed_parse_cell(ar, str, pf) && quiet))
+ mathed_parse_cell(ar, str, pf | Parse::VERBATIM);
}