Eliminate the hard-coded special handing of chapters. We'll use the

new Above LabelType instead.
This commit is contained in:
Richard Heck 2013-02-09 11:13:40 -05:00
parent 32b0e8cbdb
commit e7827264e7
2 changed files with 7 additions and 43 deletions

View File

@ -1102,15 +1102,6 @@ Dimension TextMetrics::rowHeight(pit_type const pit, pos_type const first,
if (par.params().startOfAppendix())
maxasc += int(3 * dh);
// This is special code for the chapter, since the label of this
// layout is printed in an extra row
if (layout.counter == "chapter"
&& !par.params().labelString().empty()) {
labeladdon = int(labelfont_metrics.maxHeight()
* layout.spacing.getValue()
* text_->spacing(par));
}
// special code for the top label
if (layout.labelIsAbove()
&& (!layout.isParagraphGroup() || text_->isFirstInSequence(pit))

View File

@ -605,48 +605,21 @@ void RowPainter::paintLabel()
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);
if (is_rtl) {
x = width_ - leftMargin()
+ fm.width(layout.labelsep);
} 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);
x = x_ - fm.width(layout.labelsep)
- fm.width(str);
}
pi_.pain.text(int(x), yo_, str, font);
}