}
-FontInfo const RowPainter::getLabelFont() const
+FontInfo RowPainter::labelFont() const
{
- return text_.getLabelFont(pi_.base.bv->buffer(), par_);
+ return text_.labelFont(pi_.base.bv->buffer(), par_);
}
void RowPainter::paintInset(Inset const * inset, pos_type const pos)
{
- Font const font = text_metrics_.getDisplayFont(pit_, pos);
+ Font const font = text_metrics_.displayFont(pit_, pos);
BOOST_ASSERT(inset);
// Backup full_repaint status because some insets (InsetTabular)
if (!Encodings::isComposeChar_hebrew(c)) {
if (isPrintableNonspace(c)) {
int const width2 = pm_.singleWidth(i,
- text_metrics_.getDisplayFont(pit_, i));
+ text_metrics_.displayFont(pit_, i));
dx = (c == 0x05e8 || // resh
c == 0x05d3) // dalet
? width2 - width
if (!Encodings::isComposeChar_arabic(c)) {
if (isPrintableNonspace(c)) {
int const width2 = pm_.singleWidth(i,
- text_metrics_.getDisplayFont(pit_, i));
+ text_metrics_.displayFont(pit_, i));
dx = (width2 - width) / 2;
}
break;
void RowPainter::paintFromPos(pos_type & vpos)
{
pos_type const pos = bidi_.vis2log(vpos);
- Font const orig_font = text_metrics_.getDisplayFont(pit_, pos);
+ Font const orig_font = text_metrics_.displayFont(pit_, pos);
double const orig_x = x_;
// usual characters, no insets
|| layout->latextype != LATEX_ENVIRONMENT
|| is_seq)) {
- FontInfo const font = getLabelFont();
+ FontInfo const font = labelFont();
FontMetrics const & fm = theFontMetrics(font);
- docstring const str = par_.getLabelstring();
+ docstring const str = par_.labelString();
if (!str.empty()) {
double x = x_;
(layout->labeltype == LABEL_TOP_ENVIRONMENT ||
layout->labeltype == LABEL_BIBLIO ||
layout->labeltype == LABEL_CENTERED_TOP_ENVIRONMENT)) {
- FontInfo const font = getLabelFont();
- if (!par_.getLabelstring().empty()) {
- docstring const str = par_.getLabelstring();
+ FontInfo const font = labelFont();
+ docstring const str = par_.labelString();
+ if (!str.empty()) {
double spacing_val = 1.0;
if (!parparams.spacing().isDefault())
spacing_val = parparams.spacing().getValue();
switch (endlabel) {
case END_LABEL_BOX:
case END_LABEL_FILLED_BOX: {
- FontInfo const font = getLabelFont();
+ FontInfo const font = labelFont();
FontMetrics const & fm = theFontMetrics(font);
int const size = int(0.75 * fm.maxAscent());
int const y = yo_ - size;
}
case END_LABEL_STATIC: {
- FontInfo const font = getLabelFont();
+ FontInfo const font = labelFont();
FontMetrics const & fm = theFontMetrics(font);
docstring const & str = par_.layout()->endlabelstring();
double const x = is_rtl ?
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);
}
// Use font span to speed things up, see above
if (vpos < font_span.first || vpos > font_span.last) {
font_span = par_.fontSpan(vpos);
- font = text_metrics_.getDisplayFont(pit_, vpos);
+ font = text_metrics_.displayFont(pit_, vpos);
// split font span if inline completion is inside
if (font_span.first <= inlineCompletionVPos
}
if (body_pos > 0 && pos == body_pos - 1) {
- int const lwidth = theFontMetrics(getLabelFont())
+ int const lwidth = theFontMetrics(labelFont())
.width(layout->labelsep);
x_ += row_.label_hfill + lwidth - width_pos;
paintInlineCompletion(font);
if (par_.isSeparator(pos)) {
- Font const orig_font = text_metrics_.getDisplayFont(pit_, pos);
+ Font const orig_font = text_metrics_.displayFont(pit_, pos);
double const orig_x = x_;
x_ += width_pos;
if (pos >= body_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);
- pi_.pain.text(x_, yo_, s1, f);
+ 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);
- pi_.pain.text(x_, yo_, s2, f);
+ f.setColor(c2);
+ pi_.pain.text(int(x_), yo_, s2, f);
x_ += theFontMetrics(font).width(s2);
}
}