mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-23 02:14:50 +00:00
the remove reinterpret_cast patch from Andre Poenitz
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@1463 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
79c4c549f4
commit
742ebe1f13
@ -1,3 +1,7 @@
|
|||||||
|
2001-02-08 Andre Poenitz <poenitz@HTWM.De>
|
||||||
|
|
||||||
|
* several files: get rid of reinterpret_cast
|
||||||
|
|
||||||
2001-02-04 Allan Rae <rae@lyx.org>
|
2001-02-04 Allan Rae <rae@lyx.org>
|
||||||
|
|
||||||
* math_parser.C (mathed_parse): I'm sure Lars has a better fix than
|
* math_parser.C (mathed_parse): I'm sure Lars has a better fix than
|
||||||
|
@ -197,55 +197,44 @@ LyXFont mathed_get_font(short type, int size)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int mathed_string_width(short type, int size, byte const * s, int ls)
|
int mathed_string_width(short type, int size, string const & s)
|
||||||
{
|
{
|
||||||
string st;
|
string st;
|
||||||
if (MathIsBinary(type))
|
if (MathIsBinary(type))
|
||||||
for (int i = 0; i < ls; ++i) {
|
for (string::const_iterator it = s.begin(); it != s.end(); ++it) {
|
||||||
st += ' ';
|
st += ' ';
|
||||||
st += s[i];
|
st += *it;
|
||||||
st += ' ';
|
st += ' ';
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
st = string(reinterpret_cast<char const *>(s), ls);
|
st = s;
|
||||||
|
|
||||||
LyXFont const f = WhichFont(type, size);
|
LyXFont const f = WhichFont(type, size);
|
||||||
return lyxfont::width(st, f);
|
return lyxfont::width(st, f);
|
||||||
}
|
}
|
||||||
|
|
||||||
int mathed_string_width(short type, int size, string const & str)
|
|
||||||
{
|
|
||||||
return mathed_string_width(type, size, reinterpret_cast<unsigned char const *>(str.c_str()), str.length());
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
int mathed_char_width(short type, int size, byte c)
|
int mathed_char_width(short type, int size, byte c)
|
||||||
{
|
{
|
||||||
int t = (MathIsBinary(type)) ? mathed_string_width(type, size, &c, 1) :
|
if (MathIsBinary(type)) {
|
||||||
lyxfont::width(c, WhichFont(type, size));
|
string s;
|
||||||
return t;
|
s += c;
|
||||||
|
return mathed_string_width(type, size, s);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return lyxfont::width(c, WhichFont(type, size));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int mathed_string_height(short type, int size, byte const * s,
|
int mathed_string_height(short type, int size, string const & s,
|
||||||
int ls, int & asc, int & des)
|
|
||||||
{
|
|
||||||
LyXFont font = WhichFont(type, size);
|
|
||||||
asc = des = 0;
|
|
||||||
for (int i = 0; i < ls; ++i) {
|
|
||||||
des = max(des, lyxfont::descent(s[i], font));
|
|
||||||
asc = max(asc, lyxfont::ascent(s[i], font));
|
|
||||||
}
|
|
||||||
return asc + des;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
int mathed_string_height(short type, int size, string const & str,
|
|
||||||
int & asc, int & des)
|
int & asc, int & des)
|
||||||
{
|
{
|
||||||
return mathed_string_height(type, size,
|
LyXFont font = WhichFont(type, size);
|
||||||
reinterpret_cast<unsigned char const *>(str.c_str()), str.length(),
|
asc = des = 0;
|
||||||
asc, des);
|
for (string::const_iterator it = s.begin(); it != s.end(); ++it) {
|
||||||
|
des = max(des, lyxfont::descent(*it, font));
|
||||||
|
asc = max(asc, lyxfont::ascent(*it, font));
|
||||||
|
}
|
||||||
|
return asc + des;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -260,17 +249,17 @@ int mathed_char_height(short type, int size, byte c, int & asc, int & des)
|
|||||||
|
|
||||||
// In a near future maybe we use a better fonts renderer
|
// In a near future maybe we use a better fonts renderer
|
||||||
void MathedInset::drawStr(Painter & pain, short type, int siz,
|
void MathedInset::drawStr(Painter & pain, short type, int siz,
|
||||||
int x, int y, byte const * s, int ls)
|
int x, int y, string const & s)
|
||||||
{
|
{
|
||||||
string st;
|
string st;
|
||||||
if (MathIsBinary(type))
|
if (MathIsBinary(type))
|
||||||
for (int i = 0; i < ls; ++i) {
|
for (string::const_iterator it = s.begin(); it != s.end(); ++it) {
|
||||||
st += ' ';
|
st += ' ';
|
||||||
st += char(s[i]);
|
st += *it;
|
||||||
st += ' ';
|
st += ' ';
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
st = string(reinterpret_cast<char const *>(s), ls);
|
st = s;
|
||||||
|
|
||||||
LyXFont const mf = mathed_get_font(type, siz);
|
LyXFont const mf = mathed_get_font(type, siz);
|
||||||
pain.text(x, y, st, mf);
|
pain.text(x, y, st, mf);
|
||||||
|
@ -279,7 +279,7 @@ class MathedInset {
|
|||||||
///
|
///
|
||||||
static int df_width;
|
static int df_width;
|
||||||
/// In a near future maybe we use a better fonts renderer than X
|
/// In a near future maybe we use a better fonts renderer than X
|
||||||
void drawStr(Painter &, short, int, int, int, byte const *, int);
|
void drawStr(Painter &, short, int, int, int, string const &);
|
||||||
///
|
///
|
||||||
friend class MathedCursor;
|
friend class MathedCursor;
|
||||||
///
|
///
|
||||||
|
@ -527,15 +527,17 @@ MathDecorationInset::Metrics()
|
|||||||
void
|
void
|
||||||
MathAccentInset::draw(Painter & pain, int x, int y)
|
MathAccentInset::draw(Painter & pain, int x, int y)
|
||||||
{
|
{
|
||||||
int dw = width - 2;
|
int dw = width - 2;
|
||||||
|
|
||||||
if (inset) {
|
if (inset)
|
||||||
inset->draw(pain, x, y);
|
inset->draw(pain, x, y);
|
||||||
} else {
|
else {
|
||||||
drawStr(pain, fn, size, x, y, &c, 1);
|
string s;
|
||||||
}
|
s += c;
|
||||||
x += (code == LM_not) ? (width-dw) / 2 : 2;
|
drawStr(pain, fn, size, x, y, s);
|
||||||
mathed_draw_deco(pain, x, y - dy, dw, dh, code);
|
}
|
||||||
|
x += (code == LM_not) ? (width-dw) / 2 : 2;
|
||||||
|
mathed_draw_deco(pain, x, y - dy, dw, dh, code);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -54,86 +54,89 @@ MathSpaceInset::draw(Painter & pain, int x, int y)
|
|||||||
void
|
void
|
||||||
MathParInset::draw(Painter & pain, int x, int y)
|
MathParInset::draw(Painter & pain, int x, int y)
|
||||||
{
|
{
|
||||||
byte cx, cxp = 0;
|
byte cxp = 0;
|
||||||
int xp = 0, ls;
|
int xp = 0;
|
||||||
int asc = df_asc, des = 0;
|
int asc = df_asc, des = 0;
|
||||||
bool limits = false;
|
bool limits = false;
|
||||||
|
|
||||||
xo = x; yo = y;
|
xo = x; yo = y;
|
||||||
if (!array || array->empty()) {
|
if (!array || array->empty()) {
|
||||||
if (array) {
|
if (array) {
|
||||||
MathedXIter data(this);
|
MathedXIter data(this);
|
||||||
data.GetPos(x, y);
|
data.GetPos(x, y);
|
||||||
}
|
|
||||||
pain.rectangle(x, y - df_asc, df_width, df_asc, LColor::mathline);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
MathedXIter data(this);
|
|
||||||
data.GoBegin();
|
|
||||||
while (data.OK()) {
|
|
||||||
data.GetPos(x, y);
|
|
||||||
cx = data.GetChar();
|
|
||||||
if (cx >= ' ') {
|
|
||||||
byte * s = data.GetString(ls);
|
|
||||||
drawStr(pain, data.FCode(), size, x, y, s, ls);
|
|
||||||
mathed_char_height(LM_TC_CONST, size, 'y', asc, des);
|
|
||||||
limits = false;
|
|
||||||
} else {
|
|
||||||
if (cx == 0) break;
|
|
||||||
if (MathIsInset(cx)) {
|
|
||||||
int yy = y;
|
|
||||||
MathedInset * p = data.GetInset();
|
|
||||||
if (cx == LM_TC_UP) {
|
|
||||||
if (limits) { x -= (xp>p->Width()) ? p->Width()+(xp-p->Width())/2: xp;
|
|
||||||
yy -= (asc + p->Descent()+4);
|
|
||||||
} else
|
|
||||||
yy -= (p->Descent()>asc) ? p->Descent()+4: asc;
|
|
||||||
} else
|
|
||||||
if (cx == LM_TC_DOWN) {
|
|
||||||
if (limits) {
|
|
||||||
x -= (xp>p->Width()) ? p->Width()+(xp-p->Width())/2: xp;
|
|
||||||
yy += des + p->Ascent() + 2;
|
|
||||||
} else
|
|
||||||
yy += des + p->Ascent()/2;
|
|
||||||
} else {
|
|
||||||
asc = p->Ascent();
|
|
||||||
des = p->Descent();
|
|
||||||
}
|
|
||||||
p->draw(pain, x, yy);
|
|
||||||
if (cx!= LM_TC_UP && cx!= LM_TC_DOWN) {
|
|
||||||
limits = p->GetLimits();
|
|
||||||
if (limits) xp = p->Width();
|
|
||||||
}
|
|
||||||
data.Next();
|
|
||||||
} else
|
|
||||||
if (cx == LM_TC_TAB) {
|
|
||||||
if ((cxp == cx || cxp == LM_TC_CR || data.IsFirst())) { // && objtype == L
|
|
||||||
pain.rectangle(x, y - df_asc, df_width, df_asc,
|
|
||||||
LColor::mathline);
|
|
||||||
}
|
|
||||||
data.Next();
|
|
||||||
limits = false;
|
|
||||||
} else
|
|
||||||
if (cx == LM_TC_CR) {
|
|
||||||
if (cxp == LM_TC_TAB || cxp == LM_TC_CR || data.IsFirst()) { // && objtype == LM_OT_MATRIX) {
|
|
||||||
pain.rectangle(x, y - df_asc, df_width, df_asc,
|
|
||||||
LColor::mathline);
|
|
||||||
}
|
}
|
||||||
data.Next();
|
pain.rectangle(x, y - df_asc, df_width, df_asc, LColor::mathline);
|
||||||
limits = false;
|
return;
|
||||||
}
|
}
|
||||||
else {
|
MathedXIter data(this);
|
||||||
lyxerr << "GMathed Error: Unrecognized code[" << cx
|
data.GoBegin();
|
||||||
<< "]" << endl;
|
while (data.OK()) {
|
||||||
break;
|
data.GetPos(x, y);
|
||||||
}
|
byte cx = data.GetChar();
|
||||||
}
|
if (cx >= ' ') {
|
||||||
cxp = cx;
|
string s = data.GetString();
|
||||||
}
|
drawStr(pain, data.FCode(), size, x, y, s);
|
||||||
if (cxp == LM_TC_TAB || cxp == LM_TC_CR) { // && objtype == LM_OT_MATRIX) {
|
mathed_char_height(LM_TC_CONST, size, 'y', asc, des);
|
||||||
data.GetPos(x, y);
|
limits = false;
|
||||||
pain.rectangle(x, y - df_asc, df_width, df_asc, LColor::mathline);
|
}
|
||||||
}
|
else {
|
||||||
|
if (cx == 0)
|
||||||
|
break;
|
||||||
|
if (MathIsInset(cx)) {
|
||||||
|
int yy = y;
|
||||||
|
MathedInset * p = data.GetInset();
|
||||||
|
if (cx == LM_TC_UP) {
|
||||||
|
if (limits) {
|
||||||
|
x -= (xp>p->Width()) ? p->Width()+(xp-p->Width())/2: xp;
|
||||||
|
yy -= (asc + p->Descent()+4);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
yy -= (p->Descent()>asc) ? p->Descent()+4: asc;
|
||||||
|
}
|
||||||
|
else if (cx == LM_TC_DOWN) {
|
||||||
|
if (limits) {
|
||||||
|
x -= (xp>p->Width()) ? p->Width()+(xp-p->Width())/2: xp;
|
||||||
|
yy += des + p->Ascent() + 2;
|
||||||
|
} else
|
||||||
|
yy += des + p->Ascent()/2;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
asc = p->Ascent();
|
||||||
|
des = p->Descent();
|
||||||
|
}
|
||||||
|
p->draw(pain, x, yy);
|
||||||
|
if (cx!= LM_TC_UP && cx!= LM_TC_DOWN) {
|
||||||
|
limits = p->GetLimits();
|
||||||
|
if (limits)
|
||||||
|
xp = p->Width();
|
||||||
|
}
|
||||||
|
data.Next();
|
||||||
|
}
|
||||||
|
else if (cx == LM_TC_TAB) {
|
||||||
|
if (cxp == cx || cxp == LM_TC_CR || data.IsFirst()) {
|
||||||
|
pain.rectangle(x, y - df_asc, df_width, df_asc, LColor::mathline);
|
||||||
|
}
|
||||||
|
data.Next();
|
||||||
|
limits = false;
|
||||||
|
}
|
||||||
|
else if (cx == LM_TC_CR) {
|
||||||
|
if (cxp == LM_TC_TAB || cxp == LM_TC_CR || data.IsFirst()) {
|
||||||
|
pain.rectangle(x, y - df_asc, df_width, df_asc, LColor::mathline);
|
||||||
|
}
|
||||||
|
data.Next();
|
||||||
|
limits = false;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
lyxerr << "GMathed Error: Unrecognized code[" << cx << "]" << endl;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
cxp = cx;
|
||||||
|
}
|
||||||
|
if (cxp == LM_TC_TAB || cxp == LM_TC_CR) {
|
||||||
|
data.GetPos(x, y);
|
||||||
|
pain.rectangle(x, y - df_asc, df_width, df_asc, LColor::mathline);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -32,7 +32,7 @@ using std::endl;
|
|||||||
const int SizeInset = sizeof(char*) + 2;
|
const int SizeInset = sizeof(char*) + 2;
|
||||||
|
|
||||||
extern int mathed_char_width(short type, int style, byte c);
|
extern int mathed_char_width(short type, int style, byte c);
|
||||||
extern int mathed_string_width(short type, int style, byte const * s, int ls);
|
extern int mathed_string_width(short type, int style, string const & s);
|
||||||
extern int mathed_char_height(short, int, byte, int &, int &);
|
extern int mathed_char_height(short, int, byte, int &, int &);
|
||||||
|
|
||||||
// the builtin memcpy() is broken in egcs and gcc 2.95.x on alpha
|
// the builtin memcpy() is broken in egcs and gcc 2.95.x on alpha
|
||||||
@ -73,27 +73,18 @@ byte MathedIter::GetChar() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
byte * MathedIter::GetString(int & len) const
|
|
||||||
{
|
|
||||||
if (IsFont()) {
|
|
||||||
fcode = array->bf[++pos];
|
|
||||||
++pos;
|
|
||||||
}
|
|
||||||
byte * s = &array->bf[pos];
|
|
||||||
len = pos;
|
|
||||||
while (array->bf[pos] >= ' ' && pos < array->last) ++pos;
|
|
||||||
len = pos - len;
|
|
||||||
|
|
||||||
return s;
|
|
||||||
}
|
|
||||||
|
|
||||||
string const MathedIter::GetString() const
|
string const MathedIter::GetString() const
|
||||||
{
|
{
|
||||||
int ls = 0;
|
if (IsFont()) {
|
||||||
byte const * s = GetString(ls);
|
fcode = array->bf[++pos];
|
||||||
return string(reinterpret_cast<char const *>(s), ls);
|
++pos;
|
||||||
}
|
}
|
||||||
|
string s;
|
||||||
|
for ( ; array->bf[pos] >= ' ' && pos < array->last; ++pos)
|
||||||
|
s += array->bf[pos];
|
||||||
|
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
MathedInset * MathedIter::GetInset() const
|
MathedInset * MathedIter::GetInset() const
|
||||||
{
|
{
|
||||||
@ -587,25 +578,11 @@ void MathedXIter::SetData(MathParInset * pp)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
byte * MathedXIter::GetString(int & ls) const
|
|
||||||
{
|
|
||||||
static byte s[255];
|
|
||||||
byte const * sxs = MathedIter::GetString(ls);
|
|
||||||
if (ls > 0) {
|
|
||||||
strncpy(reinterpret_cast<char*>(s),
|
|
||||||
reinterpret_cast<char const *>(sxs), ls);
|
|
||||||
x += mathed_string_width(fcode, size, s, ls);
|
|
||||||
return &s[0];
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
string const MathedXIter::GetString() const
|
string const MathedXIter::GetString() const
|
||||||
{
|
{
|
||||||
int ls;
|
string s = MathedIter::GetString();
|
||||||
byte const * s = GetString(ls);
|
x += mathed_string_width(fcode, size, s);
|
||||||
return string(reinterpret_cast<char const *>(s), ls);
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -68,8 +68,6 @@ class MathedIter {
|
|||||||
///
|
///
|
||||||
byte GetChar() const;
|
byte GetChar() const;
|
||||||
///
|
///
|
||||||
byte * GetString(int & len) const;
|
|
||||||
///
|
|
||||||
string const GetString() const;
|
string const GetString() const;
|
||||||
///
|
///
|
||||||
MathedInset * GetInset() const;
|
MathedInset * GetInset() const;
|
||||||
|
@ -49,8 +49,8 @@ ostream & operator<<(ostream & o, MathedMacroFlag mmf)
|
|||||||
return o << int(mmf);
|
return o << int(mmf);
|
||||||
}
|
}
|
||||||
|
|
||||||
extern int mathed_string_width(short type, int style, byte const* s, int ls);
|
extern int mathed_string_width(short type, int style, string const & s);
|
||||||
extern int mathed_string_height(short, int, byte const*, int, int&, int&);
|
extern int mathed_string_height(short, int, string const &, int &, int &);
|
||||||
|
|
||||||
|
|
||||||
MathMacro::MathMacro(MathMacroTemplate* t):
|
MathMacro::MathMacro(MathMacroTemplate* t):
|
||||||
@ -216,30 +216,28 @@ MathMacroArgument::MathMacroArgument(int n)
|
|||||||
|
|
||||||
void MathMacroArgument::draw(Painter & pain, int x, int baseline)
|
void MathMacroArgument::draw(Painter & pain, int x, int baseline)
|
||||||
{
|
{
|
||||||
if (expnd_mode) {
|
if (expnd_mode) {
|
||||||
MathParInset::draw(pain, x, baseline);
|
MathParInset::draw(pain, x, baseline);
|
||||||
} else {
|
}
|
||||||
std::ostringstream ost;
|
else {
|
||||||
ost << '#' << number;
|
std::ostringstream ost;
|
||||||
drawStr(pain, LM_TC_TEX, size, x, baseline,
|
ost << '#' << number;
|
||||||
reinterpret_cast<byte const *>(ost.str().c_str()), 2);
|
drawStr(pain, LM_TC_TEX, size, x, baseline, ost.str());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void MathMacroArgument::Metrics()
|
void MathMacroArgument::Metrics()
|
||||||
{
|
{
|
||||||
if (expnd_mode) {
|
if (expnd_mode) {
|
||||||
MathParInset::Metrics();
|
MathParInset::Metrics();
|
||||||
} else {
|
}
|
||||||
std::ostringstream ost;
|
else {
|
||||||
ost << '#' << number;
|
std::ostringstream ost;
|
||||||
width = mathed_string_width(LM_TC_TEX, size,
|
ost << '#' << number;
|
||||||
reinterpret_cast<byte const *>(ost.str().c_str()), 2);
|
width = mathed_string_width(LM_TC_TEX, size, ost.str());
|
||||||
mathed_string_height(LM_TC_TEX, size,
|
mathed_string_height(LM_TC_TEX, size, ost.str(), ascent, descent);
|
||||||
reinterpret_cast<byte const *>(ost.str().c_str()),
|
}
|
||||||
2, ascent, descent);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -192,38 +192,39 @@ void MathParInset::Write(ostream & os, bool fragile)
|
|||||||
while (data.OK()) {
|
while (data.OK()) {
|
||||||
byte cx = data.GetChar();
|
byte cx = data.GetChar();
|
||||||
if (cx >= ' ') {
|
if (cx >= ' ') {
|
||||||
int ls;
|
string str = data.GetString();
|
||||||
byte * s = data.GetString(ls);
|
|
||||||
|
|
||||||
if (data.FCode() >= LM_TC_RM && data.FCode() <= LM_TC_TEXTRM) {
|
if (data.FCode() >= LM_TC_RM && data.FCode() <= LM_TC_TEXTRM) {
|
||||||
os << '\\' << math_font_name[data.FCode()-LM_TC_RM] << '{';
|
os << '\\' << math_font_name[data.FCode()-LM_TC_RM] << '{';
|
||||||
}
|
}
|
||||||
while (ls > 0) {
|
for (string::const_iterator s = str.begin();
|
||||||
|
s != str.end(); ++s) {
|
||||||
|
byte c = *s;
|
||||||
if (MathIsSymbol(data.FCode())) {
|
if (MathIsSymbol(data.FCode())) {
|
||||||
l = lm_get_key_by_id(*s, (data.FCode() == LM_TC_BSYM) ?
|
l = lm_get_key_by_id(c, (data.FCode() == LM_TC_BSYM) ?
|
||||||
LM_TK_BIGSYM : LM_TK_SYM);
|
LM_TK_BIGSYM : LM_TK_SYM);
|
||||||
if (l) {
|
if (l) {
|
||||||
os << '\\' << l->name << ' ';
|
os << '\\' << l->name << ' ';
|
||||||
} else {
|
} else {
|
||||||
lyxerr << "Illegal symbol code[" << *s
|
#warning This does not compile (Lgb)
|
||||||
<< " " << ls << " " << data.FCode() << "]";
|
//lyxerr << "Illegal symbol code[" << c
|
||||||
|
// << " " << str.end() - s << " " << data.FCode() << "]";
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// Is there a standard logical XOR?
|
// Is there a standard logical XOR?
|
||||||
if ((data.FCode() == LM_TC_TEX && *s != '{' && *s != '}') ||
|
if ((data.FCode() == LM_TC_TEX && c != '{' && c != '}') ||
|
||||||
(data.FCode() == LM_TC_SPECIAL))
|
(data.FCode() == LM_TC_SPECIAL))
|
||||||
os << '\\';
|
os << '\\';
|
||||||
else {
|
else {
|
||||||
if (*s == '{') ++brace;
|
if (c == '{') ++brace;
|
||||||
if (*s == '}') --brace;
|
if (c == '}') --brace;
|
||||||
}
|
}
|
||||||
if (*s == '}' && data.FCode() == LM_TC_TEX && brace < 0)
|
if (c == '}' && data.FCode() == LM_TC_TEX && brace < 0)
|
||||||
lyxerr <<"Math warning: Unexpected closing brace."
|
lyxerr <<"Math warning: Unexpected closing brace."
|
||||||
<< endl;
|
<< endl;
|
||||||
else
|
else
|
||||||
os << char(*s);
|
os << char(c);
|
||||||
}
|
}
|
||||||
++s; --ls;
|
|
||||||
}
|
}
|
||||||
if (data.FCode()>= LM_TC_RM && data.FCode()<= LM_TC_TEXTRM)
|
if (data.FCode()>= LM_TC_RM && data.FCode()<= LM_TC_TEXTRM)
|
||||||
os << '}';
|
os << '}';
|
||||||
|
Loading…
Reference in New Issue
Block a user