mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-10 20:04:46 +00:00
get rid of several friends small cleanup
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@1519 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
50be761b25
commit
d5905fabf6
@ -1,3 +1,9 @@
|
||||
2001-02-15 Lars Gullik Bjønnes <larsbj@lyx.org>
|
||||
|
||||
* matriz.C: clean up a bit.
|
||||
|
||||
* several files: changes so that several friends can be removed
|
||||
|
||||
2001-02-14 André Pönitz <poenitz@htwm.de>
|
||||
|
||||
* formula.C: reformatting
|
||||
|
@ -18,7 +18,7 @@
|
||||
#include "Lsstream.h"
|
||||
|
||||
#ifdef __GNUG__
|
||||
#pragma implementation "formula.h"
|
||||
#pragma implementation
|
||||
#endif
|
||||
|
||||
#include "formula.h"
|
||||
@ -192,9 +192,9 @@ void mathed_init_fonts() //removed 'static' because DEC cxx does not
|
||||
Math_Fonts[7].setFamily(LyXFont::SANS_FAMILY);
|
||||
|
||||
LyXFont f = WhichFont(LM_TC_VAR, LM_ST_TEXT);
|
||||
MathedInset::df_asc = lyxfont::maxAscent(f);
|
||||
MathedInset::df_des = lyxfont::maxDescent(f);
|
||||
MathedInset::df_width = lyxfont::width('I', f);
|
||||
MathedInset::defaultAscent(lyxfont::maxAscent(f));
|
||||
MathedInset::defaultDescent(lyxfont::maxDescent(f));
|
||||
MathedInset::defaultWidth(lyxfont::width('I', f));
|
||||
}
|
||||
|
||||
|
||||
@ -320,9 +320,9 @@ void InsetFormula::Read(Buffer const *, LyXLex & lex)
|
||||
" or missing \\end_inset!" << endl;
|
||||
}
|
||||
|
||||
#ifdef DEBUG
|
||||
#ifdef DEBUG
|
||||
Write(lyxerr);
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@ -376,7 +376,7 @@ void InsetFormula::draw(BufferView * bv, LyXFont const & f,
|
||||
x += float(width(bv, font));
|
||||
|
||||
if (is_numbered(par->GetType())) {
|
||||
LyXFont wfont = WhichFont(LM_TC_BF, par->size);
|
||||
LyXFont wfont = WhichFont(LM_TC_BF, par->size());
|
||||
wfont.setLatex(LyXFont::OFF);
|
||||
|
||||
if (is_singlely_numbered(par->GetType())) {
|
||||
@ -424,8 +424,8 @@ void InsetFormula::Edit(BufferView * bv, int x, int y, unsigned int)
|
||||
|
||||
par->Metrics();
|
||||
bv->updateInset(this, false);
|
||||
x += par->xo;
|
||||
y += par->yo;
|
||||
x += par->xo();
|
||||
y += par->yo();
|
||||
mathcursor->SetPos(x, y);
|
||||
sel_x = 0;
|
||||
sel_y = 0;
|
||||
@ -460,8 +460,8 @@ void InsetFormula::InsertSymbol(BufferView * bv, string const & s)
|
||||
void InsetFormula::GetCursorPos(BufferView *, int & x, int & y) const
|
||||
{
|
||||
mathcursor->GetPos(x, y);
|
||||
x -= par->xo;
|
||||
y -= par->yo;
|
||||
x -= par->xo();
|
||||
y -= par->yo();
|
||||
}
|
||||
|
||||
|
||||
@ -474,7 +474,7 @@ void InsetFormula::ToggleInsetCursor(BufferView * bv)
|
||||
int y;
|
||||
mathcursor->GetPos(x, y);
|
||||
// x -= par->xo;
|
||||
y -= par->yo;
|
||||
y -= par->yo();
|
||||
LyXFont font = WhichFont(LM_TC_TEXTRM, LM_ST_TEXT);
|
||||
int asc = lyxfont::maxAscent(font);
|
||||
int desc = lyxfont::maxDescent(font);
|
||||
@ -496,7 +496,7 @@ void InsetFormula::ShowInsetCursor(BufferView * bv, bool)
|
||||
int y;
|
||||
mathcursor->GetPos(x, y);
|
||||
// x -= par->xo;
|
||||
y -= par->yo;
|
||||
y -= par->yo();
|
||||
LyXFont font = WhichFont(LM_TC_TEXTRM, LM_ST_TEXT);
|
||||
int asc = lyxfont::maxAscent(font);
|
||||
int desc = lyxfont::maxDescent(font);
|
||||
@ -583,8 +583,8 @@ void InsetFormula::InsetButtonRelease(BufferView * bv,
|
||||
{
|
||||
if (mathcursor) {
|
||||
HideInsetCursor(bv);
|
||||
x += par->xo;
|
||||
y += par->yo;
|
||||
x += par->xo();
|
||||
y += par->yo();
|
||||
mathcursor->SetPos(x, y);
|
||||
ShowInsetCursor(bv);
|
||||
if (sel_flag) {
|
||||
@ -614,14 +614,14 @@ void InsetFormula::InsetMotionNotify(BufferView * bv,
|
||||
if (sel_x && sel_y && abs(x-sel_x) > 4 && !sel_flag) {
|
||||
sel_flag = true;
|
||||
HideInsetCursor(bv);
|
||||
mathcursor->SetPos(sel_x + par->xo, sel_y + par->yo);
|
||||
mathcursor->SetPos(sel_x + par->xo(), sel_y + par->yo());
|
||||
mathcursor->SelStart();
|
||||
ShowInsetCursor(bv);
|
||||
mathcursor->GetPos(sel_x, sel_y);
|
||||
} else if (sel_flag) {
|
||||
HideInsetCursor(bv);
|
||||
x += par->xo;
|
||||
y += par->yo;
|
||||
x += par->xo();
|
||||
y += par->yo();
|
||||
mathcursor->SetPos(x, y);
|
||||
ShowInsetCursor(bv);
|
||||
mathcursor->GetPos(x, y);
|
||||
@ -644,7 +644,7 @@ bool InsetFormula::SetNumber(bool numbf)
|
||||
{
|
||||
if (disp_flag) {
|
||||
short type = par->GetType();
|
||||
bool oldf = is_numbered(type);
|
||||
bool const oldf = is_numbered(type);
|
||||
if (numbf && !oldf)
|
||||
++type;
|
||||
if (!numbf && oldf)
|
||||
@ -887,7 +887,7 @@ InsetFormula::LocalDispatch(BufferView * bv, int action, string const & arg)
|
||||
//BUG
|
||||
// mt->SetNumbered(!mt->IsNumbered());
|
||||
|
||||
#warning This is a terrible hack! We should find a better solution.
|
||||
#warning This is a terrible hack! We should find a better solution.
|
||||
while (mathcursor->getLabel() == MathedXIter::error_label) {
|
||||
if (LocalDispatch(bv, LFUN_LEFT, string()) == FINISHED)
|
||||
return DISPATCHED;
|
||||
@ -1009,10 +1009,12 @@ InsetFormula::LocalDispatch(BufferView * bv, int action, string const & arg)
|
||||
string old_label = is_multiline(par->GetType())
|
||||
? mathcursor->getLabel() : label;
|
||||
|
||||
#warning This is a terrible hack! We should find a better solution.
|
||||
/// This is needed because in some positions mathcursor->cursor->crow
|
||||
/// is equal to 0, and therefore the label cannot be inserted.
|
||||
/// So we move the cursor left until mathcursor->cursor->crow != 0.
|
||||
#warning This is a terrible hack! We should find a better solution.
|
||||
// This is needed because in some positions
|
||||
// mathcursor->cursor->crow is equal to 0, and therefore
|
||||
// the label cannot be inserted.
|
||||
// So we move the cursor left until
|
||||
// mathcursor->cursor->crow != 0.
|
||||
while (old_label == MathedXIter::error_label) {
|
||||
if (LocalDispatch(bv, LFUN_LEFT, string()) == FINISHED)
|
||||
return DISPATCHED;
|
||||
@ -1039,11 +1041,11 @@ InsetFormula::LocalDispatch(BufferView * bv, int action, string const & arg)
|
||||
if (!new_label.empty() && bv->ChangeRefsIfUnique(old_label, new_label))
|
||||
bv->redraw();
|
||||
|
||||
if (is_multi_numbered(par->GetType()))
|
||||
if (is_multi_numbered(par->GetType())) {
|
||||
mathcursor->setLabel(new_label);
|
||||
// MathMatrixInset *mt = (MathMatrixInset*)par;
|
||||
// mt->SetLabel(new_label);
|
||||
else
|
||||
} else
|
||||
label = new_label;
|
||||
|
||||
UpdateLocal(bv);
|
||||
@ -1096,9 +1098,7 @@ InsetFormula::LocalDispatch(BufferView * bv, int action, string const & arg)
|
||||
mathcursor->MacroModeOpen();
|
||||
mathcursor->clearLastCode();
|
||||
varcode = LM_TC_MIN;
|
||||
} else
|
||||
|
||||
if (!varcode) {
|
||||
} else if (!varcode) {
|
||||
short f = (mathcursor->getLastCode()) ?
|
||||
mathcursor->getLastCode() :
|
||||
static_cast<MathedTextCodes>(mathcursor->GetFCode());
|
||||
@ -1132,9 +1132,7 @@ InsetFormula::LocalDispatch(BufferView * bv, int action, string const & arg)
|
||||
if (greek_kb_flag<2)
|
||||
greek_kb_flag = 0;
|
||||
|
||||
} else
|
||||
|
||||
if (strchr("!,:;{}", c) && (varcode == LM_TC_TEX||was_macro)) {
|
||||
} else if (strchr("!,:;{}", c) && (varcode == LM_TC_TEX||was_macro)) {
|
||||
mathcursor->Insert(c, LM_TC_TEX);
|
||||
if (c == '{') {
|
||||
mathcursor->Insert('}', LM_TC_TEX);
|
||||
@ -1142,40 +1140,26 @@ InsetFormula::LocalDispatch(BufferView * bv, int action, string const & arg)
|
||||
}
|
||||
mathcursor->clearLastCode();
|
||||
// varcode = LM_TC_MIN;
|
||||
} else
|
||||
|
||||
if (c == '_' && varcode == LM_TC_TEX) {
|
||||
} else if (c == '_' && varcode == LM_TC_TEX) {
|
||||
mathcursor->Insert(c, LM_TC_SPECIAL);
|
||||
mathcursor->clearLastCode();
|
||||
// varcode = LM_TC_MIN;
|
||||
} else
|
||||
|
||||
if (('0'<= c && c<= '9') && (varcode == LM_TC_TEX||was_macro)) {
|
||||
} else if (('0'<= c && c<= '9') && (varcode == LM_TC_TEX||was_macro)) {
|
||||
mathcursor->MacroModeOpen();
|
||||
mathcursor->clearLastCode();
|
||||
mathcursor->Insert(c, LM_TC_MIN);
|
||||
} else
|
||||
|
||||
if (('0'<= c && c<= '9') || strchr(";:!|[]().,?", c)) {
|
||||
} else if (('0'<= c && c<= '9') || strchr(";:!|[]().,?", c)) {
|
||||
mathcursor->Insert(c, LM_TC_CONST);
|
||||
} else
|
||||
|
||||
if (strchr("+/-*<>=", c)) {
|
||||
} else if (strchr("+/-*<>=", c)) {
|
||||
mathcursor->Insert(c, LM_TC_BOP);
|
||||
} else
|
||||
|
||||
if (strchr(latex_special_chars, c) && c!= '_') {
|
||||
} else if (strchr(latex_special_chars, c) && c!= '_') {
|
||||
mathcursor->Insert(c, LM_TC_SPECIAL);
|
||||
} else
|
||||
|
||||
if (c == '_' || c == '^') {
|
||||
} else if (c == '_' || c == '^') {
|
||||
char s[2];
|
||||
s[0] = c;
|
||||
s[1] = 0;
|
||||
mathcursor->Interpret(s);
|
||||
} else
|
||||
|
||||
if (c == ' ') {
|
||||
} else if (c == ' ') {
|
||||
if (!varcode) {
|
||||
short f = (mathcursor->getLastCode()) ?
|
||||
mathcursor->getLastCode() :
|
||||
@ -1187,27 +1171,17 @@ InsetFormula::LocalDispatch(BufferView * bv, int action, string const & arg)
|
||||
|
||||
if (varcode == LM_TC_TEXTRM) {
|
||||
mathcursor->Insert(c, LM_TC_TEXTRM);
|
||||
} else
|
||||
|
||||
if (was_macro) {
|
||||
} else if (was_macro) {
|
||||
mathcursor->MacroModeClose();
|
||||
} else
|
||||
|
||||
if (sp) {
|
||||
} else if (sp) {
|
||||
int isp = (sp->GetSpace()<5) ? sp->GetSpace()+1: 0;
|
||||
sp->SetSpace(isp);
|
||||
space_on = true;
|
||||
} else
|
||||
|
||||
if (!mathcursor->Pop() && mathcursor->IsEnd())
|
||||
} else if (!mathcursor->Pop() && mathcursor->IsEnd())
|
||||
result = FINISHED;
|
||||
} else
|
||||
|
||||
if (c == '\'' || c == '@') {
|
||||
} else if (c == '\'' || c == '@') {
|
||||
mathcursor->Insert (c, LM_TC_VAR);
|
||||
} else
|
||||
|
||||
if (c == '\\') {
|
||||
} else if (c == '\\') {
|
||||
if (was_macro)
|
||||
mathcursor->MacroModeClose();
|
||||
bv->owner()->getMiniBuffer()->Set(_("TeX mode"));
|
||||
|
@ -14,10 +14,9 @@
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
#include <cstdlib>
|
||||
|
||||
#ifdef __GNUG__
|
||||
#pragma implementation "formulamacro.h"
|
||||
#pragma implementation
|
||||
#endif
|
||||
|
||||
#include "formulamacro.h"
|
||||
@ -164,10 +163,9 @@ void InsetFormulaMacro::draw(BufferView * bv, LyXFont const & f,
|
||||
} else {
|
||||
font.setColor(LColor::math);
|
||||
|
||||
int y = baseline - ascent(bv, font) + 1;
|
||||
int w = width(bv, font) - 2;
|
||||
int h = (ascent(bv, font) + descent(bv, font) - 2);
|
||||
|
||||
int const y = baseline - ascent(bv, font) + 1;
|
||||
int const w = width(bv, font) - 2;
|
||||
int const h = (ascent(bv, font) + descent(bv, font) - 2);
|
||||
|
||||
pain.fillRectangle(int(x), y, w, h, LColor::mathbg);
|
||||
pain.rectangle(int(x), y, w, h, LColor::mathframe);
|
||||
@ -213,7 +211,8 @@ InsetFormulaMacro::LocalDispatch(BufferView * bv,
|
||||
if (action == LFUN_MATH_MACROARG) {
|
||||
int i = lyx::atoi(arg) - 1;
|
||||
if (i >= 0 && i < tmacro->getNoArgs()) {
|
||||
mathcursor->Insert(tmacro->getMacroPar(i), LM_TC_INSET);
|
||||
mathcursor->Insert(tmacro->getMacroPar(i),
|
||||
LM_TC_INSET);
|
||||
InsetFormula::UpdateLocal(bv);
|
||||
}
|
||||
|
||||
|
@ -48,7 +48,7 @@ MathAccentInset::draw(Painter & pain, int x, int y)
|
||||
else {
|
||||
string s;
|
||||
s += c;
|
||||
drawStr(pain, fn, size, x, y, s);
|
||||
drawStr(pain, fn, size(), x, y, s);
|
||||
}
|
||||
x += (code == LM_not) ? (width-dw) / 2 : 2;
|
||||
mathed_draw_deco(pain, x, y - dy, dw, dh, code);
|
||||
@ -65,9 +65,9 @@ MathAccentInset::Metrics()
|
||||
width = inset->Width();
|
||||
dh = ascent;
|
||||
} else {
|
||||
mathed_char_height(fn, size, c, ascent, descent);
|
||||
width = mathed_char_width(fn, size, c);
|
||||
dh = (width-2)/2;
|
||||
mathed_char_height(fn, size(), c, ascent, descent);
|
||||
width = mathed_char_width(fn, size(), c);
|
||||
dh = (width - 2) / 2;
|
||||
}
|
||||
if (code == LM_not) {
|
||||
ascent += dh;
|
||||
|
@ -57,7 +57,7 @@ MathBigopInset::draw(Painter & pain, int x, int y)
|
||||
LColor::mathline);
|
||||
++x;
|
||||
}
|
||||
pain.text(x, y, s, mathed_get_font(t, size));
|
||||
pain.text(x, y, s, mathed_get_font(t, size()));
|
||||
}
|
||||
|
||||
|
||||
@ -76,8 +76,8 @@ MathBigopInset::Metrics()
|
||||
s = name;
|
||||
t = LM_TC_TEXTRM;
|
||||
}
|
||||
mathed_string_height(t, size, s, ascent, descent);
|
||||
width = mathed_string_width(t, size, s);
|
||||
mathed_string_height(t, size(), s, ascent, descent);
|
||||
width = mathed_string_width(t, size(), s);
|
||||
if (sym == LM_oint) width += 2;
|
||||
}
|
||||
|
||||
|
@ -42,19 +42,20 @@ MathDecorationInset::draw(Painter & pain, int x, int y)
|
||||
void
|
||||
MathDecorationInset::Metrics()
|
||||
{
|
||||
int h = 2*mathed_char_height(LM_TC_VAR, size, 'I', ascent, descent);
|
||||
int h = 2 * mathed_char_height(LM_TC_VAR, size(), 'I',
|
||||
ascent, descent);
|
||||
MathParInset::Metrics();
|
||||
int w = Width()+4;
|
||||
if (w<16) w = 16;
|
||||
dh = w/5;
|
||||
if (dh>h) dh = h;
|
||||
int w = Width() + 4;
|
||||
if (w < 16) w = 16;
|
||||
dh = w / 5;
|
||||
if (dh > h) dh = h;
|
||||
|
||||
if (upper) {
|
||||
ascent += dh+2;
|
||||
ascent += dh + 2;
|
||||
dy = -ascent;
|
||||
} else {
|
||||
dy = descent+2;
|
||||
descent += dh+4;
|
||||
dy = descent + 2;
|
||||
descent += dh + 4;
|
||||
}
|
||||
dw = width;
|
||||
width = w;
|
||||
|
@ -19,7 +19,6 @@
|
||||
|
||||
#include FORMS_H_LOCATION
|
||||
#include <algorithm>
|
||||
#include <cstdlib>
|
||||
#include "symbol_def.h"
|
||||
#include "math_inset.h"
|
||||
#include "LColor.h"
|
||||
|
@ -57,22 +57,23 @@ void MathDelimInset::Write(ostream & os, bool fragile)
|
||||
void
|
||||
MathDelimInset::draw(Painter & pain, int x, int y)
|
||||
{
|
||||
xo = x; yo = y;
|
||||
xo(x);
|
||||
yo(y);
|
||||
MathParInset::draw(pain, x + dw + 2, y - dh);
|
||||
|
||||
if (left == '.') {
|
||||
pain.line(x + 4, yo - ascent,
|
||||
x + 4, yo + descent,
|
||||
pain.line(x + 4, yo() - ascent,
|
||||
x + 4, yo() + descent,
|
||||
LColor::mathcursor, Painter::line_onoffdash);
|
||||
} else
|
||||
mathed_draw_deco(pain, x, y - ascent, dw, Height(), left);
|
||||
x += Width() - dw - 2;
|
||||
if (right == '.') {
|
||||
pain.line(x + 4, yo - ascent,
|
||||
x + 4, yo + descent,
|
||||
pain.line(x + 4, yo() - ascent,
|
||||
x + 4, yo() + descent,
|
||||
LColor::mathcursor, Painter::line_onoffdash);
|
||||
} else
|
||||
mathed_draw_deco(pain, x, y-ascent, dw, Height(), right);
|
||||
mathed_draw_deco(pain, x, y - ascent, dw, Height(), right);
|
||||
}
|
||||
|
||||
|
||||
@ -82,12 +83,12 @@ MathDelimInset::Metrics()
|
||||
MathParInset::Metrics();
|
||||
int d;
|
||||
|
||||
mathed_char_height(LM_TC_CONST, size, 'I', d, dh);
|
||||
mathed_char_height(LM_TC_CONST, size(), 'I', d, dh);
|
||||
dh /= 2;
|
||||
ascent += 2 + dh;
|
||||
descent += 2 - dh;
|
||||
dw = Height()/5;
|
||||
if (dw > 15) dw = 15;
|
||||
if (dw<6) dw = 6;
|
||||
width += 2*dw+4;
|
||||
if (dw < 6) dw = 6;
|
||||
width += 2 * dw + 4;
|
||||
}
|
||||
|
@ -30,8 +30,8 @@ MathDotsInset::draw(Painter & pain, int x, int y)
|
||||
void
|
||||
MathDotsInset::Metrics()
|
||||
{
|
||||
mathed_char_height(LM_TC_VAR, size, 'M', ascent, descent);
|
||||
width = mathed_char_width(LM_TC_VAR, size, 'M');
|
||||
mathed_char_height(LM_TC_VAR, size(), 'M', ascent, descent);
|
||||
width = mathed_char_width(LM_TC_VAR, size(), 'M');
|
||||
switch (code) {
|
||||
case LM_ldots: dh = 0; break;
|
||||
case LM_cdots: dh = ascent/2; break;
|
||||
|
@ -56,9 +56,9 @@ void MathFracInset::SetStyle(short st)
|
||||
{
|
||||
MathParInset::SetStyle(st);
|
||||
dh = 0;
|
||||
den->SetStyle((size == LM_ST_DISPLAY) ?
|
||||
den->SetStyle((size() == LM_ST_DISPLAY) ?
|
||||
static_cast<short>(LM_ST_TEXT)
|
||||
: size);
|
||||
: size());
|
||||
}
|
||||
|
||||
|
||||
@ -99,16 +99,19 @@ MathedArray * MathFracInset::GetData()
|
||||
|
||||
bool MathFracInset::Inside(int x, int y)
|
||||
{
|
||||
int xx = xo - (width - w0) / 2;
|
||||
int xx = xo() - (width - w0) / 2;
|
||||
|
||||
return x >= xx && x <= xx + width && y <= yo + descent && y >= yo - ascent;
|
||||
return x >= xx
|
||||
&& x <= xx + width
|
||||
&& y <= yo() + descent
|
||||
&& y >= yo() - ascent;
|
||||
}
|
||||
|
||||
|
||||
void MathFracInset::SetFocus(int /*x*/, int y)
|
||||
{
|
||||
// lyxerr << "y " << y << " " << yo << " " << den->yo << " ";
|
||||
idx = (y > yo) ? 1: 0;
|
||||
idx = (y > yo()) ? 1: 0;
|
||||
}
|
||||
|
||||
|
||||
@ -116,13 +119,13 @@ void
|
||||
MathFracInset::draw(Painter & pain, int x, int y)
|
||||
{
|
||||
short idxp = idx;
|
||||
short sizex = size;
|
||||
short sizex = size();
|
||||
|
||||
idx = 0;
|
||||
if (size == LM_ST_DISPLAY) ++size;
|
||||
if (size() == LM_ST_DISPLAY) incSize();
|
||||
MathParInset::draw(pain, x + (width - w0) / 2, y - des0);
|
||||
den->draw(pain, x + (width - w1) / 2, y + den->Ascent() + 2 - dh);
|
||||
size = sizex;
|
||||
size(sizex);
|
||||
if (objtype == LM_OT_FRAC)
|
||||
pain.line(x + 2, y - dh, x + width - 4, y - dh, LColor::mathline);
|
||||
idx = idxp;
|
||||
@ -134,14 +137,14 @@ MathFracInset::Metrics()
|
||||
{
|
||||
if (!dh) {
|
||||
int a, b;
|
||||
dh = mathed_char_height(LM_TC_CONST, size, 'I', a, b)/2;
|
||||
dh = mathed_char_height(LM_TC_CONST, size(), 'I', a, b) / 2;
|
||||
}
|
||||
short idxp = idx;
|
||||
short sizex = size;
|
||||
short sizex = size();
|
||||
idx = 0;
|
||||
if (size == LM_ST_DISPLAY) ++size;
|
||||
if (size() == LM_ST_DISPLAY) incSize();
|
||||
MathParInset::Metrics();
|
||||
size = sizex;
|
||||
size(sizex);
|
||||
w0 = width;
|
||||
int as = Height() + 2 + dh;
|
||||
des0 = Descent() + 2 + dh;
|
||||
|
@ -54,7 +54,7 @@ void
|
||||
MathFuncInset::draw(Painter & pain, int x, int y)
|
||||
{
|
||||
if (!name.empty() && name[0] > ' ') {
|
||||
LyXFont font = WhichFont(LM_TC_TEXTRM, size);
|
||||
LyXFont font = WhichFont(LM_TC_TEXTRM, size());
|
||||
font.setLatex(LyXFont::ON);
|
||||
x += (lyxfont::width('I', font) + 3) / 4;
|
||||
pain.text(x, y, name, font);
|
||||
@ -66,7 +66,7 @@ MathFuncInset::draw(Painter & pain, int x, int y)
|
||||
void MathFuncInset::Metrics()
|
||||
{
|
||||
//ln = (name) ? strlen(name): 0;
|
||||
LyXFont font = WhichFont(LM_TC_TEXTRM, size);
|
||||
LyXFont font = WhichFont(LM_TC_TEXTRM, size());
|
||||
font.setLatex(LyXFont::ON);
|
||||
if (name.empty()) {
|
||||
width = df_width;
|
||||
@ -75,6 +75,6 @@ void MathFuncInset::Metrics()
|
||||
} else {
|
||||
width = lyxfont::width(name, font)
|
||||
+ lyxfont::width('I', font) / 2;
|
||||
mathed_string_height(LM_TC_TEXTRM, size, name, ascent, descent);
|
||||
mathed_string_height(LM_TC_TEXTRM, size(), name, ascent, descent);
|
||||
}
|
||||
}
|
||||
|
@ -2,7 +2,6 @@
|
||||
/* Command-line: gperf -a -p -o -t -G -D keywords */
|
||||
#include <config.h>
|
||||
|
||||
#include <cstdlib>
|
||||
#include <cstring>
|
||||
|
||||
#include "math_defs.h"
|
||||
@ -18,7 +17,7 @@ int const MAX_HASH_VALUE = 490;
|
||||
|
||||
static
|
||||
unsigned int
|
||||
math_hash (register char const *str, register int len)
|
||||
math_hash (register char const * str, register int len)
|
||||
{
|
||||
static unsigned short asso_values[] =
|
||||
{
|
||||
@ -42,7 +41,8 @@ math_hash (register char const *str, register int len)
|
||||
static
|
||||
latexkeys wordlist[] =
|
||||
{
|
||||
{"",0,0}, {"",0,0}, {"",0,0}, {"",0,0}, {"",0,0}, {"",0,0}, {"",0,0}, {"",0,0},
|
||||
{"",0,0}, {"",0,0}, {"",0,0}, {"",0,0},
|
||||
{"",0,0}, {"",0,0}, {"",0,0}, {"",0,0},
|
||||
{"setminus", LM_TK_SYM, LM_setminus},
|
||||
{"ldots", LM_TK_DOTS, LM_ldots},
|
||||
{"limits", LM_TK_LIMIT, 1 },
|
||||
@ -356,13 +356,13 @@ static short lookup[] =
|
||||
|
||||
|
||||
latexkeys *
|
||||
in_word_set (register char const *str, register int len)
|
||||
in_word_set (register char const * str, register int len)
|
||||
{
|
||||
if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) {
|
||||
int key = math_hash (str, len);
|
||||
int const key = math_hash (str, len);
|
||||
|
||||
if (key <= MAX_HASH_VALUE && key >= 0) {
|
||||
int idx = lookup[key];
|
||||
int const idx = lookup[key];
|
||||
|
||||
if (idx >= 0 && idx < MAX_HASH_VALUE) {
|
||||
char const * s = wordlist[idx].name;
|
||||
@ -372,7 +372,7 @@ in_word_set (register char const *str, register int len)
|
||||
} else if (idx < 0 && idx >= -MAX_HASH_VALUE) {
|
||||
return 0;
|
||||
} else {
|
||||
int offset = key + idx + (idx > 0 ? -MAX_HASH_VALUE : MAX_HASH_VALUE);
|
||||
int const offset = key + idx + (idx > 0 ? -MAX_HASH_VALUE : MAX_HASH_VALUE);
|
||||
latexkeys * base = &wordlist[-lookup[offset]];
|
||||
latexkeys * ptr = base + -lookup[offset + 1];
|
||||
|
||||
@ -392,7 +392,7 @@ latexkeys * in_word_set(string const & str)
|
||||
}
|
||||
|
||||
|
||||
latexkeys *lm_get_key_by_id(int t, short tk)
|
||||
latexkeys * lm_get_key_by_id(int t, short tk)
|
||||
{
|
||||
latexkeys * l = &wordlist[MIN_HASH_VALUE+TOTAL_KEYWORDS];
|
||||
latexkeys * base = &wordlist[MIN_HASH_VALUE];
|
||||
@ -404,7 +404,7 @@ latexkeys *lm_get_key_by_id(int t, short tk)
|
||||
}
|
||||
|
||||
|
||||
latexkeys *lm_get_key_by_index(int i)
|
||||
latexkeys * lm_get_key_by_index(int i)
|
||||
{
|
||||
if (i > 0 && i < TOTAL_KEYWORDS + 2)
|
||||
return &wordlist[i];
|
||||
|
@ -39,21 +39,21 @@ MathedInset::MathedInset(MathedInset * inset)
|
||||
if (inset) {
|
||||
name = inset->GetName();
|
||||
objtype = inset->GetType();
|
||||
size = inset->GetStyle();
|
||||
size_ = inset->GetStyle();
|
||||
width = inset->Width();
|
||||
ascent = inset->Ascent();
|
||||
descent = inset->Descent();
|
||||
} else {
|
||||
objtype = LM_OT_UNDEF;
|
||||
size = LM_ST_TEXT;
|
||||
size_ = LM_ST_TEXT;
|
||||
width = ascent = descent = 0;
|
||||
//name = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
MathedInset::MathedInset(string const & nm, short ot, short st):
|
||||
name(nm), objtype(ot), size(st)
|
||||
MathedInset::MathedInset(string const & nm, short ot, short st)
|
||||
: name(nm), objtype(ot), size_(st)
|
||||
{
|
||||
width = ascent = descent = 0;
|
||||
}
|
||||
@ -65,7 +65,8 @@ void MathedInset::drawStr(Painter & pain, short type, int siz,
|
||||
{
|
||||
string st;
|
||||
if (MathIsBinary(type))
|
||||
for (string::const_iterator it = s.begin(); it != s.end(); ++it) {
|
||||
for (string::const_iterator it = s.begin();
|
||||
it != s.end(); ++it) {
|
||||
st += ' ';
|
||||
st += *it;
|
||||
st += ' ';
|
||||
@ -77,3 +78,91 @@ void MathedInset::drawStr(Painter & pain, short type, int siz,
|
||||
pain.text(x, y, st, mf);
|
||||
}
|
||||
|
||||
|
||||
int MathedInset::Ascent() const
|
||||
{
|
||||
return ascent;
|
||||
}
|
||||
|
||||
|
||||
int MathedInset::Descent() const
|
||||
{
|
||||
return descent;
|
||||
}
|
||||
|
||||
|
||||
int MathedInset::Width() const
|
||||
{
|
||||
return width;
|
||||
}
|
||||
|
||||
|
||||
int MathedInset::Height() const
|
||||
{
|
||||
return ascent + descent;
|
||||
}
|
||||
|
||||
|
||||
bool MathedInset::GetLimits() const
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
void MathedInset::SetLimits(bool) {}
|
||||
|
||||
|
||||
string const & MathedInset::GetName() const
|
||||
{
|
||||
return name;
|
||||
}
|
||||
|
||||
|
||||
short MathedInset::GetType() const
|
||||
{
|
||||
return objtype;
|
||||
}
|
||||
|
||||
|
||||
short MathedInset::GetStyle() const
|
||||
{
|
||||
return size_;
|
||||
}
|
||||
|
||||
|
||||
void MathedInset::SetType(short t)
|
||||
{
|
||||
objtype = t;
|
||||
}
|
||||
|
||||
|
||||
void MathedInset::SetStyle(short st)
|
||||
{
|
||||
size_ = st;
|
||||
}
|
||||
|
||||
|
||||
void MathedInset::SetName(string const & n)
|
||||
{
|
||||
name = n;
|
||||
}
|
||||
|
||||
|
||||
void MathedInset::defaultAscent(int da)
|
||||
{
|
||||
df_asc = da;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void MathedInset::defaultDescent(int dd)
|
||||
{
|
||||
df_des = dd;
|
||||
}
|
||||
|
||||
|
||||
void MathedInset::defaultWidth(int dw)
|
||||
{
|
||||
df_width = dw;
|
||||
}
|
||||
|
||||
|
@ -35,10 +35,12 @@ class Painter;
|
||||
A math insets is for use of the math editor only, it isn't a
|
||||
general LyX inset. It's used to represent all the math objects.
|
||||
The formulaInset (a LyX inset) encapsulates a math inset.
|
||||
*/
|
||||
*/
|
||||
class MathedInset {
|
||||
public:
|
||||
/// A math inset has a name (usually its LaTeX name), type and font-size
|
||||
public:
|
||||
/** A math inset has a name (usually its LaTeX name),
|
||||
type and font-size
|
||||
*/
|
||||
MathedInset(string const & nm, short ot, short st);
|
||||
///
|
||||
explicit
|
||||
@ -54,33 +56,43 @@ class MathedInset {
|
||||
/// Compute the size of the object
|
||||
virtual void Metrics() = 0;
|
||||
///
|
||||
virtual int Ascent() const { return ascent; }
|
||||
virtual int Ascent() const;
|
||||
///
|
||||
virtual int Descent() const { return descent; }
|
||||
virtual int Descent() const;
|
||||
///
|
||||
virtual int Width() const { return width; }
|
||||
virtual int Width() const;
|
||||
///
|
||||
virtual int Height() const { return ascent + descent; }
|
||||
virtual int Height() const;
|
||||
///
|
||||
virtual bool GetLimits() const { return false; }
|
||||
virtual bool GetLimits() const;
|
||||
///
|
||||
virtual void SetLimits(bool) {}
|
||||
virtual void SetLimits(bool);
|
||||
///
|
||||
string const & GetName() const { return name; }
|
||||
string const & GetName() const;
|
||||
///
|
||||
short GetType() const { return objtype; }
|
||||
short GetType() const;
|
||||
///
|
||||
short GetStyle() const { return size; }
|
||||
short GetStyle() const;
|
||||
//Man: Avoid to use these functions if it's not strictly necessary
|
||||
///
|
||||
virtual void SetType(short t) { objtype = t; }
|
||||
virtual void SetType(short t);
|
||||
///
|
||||
virtual void SetStyle(short st) { size = st; } // Metrics();
|
||||
virtual void SetStyle(short st);
|
||||
///
|
||||
virtual void SetName(string const & n) { name = n; }
|
||||
virtual void SetName(string const & n);
|
||||
///
|
||||
static int workWidth;
|
||||
protected:
|
||||
///
|
||||
static void defaultAscent(int da);
|
||||
///
|
||||
static void defaultDescent(int dd);
|
||||
///
|
||||
static void defaultWidth(int dw);
|
||||
///
|
||||
short size() const {
|
||||
return size_;
|
||||
}
|
||||
protected:
|
||||
///
|
||||
string name;
|
||||
///
|
||||
@ -91,8 +103,6 @@ class MathedInset {
|
||||
int ascent;
|
||||
///
|
||||
int descent;
|
||||
///
|
||||
short size;
|
||||
/// Default metrics
|
||||
static int df_asc;
|
||||
///
|
||||
@ -102,8 +112,14 @@ class MathedInset {
|
||||
/// In a near future maybe we use a better fonts renderer than X
|
||||
void drawStr(Painter &, short, int, int, int, string const &);
|
||||
///
|
||||
friend class MathedCursor;
|
||||
void size(short s) {
|
||||
size_ = s;
|
||||
}
|
||||
void incSize() {
|
||||
++size_;
|
||||
}
|
||||
private:
|
||||
///
|
||||
friend void mathed_init_fonts();
|
||||
short size_;
|
||||
};
|
||||
#endif
|
||||
|
@ -45,29 +45,29 @@ ostream & operator<<(ostream & o, MathedTextCodes mtc)
|
||||
|
||||
|
||||
MathMacro::MathMacro(MathMacroTemplate * t):
|
||||
MathParInset(LM_ST_TEXT, "", LM_OT_MACRO), tmplate(t)
|
||||
MathParInset(LM_ST_TEXT, "", LM_OT_MACRO), tmplate_(t)
|
||||
{
|
||||
nargs = tmplate->getNoArgs();
|
||||
tcode = tmplate->getTCode();
|
||||
args_.resize(nargs);
|
||||
for (int i = 0; i < nargs; ++i) {
|
||||
nargs_ = tmplate_->getNoArgs();
|
||||
tcode_ = tmplate_->getTCode();
|
||||
args_.resize(nargs_);
|
||||
for (int i = 0; i < nargs_; ++i) {
|
||||
args_[i].row = 0;
|
||||
}
|
||||
idx = 0;
|
||||
SetName(tmplate->GetName());
|
||||
idx_ = 0;
|
||||
SetName(tmplate_->GetName());
|
||||
}
|
||||
|
||||
|
||||
MathMacro::MathMacro(MathMacro * m):
|
||||
MathParInset(LM_ST_TEXT, m->GetName(), LM_OT_MACRO)
|
||||
{
|
||||
tmplate = m->tmplate;
|
||||
nargs = tmplate->getNoArgs();
|
||||
tcode = tmplate->getTCode();
|
||||
args_.resize(nargs);
|
||||
idx = 0;
|
||||
SetName(tmplate->GetName());
|
||||
for (int i = 0; i < tmplate->nargs; ++i) {
|
||||
tmplate_ = m->tmplate_;
|
||||
nargs_ = tmplate_->getNoArgs();
|
||||
tcode_ = tmplate_->getTCode();
|
||||
args_.resize(nargs_);
|
||||
idx_ = 0;
|
||||
SetName(tmplate_->GetName());
|
||||
for (int i = 0; i < tmplate_->getNoArgs(); ++i) {
|
||||
m->setArgumentIdx(i);
|
||||
MathedIter it(m->GetData());
|
||||
args_[i].row = m->args_[i].row;
|
||||
@ -78,10 +78,10 @@ MathMacro::MathMacro(MathMacro * m):
|
||||
|
||||
MathMacro::~MathMacro()
|
||||
{
|
||||
for (idx = 0; idx < nargs; ++idx) {
|
||||
MathedIter it(args_[idx].array);
|
||||
for (idx_ = 0; idx_ < nargs_; ++idx_) {
|
||||
MathedIter it(args_[idx_].array);
|
||||
it.Clear();
|
||||
delete args_[idx].row;
|
||||
delete args_[idx_].row;
|
||||
}
|
||||
}
|
||||
|
||||
@ -94,34 +94,34 @@ MathedInset * MathMacro::Clone()
|
||||
|
||||
void MathMacro::Metrics()
|
||||
{
|
||||
if (nargs > 0)
|
||||
tmplate->update(this);
|
||||
tmplate->SetStyle(size);
|
||||
tmplate->Metrics();
|
||||
width = tmplate->Width();
|
||||
ascent = tmplate->Ascent();
|
||||
descent = tmplate->Descent();
|
||||
if (nargs_ > 0)
|
||||
tmplate_->update(this);
|
||||
tmplate_->SetStyle(size());
|
||||
tmplate_->Metrics();
|
||||
width = tmplate_->Width();
|
||||
ascent = tmplate_->Ascent();
|
||||
descent = tmplate_->Descent();
|
||||
}
|
||||
|
||||
|
||||
void MathMacro::draw(Painter & pain, int x, int y)
|
||||
{
|
||||
xo = x;
|
||||
yo = y;
|
||||
xo(x);
|
||||
yo(y);
|
||||
Metrics();
|
||||
tmplate->update(this);
|
||||
tmplate->SetStyle(size);
|
||||
tmplate->draw(pain, x, y);
|
||||
for (int i = 0; i < nargs; ++i) {
|
||||
tmplate->GetMacroXY(i, args_[i].x, args_[i].y);
|
||||
tmplate_->update(this);
|
||||
tmplate_->SetStyle(size());
|
||||
tmplate_->draw(pain, x, y);
|
||||
for (int i = 0; i < nargs_; ++i) {
|
||||
tmplate_->GetMacroXY(i, args_[i].x, args_[i].y);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
bool MathMacro::setArgumentIdx(int i)
|
||||
{
|
||||
if (i >= 0 && i < nargs) {
|
||||
idx = i;
|
||||
if (i >= 0 && i < nargs_) {
|
||||
idx_ = i;
|
||||
return true;
|
||||
} else
|
||||
return false;
|
||||
@ -130,52 +130,52 @@ bool MathMacro::setArgumentIdx(int i)
|
||||
|
||||
int MathMacro::getArgumentIdx() const
|
||||
{
|
||||
return idx;
|
||||
return idx_;
|
||||
}
|
||||
|
||||
|
||||
int MathMacro::getMaxArgumentIdx() const
|
||||
{
|
||||
return nargs - 1;
|
||||
return nargs_ - 1;
|
||||
}
|
||||
|
||||
|
||||
MathedArray * MathMacro::GetData()
|
||||
{
|
||||
return args_[idx].array;
|
||||
return args_[idx_].array;
|
||||
}
|
||||
|
||||
|
||||
int MathMacro::GetColumns() const
|
||||
{
|
||||
return tmplate->getMacroPar(idx)->GetColumns();
|
||||
return tmplate_->getMacroPar(idx_)->GetColumns();
|
||||
}
|
||||
|
||||
|
||||
void MathMacro::GetXY(int & x, int & y) const
|
||||
{
|
||||
x = args_[idx].x;
|
||||
y = args_[idx].y;
|
||||
x = args_[idx_].x;
|
||||
y = args_[idx_].y;
|
||||
}
|
||||
|
||||
|
||||
bool MathMacro::Permit(short f) const
|
||||
{
|
||||
return (nargs > 0) ?
|
||||
tmplate->getMacroPar(idx)->Permit(f) : MathParInset::Permit(f);
|
||||
return (nargs_ > 0) ?
|
||||
tmplate_->getMacroPar(idx_)->Permit(f) : MathParInset::Permit(f);
|
||||
}
|
||||
|
||||
|
||||
void MathMacro::SetFocus(int x, int y)
|
||||
{
|
||||
tmplate->update(this);
|
||||
tmplate->SetMacroFocus(idx, x, y);
|
||||
tmplate_->update(this);
|
||||
tmplate_->SetMacroFocus(idx_, x, y);
|
||||
}
|
||||
|
||||
|
||||
void MathMacro::SetData(MathedArray * a)
|
||||
{
|
||||
args_[idx].array = a;
|
||||
args_[idx_].array = a;
|
||||
}
|
||||
|
||||
|
||||
@ -183,25 +183,25 @@ void MathMacro::SetData(MathedArray * a)
|
||||
|
||||
MathedRowSt * MathMacro::getRowSt() const
|
||||
{
|
||||
return args_[idx].row;
|
||||
return args_[idx_].row;
|
||||
}
|
||||
|
||||
|
||||
MathedTextCodes MathMacro::getTCode() const
|
||||
{
|
||||
return tcode;
|
||||
return tcode_;
|
||||
}
|
||||
|
||||
|
||||
void MathMacro::Write(ostream & os, bool fragile)
|
||||
{
|
||||
if (tmplate->flags & MMF_Exp) {
|
||||
lyxerr[Debug::MATHED] << "Expand " << tmplate->flags
|
||||
if (tmplate_->flags() & MMF_Exp) {
|
||||
lyxerr[Debug::MATHED] << "Expand " << tmplate_->flags()
|
||||
<< ' ' << MMF_Exp << endl;
|
||||
tmplate->update(this);
|
||||
tmplate->Write(os, fragile);
|
||||
tmplate_->update(this);
|
||||
tmplate_->Write(os, fragile);
|
||||
} else {
|
||||
if (tmplate->flags & MMF_Env) {
|
||||
if (tmplate_->flags() & MMF_Env) {
|
||||
os << "\\begin{"
|
||||
<< name
|
||||
<< "} ";
|
||||
@ -214,21 +214,21 @@ void MathMacro::Write(ostream & os, bool fragile)
|
||||
// file += ']';
|
||||
// }
|
||||
|
||||
if (!(tmplate->flags & MMF_Env) && nargs > 0)
|
||||
if (!(tmplate_->flags() & MMF_Env) && nargs_ > 0)
|
||||
os << '{';
|
||||
|
||||
for (int i = 0; i < nargs; ++i) {
|
||||
for (int i = 0; i < nargs_; ++i) {
|
||||
array = args_[i].array;
|
||||
MathParInset::Write(os, fragile);
|
||||
if (i < nargs - 1)
|
||||
if (i < nargs_ - 1)
|
||||
os << "}{";
|
||||
}
|
||||
if (tmplate->flags & MMF_Env) {
|
||||
if (tmplate_->flags() & MMF_Env) {
|
||||
os << "\\end{"
|
||||
<< name
|
||||
<< '}';
|
||||
} else {
|
||||
if (nargs > 0)
|
||||
if (nargs_ > 0)
|
||||
os << '}';
|
||||
else
|
||||
os << ' ';
|
||||
|
@ -71,7 +71,7 @@ public:
|
||||
bool Permit(short) const;
|
||||
private:
|
||||
///
|
||||
MathMacroTemplate * tmplate;
|
||||
MathMacroTemplate * tmplate_;
|
||||
///
|
||||
struct MacroArgumentBase {
|
||||
/// Position of the macro
|
||||
@ -83,16 +83,16 @@ private:
|
||||
///
|
||||
MathedArray * array;
|
||||
///
|
||||
MacroArgumentBase() { x = y = 0; array = 0; row = 0; }
|
||||
MacroArgumentBase()
|
||||
: x(0), y(0), row(0), array(0)
|
||||
{}
|
||||
};
|
||||
std::vector<MacroArgumentBase> args_;
|
||||
///
|
||||
int idx;
|
||||
int idx_;
|
||||
///
|
||||
int nargs;
|
||||
int nargs_;
|
||||
///
|
||||
MathedTextCodes tcode;
|
||||
///
|
||||
friend class MathMacroTemplate;
|
||||
MathedTextCodes tcode_;
|
||||
};
|
||||
#endif
|
||||
|
@ -53,11 +53,10 @@ void MathMacroArgument::draw(Painter & pain, int x, int baseline)
|
||||
{
|
||||
if (expnd_mode_) {
|
||||
MathParInset::draw(pain, x, baseline);
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
std::ostringstream ost;
|
||||
ost << '#' << number_;
|
||||
drawStr(pain, LM_TC_TEX, size, x, baseline, ost.str().c_str());
|
||||
drawStr(pain, LM_TC_TEX, size(), x, baseline, ost.str().c_str());
|
||||
}
|
||||
}
|
||||
|
||||
@ -68,8 +67,8 @@ void MathMacroArgument::Metrics()
|
||||
} else {
|
||||
std::ostringstream ost;
|
||||
ost << '#' << number_;
|
||||
width = mathed_string_width(LM_TC_TEX, size, ost.str().c_str());
|
||||
mathed_string_height(LM_TC_TEX, size, ost.str().c_str(),
|
||||
width = mathed_string_width(LM_TC_TEX, size(), ost.str().c_str());
|
||||
mathed_string_height(LM_TC_TEX, size(), ost.str().c_str(),
|
||||
ascent, descent);
|
||||
}
|
||||
}
|
||||
|
@ -10,34 +10,34 @@ using std::ostream;
|
||||
|
||||
void MathMacroTemplate::setTCode(MathedTextCodes t)
|
||||
{
|
||||
tcode = t;
|
||||
tcode_ = t;
|
||||
}
|
||||
|
||||
|
||||
MathedTextCodes MathMacroTemplate::getTCode() const
|
||||
{
|
||||
return tcode;
|
||||
return tcode_;
|
||||
}
|
||||
|
||||
|
||||
int MathMacroTemplate::getNoArgs() const
|
||||
{
|
||||
return nargs;
|
||||
return nargs_;
|
||||
}
|
||||
|
||||
|
||||
MathMacroTemplate::MathMacroTemplate(string const & nm, int na, int flg):
|
||||
MathParInset(LM_ST_TEXT, nm, LM_OT_MACRO),
|
||||
flags(flg), nargs(na)
|
||||
flags_(flg), nargs_(na)
|
||||
{
|
||||
if (nargs > 0) {
|
||||
tcode = LM_TC_ACTIVE_INSET;
|
||||
args_.resize(nargs);
|
||||
for (int i = 0; i < nargs; ++i) {
|
||||
if (nargs_ > 0) {
|
||||
tcode_ = LM_TC_ACTIVE_INSET;
|
||||
args_.resize(nargs_);
|
||||
for (int i = 0; i < nargs_; ++i) {
|
||||
args_[i].setNumber(i + 1);
|
||||
}
|
||||
} else {
|
||||
tcode = LM_TC_INSET;
|
||||
tcode_ = LM_TC_INSET;
|
||||
// Here is nargs != args_.size()
|
||||
//args = 0;
|
||||
}
|
||||
@ -47,7 +47,7 @@ MathMacroTemplate::MathMacroTemplate(string const & nm, int na, int flg):
|
||||
MathMacroTemplate::~MathMacroTemplate()
|
||||
{
|
||||
// prevent to delete already deleted objects
|
||||
for (int i = 0; i < nargs; ++i) {
|
||||
for (int i = 0; i < nargs_; ++i) {
|
||||
args_[i].SetData(0);
|
||||
}
|
||||
}
|
||||
@ -56,14 +56,14 @@ MathMacroTemplate::~MathMacroTemplate()
|
||||
void MathMacroTemplate::setEditMode(bool ed)
|
||||
{
|
||||
if (ed) {
|
||||
flags |= MMF_Edit;
|
||||
for (int i = 0; i < nargs; ++i) {
|
||||
flags_ |= MMF_Edit;
|
||||
for (int i = 0; i < nargs_; ++i) {
|
||||
args_[i].setExpand(false);
|
||||
}
|
||||
}
|
||||
else {
|
||||
flags &= ~MMF_Edit;
|
||||
for (int i = 0; i < nargs; ++i) {
|
||||
flags_ &= ~MMF_Edit;
|
||||
for (int i = 0; i < nargs_; ++i) {
|
||||
args_[i].setExpand(true);
|
||||
}
|
||||
}
|
||||
@ -72,23 +72,27 @@ void MathMacroTemplate::setEditMode(bool ed)
|
||||
|
||||
void MathMacroTemplate::draw(Painter & pain, int x, int y)
|
||||
{
|
||||
int x2, y2;
|
||||
bool expnd = (nargs > 0) ? args_[0].getExpand(): false;
|
||||
if (flags & MMF_Edit) {
|
||||
for (int i = 0; i < nargs; ++i) {
|
||||
int x2;
|
||||
int y2;
|
||||
bool expnd = (nargs_ > 0) ? args_[0].getExpand(): false;
|
||||
if (flags_ & MMF_Edit) {
|
||||
for (int i = 0; i < nargs_; ++i) {
|
||||
args_[i].setExpand(false);
|
||||
}
|
||||
x2 = x; y2 = y;
|
||||
x2 = x;
|
||||
y2 = y;
|
||||
} else {
|
||||
for (int i = 0; i < nargs; ++i) {
|
||||
for (int i = 0; i < nargs_; ++i) {
|
||||
args_[i].setExpand(true);
|
||||
}
|
||||
x2 = xo; y2 = yo;
|
||||
x2 = xo();
|
||||
y2 = yo();
|
||||
}
|
||||
MathParInset::draw(pain, x, y);
|
||||
xo = x2; yo = y2;
|
||||
xo(x2);
|
||||
yo(y2);
|
||||
|
||||
for (int i = 0; i < nargs; ++i) {
|
||||
for (int i = 0; i < nargs_; ++i) {
|
||||
args_[i].setExpand(expnd);
|
||||
}
|
||||
}
|
||||
@ -96,20 +100,20 @@ void MathMacroTemplate::draw(Painter & pain, int x, int y)
|
||||
|
||||
void MathMacroTemplate::Metrics()
|
||||
{
|
||||
bool expnd = (nargs > 0) ? args_[0].getExpand(): false;
|
||||
bool expnd = (nargs_ > 0) ? args_[0].getExpand(): false;
|
||||
|
||||
if (flags & MMF_Edit) {
|
||||
for (int i = 0; i < nargs; ++i) {
|
||||
if (flags_ & MMF_Edit) {
|
||||
for (int i = 0; i < nargs_; ++i) {
|
||||
args_[i].setExpand(false);
|
||||
}
|
||||
} else {
|
||||
for (int i = 0; i < nargs; ++i) {
|
||||
for (int i = 0; i < nargs_; ++i) {
|
||||
args_[i].setExpand(true);
|
||||
}
|
||||
}
|
||||
MathParInset::Metrics();
|
||||
|
||||
for (int i = 0; i < nargs; ++i) {
|
||||
for (int i = 0; i < nargs_; ++i) {
|
||||
args_[i].setExpand(expnd);
|
||||
}
|
||||
}
|
||||
@ -118,7 +122,7 @@ void MathMacroTemplate::Metrics()
|
||||
void MathMacroTemplate::update(MathMacro * macro)
|
||||
{
|
||||
int idx = (macro) ? macro->getArgumentIdx() : 0;
|
||||
for (int i = 0; i < nargs; ++i) {
|
||||
for (int i = 0; i < nargs_; ++i) {
|
||||
if (macro) {
|
||||
macro->setArgumentIdx(i);
|
||||
args_[i].SetData(macro->GetData());
|
||||
@ -135,12 +139,12 @@ void MathMacroTemplate::WriteDef(ostream & os, bool fragile)
|
||||
{
|
||||
os << "\n\\newcommand{\\" << name << "}";
|
||||
|
||||
if (nargs > 0 )
|
||||
os << "[" << nargs << "]";
|
||||
if (nargs_ > 0 )
|
||||
os << "[" << nargs_ << "]";
|
||||
|
||||
os << "{";
|
||||
|
||||
for (int i = 0; i < nargs; ++i) {
|
||||
for (int i = 0; i < nargs_; ++i) {
|
||||
args_[i].setExpand(false);
|
||||
}
|
||||
Write(os, fragile);
|
||||
@ -162,7 +166,7 @@ void MathMacroTemplate::GetMacroXY(int i, int & x, int & y) const
|
||||
|
||||
MathParInset * MathMacroTemplate::getMacroPar(int i) const
|
||||
{
|
||||
if (i >= 0 && i < nargs)
|
||||
if (i >= 0 && i < nargs_)
|
||||
return const_cast<MathParInset *>
|
||||
(static_cast<MathParInset const *>(&args_[i]));
|
||||
else
|
||||
@ -172,7 +176,7 @@ MathParInset * MathMacroTemplate::getMacroPar(int i) const
|
||||
|
||||
void MathMacroTemplate::SetMacroFocus(int &idx, int x, int y)
|
||||
{
|
||||
for (int i = 0; i < nargs; ++i) {
|
||||
for (int i = 0; i < nargs_; ++i) {
|
||||
if (args_[i].Inside(x, y)) {
|
||||
idx = i;
|
||||
break;
|
||||
|
@ -10,8 +10,8 @@
|
||||
class MathMacro;
|
||||
|
||||
/// This class contains the macro definition
|
||||
class MathMacroTemplate: public MathParInset {
|
||||
public:
|
||||
class MathMacroTemplate : public MathParInset {
|
||||
public:
|
||||
/// A template constructor needs all the data
|
||||
explicit
|
||||
MathMacroTemplate(string const &, int na = 0, int f = 0);
|
||||
@ -42,16 +42,18 @@ class MathMacroTemplate: public MathParInset {
|
||||
|
||||
/// Replace the appropriate arguments with a specific macro's data
|
||||
void update(MathMacro * m = 0);
|
||||
///
|
||||
short flags() const {
|
||||
return flags_;
|
||||
}
|
||||
private:
|
||||
///
|
||||
short flags;
|
||||
short flags_;
|
||||
///
|
||||
MathedTextCodes tcode;
|
||||
MathedTextCodes tcode_;
|
||||
///
|
||||
std::vector<MathMacroArgument> args_;
|
||||
///
|
||||
int nargs;
|
||||
///
|
||||
friend class MathMacro;
|
||||
int nargs_;
|
||||
};
|
||||
#endif
|
||||
|
@ -65,6 +65,7 @@ enum SomeMathValues {
|
||||
MM_OK
|
||||
};
|
||||
|
||||
|
||||
///
|
||||
/// Class to manage bitmap menu bars
|
||||
class BitmapMenu {
|
||||
@ -83,14 +84,20 @@ class BitmapMenu {
|
||||
/// Border width
|
||||
int ww;
|
||||
///
|
||||
int x, y, w, h;
|
||||
int x;
|
||||
///
|
||||
int y;
|
||||
///
|
||||
int w;
|
||||
///
|
||||
int h;
|
||||
///
|
||||
FL_FORM * form;
|
||||
///
|
||||
bitmaps_type bitmaps_;
|
||||
///
|
||||
FL_OBJECT * button;
|
||||
public:
|
||||
public:
|
||||
///
|
||||
BitmapMenu(int n, FL_OBJECT * bt, BitmapMenu * prevx= 0);
|
||||
///
|
||||
@ -99,7 +106,7 @@ class BitmapMenu {
|
||||
FL_OBJECT * AddBitmap(int id,
|
||||
int nx, int ny, int bw, int bh,
|
||||
unsigned char const * data,
|
||||
Bool vert= True); // Why Bool?
|
||||
Bool vert = True); // Why Bool?
|
||||
///
|
||||
void Create();
|
||||
///
|
||||
@ -114,24 +121,29 @@ class BitmapMenu {
|
||||
int GetIndex(FL_OBJECT * ob);
|
||||
};
|
||||
|
||||
|
||||
/// This is just a wrapper around peek_event()
|
||||
extern "C" int C_peek_event(FL_FORM * form, void * ptr);
|
||||
|
||||
|
||||
inline
|
||||
void BitmapMenu::Prev() {
|
||||
void BitmapMenu::Prev()
|
||||
{
|
||||
Hide();
|
||||
if (prev)
|
||||
prev->Show();
|
||||
}
|
||||
|
||||
|
||||
inline
|
||||
void BitmapMenu::Next() {
|
||||
void BitmapMenu::Next()
|
||||
{
|
||||
Hide();
|
||||
if (next)
|
||||
next->Show();
|
||||
}
|
||||
|
||||
|
||||
#include "math_forms.h"
|
||||
|
||||
///
|
||||
|
@ -85,10 +85,12 @@ MathParInset::draw(Painter & pain, int x, int y)
|
||||
{
|
||||
byte cxp = 0;
|
||||
int xp = 0;
|
||||
int asc = df_asc, des = 0;
|
||||
int asc = df_asc;
|
||||
int des = 0;
|
||||
bool limits = false;
|
||||
|
||||
xo = x; yo = y;
|
||||
xo_ = x;
|
||||
yo_ = y;
|
||||
if (!array || array->empty()) {
|
||||
if (array) {
|
||||
MathedXIter data(this);
|
||||
@ -104,8 +106,8 @@ MathParInset::draw(Painter & pain, int x, int y)
|
||||
byte cx = data.GetChar();
|
||||
if (cx >= ' ') {
|
||||
string s = data.GetString();
|
||||
drawStr(pain, data.FCode(), size, x, y, s);
|
||||
mathed_char_height(LM_TC_CONST, size, 'y', asc, des);
|
||||
drawStr(pain, data.FCode(), size(), x, y, s);
|
||||
mathed_char_height(LM_TC_CONST, size(), 'y', asc, des);
|
||||
limits = false;
|
||||
}
|
||||
else {
|
||||
@ -195,15 +197,16 @@ MathParInset::Metrics()
|
||||
cx = data.GetChar();
|
||||
if (cx >= ' ') {
|
||||
string s = data.GetString();
|
||||
mathed_string_height(data.FCode(), size, s, asc, des);
|
||||
mathed_string_height(data.FCode(),
|
||||
size(), s, asc, des);
|
||||
if (asc > ascent) ascent = asc;
|
||||
if (des > descent) descent = des;
|
||||
limits = false;
|
||||
mathed_char_height(LM_TC_CONST, size, 'y', asc, des);
|
||||
mathed_char_height(LM_TC_CONST, size(), 'y', asc, des);
|
||||
} else
|
||||
if (MathIsInset(cx)) {
|
||||
MathedInset * p = data.GetInset();
|
||||
p->SetStyle(size);
|
||||
p->SetStyle(size());
|
||||
p->Metrics();
|
||||
if (cx == LM_TC_UP) {
|
||||
asc += (limits) ? p->Height() + 4: p->Ascent() +
|
||||
@ -290,7 +293,7 @@ void MathParInset::Write(ostream & os, bool fragile)
|
||||
data.Reset();
|
||||
|
||||
if (!Permit(LMPF_FIXED_SIZE)) {
|
||||
l = lm_get_key_by_id(size, LM_TK_STY);
|
||||
l = lm_get_key_by_id(size(), LM_TK_STY);
|
||||
if (l) {
|
||||
os << '\\' << l->name << ' ';
|
||||
}
|
||||
@ -397,22 +400,22 @@ void MathParInset::Write(ostream & os, bool fragile)
|
||||
|
||||
bool MathParInset::Inside(int x, int y)
|
||||
{
|
||||
return (x >= xo && x <= xo + width
|
||||
&& y <= yo + descent && y >= yo - ascent);
|
||||
return (x >= xo() && x <= xo() + width
|
||||
&& y <= yo() + descent && y >= yo() - ascent);
|
||||
}
|
||||
|
||||
|
||||
void MathParInset::GetXY(int & x, int & y) const
|
||||
{
|
||||
x = xo;
|
||||
y = yo;
|
||||
x = xo();
|
||||
y = yo();
|
||||
}
|
||||
|
||||
|
||||
void MathParInset::UserSetSize(short sz)
|
||||
{
|
||||
if (sz >= 0) {
|
||||
size = sz;
|
||||
size(sz);
|
||||
flag = flag & ~LMPF_FIXED_SIZE;
|
||||
}
|
||||
}
|
||||
@ -431,12 +434,6 @@ void MathParInset::SetStyle(short sz)
|
||||
}
|
||||
|
||||
|
||||
void MathParInset::setFlag(MathedParFlag f)
|
||||
{
|
||||
flag |= f;
|
||||
}
|
||||
|
||||
|
||||
bool MathParInset::Permit(short f) const
|
||||
{
|
||||
return bool(f & flag);
|
||||
@ -451,6 +448,6 @@ MathedArray * MathParInset::GetData()
|
||||
|
||||
void MathParInset::setXY(int x, int y)
|
||||
{
|
||||
xo = x;
|
||||
yo = y;
|
||||
xo_ = x;
|
||||
yo_ = y;
|
||||
}
|
||||
|
@ -11,7 +11,7 @@ class MathedArray;
|
||||
|
||||
/** The math paragraph base class, base to all editable math objects */
|
||||
class MathParInset: public MathedInset {
|
||||
public:
|
||||
public:
|
||||
///
|
||||
MathParInset(short st = LM_ST_TEXT, string const & nm = string(),
|
||||
short ot = LM_OT_MIN);
|
||||
@ -68,29 +68,31 @@ class MathParInset: public MathedInset {
|
||||
virtual void setRowSt(MathedRowSt *) {}
|
||||
///
|
||||
virtual bool Permit(short f) const;
|
||||
protected:
|
||||
///
|
||||
int xo() const {
|
||||
return xo_;
|
||||
}
|
||||
///
|
||||
int yo() const {
|
||||
return yo_;
|
||||
}
|
||||
protected:
|
||||
/// Paragraph data is stored here
|
||||
MathedArray * array;
|
||||
/// Cursor start position
|
||||
int xo;
|
||||
///
|
||||
int yo;
|
||||
///
|
||||
short flag;
|
||||
private:
|
||||
///
|
||||
virtual void setFlag(MathedParFlag f);
|
||||
void xo(int tx) {
|
||||
xo_ = tx;
|
||||
}
|
||||
///
|
||||
friend class InsetFormula;
|
||||
void yo(int ty) {
|
||||
yo_ = ty;
|
||||
}
|
||||
private:
|
||||
/// Cursor start position
|
||||
int xo_;
|
||||
///
|
||||
friend class MathedXIter;
|
||||
///
|
||||
friend class MathedCursor;
|
||||
///
|
||||
friend MathedArray * mathed_parse(unsigned flags = 0,
|
||||
MathedArray * a = 0,
|
||||
MathParInset ** p = 0);
|
||||
int yo_;
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
|
@ -390,8 +390,8 @@ MathedInset * doAccent(MathedInset * p)
|
||||
}
|
||||
|
||||
|
||||
MathedArray * mathed_parse(unsigned flags, MathedArray * array,
|
||||
MathParInset ** mtx)
|
||||
MathedArray * mathed_parse(unsigned flags = 0, MathedArray * array = 0,
|
||||
MathParInset ** mtx = 0)
|
||||
{
|
||||
int t = yylex();
|
||||
int tprev = 0;
|
||||
|
@ -128,13 +128,13 @@ void MathRootInset::SetStyle(short st)
|
||||
{
|
||||
MathSqrtInset::SetStyle(st);
|
||||
|
||||
uroot->SetStyle((size<LM_ST_SCRIPTSCRIPT) ? size+1: size);
|
||||
uroot->SetStyle((size() < LM_ST_SCRIPTSCRIPT) ? size() + 1 : size());
|
||||
}
|
||||
|
||||
|
||||
void MathRootInset::SetFocus(int x, int)
|
||||
{
|
||||
idx = (x > xo + wroot) ? 1: 0;
|
||||
idx = (x > xo() + wroot) ? 1: 0;
|
||||
}
|
||||
|
||||
|
||||
|
@ -24,10 +24,10 @@ MathedInset * MathSqrtInset::Clone()
|
||||
|
||||
bool MathSqrtInset::Inside(int x, int y)
|
||||
{
|
||||
return x >= xo - hmax
|
||||
&& x <= xo + width - hmax
|
||||
&& y <= yo + descent
|
||||
&& y >= yo - ascent;
|
||||
return x >= xo() - hmax
|
||||
&& x <= xo() + width - hmax
|
||||
&& y <= yo() + descent
|
||||
&& y >= yo() - ascent;
|
||||
}
|
||||
|
||||
|
||||
@ -55,7 +55,7 @@ MathSqrtInset::Metrics()
|
||||
ascent += 4;
|
||||
descent += 2;
|
||||
int a, b;
|
||||
hmax = mathed_char_height(LM_TC_VAR, size, 'I', a, b);
|
||||
hmax = mathed_char_height(LM_TC_VAR, size(), 'I', a, b);
|
||||
if (hmax < 10) hmax = 10;
|
||||
wbody = width + 4;
|
||||
width += hmax + 4;
|
||||
|
@ -103,7 +103,6 @@ protected:
|
||||
///
|
||||
MathedRowSt * crow;
|
||||
|
||||
private:
|
||||
///
|
||||
friend class MathedCursor;
|
||||
};
|
||||
|
@ -4,29 +4,27 @@
|
||||
|
||||
#include "matriz.h"
|
||||
|
||||
inline
|
||||
static inline
|
||||
int odd(int x) { return ((x) & 1); }
|
||||
|
||||
typedef float matriz_data[2][2];
|
||||
|
||||
const matriz_data MATIDEN= { {1, 0}, {0, 1}};
|
||||
|
||||
#define mateq(m1, m2) memcpy(m1, m2, sizeof(matriz_data))
|
||||
|
||||
|
||||
Matriz::matriz_data const Matriz::MATIDEN = { {1, 0}, {0, 1}};
|
||||
|
||||
|
||||
Matriz::Matriz()
|
||||
{
|
||||
mateq(m, MATIDEN);
|
||||
mateq(m_, MATIDEN);
|
||||
}
|
||||
|
||||
|
||||
void Matriz::rota(int code)
|
||||
{
|
||||
float cs, sn;
|
||||
|
||||
matriz_data r;
|
||||
mateq(r, MATIDEN);
|
||||
cs = (odd(code)) ? 0: 1 - code;
|
||||
sn = (odd(code)) ? 2 - code: 0;
|
||||
float const cs = (odd(code)) ? 0 : (1 - code);
|
||||
float const sn = (odd(code)) ? (2 - code) : 0;
|
||||
r[0][0] = cs; r[0][1] = sn;
|
||||
r[1][0] = -r[0][1]; r[1][1] = r[0][0];
|
||||
matmat(r);
|
||||
@ -45,16 +43,16 @@ void Matriz::escala(float x, float y)
|
||||
void Matriz::matmat(matriz_data & a)
|
||||
{
|
||||
matriz_data c;
|
||||
for (int i = 0;i < 2; ++i) {
|
||||
c[0][i] = a[0][0] * m[0][i] + a[0][1] * m[1][i];
|
||||
c[1][i] = a[1][0] * m[0][i] + a[1][1] * m[1][i];
|
||||
for (int i = 0; i < 2; ++i) {
|
||||
c[0][i] = a[0][0] * m_[0][i] + a[0][1] * m_[1][i];
|
||||
c[1][i] = a[1][0] * m_[0][i] + a[1][1] * m_[1][i];
|
||||
}
|
||||
mateq(m, c);
|
||||
mateq(m_, c);
|
||||
}
|
||||
|
||||
|
||||
void Matriz::transf(float xp, float yp, float & x, float & y)
|
||||
{
|
||||
x = m[0][0] * xp + m[0][1] * yp;
|
||||
y = m[1][0] * xp + m[1][1] * yp;
|
||||
x = m_[0][0] * xp + m_[0][1] * yp;
|
||||
y = m_[1][0] * xp + m_[1][1] * yp;
|
||||
}
|
||||
|
@ -3,17 +3,26 @@
|
||||
#ifndef MATH_MATRIZ_H
|
||||
#define MATH_MATRIZ_H
|
||||
|
||||
typedef float matriz_data[2][2];
|
||||
|
||||
///
|
||||
class Matriz {
|
||||
public:
|
||||
public:
|
||||
///
|
||||
typedef float matriz_data[2][2];
|
||||
///
|
||||
Matriz();
|
||||
///
|
||||
void rota(int);
|
||||
///
|
||||
void escala(float, float);
|
||||
///
|
||||
void transf(float, float, float &, float &);
|
||||
protected:
|
||||
matriz_data m;
|
||||
private:
|
||||
///
|
||||
matriz_data m_;
|
||||
///
|
||||
void matmat(matriz_data & a);
|
||||
///
|
||||
static matriz_data const MATIDEN;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -376,7 +376,7 @@ void mathed_draw_deco(Painter & pain, int x, int y, int w, int h, int code)
|
||||
mt.rota(r);
|
||||
mt.escala(w, h);
|
||||
|
||||
int n = (w < h) ? w: h;
|
||||
int n = (w < h) ? w : h;
|
||||
sqmt.rota(r);
|
||||
sqmt.escala(n, n);
|
||||
if (r > 0 && r < 3) y += h;
|
||||
|
Loading…
Reference in New Issue
Block a user