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

📄 qpaintengine.h

📁 奇趣公司比较新的qt/emd版本
💻 H
字号:
/******************************************************************************** Copyright (C) 1992-2007 Trolltech ASA. All rights reserved.**** This file is part of the QtGui module of the Qt Toolkit.**** This file may be used under the terms of the GNU General Public** License version 2.0 as published by the Free Software Foundation** and appearing in the file LICENSE.GPL included in the packaging of** this file.  Please review the following information to ensure GNU** General Public Licensing requirements will be met:** http://trolltech.com/products/qt/licenses/licensing/opensource/**** If you are unsure which license is appropriate for your use, please** review the following information:** http://trolltech.com/products/qt/licenses/licensing/licensingoverview** or contact the sales department at sales@trolltech.com.**** In addition, as a special exception, Trolltech gives you certain** additional rights. These rights are described in the Trolltech GPL** Exception version 1.0, which can be found at** http://www.trolltech.com/products/qt/gplexception/ and in the file** GPL_EXCEPTION.txt in this package.**** In addition, as a special exception, Trolltech, as the sole copyright** holder for Qt Designer, grants users of the Qt/Eclipse Integration** plug-in the right for the Qt/Eclipse Integration to link to** functionality provided by Qt Designer and its related libraries.**** Trolltech reserves all rights not expressly granted herein.**** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.******************************************************************************/#ifndef QPAINTENGINE_H#define QPAINTENGINE_H#include <QtCore/qnamespace.h>#include <QtCore/qobjectdefs.h>#include <QtGui/qpainter.h>QT_BEGIN_HEADERQT_MODULE(Gui)class QFontEngine;class QLineF;class QPaintDevice;class QPaintEnginePrivate;class QPainterPath;class QPointF;class QPolygonF;class QRectF;struct QGlyphLayout;class QTextItemInt;class QPaintEngineState;class Q_GUI_EXPORT QTextItem {public:    enum RenderFlag {        RightToLeft = 0x1,        Overline = 0x10,        Underline = 0x20,        StrikeOut = 0x40,        Dummy = 0xffffffff    };    Q_DECLARE_FLAGS(RenderFlags, RenderFlag)    qreal descent() const;    qreal ascent() const;    qreal width() const;    RenderFlags renderFlags() const;    QString text() const;    QFont font() const;};Q_DECLARE_TYPEINFO(QTextItem, Q_PRIMITIVE_TYPE);class Q_GUI_EXPORT QPaintEngine{    Q_DECLARE_PRIVATE(QPaintEngine)public:    enum PaintEngineFeature {        PrimitiveTransform        = 0x00000001, // Can transform primitives brushes        PatternTransform          = 0x00000002, // Can transform pattern brushes        PixmapTransform           = 0x00000004, // Can transform pixmaps        PatternBrush              = 0x00000008, // Can fill with pixmaps and standard patterns        LinearGradientFill   	  = 0x00000010, // Can fill gradient areas        RadialGradientFill        = 0x00000020, // Can render radial gradients        ConicalGradientFill       = 0x00000040, // Can render conical gradients	AlphaBlend                = 0x00000080, // Can do source over alpha blend	PorterDuff                = 0x00000100, // Can do general porter duff compositions        PainterPaths              = 0x00000200, // Can fill, outline and clip paths        Antialiasing              = 0x00000400, // Can antialias lines        BrushStroke               = 0x00000800, // Can render brush based pens        ConstantOpacity           = 0x00001000, // Can render at constant opacity        MaskedBrush               = 0x00002000, // Can fill with textures that has an alpha channel or mask        PerspectiveTransform      = 0x00004000, // Can do perspective transformations        BlendModes                = 0x00008000, // Can do extended Porter&Duff composition        PaintOutsidePaintEvent    = 0x20000000, // Engine is capable of painting outside paint events        /*                          0x10000000, // Used for emulating                                    QGradient::StretchToDevice,                                    defined in qpainter.cpp                                    0x40000000, // Used internally for emulating opaque backgrounds        */        AllFeatures               = 0xffffffff  // For convenience    };    Q_DECLARE_FLAGS(PaintEngineFeatures, PaintEngineFeature)    enum DirtyFlag {        DirtyPen                = 0x0001,        DirtyBrush              = 0x0002,        DirtyBrushOrigin        = 0x0004,        DirtyFont               = 0x0008,        DirtyBackground         = 0x0010,        DirtyBackgroundMode     = 0x0020,        DirtyTransform          = 0x0040,        DirtyClipRegion         = 0x0080,        DirtyClipPath           = 0x0100,        DirtyHints              = 0x0200,        DirtyCompositionMode    = 0x0400,        DirtyClipEnabled        = 0x0800,        DirtyOpacity            = 0x1000,        AllDirty                = 0xffff    };    Q_DECLARE_FLAGS(DirtyFlags, DirtyFlag)    enum PolygonDrawMode {        OddEvenMode,        WindingMode,        ConvexMode,        PolylineMode    };    explicit QPaintEngine(PaintEngineFeatures features=0);    virtual ~QPaintEngine();    bool isActive() const { return active; }    void setActive(bool newState) { active = newState; }    virtual bool begin(QPaintDevice *pdev) = 0;    virtual bool end() = 0;    virtual void updateState(const QPaintEngineState &state) = 0;    virtual void drawRects(const QRect *rects, int rectCount);    virtual void drawRects(const QRectF *rects, int rectCount);    virtual void drawLines(const QLine *lines, int lineCount);    virtual void drawLines(const QLineF *lines, int lineCount);    virtual void drawEllipse(const QRectF &r);    virtual void drawEllipse(const QRect &r);    virtual void drawPath(const QPainterPath &path);    virtual void drawPoints(const QPointF *points, int pointCount);    virtual void drawPoints(const QPoint *points, int pointCount);    virtual void drawPolygon(const QPointF *points, int pointCount, PolygonDrawMode mode);    virtual void drawPolygon(const QPoint *points, int pointCount, PolygonDrawMode mode);    virtual void drawPixmap(const QRectF &r, const QPixmap &pm, const QRectF &sr) = 0;    virtual void drawTextItem(const QPointF &p, const QTextItem &textItem);    virtual void drawTiledPixmap(const QRectF &r, const QPixmap &pixmap, const QPointF &s);    virtual void drawImage(const QRectF &r, const QImage &pm, const QRectF &sr,                           Qt::ImageConversionFlags flags = Qt::AutoColor);    void setPaintDevice(QPaintDevice *device);    QPaintDevice *paintDevice() const;    void setSystemClip(const QRegion &baseClip);    QRegion systemClip() const;    void setSystemRect(const QRect &rect);    QRect systemRect() const;#ifdef Q_WS_WIN    virtual HDC getDC() const;    virtual void releaseDC(HDC hdc) const;#endif    virtual QPoint coordinateOffset() const;    enum Type {        X11,        Windows,        QuickDraw, CoreGraphics, MacPrinter,        QWindowSystem,        PostScript,        OpenGL,        Picture,        SVG,        Raster,	Direct3D,        User = 50,    // first user type id        MaxUser = 100 // last user type id    };    virtual Type type() const = 0;    inline void fix_neg_rect(int *x, int *y, int *w, int *h);    inline bool testDirty(DirtyFlags df);    inline void setDirty(DirtyFlags df);    inline void clearDirty(DirtyFlags df);    bool hasFeature(PaintEngineFeatures feature) const { return (gccaps & feature) != 0; }    QPainter *painter() const;    inline void syncState() { Q_ASSERT(state); updateState(*state); }protected:    QPaintEngine(QPaintEnginePrivate &data, PaintEngineFeatures devcaps=0);    QPaintEngineState *state;    PaintEngineFeatures gccaps;    uint active : 1;    uint selfDestruct : 1;    QPaintEnginePrivate *d_ptr;private:    void setAutoDestruct(bool autoDestr) { selfDestruct = autoDestr; }    bool autoDestruct() const { return selfDestruct; }    Q_DISABLE_COPY(QPaintEngine)    friend class QFontEngineBox;    friend class QFontEngineMac;    friend class QFontEngineWin;#ifndef QT_NO_FREETYPE    friend class QFontEngineFT;#endif#ifndef QT_NO_QWS_QPF    friend class QFontEngineQPF1;    friend class QFontEngineQPF;#endif    friend class QPSPrintEngine;    friend class QMacPrintEngine;    friend class QMacPrintEnginePrivate;#ifdef Q_WS_QWS    friend class QtopiaPrintEngine;    friend class QtopiaPrintEnginePrivate;    friend class QProxyFontEngine;#endif    friend class QPainter;    friend class QPainterPrivate;    friend class QWidget;    friend class QWin32PaintEngine;    friend class QWin32PaintEnginePrivate;    friend class QMacCGContext;};class Q_GUI_EXPORT QPaintEngineState{public:    QPaintEngine::DirtyFlags state() const { return dirtyFlags; }    QPen pen() const;    QBrush brush() const;    QPointF brushOrigin() const;    QBrush backgroundBrush() const;    Qt::BGMode backgroundMode() const;    QFont font() const;    QMatrix matrix() const;    QTransform transform() const;    Qt::ClipOperation clipOperation() const;    QRegion clipRegion() const;    QPainterPath clipPath() const;    bool isClipEnabled() const;    QPainter::RenderHints renderHints() const;    QPainter::CompositionMode compositionMode() const;    qreal opacity() const;    QPainter *painter() const;    bool brushNeedsResolving() const;    bool penNeedsResolving() const;protected:    friend class QPaintEngine;    friend class QPainter;    friend class QPainterPrivate;    friend class QMacPrintEnginePrivate;            QPaintEngine::DirtyFlags dirtyFlags;};//// inline functions//inline void QPaintEngine::fix_neg_rect(int *x, int *y, int *w, int *h){    if (*w < 0) {        *w = -*w;        *x -= *w - 1;    }    if (*h < 0) {        *h = -*h;        *y -= *h - 1;    }}inline bool QPaintEngine::testDirty(DirtyFlags df) {    Q_ASSERT(state);    return ((state->dirtyFlags & df) != 0);}inline void QPaintEngine::setDirty(DirtyFlags df) {    Q_ASSERT(state);    state->dirtyFlags |= df;}inline void QPaintEngine::clearDirty(DirtyFlags df){    Q_ASSERT(state);    state->dirtyFlags &= ~static_cast<uint>(df);}Q_DECLARE_OPERATORS_FOR_FLAGS(QTextItem::RenderFlags)Q_DECLARE_OPERATORS_FOR_FLAGS(QPaintEngine::PaintEngineFeatures)Q_DECLARE_OPERATORS_FOR_FLAGS(QPaintEngine::DirtyFlags)QT_END_HEADER#endif // QPAINTENGINE_H

⌨️ 快捷键说明

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