commit a8fd12d18c1ee9ff3ebb05fb05e48b79dc31de96
Author: Jean-Marc Lasgouttes <[email protected]>
Date: Mon May 28 12:33:17 2018 +0200
Cosmetics
Use range-for in TextMetrics.cpp.
Rename InsetList::InsetTable to InsetList::Element.
---
src/InsetList.cpp | 14 +++---
src/InsetList.h | 6 +-
src/TextMetrics.cpp | 115 +++++++++++++++++++++++---------------------------
src/TextMetrics.h | 2 +-
4 files changed, 64 insertions(+), 73 deletions(-)
diff --git a/src/InsetList.cpp b/src/InsetList.cpp
index 50cf8e9..f5f8cf2 100644
--- a/src/InsetList.cpp
+++ b/src/InsetList.cpp
@@ -26,9 +26,9 @@ namespace lyx {
namespace {
-typedef InsetList::InsetTable Table;
+typedef InsetList::Element Table;
-struct InsetTablePosLess
+struct ElementPosLess
{
bool operator()(Table const & t1, Table const & t2) const
{
@@ -92,17 +92,17 @@ void InsetList::resetBuffer()
InsetList::iterator InsetList::insetIterator(pos_type pos)
{
- InsetTable search_elem(pos, 0);
+ Element search_elem(pos, 0);
return lower_bound(list_.begin(), list_.end(), search_elem,
- InsetTablePosLess());
+ ElementPosLess());
}
InsetList::const_iterator InsetList::insetIterator(pos_type pos) const
{
- InsetTable search_elem(pos, 0);
+ Element search_elem(pos, 0);
return lower_bound(list_.begin(), list_.end(), search_elem,
- InsetTablePosLess());
+ ElementPosLess());
}
@@ -114,7 +114,7 @@ void InsetList::insert(Inset * inset, pos_type pos)
LYXERR0("ERROR (InsetList::insert): "
<< "There is an inset in position: " << pos);
} else {
- list_.insert(it, InsetTable(pos, inset));
+ list_.insert(it, Element(pos, inset));
}
}
diff --git a/src/InsetList.h b/src/InsetList.h
index 36a40c7..708eab8 100644
--- a/src/InsetList.h
+++ b/src/InsetList.h
@@ -40,17 +40,17 @@ public:
void resetBuffer();
///
- class InsetTable {
+ class Element {
public:
///
- InsetTable(pos_type p, Inset * i) : pos(p), inset(i) {}
+ Element(pos_type p, Inset * i) : pos(p), inset(i) {}
///
pos_type pos;
///
Inset * inset;
};
///
- typedef std::vector<InsetTable> List;
+ typedef std::vector<Element> List;
///
typedef List::iterator iterator;
///
diff --git a/src/TextMetrics.cpp b/src/TextMetrics.cpp
index d23c09d..2a9f849 100644
--- a/src/TextMetrics.cpp
+++ b/src/TextMetrics.cpp
@@ -414,19 +414,17 @@ bool TextMetrics::redoParagraph(pit_type const pit)
par.setBeginOfBody();
Font const bufferfont = buffer.params().getFont();
CoordCache::Insets & insetCache = bv_->coordCache().insets();
- InsetList::const_iterator ii = par.insetList().begin();
- InsetList::const_iterator iend = par.insetList().end();
- for (; ii != iend; ++ii) {
+ for (auto const & e : par.insetList()) {
// FIXME Doesn't this HAVE to be non-empty?
// position already initialized?
if (!parPos.empty()) {
- parPos.pos() = ii->pos;
+ parPos.pos() = e.pos;
// A macro template would normally not be visible
// by itself. But the tex macro semantics allow
// recursion, so we artifically take the context
// after the macro template to simulate this.
- if (ii->inset->lyxCode() == MATHMACRO_CODE)
+ if (e.inset->lyxCode() == MATHMACRO_CODE)
parPos.pos()++;
}
@@ -434,7 +432,7 @@ bool TextMetrics::redoParagraph(pit_type const pit)
// substracted to the available width. The logic here is
// almost the same as in breakRow, remember keep them in sync.
int eop = 0;
- if (lyxrc.paragraph_markers && ii->pos + 1 == par.size()
+ if (lyxrc.paragraph_markers && e.pos + 1 == par.size()
&& size_type(pit + 1) < text_->paragraphs().size()) {
Font f(text_->layoutFont(pit));
// ΒΆ U+00B6 PILCROW SIGN
@@ -443,15 +441,15 @@ bool TextMetrics::redoParagraph(pit_type const pit)
// do the metric calculation
Dimension dim;
- int const w = max_width_ - leftMargin(pit, ii->pos)
+ int const w = max_width_ - leftMargin(pit, e.pos)
- right_margin - eop;
- Font const & font = ii->inset->inheritFont() ?
- displayFont(pit, ii->pos) : bufferfont;
+ Font const & font = e.inset->inheritFont() ?
+ displayFont(pit, e.pos) : bufferfont;
MacroContext mc(&buffer, parPos);
MetricsInfo mi(bv_, font.fontInfo(), w, mc);
- ii->inset->metrics(mi, dim);
- if (!insetCache.has(ii->inset) || insetCache.dim(ii->inset) !=
dim) {
- insetCache.add(ii->inset, dim);
+ e.inset->metrics(mi, dim);
+ if (!insetCache.has(e.inset) || insetCache.dim(e.inset) != dim)
{
+ insetCache.add(e.inset, dim);
changed = true;
}
}
@@ -690,22 +688,20 @@ void TextMetrics::computeRowMetrics(Row & row, int width)
const
body_pos = 0;
CoordCache::Insets & insetCache = bv_->coordCache().insets();
- Row::iterator cit = row.begin();
- Row::iterator const cend = row.end();
- for ( ; cit != cend; ++cit) {
- if (row.label_hfill && cit->endpos == body_pos
- && cit->type == Row::SPACE)
- cit->dim.wid -= int(row.label_hfill * (nlh - 1));
- if (cit->inset && pm.hfillExpansion(row, cit->pos)) {
- if (cit->pos >= body_pos) {
- cit->dim.wid += hfill;
+ for (Row::Element & e : row) {
+ if (row.label_hfill && e.endpos == body_pos
+ && e.type == Row::SPACE)
+ e.dim.wid -= int(row.label_hfill * (nlh - 1));
+ if (e.inset && pm.hfillExpansion(row, e.pos)) {
+ if (e.pos >= body_pos) {
+ e.dim.wid += hfill;
--nh;
if (nh == 0)
- cit->dim.wid += hfill_rem;
+ e.dim.wid += hfill_rem;
} else
- cit->dim.wid += int(row.label_hfill);
+ e.dim.wid += int(row.label_hfill);
// Cache the inset dimension.
- insetCache.add(cit->inset, cit->dim);
+ insetCache.add(e.inset, e.dim);
}
}
}
@@ -717,13 +713,12 @@ int TextMetrics::labelFill(Row const & row) const
LBUFERR(par.beginOfBody() > 0 || par.isEnvSeparator(0));
int w = 0;
- Row::const_iterator cit = row.begin();
- Row::const_iterator const end = row.end();
// iterate over elements before main body (except the last one,
// which is extra space).
- while (cit!= end && cit->endpos < par.beginOfBody()) {
- w += cit->dim.wid;
- ++cit;
+ for (Row::Element const & e : row) {
+ if (e.endpos >= par.beginOfBody())
+ break;
+ w += e.dim.wid;
}
docstring const & label = par.params().labelWidthString();
@@ -1102,12 +1097,12 @@ void TextMetrics::setRowHeight(Row & row) const
// Find the ascent/descent of the row contents
Row::const_iterator cit = row.begin();
Row::const_iterator cend = row.end();
- for ( ; cit != cend; ++cit) {
- if (cit->inset) {
- maxasc = max(maxasc, cit->dim.ascent());
- maxdes = max(maxdes, cit->dim.descent());
+ for (Row::Element const & e : row) {
+ if (e.inset) {
+ maxasc = max(maxasc, e.dim.ascent());
+ maxdes = max(maxdes, e.dim.descent());
} else {
- FontMetrics const & fm2 = theFontMetrics(cit->font);
+ FontMetrics const & fm2 = theFontMetrics(e.font);
maxasc = max(maxasc, int(fm2.maxAscent() *
spacing_val));
maxdes = max(maxdes, int(fm2.maxDescent() *
spacing_val));
}
@@ -1368,9 +1363,9 @@ Inset * TextMetrics::editXY(Cursor & cur, int x, int y,
cur.pit() = pit;
// Do we cover an inset?
- InsetList::InsetTable * it = checkInsetHit(pit, x, y);
+ InsetList::Element * e = checkInsetHit(pit, x, y);
- if (!it) {
+ if (!e) {
// No inset, set position in the text
bool bound = false; // is modified by getPosNearX
cur.pos() = getPosNearX(row, x, bound);
@@ -1380,11 +1375,11 @@ Inset * TextMetrics::editXY(Cursor & cur, int x, int y,
return 0;
}
- Inset * inset = it->inset;
+ Inset * inset = e->inset;
//lyxerr << "inset " << inset << " hit at x: " << x << " y: " << y <<
endl;
// Set position in front of inset
- cur.pos() = it->pos;
+ cur.pos() = e->pos;
cur.boundary(false);
cur.setTargetX(x);
@@ -1392,7 +1387,7 @@ Inset * TextMetrics::editXY(Cursor & cur, int x, int y,
Inset * edited = inset->editXY(cur, x, y);
// FIXME: it is not clear that the test on position is needed
// Remove it if/when semantics of editXY is clarified
- if (cur.text() == text_ && cur.pos() == it->pos) {
+ if (cur.text() == text_ && cur.pos() == e->pos) {
// non-editable inset, set cursor after the inset if x is
// nearer to that position (bug 9628)
bool bound = false; // is modified by getPosNearX
@@ -1446,19 +1441,19 @@ void TextMetrics::setCursorFromCoordinates(Cursor &
cur, int const x, int const
//takes screen x,y coordinates
-InsetList::InsetTable * TextMetrics::checkInsetHit(pit_type pit, int x, int y)
+InsetList::Element * TextMetrics::checkInsetHit(pit_type pit, int x, int y)
{
Paragraph const & par = text_->paragraphs()[pit];
CoordCache::Insets const & insetCache = bv_->coordCache().getInsets();
LYXERR(Debug::DEBUG, "x: " << x << " y: " << y << " pit: " << pit);
- for (auto const & it : par.insetList()) {
- LYXERR(Debug::DEBUG, "examining inset " << it.inset);
+ for (InsetList::Element const & e : par.insetList()) {
+ LYXERR(Debug::DEBUG, "examining inset " << e.inset);
- if (insetCache.covers(it.inset, x, y)) {
- LYXERR(Debug::DEBUG, "Hit inset: " << it.inset);
- return const_cast<InsetList::InsetTable *>(&it);
+ if (insetCache.covers(e.inset, x, y)) {
+ LYXERR(Debug::DEBUG, "Hit inset: " << e.inset);
+ return const_cast<InsetList::Element *>(&e);
}
}
@@ -1472,12 +1467,12 @@ Inset * TextMetrics::checkInsetHit(int x, int y)
{
pit_type const pit = getPitNearY(y);
LASSERT(pit != -1, return 0);
- InsetList::InsetTable * it = checkInsetHit(pit, x, y);
+ InsetList::Element * e = checkInsetHit(pit, x, y);
- if (!it)
+ if (!e)
return 0;
- return it->inset;
+ return e->inset;
}
@@ -1729,12 +1724,10 @@ int TextMetrics::leftMargin(pit_type const pit,
pos_type const pos) const
// same time this function is used in redoParagraph to construct
// the rows.
ParagraphMetrics const & pm = par_metrics_[pit];
- RowList::const_iterator rit = pm.rows().begin();
- RowList::const_iterator end = pm.rows().end();
int minfill = max_width_;
- for ( ; rit != end; ++rit)
- if (rit->fill() < minfill)
- minfill = rit->fill();
+ for (row : pm.rows())
+ if (row.fill() < minfill)
+ minfill = row.fill();
l_margin += bfm.signedWidth(layout.leftmargin);
l_margin += minfill;
#endif
@@ -1791,17 +1784,15 @@ void TextMetrics::draw(PainterInfo & pi, int x, int y)
const
origin_.x_ = x;
origin_.y_ = y;
- ParMetricsCache::iterator it = par_metrics_.begin();
- ParMetricsCache::iterator const pm_end = par_metrics_.end();
- y -= it->second.ascent();
- for (; it != pm_end; ++it) {
- ParagraphMetrics const & pmi = it->second;
- y += pmi.ascent();
- pit_type const pit = it->first;
+ y -= par_metrics_.begin()->second.ascent();
+ for (auto & pm_pair : par_metrics_) {
+ pit_type const pit = pm_pair.first;
+ ParagraphMetrics & pm = pm_pair.second;
+ y += pm.ascent();
// Save the paragraph position in the cache.
- it->second.setPosition(y);
+ pm.setPosition(y);
drawParagraph(pi, pit, x, y);
- y += pmi.descent();
+ y += pm.descent();
}
}
diff --git a/src/TextMetrics.h b/src/TextMetrics.h
index ae99490..369f07a 100644
--- a/src/TextMetrics.h
+++ b/src/TextMetrics.h
@@ -158,7 +158,7 @@ private:
int parBottomSpacing(pit_type pit) const;
// Helper function for the other checkInsetHit method.
- InsetList::InsetTable * checkInsetHit(pit_type pit, int x, int y);
+ InsetList::Element * checkInsetHit(pit_type pit, int x, int y);
// Temporary public: