void KoInlineNote::paint(QPainter &painter, QPaintDevice *pd, const QTextDocument *document, const QRectF &rect, QTextInlineObject object, int posInDocument, const QTextCharFormat &format) { Q_UNUSED(document); Q_UNUSED(object); Q_UNUSED(posInDocument); if (d->label.isEmpty()) return; QFont font(format.font(), pd); QTextLayout layout(d->label, font, pd); layout.setCacheEnabled(true); QList<QTextLayout::FormatRange> layouts; QTextLayout::FormatRange range; range.start = 0; range.length = d->label.length(); range.format = format; range.format.setVerticalAlignment(QTextCharFormat::AlignSuperScript); layouts.append(range); layout.setAdditionalFormats(layouts); QTextOption option(Qt::AlignLeft | Qt::AlignAbsolute); option.setTextDirection(object.textDirection()); layout.setTextOption(option); layout.beginLayout(); layout.createLine(); layout.endLayout(); layout.draw(&painter, rect.topLeft()); }
void KoVariable::paint(QPainter &painter, QPaintDevice *pd, const QTextDocument *document, const QRectF &rect, QTextInlineObject object, int posInDocument, const QTextCharFormat &format) { Q_D(KoVariable); Q_UNUSED(document); Q_UNUSED(posInDocument); // TODO set all the font properties from the format (color etc) QFont font(format.font(), pd); QTextLayout layout(d->value, font, pd); layout.setCacheEnabled(true); QList<QTextLayout::FormatRange> layouts; QTextLayout::FormatRange range; range.start = 0; range.length = d->value.length(); range.format = format; layouts.append(range); layout.setAdditionalFormats(layouts); QTextOption option(Qt::AlignLeft | Qt::AlignAbsolute); if (object.isValid()) { option.setTextDirection(object.textDirection()); } layout.setTextOption(option); layout.beginLayout(); layout.createLine(); layout.endLayout(); layout.draw(&painter, rect.topLeft()); }