示例#1
0
void QEmulationPaintEngine::drawPixmapFragments(const QPainter::PixmapFragment *fragments, int fragmentCount, const QPixmap &pixmap,
                                                QPainter::PixmapFragmentHints hints)
{
    if (state()->bgMode == Qt::OpaqueMode && pixmap.isQBitmap()) {
        qreal oldOpacity = real_engine->state()->opacity;
        QTransform oldTransform = real_engine->state()->matrix;

        for (int i = 0; i < fragmentCount; ++i) {
            QTransform transform = oldTransform;
            transform.translate(fragments[i].x, fragments[i].y);
            transform.rotate(fragments[i].rotation);
            real_engine->state()->opacity = oldOpacity * fragments[i].opacity;
            real_engine->state()->matrix = transform;
            real_engine->opacityChanged();
            real_engine->transformChanged();

            qreal w = fragments[i].scaleX * fragments[i].width;
            qreal h = fragments[i].scaleY * fragments[i].height;
            fillBGRect(QRectF(-0.5 * w, -0.5 * h, w, h));
        }

        real_engine->state()->opacity = oldOpacity;
        real_engine->state()->matrix = oldTransform;
        real_engine->opacityChanged();
        real_engine->transformChanged();
    }

    real_engine->drawPixmapFragments(fragments, fragmentCount, pixmap, hints);
}
示例#2
0
void QEmulationPaintEngine::drawPixmapFragments(const QRectF *targetRects, const QRectF *sourceRects, int fragmentCount, const QPixmap &pixmap,
                                                QPainter::PixmapFragmentHints hints)
{
    if (state()->bgMode == Qt::OpaqueMode && pixmap.isQBitmap()) {
        for (int i = 0; i < fragmentCount; ++i)
            fillBGRect(targetRects[i]);
    }

    real_engine->drawPixmapFragments(targetRects, sourceRects, fragmentCount, pixmap, hints);
}
示例#3
0
void QAlphaPaintEngine::drawTiledPixmap(const QRectF &r, const QPixmap &pixmap, const QPointF &s)
{
    Q_D(QAlphaPaintEngine);

    QRectF brect = d->m_transform.mapRect(r);

    if (d->m_pass == 0) {
        d->m_continueCall = false;
        if (pixmap.hasAlpha() || d->m_alphaOpacity || d->m_complexTransform || pixmap.isQBitmap()) {
            d->addAlphaRect(brect);
        }
        if (d->m_picengine)
            d->m_picengine->drawTiledPixmap(r, pixmap, s);
    } else {
        d->m_continueCall = !d->fullyContained(brect);
    }
}
示例#4
0
void QAlphaPaintEngine::drawPixmap(const QRectF &r, const QPixmap &pm, const QRectF &sr)
{
    Q_D(QAlphaPaintEngine);

    QRectF tr = d->m_transform.mapRect(r);
    if (d->m_pass == 0) {
        d->m_continueCall = false;
        if (pm.hasAlpha() || d->m_alphaOpacity || d->m_complexTransform || pm.isQBitmap()) {
            d->addAlphaRect(tr);
        }

        if (d->m_picengine)
            d->m_picengine->drawPixmap(r, pm, sr);

    } else {
        d->m_continueCall = !d->fullyContained(tr);
    }
}
示例#5
0
void QEmulationPaintEngine::drawTiledPixmap(const QRectF &r, const QPixmap &pixmap, const QPointF &s)
{
    if (state()->bgMode == Qt::OpaqueMode && pixmap.isQBitmap())
        fillBGRect(r);
    real_engine->drawTiledPixmap(r, pixmap, s);
}
示例#6
0
void QEmulationPaintEngine::drawPixmap(const QRectF &r, const QPixmap &pm, const QRectF &sr)
{
    if (state()->bgMode == Qt::OpaqueMode && pm.isQBitmap())
        fillBGRect(r);
    real_engine->drawPixmap(r, pm, sr);
}