⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qpaintengine_pic.cpp

📁 奇趣公司比较新的qt/emd版本
💻 CPP
📖 第 1 页 / 共 2 页
字号:
    SERIALIZE_CMD(QPicturePrivate::PdcSetBkColor);    d->s << bgBrush.color();    writeCmdLength(pos, QRect(), false);    SERIALIZE_CMD(QPicturePrivate::PdcSetBkMode);    d->s << (qint8) bgMode;    writeCmdLength(pos, QRectF(), false);}void QPicturePaintEngine::updateMatrix(const QTransform &matrix){    Q_D(QPicturePaintEngine);#ifdef QT_PICTURE_DEBUG    qDebug() << " -> updateMatrix():" << matrix;#endif    int pos;    SERIALIZE_CMD(QPicturePrivate::PdcSetWMatrix);    d->s << matrix << (qint8) false;    writeCmdLength(pos, QRectF(), false);}void QPicturePaintEngine::updateClipRegion(const QRegion &region, Qt::ClipOperation op){    Q_D(QPicturePaintEngine);#ifdef QT_PICTURE_DEBUG    qDebug() << " -> updateClipRegion(): op:" << op             << "bounding rect:" << region.boundingRect();#endif    int pos;    SERIALIZE_CMD(QPicturePrivate::PdcSetClipRegion);    d->s << region << qint8(op);    writeCmdLength(pos, QRectF(), false);}void QPicturePaintEngine::updateClipPath(const QPainterPath &path, Qt::ClipOperation op){    Q_D(QPicturePaintEngine);#ifdef QT_PICTURE_DEBUG    qDebug() << " -> updateClipPath(): op:" << op             << "bounding rect:" << path.boundingRect();#endif    int pos;    SERIALIZE_CMD(QPicturePrivate::PdcSetClipPath);    d->s << path << qint8(op);    writeCmdLength(pos, QRectF(), false);}void QPicturePaintEngine::updateRenderHints(QPainter::RenderHints hints){    Q_D(QPicturePaintEngine);#ifdef QT_PICTURE_DEBUG    qDebug() << " -> updateRenderHints(): " << hints;#endif    int pos;    SERIALIZE_CMD(QPicturePrivate::PdcSetRenderHint);    d->s << (quint32) hints;    writeCmdLength(pos, QRect(), false);}void QPicturePaintEngine::writeCmdLength(int pos, const QRectF &r, bool corr){    Q_D(QPicturePaintEngine);    int newpos = d->pic_d->pictb.pos();            // new position    int length = newpos - pos;    QRectF br(r);    if (length < 255) {                         // write 8-bit length        d->pic_d->pictb.seek(pos - 1);             // position to right index        d->s << (quint8)length;    } else {                                    // write 32-bit length        d->s << (quint32)0;                    // extend the buffer        d->pic_d->pictb.seek(pos - 1);             // position to right index        d->s << (quint8)255;                   // indicate 32-bit length        char *p = d->pic_d->pictb.buffer().data();        memmove(p+pos+4, p+pos, length);        // make room for 4 byte        d->s << (quint32)length;        newpos += 4;    }    d->pic_d->pictb.seek(newpos);                  // set to new position    if (br.width() > 0.0 || br.height() > 0.0) {        if (corr) {                             // widen bounding rect            int w2 = painter()->pen().width() / 2;            br.setCoords(br.left() - w2, br.top() - w2,                        br.right() + w2, br.bottom() + w2);        }        br = painter()->transform().mapRect(br);        if (painter()->hasClipping()) {            QRect cr = painter()->clipRegion().boundingRect();            br &= cr;        }        if (br.width() > 0.0 || br.height() > 0.0) {            int minx = qFloor(br.left());            int miny = qFloor(br.top());            int maxx = qCeil(br.right());            int maxy = qCeil(br.bottom());            if (d->pic_d->brect.width() > 0 || d->pic_d->brect.height() > 0) {                minx = qMin(minx, d->pic_d->brect.left());                miny = qMin(miny, d->pic_d->brect.top());                maxx = qMax(maxx, d->pic_d->brect.x() + d->pic_d->brect.width());                maxy = qMax(maxy, d->pic_d->brect.y() + d->pic_d->brect.height());                d->pic_d->brect = QRect(minx, miny, maxx - minx, maxy - miny);            } else {                d->pic_d->brect = QRect(minx, miny, maxx - minx, maxy - miny);            }        }    }}void QPicturePaintEngine::drawPath(const QPainterPath &path){    Q_D(QPicturePaintEngine);#ifdef QT_PICTURE_DEBUG    qDebug() << " -> drawPath():" << path.boundingRect();#endif    int pos;    SERIALIZE_CMD(QPicturePrivate::PdcDrawPath);    d->s << path;    writeCmdLength(pos, path.boundingRect(), true);}void QPicturePaintEngine::drawPolygon(const QPointF *points, int numPoints, PolygonDrawMode mode){    Q_D(QPicturePaintEngine);#ifdef QT_PICTURE_DEBUG    qDebug() << " -> drawPolygon(): size=" << numPoints;#endif    int pos;    QPolygonF polygon;    for (int i=0; i<numPoints; ++i)        polygon << points[i];    if (mode == PolylineMode) {        SERIALIZE_CMD(QPicturePrivate::PdcDrawPolyline);        d->s << polygon;    } else {        SERIALIZE_CMD(QPicturePrivate::PdcDrawPolygon);        d->s << polygon;        d->s << (qint8)(mode == OddEvenMode ? 0 : 1);    }    writeCmdLength(pos, polygon.boundingRect(), true);}void QPicturePaintEngine::drawPixmap(const QRectF &r, const QPixmap &pm, const QRectF &sr){    Q_D(QPicturePaintEngine);#ifdef QT_PICTURE_DEBUG    qDebug() << " -> drawPixmap():" << r;#endif    int pos;    SERIALIZE_CMD(QPicturePrivate::PdcDrawPixmap);    if (d->pic_d->dont_stream_pixmaps) {        int index = d->pic_d->pixmap_list.size();        d->pic_d->pixmap_list.append(pm);        d->s << r << index << sr;    } else {        d->s << r << pm << sr;    }    writeCmdLength(pos, r, false);}void QPicturePaintEngine::drawTiledPixmap(const QRectF &r, const QPixmap &pixmap, const QPointF &s){    Q_D(QPicturePaintEngine);#ifdef QT_PICTURE_DEBUG    qDebug() << " -> drawTiledPixmap():" << r << s;#endif    int pos;    SERIALIZE_CMD(QPicturePrivate::PdcDrawTiledPixmap);    if (d->pic_d->dont_stream_pixmaps) {        int index = d->pic_d->pixmap_list.size();        d->pic_d->pixmap_list.append(pixmap);        d->s << r << index << s;    } else {        d->s << r << pixmap << s;    }    writeCmdLength(pos, r, false);}extern int qt_defaultDpi();void QPicturePaintEngine::drawTextItem(const QPointF &p , const QTextItem &ti){    Q_D(QPicturePaintEngine);#ifdef QT_PICTURE_DEBUG    qDebug() << " -> drawTextItem():" << p << ti.text();#endif    if (d->pic_d->formatMajor >= 9) {        const QTextItemInt &si = static_cast<const QTextItemInt &>(ti);        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 QPicturePaintEngine::updateState(const QPaintEngineState &state){    QPaintEngine::DirtyFlags flags = state.state();    if (flags & DirtyPen) updatePen(state.pen());    if (flags & DirtyBrush) updateBrush(state.brush());    if (flags & DirtyBrushOrigin) updateBrushOrigin(state.brushOrigin());    if (flags & DirtyFont) updateFont(state.font());    if (flags & DirtyBackground) updateBackground(state.backgroundMode(), state.backgroundBrush());    if (flags & DirtyTransform) updateMatrix(state.transform());    if (flags & DirtyClipEnabled) updateClipEnabled(state.isClipEnabled());    if (flags & DirtyClipRegion) updateClipRegion(state.clipRegion(), state.clipOperation());    if (flags & DirtyClipPath) updateClipPath(state.clipPath(), state.clipOperation());    if (flags & DirtyHints) updateRenderHints(state.renderHints());    if (flags & DirtyCompositionMode) updateCompositionMode(state.compositionMode());    if (flags & DirtyOpacity) updateOpacity(state.opacity());}#endif // QT_NO_PICTURE

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -