X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Frowpainter.cpp;h=a50b8a77a129b088b9db6401741d1b5d66ab6b76;hb=5183c380b7c9a3b773b289e4e97a932f34a9f091;hp=22b591e5c9132a521c5ddcb48a2f114a80c0d44f;hpb=f7cd0928ad63f5138b5c90f42a1197795faefd54;p=lyx.git diff --git a/src/rowpainter.cpp b/src/rowpainter.cpp index 22b591e5c9..a50b8a77a1 100644 --- a/src/rowpainter.cpp +++ b/src/rowpainter.cpp @@ -10,6 +10,7 @@ */ #include +#include #include "rowpainter.h" @@ -42,6 +43,7 @@ #include "support/debug.h" #include "support/textutils.h" +#include #include #include @@ -171,7 +173,7 @@ void RowPainter::paintHebrewComposeChar(pos_type & vpos, FontInfo const & font) for (pos_type i = pos - 1; i >= 0; --i) { c = par_.getChar(i); - if (!Encodings::isComposeChar_hebrew(c)) { + if (!Encodings::isHebrewComposeChar(c)) { if (isPrintableNonspace(c)) { int const width2 = pm_.singleWidth(i, text_metrics_.displayFont(pit_, i)); @@ -205,7 +207,7 @@ void RowPainter::paintArabicComposeChar(pos_type & vpos, FontInfo const & font) for (pos_type i = pos - 1; i >= 0; --i) { c = par_.getChar(i); - if (!Encodings::isComposeChar_arabic(c)) { + if (!Encodings::isArabicComposeChar(c)) { if (isPrintableNonspace(c)) { int const width2 = pm_.singleWidth(i, text_metrics_.displayFont(pit_, i)); @@ -275,10 +277,10 @@ void RowPainter::paintChars(pos_type & vpos, FontInfo const & font, * of arabic and hebrew characters, then these breaks may have * to be re-applied. - if (arabic && Encodings::isComposeChar_arabic(c)) + if (arabic && Encodings::isArabicComposeChar(c)) break; - if (hebrew && Encodings::isComposeChar_hebrew(c)) + if (hebrew && Encodings::isHebrewComposeChar(c)) break; */ @@ -343,8 +345,8 @@ void RowPainter::paintFromPos(pos_type & vpos) // draw as many chars as we can if ((!hebrew && !arabic) - || (hebrew && !Encodings::isComposeChar_hebrew(c)) - || (arabic && !Encodings::isComposeChar_arabic(c))) { + || (hebrew && !Encodings::isHebrewComposeChar(c)) + || (arabic && !Encodings::isArabicComposeChar(c))) { paintChars(vpos, orig_font.fontInfo(), hebrew, arabic); } else if (hebrew) { paintHebrewComposeChar(vpos, orig_font.fontInfo()); @@ -473,17 +475,16 @@ void RowPainter::paintFirst() y_top += paintAppendixStart(yo_ - row_.ascent() + 2 * defaultRowHeight()); Buffer const & buffer = pi_.base.bv->buffer(); + Layout const & layout = par_.layout(); - LayoutPtr const & layout = par_.layout(); - - if (buffer.params().paragraph_separation == BufferParams::PARSEP_SKIP) { + if (buffer.params().paragraph_separation == BufferParams::ParagraphSkipSeparation) { if (pit_ != 0) { - if (layout->latextype == LATEX_PARAGRAPH + if (layout.latextype == LATEX_PARAGRAPH && !par_.getDepth()) { y_top += buffer.params().getDefSkip().inPixels(*pi_.base.bv); } else { - LayoutPtr const & playout = pars_[pit_ - 1].layout(); - if (playout->latextype == LATEX_PARAGRAPH + Layout const & playout = pars_[pit_ - 1].layout(); + if (playout.latextype == LATEX_PARAGRAPH && !pars_[pit_ - 1].getDepth()) { // is it right to use defskip here, too? (AS) y_top += buffer.params().getDefSkip().inPixels(*pi_.base.bv); @@ -497,9 +498,9 @@ void RowPainter::paintFirst() //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 + if (layout.labeltype >= LABEL_STATIC + && (layout.labeltype != LABEL_STATIC + || layout.latextype != LATEX_ENVIRONMENT || is_seq)) { FontInfo const font = labelFont(); @@ -512,7 +513,7 @@ void RowPainter::paintFirst() // 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") { + if (layout.counter == "chapter") { double spacing_val = 1.0; if (!parparams.spacing().isDefault()) { spacing_val = parparams.spacing().getValue(); @@ -520,10 +521,10 @@ void RowPainter::paintFirst() spacing_val = buffer.params().spacing().getValue(); } - int const labeladdon = int(fm.maxHeight() * layout->spacing.getValue() * spacing_val); + 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(); + int const maxdesc = int(fm.maxDescent() * layout.spacing.getValue() * spacing_val) + + int(layout.parsep) * defaultRowHeight(); if (is_rtl) { x = width_ - leftMargin() - @@ -534,9 +535,9 @@ void RowPainter::paintFirst() } else { if (is_rtl) { x = width_ - leftMargin() - + fm.width(layout->labelsep); + + fm.width(layout.labelsep); } else { - x = x_ - fm.width(layout->labelsep) + x = x_ - fm.width(layout.labelsep) - fm.width(str); } @@ -547,9 +548,9 @@ void RowPainter::paintFirst() // 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)) { + (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()) { @@ -562,14 +563,14 @@ void RowPainter::paintFirst() FontMetrics const & fm = theFontMetrics(font); int const labeladdon = int(fm.maxHeight() - * layout->spacing.getValue() * spacing_val); + * layout.spacing.getValue() * spacing_val); int maxdesc = - int(fm.maxDescent() * layout->spacing.getValue() * spacing_val - + (layout->labelbottomsep * defaultRowHeight())); + int(fm.maxDescent() * layout.spacing.getValue() * spacing_val + + (layout.labelbottomsep * defaultRowHeight())); double x = x_; - if (layout->labeltype == LABEL_CENTERED_TOP_ENVIRONMENT) { + if (layout.labeltype == LABEL_CENTERED_TOP_ENVIRONMENT) { if (is_rtl) x = leftMargin(); x += (width_ - text_metrics_.rightMargin(pm_) - leftMargin()) / 2; @@ -629,7 +630,7 @@ void RowPainter::paintLast() case END_LABEL_STATIC: { FontInfo const font = labelFont(); FontMetrics const & fm = theFontMetrics(font); - docstring const & str = par_.layout()->endlabelstring(); + docstring const & str = par_.layout().endlabelstring(); double const x = is_rtl ? x_ - fm.width(str) : - text_metrics_.rightMargin(pm_) - row_.width(); @@ -674,7 +675,7 @@ void RowPainter::paintText() body_pos = 0; } - LayoutPtr const & layout = par_.layout(); + Layout const & layout = par_.layout(); bool running_strikeout = false; bool is_struckout = false; @@ -686,8 +687,8 @@ void RowPainter::paintText() if (inlineCompletionPos.inTexted() && inlineCompletionPos.text() == &text_ && inlineCompletionPos.pit() == pit_ - && inlineCompletionPos.pos() >= row_.pos() - && inlineCompletionPos.pos() <= row_.endpos()) { + && inlineCompletionPos.pos() - 1 >= row_.pos() + && inlineCompletionPos.pos() - 1 < row_.endpos()) { // draw logically behind the previous character inlineCompletionVPos = bidi_.log2vis(inlineCompletionPos.pos() - 1); } @@ -762,7 +763,7 @@ void RowPainter::paintText() if (body_pos > 0 && pos == body_pos - 1) { int const lwidth = theFontMetrics(labelFont()) - .width(layout->labelsep); + .width(layout.labelsep); x_ += row_.label_hfill + lwidth - width_pos; }