Buffer const & buffer = pi_.base.bv->buffer();
- LayoutPtr const & layout = par_.layout();
+ Layout const & layout = par_.layout();
if (buffer.params().paragraph_separation == BufferParams::PARSEP_SKIP) {
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);
//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();
// 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();
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() -
} 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);
}
// 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()) {
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;
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();
body_pos = 0;
}
- LayoutPtr const & layout = par_.layout();
+ Layout const & layout = par_.layout();
bool running_strikeout = false;
bool is_struckout = false;
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);
}
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;
}
{
docstring completion = pi_.base.bv->inlineCompletion();
FontInfo f = font.fontInfo();
-
- // right to left?
- if (font.isRightToLeft())
- reverse(completion.begin(), completion.end());
+ bool rtl = font.isRightToLeft();
// draw the unique and the non-unique completion part
// Note: this is not time-critical as it is
size_t uniqueTo = pi_.base.bv->inlineCompletionUniqueChars();
docstring s1 = completion.substr(0, uniqueTo);
docstring s2 = completion.substr(uniqueTo);
+ ColorCode c1 = Color_inlinecompletion;
+ ColorCode c2 = Color_nonunique_inlinecompletion;
+ // right to left?
+ if (rtl) {
+ swap(s1, s2);
+ reverse(s1.begin(), s1.end());
+ reverse(s2.begin(), s2.end());
+ swap(c1, c2);
+ }
+
if (s1.size() > 0) {
- f.setColor(Color_inlinecompletion);
+ f.setColor(c1);
pi_.pain.text(int(x_), yo_, s1, f);
x_ += theFontMetrics(font).width(s1);
}
if (s2.size() > 0) {
- f.setColor(Color_nonunique_inlinecompletion);
+ f.setColor(c2);
pi_.pain.text(int(x_), yo_, s2, f);
x_ += theFontMetrics(font).width(s2);
}