Code cleanup: split out RowPainter::paintFirst() in three and de-indent.

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@40087 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Abdelrazak Younes 2011-10-30 09:16:30 +00:00
parent a32c12834b
commit 47b28d4511
2 changed files with 108 additions and 87 deletions

View File

@ -547,15 +547,13 @@ int RowPainter::paintAppendixStart(int y)
void RowPainter::paintFirst() void RowPainter::paintFirst()
{ {
ParagraphParameters const & pparams = par_.params(); BufferParams const & bparams = pi_.base.bv->buffer().params();
Buffer const & buffer = pi_.base.bv->buffer();
BufferParams const & bparams = buffer.params();
Layout const & layout = par_.layout(); Layout const & layout = par_.layout();
int y_top = 0; int y_top = 0;
// start of appendix? // start of appendix?
if (pparams.startOfAppendix()) if (par_.params().startOfAppendix())
y_top += paintAppendixStart(yo_ - row_.ascent() + 2 * defaultRowHeight()); y_top += paintAppendixStart(yo_ - row_.ascent() + 2 * defaultRowHeight());
if (bparams.paragraph_separation == BufferParams::ParagraphSkipSeparation if (bparams.paragraph_separation == BufferParams::ParagraphSkipSeparation
@ -573,21 +571,38 @@ void RowPainter::paintFirst()
} }
} }
bool const is_rtl = text_.isRTL(par_);
bool const is_seq = text_.isFirstInSequence(pit_); bool const is_seq = text_.isFirstInSequence(pit_);
//lyxerr << "paintFirst: " << par_.id() << " is_seq: " << is_seq << endl; //lyxerr << "paintFirst: " << par_.id() << " is_seq: " << is_seq << endl;
// should we print a label?
if (layout.labeltype >= LABEL_STATIC if (layout.labeltype >= LABEL_STATIC
&& (layout.labeltype != LABEL_STATIC && (layout.labeltype != LABEL_STATIC
|| layout.latextype != LATEX_ENVIRONMENT || layout.latextype != LATEX_ENVIRONMENT
|| is_seq)) { || is_seq)) {
paintLabel();
} else if (is_seq
&& (layout.labeltype == LABEL_TOP_ENVIRONMENT
|| layout.labeltype == LABEL_BIBLIO
|| layout.labeltype == LABEL_CENTERED_TOP_ENVIRONMENT)) {
// the labels at the top of an environment.
// More or less for bibliography
paintTopLevelLabel();
}
}
void RowPainter::paintLabel()
{
docstring const str = par_.labelString();
if (str.empty())
return;
BufferParams const & bparams = pi_.base.bv->buffer().params();
bool const is_rtl = text_.isRTL(par_);
Layout const & layout = par_.layout();
ParagraphParameters const & pparams = par_.params();
FontInfo const font = labelFont(); FontInfo const font = labelFont();
FontMetrics const & fm = theFontMetrics(font); FontMetrics const & fm = theFontMetrics(font);
docstring const str = par_.labelString();
if (!str.empty()) {
double x = x_; double x = x_;
// this is special code for the chapter layout. This is // this is special code for the chapter layout. This is
@ -625,15 +640,18 @@ void RowPainter::paintFirst()
} }
} }
// the labels at the top of an environment.
// More or less for bibliography void RowPainter::paintTopLevelLabel()
} else if (is_seq && {
(layout.labeltype == LABEL_TOP_ENVIRONMENT || BufferParams const & bparams = pi_.base.bv->buffer().params();
layout.labeltype == LABEL_BIBLIO || bool const is_rtl = text_.isRTL(par_);
layout.labeltype == LABEL_CENTERED_TOP_ENVIRONMENT)) { ParagraphParameters const & pparams = par_.params();
Layout const & layout = par_.layout();
FontInfo const font = labelFont(); FontInfo const font = labelFont();
docstring const str = par_.labelString(); docstring const str = par_.labelString();
if (!str.empty()) { if (str.empty())
return;
double spacing_val = 1.0; double spacing_val = 1.0;
if (!pparams.spacing().isDefault()) if (!pparams.spacing().isDefault())
spacing_val = pparams.spacing().getValue(); spacing_val = pparams.spacing().getValue();
@ -660,9 +678,6 @@ void RowPainter::paintFirst()
} }
pi_.pain.text(int(x), yo_ - maxdesc - labeladdon, str, font); pi_.pain.text(int(x), yo_ - maxdesc - labeladdon, str, font);
} }
}
}
/** Check if the current paragraph is the last paragraph in a /** Check if the current paragraph is the last paragraph in a
proof environment */ proof environment */

View File

@ -75,6 +75,12 @@ private:
/// return the label font for this row /// return the label font for this row
FontInfo labelFont() const; FontInfo labelFont() const;
///
void paintLabel();
///
void paintTopLevelLabel();
/// contains painting related information. /// contains painting related information.
PainterInfo & pi_; PainterInfo & pi_;