void EmfPaintEngine::drawTextItem ( const QPointF & p, const QTextItem & textItem ) { setClipping(); SetBkMode( metaDC, TRANSPARENT ); QFont f = textItem.font(); QFontMetrics fm(f); HFONT wfont = CreateFontA(fm.height() - 1, fm.averageCharWidth(), 0, 0, 10*f.weight(), f.italic(), f.underline (), f.strikeOut(), DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH, f.family().toAscii().data()); SelectObject( metaDC, wfont); QColor colour = painter()->pen().color(); SetTextColor( metaDC, RGB(colour.red(), colour.green(), colour.blue())); QString text = textItem.text(); int size = text.size(); QMatrix m = painter()->worldMatrix(); XFORM xf; xf.eM11 = m.m11(); xf.eM12 = m.m12(); xf.eM21 = m.m21(); xf.eM22 = m.m22(); xf.eDx = m.dx(); xf.eDy = m.dy(); SetWorldTransform(metaDC, &xf); #ifdef Q_WS_WIN wchar_t *wtext = (wchar_t *)malloc(size*sizeof(wchar_t)); if (!wtext){ qWarning("EmfEngine: Not enough memory in drawTextItem()."); return; } size = text.toWCharArray(wtext); TextOutW(metaDC, qRound(p.x()), qRound(p.y() - 0.85*fm.height()), wtext, size); free(wtext); #else TextOutA(metaDC, qRound(p.x()), qRound(p.y() - 0.85*fm.height()), text.toLocal8Bit().data(), size); #endif xf.eM11 = 1.0; xf.eM12 = 0.0; xf.eM21 = 0.0; xf.eM22 = 1.0; xf.eDx = 0.0; xf.eDy = 0.0; SetWorldTransform(metaDC, &xf); resetClipping(); DeleteObject(wfont); }
void QJsonPaintEngine::drawTextItem(const QPointF &p , const QTextItem &ti) { Q_D(QJsonPaintEngine); #ifdef QT_PICTURE_DEBUG qDebug() << " -> drawTextItem():" << p << ti.text(); #endif updateFont(ti.font()); d->s << QString("\t{\"t\": {\"t\": \"%1\", \"x\": %2, \"y\": %3}},\r\n").arg(ti.text()).arg(p.x()).arg(p.y()); }
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); } }
void QCairoPaintEngine::drawTextItem(const QPointF &p, const QTextItem &textItem) { if (!exportText) { QPaintEngine::drawTextItem(p, textItem); } else { //cairo_matrix_t cm, cmBak; //cairo_get_matrix(cr, &cmBak); //cairo_translate(cr, p.x(), p.y()); QFont oldF=cfont; cfont=textItem.font(); updateFont(); updatePen(); cairo_move_to (cr, p.x(), p.y()); cairo_show_text(cr, textItem.text().toUtf8().data()); cfont=oldF; //cairo_set_matrix(cr, &cmBak); } }