mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-25 19:07:45 +00:00
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:
parent
a32c12834b
commit
47b28d4511
@ -547,15 +547,13 @@ int RowPainter::paintAppendixStart(int y)
|
||||
|
||||
void RowPainter::paintFirst()
|
||||
{
|
||||
ParagraphParameters const & pparams = par_.params();
|
||||
Buffer const & buffer = pi_.base.bv->buffer();
|
||||
BufferParams const & bparams = buffer.params();
|
||||
BufferParams const & bparams = pi_.base.bv->buffer().params();
|
||||
Layout const & layout = par_.layout();
|
||||
|
||||
int y_top = 0;
|
||||
|
||||
// start of appendix?
|
||||
if (pparams.startOfAppendix())
|
||||
if (par_.params().startOfAppendix())
|
||||
y_top += paintAppendixStart(yo_ - row_.ascent() + 2 * defaultRowHeight());
|
||||
|
||||
if (bparams.paragraph_separation == BufferParams::ParagraphSkipSeparation
|
||||
@ -573,97 +571,114 @@ void RowPainter::paintFirst()
|
||||
}
|
||||
}
|
||||
|
||||
bool const is_rtl = text_.isRTL(par_);
|
||||
bool const is_seq = text_.isFirstInSequence(pit_);
|
||||
//lyxerr << "paintFirst: " << par_.id() << " is_seq: " << is_seq << endl;
|
||||
|
||||
// should we print a label?
|
||||
if (layout.labeltype >= LABEL_STATIC
|
||||
&& (layout.labeltype != LABEL_STATIC
|
||||
|| layout.latextype != LATEX_ENVIRONMENT
|
||||
|| is_seq)) {
|
||||
|
||||
FontInfo const font = labelFont();
|
||||
FontMetrics const & fm = theFontMetrics(font);
|
||||
|
||||
docstring const str = par_.labelString();
|
||||
if (!str.empty()) {
|
||||
double x = x_;
|
||||
|
||||
// this is special code for the chapter layout. This is
|
||||
// printed in an extra row and has a pagebreak at
|
||||
// the top.
|
||||
if (layout.counter == "chapter") {
|
||||
double spacing_val = 1.0;
|
||||
if (!pparams.spacing().isDefault()) {
|
||||
spacing_val = pparams.spacing().getValue();
|
||||
} else {
|
||||
spacing_val = bparams.spacing().getValue();
|
||||
}
|
||||
|
||||
int const labeladdon = int(fm.maxHeight() * layout.spacing.getValue() * spacing_val);
|
||||
|
||||
int const maxdesc = int(fm.maxDescent() * layout.spacing.getValue() * spacing_val)
|
||||
+ int(layout.parsep) * defaultRowHeight();
|
||||
|
||||
if (is_rtl) {
|
||||
x = width_ - leftMargin() -
|
||||
fm.width(str);
|
||||
}
|
||||
|
||||
pi_.pain.text(int(x), yo_ - maxdesc - labeladdon, str, font);
|
||||
} else {
|
||||
if (is_rtl) {
|
||||
x = width_ - leftMargin()
|
||||
+ fm.width(layout.labelsep);
|
||||
} else {
|
||||
x = x_ - fm.width(layout.labelsep)
|
||||
- fm.width(str);
|
||||
}
|
||||
|
||||
pi_.pain.text(int(x), yo_, str, font);
|
||||
}
|
||||
}
|
||||
|
||||
// the labels at the top of an environment.
|
||||
// More or less for bibliography
|
||||
} else if (is_seq &&
|
||||
(layout.labeltype == LABEL_TOP_ENVIRONMENT ||
|
||||
layout.labeltype == LABEL_BIBLIO ||
|
||||
layout.labeltype == LABEL_CENTERED_TOP_ENVIRONMENT)) {
|
||||
FontInfo const font = labelFont();
|
||||
docstring const str = par_.labelString();
|
||||
if (!str.empty()) {
|
||||
double spacing_val = 1.0;
|
||||
if (!pparams.spacing().isDefault())
|
||||
spacing_val = pparams.spacing().getValue();
|
||||
else
|
||||
spacing_val = bparams.spacing().getValue();
|
||||
|
||||
FontMetrics const & fm = theFontMetrics(font);
|
||||
|
||||
int const labeladdon = int(fm.maxHeight()
|
||||
* layout.spacing.getValue() * spacing_val);
|
||||
|
||||
int maxdesc =
|
||||
int(fm.maxDescent() * layout.spacing.getValue() * spacing_val
|
||||
+ (layout.labelbottomsep * defaultRowHeight()));
|
||||
|
||||
double x = x_;
|
||||
if (layout.labeltype == LABEL_CENTERED_TOP_ENVIRONMENT) {
|
||||
if (is_rtl)
|
||||
x = leftMargin();
|
||||
x += (width_ - text_metrics_.rightMargin(pm_) - leftMargin()) / 2;
|
||||
x -= fm.width(str) / 2;
|
||||
} else if (is_rtl) {
|
||||
x = width_ - leftMargin() - fm.width(str);
|
||||
}
|
||||
pi_.pain.text(int(x), yo_ - maxdesc - labeladdon, str, font);
|
||||
}
|
||||
&& (layout.labeltype != LABEL_STATIC
|
||||
|| layout.latextype != LATEX_ENVIRONMENT
|
||||
|| 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();
|
||||
FontMetrics const & fm = theFontMetrics(font);
|
||||
|
||||
double x = x_;
|
||||
|
||||
// this is special code for the chapter layout. This is
|
||||
// printed in an extra row and has a pagebreak at
|
||||
// the top.
|
||||
if (layout.counter == "chapter") {
|
||||
double spacing_val = 1.0;
|
||||
if (!pparams.spacing().isDefault()) {
|
||||
spacing_val = pparams.spacing().getValue();
|
||||
} else {
|
||||
spacing_val = bparams.spacing().getValue();
|
||||
}
|
||||
|
||||
int const labeladdon = int(fm.maxHeight() * layout.spacing.getValue() * spacing_val);
|
||||
|
||||
int const maxdesc = int(fm.maxDescent() * layout.spacing.getValue() * spacing_val)
|
||||
+ int(layout.parsep) * defaultRowHeight();
|
||||
|
||||
if (is_rtl) {
|
||||
x = width_ - leftMargin() -
|
||||
fm.width(str);
|
||||
}
|
||||
|
||||
pi_.pain.text(int(x), yo_ - maxdesc - labeladdon, str, font);
|
||||
} else {
|
||||
if (is_rtl) {
|
||||
x = width_ - leftMargin()
|
||||
+ fm.width(layout.labelsep);
|
||||
} else {
|
||||
x = x_ - fm.width(layout.labelsep)
|
||||
- fm.width(str);
|
||||
}
|
||||
|
||||
pi_.pain.text(int(x), yo_, str, font);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void RowPainter::paintTopLevelLabel()
|
||||
{
|
||||
BufferParams const & bparams = pi_.base.bv->buffer().params();
|
||||
bool const is_rtl = text_.isRTL(par_);
|
||||
ParagraphParameters const & pparams = par_.params();
|
||||
Layout const & layout = par_.layout();
|
||||
FontInfo const font = labelFont();
|
||||
docstring const str = par_.labelString();
|
||||
if (str.empty())
|
||||
return;
|
||||
|
||||
double spacing_val = 1.0;
|
||||
if (!pparams.spacing().isDefault())
|
||||
spacing_val = pparams.spacing().getValue();
|
||||
else
|
||||
spacing_val = bparams.spacing().getValue();
|
||||
|
||||
FontMetrics const & fm = theFontMetrics(font);
|
||||
|
||||
int const labeladdon = int(fm.maxHeight()
|
||||
* layout.spacing.getValue() * spacing_val);
|
||||
|
||||
int maxdesc =
|
||||
int(fm.maxDescent() * layout.spacing.getValue() * spacing_val
|
||||
+ (layout.labelbottomsep * defaultRowHeight()));
|
||||
|
||||
double x = x_;
|
||||
if (layout.labeltype == LABEL_CENTERED_TOP_ENVIRONMENT) {
|
||||
if (is_rtl)
|
||||
x = leftMargin();
|
||||
x += (width_ - text_metrics_.rightMargin(pm_) - leftMargin()) / 2;
|
||||
x -= fm.width(str) / 2;
|
||||
} else if (is_rtl) {
|
||||
x = width_ - leftMargin() - fm.width(str);
|
||||
}
|
||||
pi_.pain.text(int(x), yo_ - maxdesc - labeladdon, str, font);
|
||||
}
|
||||
|
||||
/** Check if the current paragraph is the last paragraph in a
|
||||
proof environment */
|
||||
static int getEndLabel(pit_type p, Text const & text)
|
||||
|
@ -75,6 +75,12 @@ private:
|
||||
/// return the label font for this row
|
||||
FontInfo labelFont() const;
|
||||
|
||||
///
|
||||
void paintLabel();
|
||||
///
|
||||
void paintTopLevelLabel();
|
||||
|
||||
|
||||
/// contains painting related information.
|
||||
PainterInfo & pi_;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user