예제 #1
0
void WatchPaintEngine::drawTextItem(const QPointF &p, const QTextItem &textItem)
{
	TRACE(qDebug() << __func__ << p << textItem.text());
	const qreal ascent = textItem.ascent();
	const qreal descent = textItem.descent();
	const qreal w = textItem.width();
	damageRect(QRect(p.x(), p.y() - ascent, w, ascent + descent));
	_painter.drawTextItem(p, textItem);
}
예제 #2
0
void QAlphaPaintEngine::drawTextItem(const QPointF &p, const QTextItem &textItem)
{
    Q_D(QAlphaPaintEngine);

    QRectF tr(p.x(), p.y() - textItem.ascent(), textItem.width() + 5, textItem.ascent() + textItem.descent() + 5);
    tr = d->m_transform.mapRect(tr);

    if (d->m_pass == 0) {
        d->m_continueCall = false;
        if (d->m_alphaPen || d->m_alphaOpacity || d->m_advancedPen) {
            d->addAlphaRect(tr);
        }
        if (d->m_picengine) {
            d->m_picengine->drawTextItem(p, textItem);
        }
    } else {
        d->m_continueCall = !d->fullyContained(tr);
    }
}
예제 #3
0
void QPicturePaintEngine::drawTextItem(const QPointF &p , const QTextItem &ti)
{
    Q_D(QPicturePaintEngine);
#ifdef QT_PICTURE_DEBUG
    qDebug() << " -> drawTextItem():" << p << ti.text();
#endif

    const QTextItemInt &si = static_cast<const QTextItemInt &>(ti);
    if (si.chars == 0)
        QPaintEngine::drawTextItem(p, ti); // Draw as path

    if (d->pic_d->formatMajor >= 9) {
        int pos;
        SERIALIZE_CMD(QPicturePrivate::PdcDrawTextItem);
        QFont fnt = ti.font();
        fnt.setUnderline(false);
        fnt.setStrikeOut(false);
        fnt.setOverline(false);

        qreal justificationWidth = 0;
        if (si.justified)
            justificationWidth = si.width.toReal();

        d->s << p << ti.text() << fnt << ti.renderFlags() << double(fnt.d->dpi)/qt_defaultDpi() << justificationWidth;
        writeCmdLength(pos, /*brect=*/QRectF(), /*corr=*/false);
    } else if (d->pic_d->formatMajor >= 8) {
        // old old (buggy) format
        int pos;
        SERIALIZE_CMD(QPicturePrivate::PdcDrawTextItem);
        d->s << QPointF(p.x(), p.y() - ti.ascent()) << ti.text() << ti.font() << ti.renderFlags();
        writeCmdLength(pos, /*brect=*/QRectF(), /*corr=*/false);
    } else {
        // old (buggy) format
        int pos;
        SERIALIZE_CMD(QPicturePrivate::PdcDrawText2);
        d->s << p << ti.text();
        writeCmdLength(pos, QRectF(p, QSizeF(1,1)), true);
    }
}