static PyObject *meth_QTextObjectInterface_drawObject(PyObject *sipSelf, PyObject *sipArgs) { PyObject *sipParseErr = NULL; PyObject *sipOrigSelf = sipSelf; { QPainter* a0; const QRectF* a1; QTextDocument* a2; int a3; const QTextFormat* a4; QTextObjectInterface *sipCpp; if (sipParseArgs(&sipParseErr, sipArgs, "BJ8J9J8iJ9", &sipSelf, sipType_QTextObjectInterface, &sipCpp, sipType_QPainter, &a0, sipType_QRectF, &a1, sipType_QTextDocument, &a2, &a3, sipType_QTextFormat, &a4)) { if (!sipOrigSelf) { sipAbstractMethod(sipName_QTextObjectInterface, sipName_drawObject); return NULL; } sipCpp->drawObject(a0,*a1,a2,a3,*a4); Py_INCREF(Py_None); return Py_None; } } /* Raise an exception if the arguments couldn't be parsed. */ sipNoMethod(sipParseErr, sipName_QTextObjectInterface, sipName_drawObject, doc_QTextObjectInterface_drawObject); return NULL; }
static PyObject *meth_QTextObjectInterface_intrinsicSize(PyObject *sipSelf, PyObject *sipArgs) { PyObject *sipParseErr = NULL; PyObject *sipOrigSelf = sipSelf; { QTextDocument* a0; int a1; const QTextFormat* a2; QTextObjectInterface *sipCpp; if (sipParseArgs(&sipParseErr, sipArgs, "BJ8iJ9", &sipSelf, sipType_QTextObjectInterface, &sipCpp, sipType_QTextDocument, &a0, &a1, sipType_QTextFormat, &a2)) { QSizeF*sipRes; if (!sipOrigSelf) { sipAbstractMethod(sipName_QTextObjectInterface, sipName_intrinsicSize); return NULL; } sipRes = new QSizeF(sipCpp->intrinsicSize(a0,a1,*a2)); return sipConvertFromNewType(sipRes,sipType_QSizeF,NULL); } } /* Raise an exception if the arguments couldn't be parsed. */ sipNoMethod(sipParseErr, sipName_QTextObjectInterface, sipName_intrinsicSize, doc_QTextObjectInterface_intrinsicSize); return NULL; }
void QQuickTextNodeEngine::addTextObject(const QPointF &position, const QTextCharFormat &format, SelectionState selectionState, QTextDocument *textDocument, int pos, QTextFrameFormat::Position layoutPosition) { QTextObjectInterface *handler = textDocument->documentLayout()->handlerForObject(format.objectType()); if (handler != 0) { QImage image; QSizeF size = handler->intrinsicSize(textDocument, pos, format); if (format.objectType() == QTextFormat::ImageObject) { QTextImageFormat imageFormat = format.toImageFormat(); if (QQuickTextDocumentWithImageResources *imageDoc = qobject_cast<QQuickTextDocumentWithImageResources *>(textDocument)) { image = imageDoc->image(imageFormat); if (image.isNull()) return; } else { QTextImageHandler *imageHandler = static_cast<QTextImageHandler *>(handler); image = imageHandler->image(textDocument, imageFormat); } } if (image.isNull()) { image = QImage(size.toSize(), QImage::Format_ARGB32_Premultiplied); image.fill(Qt::transparent); { QPainter painter(&image); handler->drawObject(&painter, image.rect(), textDocument, pos, format); } } qreal ascent; QFontMetrics m(format.font()); switch (format.verticalAlignment()) { case QTextCharFormat::AlignMiddle: ascent = size.height() / 2 - 1; break; case QTextCharFormat::AlignBaseline: ascent = size.height() - m.descent() - 1; break; default: ascent = size.height() - 1; } addImage(QRectF(position, size), image, ascent, selectionState, layoutPosition); } }