using frontend::Painter;
using frontend::FontMetrics;
+
RowPainter::RowPainter(PainterInfo & pi,
Text const & text, pit_type pit, Row const & row, Bidi & bidi, int x, int y)
: pi_(pi), text_(text),
//lyxerr << "RowPainter: x: " << x_ << " xo: " << xo_ << " yo: " << yo_ << endl;
//row_.dump();
- LASSERT(pit >= 0, /**/);
- LASSERT(pit < int(text.paragraphs().size()), /**/);
+ LBUFERR(pit >= 0);
+ LBUFERR(pit < int(text.paragraphs().size()));
}
str.reserve(100);
str.push_back(prev_char);
+ // FIXME: Why only round brackets and why the difference to
+ // Hebrew? See also Paragraph::getUChar
if (arabic) {
char_type c = str[0];
if (c == '(')
break;
*/
+ // FIXME: Why only round brackets and why the difference to
+ // Hebrew? See also Paragraph::getUChar
if (arabic) {
if (c == '(')
c = ')';
}
}
- bool const is_seq = text_.isFirstInSequence(pit_);
+ bool const is_first =
+ text_.isFirstInSequence(pit_) || !layout.isParagraphGroup();
//lyxerr << "paintFirst: " << par_.id() << " is_seq: " << is_seq << endl;
- if (layout.labeltype >= LABEL_STATIC
- && (layout.labeltype != LABEL_STATIC
- || layout.latextype != LATEX_ENVIRONMENT
- || is_seq)) {
+ if (layout.labelIsInline()
+ && (layout.labeltype != LABEL_STATIC || is_first)) {
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
+ } else if (is_first && layout.labelIsAbove()) {
paintTopLevelLabel();
}
}
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);
}
+ (layout.labelbottomsep * defaultRowHeight()));
double x = x_;
- if (layout.labeltype == LABEL_CENTERED_TOP_ENVIRONMENT) {
+ if (layout.labeltype == LABEL_CENTERED) {
if (is_rtl)
x = leftMargin();
x += (width_ - text_metrics_.rightMargin(pm_) - leftMargin()) / 2;
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)
swap(c1, c2);
}
- if (s1.size() > 0) {
+ if (!s1.empty()) {
f.setColor(c1);
pi_.pain.text(int(x_), yo_, s1, f);
x_ += theFontMetrics(font).width(s1);
}
- if (s2.size() > 0) {
+ if (!s2.empty()) {
f.setColor(c2);
pi_.pain.text(int(x_), yo_, s2, f);
x_ += theFontMetrics(font).width(s2);