one less use of ownerPar means faster code

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@8939 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Jean-Marc Lasgouttes 2004-08-14 23:57:29 +00:00
parent 1c8329d3a4
commit 0fe5cc3913
7 changed files with 17 additions and 11 deletions

View File

@ -1,3 +1,11 @@
2004-08-15 Jean-Marc Lasgouttes <lasgouttes@lyx.org>
* metricsinfo.h: add a new field ltr_pos to PainterInfo
* rowpainter.C (paintInset): initialize PainterInfo::ltr_pos
* text.C (singleWidth): remove useless test
2004-08-14 Jean-Marc Lasgouttes <lasgouttes@lyx.org> 2004-08-14 Jean-Marc Lasgouttes <lasgouttes@lyx.org>
* tabular.h: remove bogus comments * tabular.h: remove bogus comments

View File

@ -1,3 +1,6 @@
2004-08-15 Jean-Marc Lasgouttes <lasgouttes@lyx.org>
* insetnewline.C (draw): use PainterInfo::ltr_pos instead of ownerPar.
2004-08-14 André Pönitz <poenitz@gmx.net> 2004-08-14 André Pönitz <poenitz@gmx.net>

View File

@ -86,11 +86,6 @@ void InsetNewline::draw(PainterInfo & pi, int x, int y) const
int const wid = font_metrics::width('n', pi.base.font); int const wid = font_metrics::width('n', pi.base.font);
int const asc = font_metrics::maxAscent(pi.base.font); int const asc = font_metrics::maxAscent(pi.base.font);
// hack, and highly dubious
lyx::pos_type pos = ownerPar(*pi.base.bv->buffer(), this)
.getPositionOfInset(this);
bool const ltr_pos = (pi.base.bv->text()->bidi.level(pos) % 2 == 0);
int xp[3]; int xp[3];
int yp[3]; int yp[3];
@ -98,7 +93,7 @@ void InsetNewline::draw(PainterInfo & pi, int x, int y) const
yp[1] = int(y - 0.500 * asc * 0.75); yp[1] = int(y - 0.500 * asc * 0.75);
yp[2] = int(y - 0.125 * asc * 0.75); yp[2] = int(y - 0.125 * asc * 0.75);
if (ltr_pos) { if (pi.ltr_pos) {
xp[0] = int(x + wid * 0.375); xp[0] = int(x + wid * 0.375);
xp[1] = int(x); xp[1] = int(x);
xp[2] = int(x + wid * 0.375); xp[2] = int(x + wid * 0.375);
@ -114,7 +109,7 @@ void InsetNewline::draw(PainterInfo & pi, int x, int y) const
yp[1] = int(y - 0.500 * asc * 0.75); yp[1] = int(y - 0.500 * asc * 0.75);
yp[2] = int(y - asc * 0.75); yp[2] = int(y - asc * 0.75);
if (ltr_pos) { if (pi.ltr_pos) {
xp[0] = int(x); xp[0] = int(x);
xp[1] = int(x + wid); xp[1] = int(x + wid);
xp[2] = int(x + wid); xp[2] = int(x + wid);

View File

@ -47,7 +47,7 @@ MetricsInfo::MetricsInfo(BufferView * bv, LyXFont const & font, int textwidth)
PainterInfo::PainterInfo(BufferView * bv, Painter & painter) PainterInfo::PainterInfo(BufferView * bv, Painter & painter)
: pain(painter) : pain(painter), ltr_pos(false)
{ {
base.bv = bv; base.bv = bv;
} }

View File

@ -84,6 +84,8 @@ struct PainterInfo {
MetricsBase base; MetricsBase base;
/// ///
Painter & pain; Painter & pain;
/// Whether the text at this point is right-to-left (for InsetNewline)
bool ltr_pos;
}; };

View File

@ -200,6 +200,7 @@ void RowPainter::paintInset(pos_type const pos)
BOOST_ASSERT(inset); BOOST_ASSERT(inset);
PainterInfo pi(const_cast<BufferView *>(&bv_), pain_); PainterInfo pi(const_cast<BufferView *>(&bv_), pain_);
pi.base.font = getFont(pos); pi.base.font = getFont(pos);
pi.ltr_pos = (text_.bidi.level(pos) % 2 == 0);
theCoords.insets_.add(inset, int(x_), yo_ + row_.baseline()); theCoords.insets_.add(inset, int(x_), yo_ + row_.baseline());
inset->drawSelection(pi, int(x_), yo_ + row_.baseline()); inset->drawSelection(pi, int(x_), yo_ + row_.baseline());
inset->draw(pi, int(x_), yo_ + row_.baseline()); inset->draw(pi, int(x_), yo_ + row_.baseline());

View File

@ -441,9 +441,6 @@ int LyXText::height() const
int LyXText::singleWidth(par_type par, pos_type pos) const int LyXText::singleWidth(par_type par, pos_type pos) const
{ {
if (pos >= pars_[par].size())
return 0;
char const c = pars_[par].getChar(pos); char const c = pars_[par].getChar(pos);
return singleWidth(par, pos, c, getFont(par, pos)); return singleWidth(par, pos, c, getFont(par, pos));
} }