From: Jean-Marc Lasgouttes Date: Sat, 14 Aug 2004 23:57:29 +0000 (+0000) Subject: one less use of ownerPar means faster code X-Git-Tag: 1.6.10~15058 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=0fe5cc3913c96a3f9a9d12a2dd594a2256bdddc7;p=features.git 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 --- diff --git a/src/ChangeLog b/src/ChangeLog index 94c537234b..28f2abe1cb 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,11 @@ +2004-08-15 Jean-Marc Lasgouttes + + * 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 * tabular.h: remove bogus comments diff --git a/src/insets/ChangeLog b/src/insets/ChangeLog index 0588c673f5..81ca55cf31 100644 --- a/src/insets/ChangeLog +++ b/src/insets/ChangeLog @@ -1,3 +1,6 @@ +2004-08-15 Jean-Marc Lasgouttes + + * insetnewline.C (draw): use PainterInfo::ltr_pos instead of ownerPar. 2004-08-14 André Pönitz diff --git a/src/insets/insetnewline.C b/src/insets/insetnewline.C index 9b05ff477c..1ebf900acd 100644 --- a/src/insets/insetnewline.C +++ b/src/insets/insetnewline.C @@ -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 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 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[2] = int(y - 0.125 * asc * 0.75); - if (ltr_pos) { + if (pi.ltr_pos) { xp[0] = int(x + wid * 0.375); xp[1] = int(x); 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[2] = int(y - asc * 0.75); - if (ltr_pos) { + if (pi.ltr_pos) { xp[0] = int(x); xp[1] = int(x + wid); xp[2] = int(x + wid); diff --git a/src/metricsinfo.C b/src/metricsinfo.C index b49eac04c8..b0bb7c7864 100644 --- a/src/metricsinfo.C +++ b/src/metricsinfo.C @@ -47,7 +47,7 @@ MetricsInfo::MetricsInfo(BufferView * bv, LyXFont const & font, int textwidth) PainterInfo::PainterInfo(BufferView * bv, Painter & painter) - : pain(painter) + : pain(painter), ltr_pos(false) { base.bv = bv; } diff --git a/src/metricsinfo.h b/src/metricsinfo.h index dc3bef45e2..2e401c3eb7 100644 --- a/src/metricsinfo.h +++ b/src/metricsinfo.h @@ -84,6 +84,8 @@ struct PainterInfo { MetricsBase base; /// Painter & pain; + /// Whether the text at this point is right-to-left (for InsetNewline) + bool ltr_pos; }; diff --git a/src/rowpainter.C b/src/rowpainter.C index 7c765847e3..f69d693f85 100644 --- a/src/rowpainter.C +++ b/src/rowpainter.C @@ -200,6 +200,7 @@ void RowPainter::paintInset(pos_type const pos) BOOST_ASSERT(inset); PainterInfo pi(const_cast(&bv_), pain_); pi.base.font = getFont(pos); + pi.ltr_pos = (text_.bidi.level(pos) % 2 == 0); theCoords.insets_.add(inset, int(x_), yo_ + row_.baseline()); inset->drawSelection(pi, int(x_), yo_ + row_.baseline()); inset->draw(pi, int(x_), yo_ + row_.baseline()); diff --git a/src/text.C b/src/text.C index 3dec428f4d..20c889266b 100644 --- a/src/text.C +++ b/src/text.C @@ -441,9 +441,6 @@ int LyXText::height() 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); return singleWidth(par, pos, c, getFont(par, pos)); }