mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-10 20:04:46 +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()
|
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,97 +571,114 @@ 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();
|
||||||
FontInfo const font = labelFont();
|
} else if (is_seq
|
||||||
FontMetrics const & fm = theFontMetrics(font);
|
&& (layout.labeltype == LABEL_TOP_ENVIRONMENT
|
||||||
|
|| layout.labeltype == LABEL_BIBLIO
|
||||||
docstring const str = par_.labelString();
|
|| layout.labeltype == LABEL_CENTERED_TOP_ENVIRONMENT)) {
|
||||||
if (!str.empty()) {
|
// the labels at the top of an environment.
|
||||||
double x = x_;
|
// More or less for bibliography
|
||||||
|
paintTopLevelLabel();
|
||||||
// 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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
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
|
/** Check if the current paragraph is the last paragraph in a
|
||||||
proof environment */
|
proof environment */
|
||||||
static int getEndLabel(pit_type p, Text const & text)
|
static int getEndLabel(pit_type p, Text const & text)
|
||||||
|
@ -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_;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user