X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Frowpainter.cpp;h=cfa7f516d4c462e4eb1b47f29ac201ad0dc5a9b5;hb=4db3e641ed6765e005343010cb90ee8af26f8f99;hp=c33bd799174cc6c1896366ed2aada6ed6a2a6125;hpb=c671703f05a74e5b005666c29aff2626931cb239;p=lyx.git diff --git a/src/rowpainter.cpp b/src/rowpainter.cpp index c33bd79917..cfa7f516d4 100644 --- a/src/rowpainter.cpp +++ b/src/rowpainter.cpp @@ -54,6 +54,7 @@ namespace lyx { 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), @@ -90,8 +91,8 @@ RowPainter::RowPainter(PainterInfo & pi, //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())); } @@ -237,6 +238,8 @@ void RowPainter::paintChars(pos_type & vpos, FontInfo const & font, 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 == '(') @@ -326,6 +329,8 @@ void RowPainter::paintChars(pos_type & vpos, FontInfo const & font, break; */ + // FIXME: Why only round brackets and why the difference to + // Hebrew? See also Paragraph::getUChar if (arabic) { if (c == '(') c = ')'; @@ -581,20 +586,14 @@ void RowPainter::paintFirst() } } - 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(); } } @@ -606,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); } @@ -678,7 +650,7 @@ void RowPainter::paintTopLevelLabel() + (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; @@ -689,6 +661,7 @@ void RowPainter::paintTopLevelLabel() 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) @@ -1107,13 +1080,13 @@ void RowPainter::paintInlineCompletion(Font const & font) 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);