mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-22 01:59:02 +00:00
Do not require an extra pit parameter when a row is available
Now that Row has a pit() member, it is possible to use it instead of passing an extra pit_type parameter to a function which already has access to a Row.
This commit is contained in:
parent
4c19c5149d
commit
e39e4cf96b
@ -123,6 +123,11 @@ In particular, if text is painted last, it will be more visible in the
|
|||||||
presence of underlines (foreign language, change tracking, spell
|
presence of underlines (foreign language, change tracking, spell
|
||||||
check).
|
check).
|
||||||
|
|
||||||
|
** DONE remove pit argument to breakRow
|
||||||
|
|
||||||
|
There are probably other places where the pit is not needed anymore:
|
||||||
|
computeRowMetrics, labelFill, setRowHeight, isLastRow, isFirstRow
|
||||||
|
|
||||||
** Remember rtl status in the row object
|
** Remember rtl status in the row object
|
||||||
|
|
||||||
This will avoid to pass a Paragraph object to methods that do not need it.
|
This will avoid to pass a Paragraph object to methods that do not need it.
|
||||||
|
@ -2999,8 +2999,7 @@ void BufferView::checkCursorScrollOffset(PainterInfo & pi)
|
|||||||
bool const drawing = pi.pain.isDrawingEnabled();
|
bool const drawing = pi.pain.isDrawingEnabled();
|
||||||
pi.pain.setDrawingEnabled(false);
|
pi.pain.setDrawingEnabled(false);
|
||||||
// No need to care about vertical position.
|
// No need to care about vertical position.
|
||||||
RowPainter rp(pi, buffer().text(), d->cursor_.bottom().pit(), row,
|
RowPainter rp(pi, buffer().text(), row, -d->horiz_scroll_offset_, 0);
|
||||||
-d->horiz_scroll_offset_, 0);
|
|
||||||
rp.paintText();
|
rp.paintText();
|
||||||
pi.pain.setDrawingEnabled(drawing);
|
pi.pain.setDrawingEnabled(drawing);
|
||||||
}
|
}
|
||||||
|
@ -54,12 +54,12 @@ using frontend::FontMetrics;
|
|||||||
|
|
||||||
|
|
||||||
RowPainter::RowPainter(PainterInfo & pi,
|
RowPainter::RowPainter(PainterInfo & pi,
|
||||||
Text const & text, pit_type pit, Row const & row, int x, int y)
|
Text const & text, Row const & row, int x, int y)
|
||||||
: pi_(pi), text_(text),
|
: pi_(pi), text_(text),
|
||||||
text_metrics_(pi_.base.bv->textMetrics(&text)),
|
text_metrics_(pi_.base.bv->textMetrics(&text)),
|
||||||
pars_(text.paragraphs()),
|
pars_(text.paragraphs()),
|
||||||
row_(row), pit_(pit), par_(text.paragraphs()[pit]),
|
row_(row), par_(text.paragraphs()[row.pit()]),
|
||||||
pm_(text_metrics_.parMetrics(pit)), change_(pi_.change_),
|
pm_(text_metrics_.parMetrics(row.pit())), change_(pi_.change_),
|
||||||
xo_(x), yo_(y), width_(text_metrics_.width()),
|
xo_(x), yo_(y), width_(text_metrics_.width()),
|
||||||
solid_line_thickness_(1), solid_line_offset_(1),
|
solid_line_thickness_(1), solid_line_offset_(1),
|
||||||
dotted_line_thickness_(1)
|
dotted_line_thickness_(1)
|
||||||
@ -84,8 +84,8 @@ RowPainter::RowPainter(PainterInfo & pi,
|
|||||||
//lyxerr << "RowPainter: x: " << x_ << " xo: " << xo_ << " yo: " << yo_ << endl;
|
//lyxerr << "RowPainter: x: " << x_ << " xo: " << xo_ << " yo: " << yo_ << endl;
|
||||||
//row_.dump();
|
//row_.dump();
|
||||||
|
|
||||||
LBUFERR(pit >= 0);
|
LBUFERR(row.pit() >= 0);
|
||||||
LBUFERR(pit < int(text.paragraphs().size()));
|
LBUFERR(row.pit() < int(text.paragraphs().size()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -280,7 +280,7 @@ void RowPainter::paintChangeBar() const
|
|||||||
if (start == end || !par_.isChanged(start, end))
|
if (start == end || !par_.isChanged(start, end))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
int const height = text_metrics_.isLastRow(pit_, row_)
|
int const height = text_metrics_.isLastRow(row_)
|
||||||
? row_.ascent()
|
? row_.ascent()
|
||||||
: row_.height();
|
: row_.height();
|
||||||
|
|
||||||
@ -312,16 +312,16 @@ void RowPainter::paintDepthBar() const
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
depth_type prev_depth = 0;
|
depth_type prev_depth = 0;
|
||||||
if (!text_metrics_.isFirstRow(pit_, row_)) {
|
if (!text_metrics_.isFirstRow(row_)) {
|
||||||
pit_type pit2 = pit_;
|
pit_type pit2 = row_.pit();
|
||||||
if (row_.pos() == 0)
|
if (row_.pos() == 0)
|
||||||
--pit2;
|
--pit2;
|
||||||
prev_depth = pars_[pit2].getDepth();
|
prev_depth = pars_[pit2].getDepth();
|
||||||
}
|
}
|
||||||
|
|
||||||
depth_type next_depth = 0;
|
depth_type next_depth = 0;
|
||||||
if (!text_metrics_.isLastRow(pit_, row_)) {
|
if (!text_metrics_.isLastRow(row_)) {
|
||||||
pit_type pit2 = pit_;
|
pit_type pit2 = row_.pit();
|
||||||
if (row_.endpos() >= pars_[pit2].size())
|
if (row_.endpos() >= pars_[pit2].size())
|
||||||
++pit2;
|
++pit2;
|
||||||
next_depth = pars_[pit2].getDepth();
|
next_depth = pars_[pit2].getDepth();
|
||||||
@ -396,7 +396,7 @@ void RowPainter::paintFirst() const
|
|||||||
paintAppendixStart(yo_ - row_.ascent() + 2 * defaultRowHeight());
|
paintAppendixStart(yo_ - row_.ascent() + 2 * defaultRowHeight());
|
||||||
|
|
||||||
bool const is_first =
|
bool const is_first =
|
||||||
text_.isFirstInSequence(pit_) || !layout.isParagraphGroup();
|
text_.isFirstInSequence(row_.pit()) || !layout.isParagraphGroup();
|
||||||
//lyxerr << "paintFirst: " << par_.id() << " is_seq: " << is_seq << endl;
|
//lyxerr << "paintFirst: " << par_.id() << " is_seq: " << is_seq << endl;
|
||||||
|
|
||||||
if (layout.labelIsInline()
|
if (layout.labelIsInline()
|
||||||
@ -500,7 +500,7 @@ static int getEndLabel(pit_type p, Text const & text)
|
|||||||
void RowPainter::paintLast() const
|
void RowPainter::paintLast() const
|
||||||
{
|
{
|
||||||
bool const is_rtl = text_.isRTL(par_);
|
bool const is_rtl = text_.isRTL(par_);
|
||||||
int const endlabel = getEndLabel(pit_, text_);
|
int const endlabel = getEndLabel(row_.pit(), text_);
|
||||||
|
|
||||||
// paint imaginary end-of-paragraph character
|
// paint imaginary end-of-paragraph character
|
||||||
|
|
||||||
@ -626,11 +626,11 @@ void RowPainter::paintSelection() const
|
|||||||
return;
|
return;
|
||||||
Cursor const & curs = pi_.base.bv->cursor();
|
Cursor const & curs = pi_.base.bv->cursor();
|
||||||
DocIterator beg = curs.selectionBegin();
|
DocIterator beg = curs.selectionBegin();
|
||||||
beg.pit() = pit_;
|
beg.pit() = row_.pit();
|
||||||
beg.pos() = row_.sel_beg;
|
beg.pos() = row_.sel_beg;
|
||||||
|
|
||||||
DocIterator end = curs.selectionEnd();
|
DocIterator end = curs.selectionEnd();
|
||||||
end.pit() = pit_;
|
end.pit() = row_.pit();
|
||||||
end.pos() = row_.sel_end;
|
end.pos() = row_.sel_end;
|
||||||
|
|
||||||
bool const begin_boundary = beg.pos() >= row_.endpos();
|
bool const begin_boundary = beg.pos() >= row_.endpos();
|
||||||
|
@ -43,7 +43,7 @@ class RowPainter {
|
|||||||
public:
|
public:
|
||||||
/// initialise and run painter
|
/// initialise and run painter
|
||||||
RowPainter(PainterInfo & pi, Text const & text,
|
RowPainter(PainterInfo & pi, Text const & text,
|
||||||
pit_type pit, Row const & row, int x, int y);
|
Row const & row, int x, int y);
|
||||||
|
|
||||||
/// paint various parts
|
/// paint various parts
|
||||||
/// FIXME: transfer to TextMetrics
|
/// FIXME: transfer to TextMetrics
|
||||||
@ -86,7 +86,6 @@ private:
|
|||||||
Row const & row_;
|
Row const & row_;
|
||||||
|
|
||||||
/// Row's paragraph
|
/// Row's paragraph
|
||||||
pit_type const pit_;
|
|
||||||
Paragraph const & par_;
|
Paragraph const & par_;
|
||||||
ParagraphMetrics const & pm_;
|
ParagraphMetrics const & pm_;
|
||||||
|
|
||||||
|
@ -445,8 +445,9 @@ bool TextMetrics::redoParagraph(pit_type const pit)
|
|||||||
Row & row = pm.rows()[row_index];
|
Row & row = pm.rows()[row_index];
|
||||||
row.pit(pit);
|
row.pit(pit);
|
||||||
row.pos(first);
|
row.pos(first);
|
||||||
need_new_row = breakRow(row, right_margin, pit);
|
row.pit(pit);
|
||||||
setRowHeight(row, pit);
|
need_new_row = breakRow(row, right_margin);
|
||||||
|
setRowHeight(row);
|
||||||
row.setChanged(false);
|
row.setChanged(false);
|
||||||
if (row_index || row.endpos() < par.size()
|
if (row_index || row.endpos() < par.size()
|
||||||
|| (row.right_boundary() && par.inInset().lyxCode() != CELL_CODE)) {
|
|| (row.right_boundary() && par.inInset().lyxCode() != CELL_CODE)) {
|
||||||
@ -463,7 +464,7 @@ bool TextMetrics::redoParagraph(pit_type const pit)
|
|||||||
dim_.wid = max_width_;
|
dim_.wid = max_width_;
|
||||||
}
|
}
|
||||||
int const max_row_width = max(dim_.wid, row.width());
|
int const max_row_width = max(dim_.wid, row.width());
|
||||||
computeRowMetrics(pit, row, max_row_width);
|
computeRowMetrics(row, max_row_width);
|
||||||
first = row.endpos();
|
first = row.endpos();
|
||||||
++row_index;
|
++row_index;
|
||||||
|
|
||||||
@ -563,13 +564,12 @@ LyXAlignment TextMetrics::getAlign(Paragraph const & par, Row const & row) const
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void TextMetrics::computeRowMetrics(pit_type const pit,
|
void TextMetrics::computeRowMetrics(Row & row, int width) const
|
||||||
Row & row, int width) const
|
|
||||||
{
|
{
|
||||||
row.label_hfill = 0;
|
row.label_hfill = 0;
|
||||||
row.separator = 0;
|
row.separator = 0;
|
||||||
|
|
||||||
Paragraph const & par = text_->getPar(pit);
|
Paragraph const & par = text_->getPar(row.pit());
|
||||||
|
|
||||||
int const w = width - row.right_margin - row.width();
|
int const w = width - row.right_margin - row.width();
|
||||||
// FIXME: put back this assertion when the crash on new doc is solved.
|
// FIXME: put back this assertion when the crash on new doc is solved.
|
||||||
@ -593,11 +593,11 @@ void TextMetrics::computeRowMetrics(pit_type const pit,
|
|||||||
++nlh;
|
++nlh;
|
||||||
|
|
||||||
if (nlh && !par.getLabelWidthString().empty())
|
if (nlh && !par.getLabelWidthString().empty())
|
||||||
row.label_hfill = labelFill(pit, row) / double(nlh);
|
row.label_hfill = labelFill(row) / double(nlh);
|
||||||
}
|
}
|
||||||
|
|
||||||
// are there any hfills in the row?
|
// are there any hfills in the row?
|
||||||
ParagraphMetrics & pm = par_metrics_[pit];
|
ParagraphMetrics & pm = par_metrics_[row.pit()];
|
||||||
int nh = numberOfHfills(row, pm, par.beginOfBody());
|
int nh = numberOfHfills(row, pm, par.beginOfBody());
|
||||||
int hfill = 0;
|
int hfill = 0;
|
||||||
int hfill_rem = 0;
|
int hfill_rem = 0;
|
||||||
@ -674,9 +674,9 @@ void TextMetrics::computeRowMetrics(pit_type const pit,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int TextMetrics::labelFill(pit_type const pit, Row const & row) const
|
int TextMetrics::labelFill(Row const & row) const
|
||||||
{
|
{
|
||||||
Paragraph const & par = text_->getPar(pit);
|
Paragraph const & par = text_->getPar(row.pit());
|
||||||
LBUFERR(par.beginOfBody() > 0 || par.isEnvSeparator(0));
|
LBUFERR(par.beginOfBody() > 0 || par.isEnvSeparator(0));
|
||||||
|
|
||||||
int w = 0;
|
int w = 0;
|
||||||
@ -787,9 +787,9 @@ private:
|
|||||||
* very sensitive to small changes :) Note that part of the
|
* very sensitive to small changes :) Note that part of the
|
||||||
* intelligence is also in Row::shortenIfNeeded.
|
* intelligence is also in Row::shortenIfNeeded.
|
||||||
*/
|
*/
|
||||||
bool TextMetrics::breakRow(Row & row, int const right_margin, pit_type const pit) const
|
bool TextMetrics::breakRow(Row & row, int const right_margin) const
|
||||||
{
|
{
|
||||||
Paragraph const & par = text_->getPar(pit);
|
Paragraph const & par = text_->getPar(row.pit());
|
||||||
pos_type const end = par.size();
|
pos_type const end = par.size();
|
||||||
pos_type const pos = row.pos();
|
pos_type const pos = row.pos();
|
||||||
pos_type const body_pos = par.beginOfBody();
|
pos_type const body_pos = par.beginOfBody();
|
||||||
@ -797,7 +797,7 @@ bool TextMetrics::breakRow(Row & row, int const right_margin, pit_type const pit
|
|||||||
bool need_new_row = false;
|
bool need_new_row = false;
|
||||||
|
|
||||||
row.clear();
|
row.clear();
|
||||||
row.left_margin = leftMargin(max_width_, pit, pos);
|
row.left_margin = leftMargin(max_width_, row.pit(), pos);
|
||||||
row.right_margin = right_margin;
|
row.right_margin = right_margin;
|
||||||
if (is_rtl)
|
if (is_rtl)
|
||||||
swap(row.left_margin, row.right_margin);
|
swap(row.left_margin, row.right_margin);
|
||||||
@ -823,13 +823,13 @@ bool TextMetrics::breakRow(Row & row, int const right_margin, pit_type const pit
|
|||||||
// check for possible inline completion
|
// check for possible inline completion
|
||||||
DocIterator const & ic_it = bv_->inlineCompletionPos();
|
DocIterator const & ic_it = bv_->inlineCompletionPos();
|
||||||
pos_type ic_pos = -1;
|
pos_type ic_pos = -1;
|
||||||
if (ic_it.inTexted() && ic_it.text() == text_ && ic_it.pit() == pit)
|
if (ic_it.inTexted() && ic_it.text() == text_ && ic_it.pit() == row.pit())
|
||||||
ic_pos = ic_it.pos();
|
ic_pos = ic_it.pos();
|
||||||
|
|
||||||
// Now we iterate through until we reach the right margin
|
// Now we iterate through until we reach the right margin
|
||||||
// or the end of the par, then build a representation of the row.
|
// or the end of the par, then build a representation of the row.
|
||||||
pos_type i = pos;
|
pos_type i = pos;
|
||||||
FontIterator fi = FontIterator(*this, par, pit, pos);
|
FontIterator fi = FontIterator(*this, par, row.pit(), pos);
|
||||||
do {
|
do {
|
||||||
// this can happen for an empty row after a newline
|
// this can happen for an empty row after a newline
|
||||||
if (i >= end)
|
if (i >= end)
|
||||||
@ -849,7 +849,7 @@ bool TextMetrics::breakRow(Row & row, int const right_margin, pit_type const pit
|
|||||||
// this is needed to make sure that the row width is correct
|
// this is needed to make sure that the row width is correct
|
||||||
row.finalizeLast();
|
row.finalizeLast();
|
||||||
int const add = max(fm.width(par.layout().labelsep),
|
int const add = max(fm.width(par.layout().labelsep),
|
||||||
labelEnd(pit) - row.width());
|
labelEnd(row.pit()) - row.width());
|
||||||
row.addSpace(i, add, *fi, par.lookupChange(i));
|
row.addSpace(i, add, *fi, par.lookupChange(i));
|
||||||
} else if (c == '\t')
|
} else if (c == '\t')
|
||||||
row.addSpace(i, theFontMetrics(*fi).width(from_ascii(" ")),
|
row.addSpace(i, theFontMetrics(*fi).width(from_ascii(" ")),
|
||||||
@ -906,11 +906,11 @@ bool TextMetrics::breakRow(Row & row, int const right_margin, pit_type const pit
|
|||||||
// End of paragraph marker
|
// End of paragraph marker
|
||||||
ParagraphList const & pars = text_->paragraphs();
|
ParagraphList const & pars = text_->paragraphs();
|
||||||
if (lyxrc.paragraph_markers && !need_new_row
|
if (lyxrc.paragraph_markers && !need_new_row
|
||||||
&& i == end && size_type(pit + 1) < pars.size()) {
|
&& i == end && size_type(row.pit() + 1) < pars.size()) {
|
||||||
// add a virtual element for the end-of-paragraph
|
// add a virtual element for the end-of-paragraph
|
||||||
// marker; it is shown on screen, but does not exist
|
// marker; it is shown on screen, but does not exist
|
||||||
// in the paragraph.
|
// in the paragraph.
|
||||||
Font f(text_->layoutFont(pit));
|
Font f(text_->layoutFont(row.pit()));
|
||||||
f.fontInfo().setColor(Color_paragraphmarker);
|
f.fontInfo().setColor(Color_paragraphmarker);
|
||||||
BufferParams const & bparams
|
BufferParams const & bparams
|
||||||
= text_->inset().buffer().params();
|
= text_->inset().buffer().params();
|
||||||
@ -931,16 +931,15 @@ bool TextMetrics::breakRow(Row & row, int const right_margin, pit_type const pit
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void TextMetrics::setRowHeight(Row & row, pit_type const pit,
|
void TextMetrics::setRowHeight(Row & row, bool topBottomSpace) const
|
||||||
bool topBottomSpace) const
|
|
||||||
{
|
{
|
||||||
Paragraph const & par = text_->getPar(pit);
|
Paragraph const & par = text_->getPar(row.pit());
|
||||||
Layout const & layout = par.layout();
|
Layout const & layout = par.layout();
|
||||||
double const spacing_val = layout.spacing.getValue()
|
double const spacing_val = layout.spacing.getValue()
|
||||||
* text_->spacing(par);
|
* text_->spacing(par);
|
||||||
|
|
||||||
// Initial value for ascent (useful if row is empty).
|
// Initial value for ascent (useful if row is empty).
|
||||||
Font const font = displayFont(pit, row.pos());
|
Font const font = displayFont(row.pit(), row.pos());
|
||||||
FontMetrics const & fm = theFontMetrics(font);
|
FontMetrics const & fm = theFontMetrics(font);
|
||||||
int maxasc = int(fm.maxAscent() * spacing_val);
|
int maxasc = int(fm.maxAscent() * spacing_val);
|
||||||
int maxdes = int(fm.maxDescent() * spacing_val);
|
int maxdes = int(fm.maxDescent() * spacing_val);
|
||||||
@ -978,10 +977,10 @@ void TextMetrics::setRowHeight(Row & row, pit_type const pit,
|
|||||||
if (bufparams.paragraph_separation == BufferParams::ParagraphSkipSeparation
|
if (bufparams.paragraph_separation == BufferParams::ParagraphSkipSeparation
|
||||||
&& !inset.getLayout().parbreakIsNewline()
|
&& !inset.getLayout().parbreakIsNewline()
|
||||||
&& !par.layout().parbreak_is_newline
|
&& !par.layout().parbreak_is_newline
|
||||||
&& pit > 0
|
&& row.pit() > 0
|
||||||
&& ((layout.isParagraph() && par.getDepth() == 0)
|
&& ((layout.isParagraph() && par.getDepth() == 0)
|
||||||
|| (pars[pit - 1].layout().isParagraph()
|
|| (pars[row.pit() - 1].layout().isParagraph()
|
||||||
&& pars[pit - 1].getDepth() == 0))) {
|
&& pars[row.pit() - 1].getDepth() == 0))) {
|
||||||
maxasc += bufparams.getDefSkip().inPixels(*bv_);
|
maxasc += bufparams.getDefSkip().inPixels(*bv_);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -990,7 +989,7 @@ void TextMetrics::setRowHeight(Row & row, pit_type const pit,
|
|||||||
|
|
||||||
// special code for the top label
|
// special code for the top label
|
||||||
if (layout.labelIsAbove()
|
if (layout.labelIsAbove()
|
||||||
&& (!layout.isParagraphGroup() || text_->isFirstInSequence(pit))
|
&& (!layout.isParagraphGroup() || text_->isFirstInSequence(row.pit()))
|
||||||
&& !par.labelString().empty()) {
|
&& !par.labelString().empty()) {
|
||||||
FontInfo labelfont = text_->labelFont(par);
|
FontInfo labelfont = text_->labelFont(par);
|
||||||
FontMetrics const & lfm = theFontMetrics(labelfont);
|
FontMetrics const & lfm = theFontMetrics(labelfont);
|
||||||
@ -1005,24 +1004,24 @@ void TextMetrics::setRowHeight(Row & row, pit_type const pit,
|
|||||||
// a section, or between the items of a itemize or enumerate
|
// a section, or between the items of a itemize or enumerate
|
||||||
// environment.
|
// environment.
|
||||||
|
|
||||||
pit_type prev = text_->depthHook(pit, par.getDepth());
|
pit_type prev = text_->depthHook(row.pit(), par.getDepth());
|
||||||
Paragraph const & prevpar = pars[prev];
|
Paragraph const & prevpar = pars[prev];
|
||||||
if (prev != pit
|
if (prev != row.pit()
|
||||||
&& prevpar.layout() == layout
|
&& prevpar.layout() == layout
|
||||||
&& prevpar.getDepth() == par.getDepth()
|
&& prevpar.getDepth() == par.getDepth()
|
||||||
&& prevpar.getLabelWidthString()
|
&& prevpar.getLabelWidthString()
|
||||||
== par.getLabelWidthString()) {
|
== par.getLabelWidthString()) {
|
||||||
layoutasc = layout.itemsep * dh;
|
layoutasc = layout.itemsep * dh;
|
||||||
} else if (pit != 0 || row.pos() != 0) {
|
} else if (row.pit() != 0 || row.pos() != 0) {
|
||||||
if (layout.topsep > 0)
|
if (layout.topsep > 0)
|
||||||
layoutasc = layout.topsep * dh;
|
layoutasc = layout.topsep * dh;
|
||||||
}
|
}
|
||||||
|
|
||||||
prev = text_->outerHook(pit);
|
prev = text_->outerHook(row.pit());
|
||||||
if (prev != pit_type(pars.size())) {
|
if (prev != pit_type(pars.size())) {
|
||||||
maxasc += int(pars[prev].layout().parsep * dh);
|
maxasc += int(pars[prev].layout().parsep * dh);
|
||||||
} else if (pit != 0) {
|
} else if (row.pit() != 0) {
|
||||||
Paragraph const & prevpar = pars[pit - 1];
|
Paragraph const & prevpar = pars[row.pit() - 1];
|
||||||
if (prevpar.getDepth() != 0 ||
|
if (prevpar.getDepth() != 0 ||
|
||||||
prevpar.layout() == layout) {
|
prevpar.layout() == layout) {
|
||||||
maxasc += int(layout.parsep * dh);
|
maxasc += int(layout.parsep * dh);
|
||||||
@ -1035,9 +1034,9 @@ void TextMetrics::setRowHeight(Row & row, pit_type const pit,
|
|||||||
// add the layout spaces, for example before and after
|
// add the layout spaces, for example before and after
|
||||||
// a section, or between the items of a itemize or enumerate
|
// a section, or between the items of a itemize or enumerate
|
||||||
// environment
|
// environment
|
||||||
pit_type nextpit = pit + 1;
|
pit_type nextpit = row.pit() + 1;
|
||||||
if (nextpit != pit_type(pars.size())) {
|
if (nextpit != pit_type(pars.size())) {
|
||||||
pit_type cpit = pit;
|
pit_type cpit = row.pit();
|
||||||
|
|
||||||
if (pars[cpit].getDepth() > pars[nextpit].getDepth()) {
|
if (pars[cpit].getDepth() > pars[nextpit].getDepth()) {
|
||||||
double usual = pars[cpit].layout().bottomsep * dh;
|
double usual = pars[cpit].layout().bottomsep * dh;
|
||||||
@ -1056,8 +1055,8 @@ void TextMetrics::setRowHeight(Row & row, pit_type const pit,
|
|||||||
}
|
}
|
||||||
|
|
||||||
// incalculate the layout spaces
|
// incalculate the layout spaces
|
||||||
maxasc += int(layoutasc * 2 / (2 + pars[pit].getDepth()));
|
maxasc += int(layoutasc * 2 / (2 + pars[row.pit()].getDepth()));
|
||||||
maxdes += int(layoutdesc * 2 / (2 + pars[pit].getDepth()));
|
maxdes += int(layoutdesc * 2 / (2 + pars[row.pit()].getDepth()));
|
||||||
|
|
||||||
row.dimension().asc = maxasc + labeladdon;
|
row.dimension().asc = maxasc + labeladdon;
|
||||||
row.dimension().des = maxdes;
|
row.dimension().des = maxdes;
|
||||||
@ -1593,17 +1592,17 @@ void TextMetrics::deleteLineForward(Cursor & cur)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool TextMetrics::isLastRow(pit_type pit, Row const & row) const
|
bool TextMetrics::isLastRow(Row const & row) const
|
||||||
{
|
{
|
||||||
ParagraphList const & pars = text_->paragraphs();
|
ParagraphList const & pars = text_->paragraphs();
|
||||||
return row.endpos() >= pars[pit].size()
|
return row.endpos() >= pars[row.pit()].size()
|
||||||
&& pit + 1 == pit_type(pars.size());
|
&& row.pit() + 1 == pit_type(pars.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool TextMetrics::isFirstRow(pit_type pit, Row const & row) const
|
bool TextMetrics::isFirstRow(Row const & row) const
|
||||||
{
|
{
|
||||||
return row.pos() == 0 && pit == 0;
|
return row.pos() == 0 && row.pit() == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1843,7 +1842,7 @@ void TextMetrics::drawParagraph(PainterInfo & pi, pit_type const pit, int const
|
|||||||
if (i)
|
if (i)
|
||||||
y += row.ascent();
|
y += row.ascent();
|
||||||
|
|
||||||
RowPainter rp(pi, *text_, pit, row, row_x, y);
|
RowPainter rp(pi, *text_, row, row_x, y);
|
||||||
|
|
||||||
rp.paintOnlyInsets();
|
rp.paintOnlyInsets();
|
||||||
y += row.descent();
|
y += row.descent();
|
||||||
@ -1887,7 +1886,7 @@ void TextMetrics::drawParagraph(PainterInfo & pi, pit_type const pit, int const
|
|||||||
if (i)
|
if (i)
|
||||||
y += row.ascent();
|
y += row.ascent();
|
||||||
|
|
||||||
RowPainter rp(pi, *text_, pit, row, row_x, y);
|
RowPainter rp(pi, *text_, row, row_x, y);
|
||||||
|
|
||||||
// It is not needed to draw on screen if we are not inside.
|
// It is not needed to draw on screen if we are not inside.
|
||||||
bool const inside = (y + row.descent() >= 0
|
bool const inside = (y + row.descent() >= 0
|
||||||
@ -2012,7 +2011,7 @@ void TextMetrics::completionPosAndDim(Cursor const & cur, int & x, int & y,
|
|||||||
Row row;
|
Row row;
|
||||||
row.pos(wordStart.pos());
|
row.pos(wordStart.pos());
|
||||||
row.endpos(bvcur.pos());
|
row.endpos(bvcur.pos());
|
||||||
setRowHeight(row, bvcur.pit(), false);
|
setRowHeight(row, false);
|
||||||
dim = row.dimension();
|
dim = row.dimension();
|
||||||
dim.wid = abs(rxy.x_ - lxy.x_);
|
dim.wid = abs(rxy.x_ - lxy.x_);
|
||||||
|
|
||||||
|
@ -116,15 +116,14 @@ public:
|
|||||||
/// Returns the height of the row (width member is set to 0).
|
/// Returns the height of the row (width member is set to 0).
|
||||||
/// If \c topBottomSpace is true, extra space is added for the
|
/// If \c topBottomSpace is true, extra space is added for the
|
||||||
/// top and bottom row.
|
/// top and bottom row.
|
||||||
void setRowHeight(Row & row, pit_type const pit,
|
void setRowHeight(Row & row, bool topBottomSpace = true) const;
|
||||||
bool topBottomSpace = true) const;
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
///
|
///
|
||||||
ParagraphMetrics & parMetrics(pit_type, bool redo_paragraph);
|
ParagraphMetrics & parMetrics(pit_type, bool redo_paragraph);
|
||||||
|
|
||||||
/// the minimum space a manual label needs on the screen in pixels
|
/// the minimum space a manual label needs on the screen in pixels
|
||||||
int labelFill(pit_type const pit, Row const & row) const;
|
int labelFill(Row const & row) const;
|
||||||
|
|
||||||
/// FIXME??
|
/// FIXME??
|
||||||
int labelEnd(pit_type const pit) const;
|
int labelEnd(pit_type const pit) const;
|
||||||
@ -132,13 +131,13 @@ private:
|
|||||||
/// sets row.end to the pos value *after* which a row should break.
|
/// sets row.end to the pos value *after* which a row should break.
|
||||||
/// for example, the pos after which isNewLine(pos) == true
|
/// for example, the pos after which isNewLine(pos) == true
|
||||||
/// \return true when another row is required (after a newline)
|
/// \return true when another row is required (after a newline)
|
||||||
bool breakRow(Row & row, int right_margin, pit_type const pit) const;
|
bool breakRow(Row & row, int right_margin) const;
|
||||||
|
|
||||||
// Expand the alignment of row \param row in paragraph \param par
|
// Expand the alignment of row \param row in paragraph \param par
|
||||||
LyXAlignment getAlign(Paragraph const & par, Row const & row) const;
|
LyXAlignment getAlign(Paragraph const & par, Row const & row) const;
|
||||||
/** this calculates the specified parameters. needed when setting
|
/** this calculates the specified parameters. needed when setting
|
||||||
* the cursor and when creating a visible row */
|
* the cursor and when creating a visible row */
|
||||||
void computeRowMetrics(pit_type pit, Row & row, int width) const;
|
void computeRowMetrics(Row & row, int width) const;
|
||||||
|
|
||||||
// Helper function for the other checkInsetHit method.
|
// Helper function for the other checkInsetHit method.
|
||||||
InsetList::InsetTable * checkInsetHit(pit_type pit, int x, int y);
|
InsetList::InsetTable * checkInsetHit(pit_type pit, int x, int y);
|
||||||
@ -208,9 +207,9 @@ public:
|
|||||||
void deleteLineForward(Cursor & cur);
|
void deleteLineForward(Cursor & cur);
|
||||||
|
|
||||||
/// is this row the last in the text?
|
/// is this row the last in the text?
|
||||||
bool isLastRow(pit_type pit, Row const & row) const;
|
bool isLastRow(Row const & row) const;
|
||||||
/// is this row the first in the text?
|
/// is this row the first in the text?
|
||||||
bool isFirstRow(pit_type pit, Row const & row) const;
|
bool isFirstRow(Row const & row) const;
|
||||||
|
|
||||||
/// Returns an inset if inset was hit, or 0 if not.
|
/// Returns an inset if inset was hit, or 0 if not.
|
||||||
/// \warning This method is not recursive! It will return the
|
/// \warning This method is not recursive! It will return the
|
||||||
|
Loading…
Reference in New Issue
Block a user