qpainter.h
上传用户:detong
上传日期:2022-06-22
资源大小:20675k
文件大小:30k
源码类别:

系统编程

开发平台:

Unix_Linux

  1. /****************************************************************************
  2. **
  3. ** Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies).
  4. ** Contact: Qt Software Information (qt-info@nokia.com)
  5. **
  6. ** This file is part of the QtGui module of the Qt Toolkit.
  7. **
  8. ** Commercial Usage
  9. ** Licensees holding valid Qt Commercial licenses may use this file in
  10. ** accordance with the Qt Commercial License Agreement provided with the
  11. ** Software or, alternatively, in accordance with the terms contained in
  12. ** a written agreement between you and Nokia.
  13. **
  14. **
  15. ** GNU General Public License Usage
  16. ** Alternatively, this file may be used under the terms of the GNU
  17. ** General Public License versions 2.0 or 3.0 as published by the Free
  18. ** Software Foundation and appearing in the file LICENSE.GPL included in
  19. ** the packaging of this file.  Please review the following information
  20. ** to ensure GNU General Public Licensing requirements will be met:
  21. ** http://www.fsf.org/licensing/licenses/info/GPLv2.html and
  22. ** http://www.gnu.org/copyleft/gpl.html.  In addition, as a special
  23. ** exception, Nokia gives you certain additional rights. These rights
  24. ** are described in the Nokia Qt GPL Exception version 1.3, included in
  25. ** the file GPL_EXCEPTION.txt in this package.
  26. **
  27. ** Qt for Windows(R) Licensees
  28. ** As a special exception, Nokia, as the sole copyright holder for Qt
  29. ** Designer, grants users of the Qt/Eclipse Integration plug-in the
  30. ** right for the Qt/Eclipse Integration to link to functionality
  31. ** provided by Qt Designer and its related libraries.
  32. **
  33. ** If you are unsure which license is appropriate for your use, please
  34. ** contact the sales department at qt-sales@nokia.com.
  35. **
  36. ****************************************************************************/
  37. #ifndef QPAINTER_H
  38. #define QPAINTER_H
  39. #include <QtCore/qnamespace.h>
  40. #include <QtCore/qrect.h>
  41. #include <QtCore/qpoint.h>
  42. #include <QtGui/qpixmap.h>
  43. #include <QtGui/qimage.h>
  44. #include <QtGui/qtextoption.h>
  45. #include <QtGui/qdrawutil.h>
  46. #ifndef QT_INCLUDE_COMPAT
  47. #include <QtGui/qpolygon.h>
  48. #include <QtGui/qpen.h>
  49. #include <QtGui/qbrush.h>
  50. #include <QtGui/qmatrix.h>
  51. #include <QtGui/qtransform.h>
  52. #include <QtGui/qfontinfo.h>
  53. #include <QtGui/qfontmetrics.h>
  54. #endif
  55. QT_BEGIN_HEADER
  56. QT_BEGIN_NAMESPACE
  57. QT_MODULE(Gui)
  58. class QBrush;
  59. class QFontInfo;
  60. class QFontMetrics;
  61. class QPaintDevice;
  62. class QPainterPath;
  63. class QPainterPrivate;
  64. class QPen;
  65. class QPolygon;
  66. class QTextItem;
  67. class QMatrix;
  68. class QTransform;
  69. class Q_GUI_EXPORT QPainter
  70. {
  71.     Q_DECLARE_PRIVATE(QPainter)
  72.     Q_GADGET
  73.     Q_FLAGS(RenderHint RenderHints)
  74. public:
  75.     enum RenderHint {
  76.         Antialiasing = 0x01,
  77.         TextAntialiasing = 0x02,
  78.         SmoothPixmapTransform = 0x04,
  79.         HighQualityAntialiasing = 0x08,
  80.         NonCosmeticDefaultPen = 0x10
  81.     };
  82.     Q_DECLARE_FLAGS(RenderHints, RenderHint)
  83.     QPainter();
  84.     explicit QPainter(QPaintDevice *);
  85.     ~QPainter();
  86.     QPaintDevice *device() const;
  87.     bool begin(QPaintDevice *);
  88.     bool end();
  89.     bool isActive() const;
  90.     void initFrom(const QWidget *widget);
  91.     enum CompositionMode {
  92.         CompositionMode_SourceOver,
  93.         CompositionMode_DestinationOver,
  94.         CompositionMode_Clear,
  95.         CompositionMode_Source,
  96.         CompositionMode_Destination,
  97.         CompositionMode_SourceIn,
  98.         CompositionMode_DestinationIn,
  99.         CompositionMode_SourceOut,
  100.         CompositionMode_DestinationOut,
  101.         CompositionMode_SourceAtop,
  102.         CompositionMode_DestinationAtop,
  103.         CompositionMode_Xor,
  104.         //svg 1.2 blend modes
  105.         CompositionMode_Plus,
  106.         CompositionMode_Multiply,
  107.         CompositionMode_Screen,
  108.         CompositionMode_Overlay,
  109.         CompositionMode_Darken,
  110.         CompositionMode_Lighten,
  111.         CompositionMode_ColorDodge,
  112.         CompositionMode_ColorBurn,
  113.         CompositionMode_HardLight,
  114.         CompositionMode_SoftLight,
  115.         CompositionMode_Difference,
  116.         CompositionMode_Exclusion
  117.     };
  118.     void setCompositionMode(CompositionMode mode);
  119.     CompositionMode compositionMode() const;
  120.     const QFont &font() const;
  121.     void setFont(const QFont &f);
  122.     QFontMetrics fontMetrics() const;
  123.     QFontInfo fontInfo() const;
  124.     void setPen(const QColor &color);
  125.     void setPen(const QPen &pen);
  126.     void setPen(Qt::PenStyle style);
  127.     const QPen &pen() const;
  128.     void setBrush(const QBrush &brush);
  129.     void setBrush(Qt::BrushStyle style);
  130.     const QBrush &brush() const;
  131.     // attributes/modes
  132.     void setBackgroundMode(Qt::BGMode mode);
  133.     Qt::BGMode backgroundMode() const;
  134.     QPoint brushOrigin() const;
  135.     inline void setBrushOrigin(int x, int y);
  136.     inline void setBrushOrigin(const QPoint &);
  137.     void setBrushOrigin(const QPointF &);
  138.     void setBackground(const QBrush &bg);
  139.     const QBrush &background() const;
  140.     qreal opacity() const;
  141.     void setOpacity(qreal opacity);
  142.     // Clip functions
  143.     QRegion clipRegion() const;
  144.     QPainterPath clipPath() const;
  145.     void setClipRect(const QRectF &, Qt::ClipOperation op = Qt::ReplaceClip);
  146.     void setClipRect(const QRect &, Qt::ClipOperation op = Qt::ReplaceClip);
  147.     inline void setClipRect(int x, int y, int w, int h, Qt::ClipOperation op = Qt::ReplaceClip);
  148.     void setClipRegion(const QRegion &, Qt::ClipOperation op = Qt::ReplaceClip);
  149.     void setClipPath(const QPainterPath &path, Qt::ClipOperation op = Qt::ReplaceClip);
  150.     void setClipping(bool enable);
  151.     bool hasClipping() const;
  152.     void save();
  153.     void restore();
  154.     // XForm functions
  155.     void setMatrix(const QMatrix &matrix, bool combine = false);
  156.     const QMatrix &matrix() const;
  157.     const QMatrix &deviceMatrix() const;
  158.     void resetMatrix();
  159.     void setTransform(const QTransform &transform, bool combine = false);
  160.     const QTransform &transform() const;
  161.     const QTransform &deviceTransform() const;
  162.     void resetTransform();
  163.     void setWorldMatrix(const QMatrix &matrix, bool combine = false);
  164.     const QMatrix &worldMatrix() const;
  165.     void setWorldTransform(const QTransform &matrix, bool combine = false);
  166.     const QTransform &worldTransform() const;
  167.     QMatrix combinedMatrix() const;
  168.     QTransform combinedTransform() const;
  169.     void setMatrixEnabled(bool enabled);
  170.     bool matrixEnabled() const;
  171.     void setWorldMatrixEnabled(bool enabled);
  172.     bool worldMatrixEnabled() const;
  173.     void scale(qreal sx, qreal sy);
  174.     void shear(qreal sh, qreal sv);
  175.     void rotate(qreal a);
  176.     void translate(const QPointF &offset);
  177.     inline void translate(const QPoint &offset);
  178.     inline void translate(qreal dx, qreal dy);
  179.     QRect window() const;
  180.     void setWindow(const QRect &window);
  181.     inline void setWindow(int x, int y, int w, int h);
  182.     QRect viewport() const;
  183.     void setViewport(const QRect &viewport);
  184.     inline void setViewport(int x, int y, int w, int h);
  185.     void setViewTransformEnabled(bool enable);
  186.     bool viewTransformEnabled() const;
  187.     // drawing functions
  188.     void strokePath(const QPainterPath &path, const QPen &pen);
  189.     void fillPath(const QPainterPath &path, const QBrush &brush);
  190.     void drawPath(const QPainterPath &path);
  191.     inline void drawPoint(const QPointF &pt);
  192.     inline void drawPoint(const QPoint &p);
  193.     inline void drawPoint(int x, int y);
  194.     void drawPoints(const QPointF *points, int pointCount);
  195.     inline void drawPoints(const QPolygonF &points);
  196.     void drawPoints(const QPoint *points, int pointCount);
  197.     inline void drawPoints(const QPolygon &points);
  198.     inline void drawLine(const QLineF &line);
  199.     inline void drawLine(const QLine &line);
  200.     inline void drawLine(int x1, int y1, int x2, int y2);
  201.     inline void drawLine(const QPoint &p1, const QPoint &p2);
  202.     inline void drawLine(const QPointF &p1, const QPointF &p2);
  203.     void drawLines(const QLineF *lines, int lineCount);
  204.     inline void drawLines(const QVector<QLineF> &lines);
  205.     void drawLines(const QPointF *pointPairs, int lineCount);
  206.     inline void drawLines(const QVector<QPointF> &pointPairs);
  207.     void drawLines(const QLine *lines, int lineCount);
  208.     inline void drawLines(const QVector<QLine> &lines);
  209.     void drawLines(const QPoint *pointPairs, int lineCount);
  210.     inline void drawLines(const QVector<QPoint> &pointPairs);
  211.     inline void drawRect(const QRectF &rect);
  212.     inline void drawRect(int x1, int y1, int w, int h);
  213.     inline void drawRect(const QRect &rect);
  214.     void drawRects(const QRectF *rects, int rectCount);
  215.     inline void drawRects(const QVector<QRectF> &rectangles);
  216.     void drawRects(const QRect *rects, int rectCount);
  217.     inline void drawRects(const QVector<QRect> &rectangles);
  218.     void drawEllipse(const QRectF &r);
  219.     void drawEllipse(const QRect &r);
  220.     inline void drawEllipse(int x, int y, int w, int h);
  221.     inline void drawEllipse(const QPointF &center, qreal rx, qreal ry);
  222.     inline void drawEllipse(const QPoint &center, int rx, int ry);
  223.     void drawPolyline(const QPointF *points, int pointCount);
  224.     inline void drawPolyline(const QPolygonF &polyline);
  225.     void drawPolyline(const QPoint *points, int pointCount);
  226.     inline void drawPolyline(const QPolygon &polygon);
  227.     void drawPolygon(const QPointF *points, int pointCount, Qt::FillRule fillRule = Qt::OddEvenFill);
  228.     inline void drawPolygon(const QPolygonF &polygon, Qt::FillRule fillRule = Qt::OddEvenFill);
  229.     void drawPolygon(const QPoint *points, int pointCount, Qt::FillRule fillRule = Qt::OddEvenFill);
  230.     inline void drawPolygon(const QPolygon &polygon, Qt::FillRule fillRule = Qt::OddEvenFill);
  231.     void drawConvexPolygon(const QPointF *points, int pointCount);
  232.     inline void drawConvexPolygon(const QPolygonF &polygon);
  233.     void drawConvexPolygon(const QPoint *points, int pointCount);
  234.     inline void drawConvexPolygon(const QPolygon &polygon);
  235.     void drawArc(const QRectF &rect, int a, int alen);
  236.     inline void drawArc(const QRect &, int a, int alen);
  237.     inline void drawArc(int x, int y, int w, int h, int a, int alen);
  238.     void drawPie(const QRectF &rect, int a, int alen);
  239.     inline void drawPie(int x, int y, int w, int h, int a, int alen);
  240.     inline void drawPie(const QRect &, int a, int alen);
  241.     void drawChord(const QRectF &rect, int a, int alen);
  242.     inline void drawChord(int x, int y, int w, int h, int a, int alen);
  243.     inline void drawChord(const QRect &, int a, int alen);
  244.     void drawRoundedRect(const QRectF &rect, qreal xRadius, qreal yRadius,
  245.                          Qt::SizeMode mode = Qt::AbsoluteSize);
  246.     inline void drawRoundedRect(int x, int y, int w, int h, qreal xRadius, qreal yRadius,
  247.                                 Qt::SizeMode mode = Qt::AbsoluteSize);
  248.     inline void drawRoundedRect(const QRect &rect, qreal xRadius, qreal yRadius,
  249.                                 Qt::SizeMode mode = Qt::AbsoluteSize);
  250.     void drawRoundRect(const QRectF &r, int xround = 25, int yround = 25);
  251.     inline void drawRoundRect(int x, int y, int w, int h, int = 25, int = 25);
  252.     inline void drawRoundRect(const QRect &r, int xround = 25, int yround = 25);
  253.     void drawTiledPixmap(const QRectF &rect, const QPixmap &pm, const QPointF &offset = QPointF());
  254.     inline void drawTiledPixmap(int x, int y, int w, int h, const QPixmap &, int sx=0, int sy=0);
  255.     inline void drawTiledPixmap(const QRect &, const QPixmap &, const QPoint & = QPoint());
  256. #ifndef QT_NO_PICTURE
  257.     void drawPicture(const QPointF &p, const QPicture &picture);
  258.     inline void drawPicture(int x, int y, const QPicture &picture);
  259.     inline void drawPicture(const QPoint &p, const QPicture &picture);
  260. #endif
  261.     void drawPixmap(const QRectF &targetRect, const QPixmap &pixmap, const QRectF &sourceRect);
  262.     inline void drawPixmap(const QRect &targetRect, const QPixmap &pixmap, const QRect &sourceRect);
  263.     inline void drawPixmap(int x, int y, int w, int h, const QPixmap &pm,
  264.                            int sx, int sy, int sw, int sh);
  265.     inline void drawPixmap(int x, int y, const QPixmap &pm,
  266.                            int sx, int sy, int sw, int sh);
  267.     inline void drawPixmap(const QPointF &p, const QPixmap &pm, const QRectF &sr);
  268.     inline void drawPixmap(const QPoint &p, const QPixmap &pm, const QRect &sr);
  269.     inline void drawPixmap(const QPointF &p, const QPixmap &pm);
  270.     inline void drawPixmap(const QPoint &p, const QPixmap &pm);
  271.     inline void drawPixmap(int x, int y, const QPixmap &pm);
  272.     inline void drawPixmap(const QRect &r, const QPixmap &pm);
  273.     inline void drawPixmap(int x, int y, int w, int h, const QPixmap &pm);
  274.     void drawImage(const QRectF &targetRect, const QImage &image, const QRectF &sourceRect,
  275.                    Qt::ImageConversionFlags flags = Qt::AutoColor);
  276.     inline void drawImage(const QRect &targetRect, const QImage &image, const QRect &sourceRect,
  277.                           Qt::ImageConversionFlags flags = Qt::AutoColor);
  278.     inline void drawImage(const QPointF &p, const QImage &image, const QRectF &sr,
  279.                           Qt::ImageConversionFlags flags = Qt::AutoColor);
  280.     inline void drawImage(const QPoint &p, const QImage &image, const QRect &sr,
  281.                           Qt::ImageConversionFlags flags = Qt::AutoColor);
  282.     inline void drawImage(const QRectF &r, const QImage &image);
  283.     inline void drawImage(const QRect &r, const QImage &image);
  284.     inline void drawImage(const QPointF &p, const QImage &image);
  285.     inline void drawImage(const QPoint &p, const QImage &image);
  286.     inline void drawImage(int x, int y, const QImage &image, int sx = 0, int sy = 0,
  287.                           int sw = -1, int sh = -1, Qt::ImageConversionFlags flags = Qt::AutoColor);
  288.     void setLayoutDirection(Qt::LayoutDirection direction);
  289.     Qt::LayoutDirection layoutDirection() const;
  290.     void drawText(const QPointF &p, const QString &s);
  291.     inline void drawText(const QPoint &p, const QString &s);
  292.     inline void drawText(int x, int y, const QString &s);
  293.     void drawText(const QPointF &p, const QString &str, int tf, int justificationPadding);
  294.     void drawText(const QRectF &r, int flags, const QString &text, QRectF *br=0);
  295.     void drawText(const QRect &r, int flags, const QString &text, QRect *br=0);
  296.     inline void drawText(int x, int y, int w, int h, int flags, const QString &text, QRect *br=0);
  297.     void drawText(const QRectF &r, const QString &text, const QTextOption &o = QTextOption());
  298.     QRectF boundingRect(const QRectF &rect, int flags, const QString &text);
  299.     QRect boundingRect(const QRect &rect, int flags, const QString &text);
  300.     inline QRect boundingRect(int x, int y, int w, int h, int flags, const QString &text);
  301.     QRectF boundingRect(const QRectF &rect, const QString &text, const QTextOption &o = QTextOption());
  302.     void drawTextItem(const QPointF &p, const QTextItem &ti);
  303.     inline void drawTextItem(int x, int y, const QTextItem &ti);
  304.     inline void drawTextItem(const QPoint &p, const QTextItem &ti);
  305.     void fillRect(const QRectF &, const QBrush &);
  306.     inline void fillRect(int x, int y, int w, int h, const QBrush &);
  307.     void fillRect(const QRect &, const QBrush &);
  308.     void eraseRect(const QRectF &);
  309.     inline void eraseRect(int x, int y, int w, int h);
  310.     inline void eraseRect(const QRect &);
  311.     void setRenderHint(RenderHint hint, bool on = true);
  312.     void setRenderHints(RenderHints hints, bool on = true);
  313.     RenderHints renderHints() const;
  314.     inline bool testRenderHint(RenderHint hint) const { return renderHints() & hint; }
  315.     QPaintEngine *paintEngine() const;
  316.     static void setRedirected(const QPaintDevice *device, QPaintDevice *replacement,
  317.                               const QPoint& offset = QPoint());
  318.     static QPaintDevice *redirected(const QPaintDevice *device, QPoint *offset = 0);
  319.     static void restoreRedirected(const QPaintDevice *device);
  320. #ifdef QT3_SUPPORT
  321.     inline QT3_SUPPORT void setBackgroundColor(const QColor &color) { setBackground(color); }
  322.     inline QT3_SUPPORT const QColor &backgroundColor() const { return background().color(); }
  323.     inline QT3_SUPPORT void drawText(int x, int y, const QString &s, int pos, int len)
  324.         { drawText(x, y, s.mid(pos, len)); }
  325.     inline QT3_SUPPORT void drawText(const QPoint &p, const QString &s, int pos, int len)
  326.         { drawText(p, s.mid(pos, len)); }
  327.     inline QT3_SUPPORT void drawText(int x, int y, const QString &s, int len)
  328.         { drawText(x, y, s.left(len)); }
  329.     inline QT3_SUPPORT void drawText(const QPoint &p, const QString &s, int len)
  330.         { drawText(p, s.left(len)); }
  331.     inline QT3_SUPPORT void drawText(const QRect &r, int flags, const QString &str, int len, QRect *br=0)
  332.         { drawText(r, flags, str.left(len), br); }
  333.     inline QT3_SUPPORT void drawText(int x, int y, int w, int h, int flags, const QString &text, int len, QRect *br=0)
  334.         { drawText(QRect(x, y, w, h), flags, text.left(len), br); }
  335.     inline QT3_SUPPORT QRect boundingRect(const QRect &rect, int flags, const QString &text, int len)
  336.         { return boundingRect(rect, flags, text.left(len)); }
  337.     inline QT3_SUPPORT QRect boundingRect(int x, int y, int w, int h, int flags, const QString &text, int len)
  338.         { return boundingRect(QRect(x, y, w, h), flags, text.left(len)); }
  339.     inline QT3_SUPPORT bool begin(QPaintDevice *pdev, const QWidget *init)
  340.         { bool ret = begin(pdev); initFrom(init); return ret; }
  341.     QT3_SUPPORT void drawPoints(const QPolygon &pa, int index, int npoints = -1)
  342.     { drawPoints(pa.constData() + index, npoints == -1 ? pa.size() - index : npoints); }
  343.     QT3_SUPPORT void drawCubicBezier(const QPolygon &pa, int index = 0);
  344.     QT3_SUPPORT void drawLineSegments(const QPolygon &points, int index = 0, int nlines = -1);
  345.     inline QT3_SUPPORT void drawPolyline(const QPolygon &pa, int index, int npoints = -1)
  346.     { drawPolyline(pa.constData() + index, npoints == -1 ? pa.size() - index : npoints); }
  347.     inline QT3_SUPPORT void drawPolygon(const QPolygon &pa, bool winding, int index = 0, int npoints = -1)
  348.     { drawPolygon(pa.constData() + index, npoints == -1 ? pa.size() - index : npoints,
  349.                   winding ? Qt::WindingFill : Qt::OddEvenFill); }
  350.     inline QT3_SUPPORT void drawPolygon(const QPolygonF &polygon, bool winding, int index = 0,
  351.                                       int npoints = -1)
  352.     { drawPolygon(polygon.constData() + index, npoints == -1 ? polygon.size() - index : npoints,
  353.                   winding ? Qt::WindingFill : Qt::OddEvenFill); }
  354.     inline QT3_SUPPORT void drawConvexPolygon(const QPolygonF &polygon, int index, int npoints = -1)
  355.     { drawConvexPolygon(polygon.constData() + index, npoints == -1 ? polygon.size() - index : npoints); }
  356.     inline QT3_SUPPORT void drawConvexPolygon(const QPolygon &pa, int index, int npoints = -1)
  357.     { drawConvexPolygon(pa.constData() + index, npoints == -1 ? pa.size() - index : npoints); }
  358.     static inline QT3_SUPPORT void redirect(QPaintDevice *pdev, QPaintDevice *replacement)
  359.     { setRedirected(pdev, replacement); }
  360.     static inline QT3_SUPPORT QPaintDevice *redirect(QPaintDevice *pdev)
  361.     { return const_cast<QPaintDevice*>(redirected(pdev)); }
  362.     inline QT3_SUPPORT void setWorldXForm(bool enabled) { setMatrixEnabled(enabled); }
  363.     inline QT3_SUPPORT bool hasWorldXForm() const { return matrixEnabled(); }
  364.     inline QT3_SUPPORT void resetXForm() { resetTransform(); }
  365.     inline QT3_SUPPORT void setViewXForm(bool enabled) { setViewTransformEnabled(enabled); }
  366.     inline QT3_SUPPORT bool hasViewXForm() const { return viewTransformEnabled(); }
  367.     QT3_SUPPORT void map(int x, int y, int *rx, int *ry) const;
  368.     QT3_SUPPORT QPoint xForm(const QPoint &) const; // map virtual -> deviceb
  369.     QT3_SUPPORT QRect xForm(const QRect &) const;
  370.     QT3_SUPPORT QPolygon xForm(const QPolygon &) const;
  371.     QT3_SUPPORT QPolygon xForm(const QPolygon &, int index, int npoints) const;
  372.     QT3_SUPPORT QPoint xFormDev(const QPoint &) const; // map device -> virtual
  373.     QT3_SUPPORT QRect xFormDev(const QRect &) const;
  374.     QT3_SUPPORT QPolygon xFormDev(const QPolygon &) const;
  375.     QT3_SUPPORT QPolygon xFormDev(const QPolygon &, int index, int npoints) const;
  376.     QT3_SUPPORT qreal translationX() const;
  377.     QT3_SUPPORT qreal translationY() const;
  378. #endif
  379. private:
  380.     Q_DISABLE_COPY(QPainter)
  381.     friend class Q3Painter;
  382.     QPainterPrivate *d_ptr;
  383.     friend class QFontEngine;
  384.     friend class QFontEngineBox;
  385.     friend class QFontEngineFT;
  386.     friend class QFontEngineMac;
  387.     friend class QFontEngineWin;
  388.     friend class QFontEngineXLFD;
  389.     friend class QWSManager;
  390.     friend class QPaintEngine;
  391.     friend class QX11PaintEngine;
  392.     friend class QX11PaintEnginePrivate;
  393.     friend class QWin32PaintEngine;
  394.     friend class QWin32PaintEnginePrivate;
  395.     friend class QRasterPaintEngine;
  396.     friend class QAlphaPaintEngine;
  397.     friend class QPreviewPaintEngine;
  398. };
  399. Q_DECLARE_OPERATORS_FOR_FLAGS(QPainter::RenderHints)
  400. //
  401. // functions
  402. //
  403. inline void QPainter::drawLine(const QLineF &l)
  404. {
  405.     drawLines(&l, 1);
  406. }
  407. inline void QPainter::drawLine(const QLine &line)
  408. {
  409.     drawLines(&line, 1);
  410. }
  411. inline void QPainter::drawLine(int x1, int y1, int x2, int y2)
  412. {
  413.     QLine l(x1, y1, x2, y2);
  414.     drawLines(&l, 1);
  415. }
  416. inline void QPainter::drawLine(const QPoint &p1, const QPoint &p2)
  417. {
  418.     QLine l(p1, p2);
  419.     drawLines(&l, 1);
  420. }
  421. inline void QPainter::drawLine(const QPointF &p1, const QPointF &p2)
  422. {
  423.     drawLine(QLineF(p1, p2));
  424. }
  425. inline void QPainter::drawLines(const QVector<QLineF> &lines)
  426. {
  427.     drawLines(lines.constData(), lines.size());
  428. }
  429. inline void QPainter::drawLines(const QVector<QLine> &lines)
  430. {
  431.     drawLines(lines.constData(), lines.size());
  432. }
  433. inline void QPainter::drawLines(const QVector<QPointF> &pointPairs)
  434. {
  435.     drawLines(pointPairs.constData(), pointPairs.size() / 2);
  436. }
  437. inline void QPainter::drawLines(const QVector<QPoint> &pointPairs)
  438. {
  439.     drawLines(pointPairs.constData(), pointPairs.size() / 2);
  440. }
  441. inline void QPainter::drawPolyline(const QPolygonF &polyline)
  442. {
  443.     drawPolyline(polyline.constData(), polyline.size());
  444. }
  445. inline void QPainter::drawPolyline(const QPolygon &polyline)
  446. {
  447.     drawPolyline(polyline.constData(), polyline.size());
  448. }
  449. inline void QPainter::drawPolygon(const QPolygonF &polygon, Qt::FillRule fillRule)
  450. {
  451.     drawPolygon(polygon.constData(), polygon.size(), fillRule);
  452. }
  453. inline void QPainter::drawPolygon(const QPolygon &polygon, Qt::FillRule fillRule)
  454. {
  455.     drawPolygon(polygon.constData(), polygon.size(), fillRule);
  456. }
  457. inline void QPainter::drawConvexPolygon(const QPolygonF &poly)
  458. {
  459.     drawConvexPolygon(poly.constData(), poly.size());
  460. }
  461. inline void QPainter::drawConvexPolygon(const QPolygon &poly)
  462. {
  463.     drawConvexPolygon(poly.constData(), poly.size());
  464. }
  465. inline void QPainter::drawRect(const QRectF &rect)
  466. {
  467.     drawRects(&rect, 1);
  468. }
  469. inline void QPainter::drawRect(int x, int y, int w, int h)
  470. {
  471.     QRect r(x, y, w, h);
  472.     drawRects(&r, 1);
  473. }
  474. inline void QPainter::drawRect(const QRect &r)
  475. {
  476.     drawRects(&r, 1);
  477. }
  478. inline void QPainter::drawRects(const QVector<QRectF> &rects)
  479. {
  480.     drawRects(rects.constData(), rects.size());
  481. }
  482. inline void QPainter::drawRects(const QVector<QRect> &rects)
  483. {
  484.     drawRects(rects.constData(), rects.size());
  485. }
  486. inline void QPainter::drawPoint(const QPointF &p)
  487. {
  488.     drawPoints(&p, 1);
  489. }
  490. inline void QPainter::drawPoint(int x, int y)
  491. {
  492.     QPoint p(x, y);
  493.     drawPoints(&p, 1);
  494. }
  495. inline void QPainter::drawPoint(const QPoint &p)
  496. {
  497.     drawPoints(&p, 1);
  498. }
  499. inline void QPainter::drawPoints(const QPolygonF &points)
  500. {
  501.     drawPoints(points.constData(), points.size());
  502. }
  503. inline void QPainter::drawPoints(const QPolygon &points)
  504. {
  505.     drawPoints(points.constData(), points.size());
  506. }
  507. inline void QPainter::drawRoundRect(int x, int y, int w, int h, int xRnd, int yRnd)
  508. {
  509.     drawRoundRect(QRectF(x, y, w, h), xRnd, yRnd);
  510. }
  511. inline void QPainter::drawRoundRect(const QRect &rect, int xRnd, int yRnd)
  512. {
  513.     drawRoundRect(QRectF(rect), xRnd, yRnd);
  514. }
  515. inline void QPainter::drawRoundedRect(int x, int y, int w, int h, qreal xRadius, qreal yRadius,
  516.                             Qt::SizeMode mode)
  517. {
  518.     drawRoundedRect(QRectF(x, y, w, h), xRadius, yRadius, mode);
  519. }
  520. inline void QPainter::drawRoundedRect(const QRect &rect, qreal xRadius, qreal yRadius,
  521.                             Qt::SizeMode mode)
  522. {
  523.     drawRoundedRect(QRectF(rect), xRadius, yRadius, mode);
  524. }
  525. inline void QPainter::drawEllipse(int x, int y, int w, int h)
  526. {
  527.     drawEllipse(QRect(x, y, w, h));
  528. }
  529. inline void QPainter::drawEllipse(const QPointF &center, qreal rx, qreal ry)
  530. {
  531.     drawEllipse(QRectF(center.x() - rx, center.y() - ry, 2 * rx, 2 * ry));
  532. }
  533. inline void QPainter::drawEllipse(const QPoint &center, int rx, int ry)
  534. {
  535.     drawEllipse(QRect(center.x() - rx, center.y() - ry, 2 * rx, 2 * ry));
  536. }
  537. inline void QPainter::drawArc(const QRect &r, int a, int alen)
  538. {
  539.     drawArc(QRectF(r), a, alen);
  540. }
  541. inline void QPainter::drawArc(int x, int y, int w, int h, int a, int alen)
  542. {
  543.     drawArc(QRectF(x, y, w, h), a, alen);
  544. }
  545. inline void QPainter::drawPie(const QRect &rect, int a, int alen)
  546. {
  547.     drawPie(QRectF(rect), a, alen);
  548. }
  549. inline void QPainter::drawPie(int x, int y, int w, int h, int a, int alen)
  550. {
  551.     drawPie(QRectF(x, y, w, h), a, alen);
  552. }
  553. inline void QPainter::drawChord(const QRect &rect, int a, int alen)
  554. {
  555.     drawChord(QRectF(rect), a, alen);
  556. }
  557. inline void QPainter::drawChord(int x, int y, int w, int h, int a, int alen)
  558. {
  559.     drawChord(QRectF(x, y, w, h), a, alen);
  560. }
  561. inline void QPainter::setClipRect(int x, int y, int w, int h, Qt::ClipOperation op)
  562. {
  563.     setClipRect(QRect(x, y, w, h), op);
  564. }
  565. inline void QPainter::eraseRect(const QRect &rect)
  566. {
  567.     eraseRect(QRectF(rect));
  568. }
  569. inline void QPainter::eraseRect(int x, int y, int w, int h)
  570. {
  571.     eraseRect(QRectF(x, y, w, h));
  572. }
  573. inline void QPainter::fillRect(int x, int y, int w, int h, const QBrush &b)
  574. {
  575.     fillRect(QRect(x, y, w, h), b);
  576. }
  577. inline void QPainter::setBrushOrigin(int x, int y)
  578. {
  579.     setBrushOrigin(QPoint(x, y));
  580. }
  581. inline void QPainter::setBrushOrigin(const QPoint &p)
  582. {
  583.     setBrushOrigin(QPointF(p));
  584. }
  585. inline void QPainter::drawTiledPixmap(const QRect &rect, const QPixmap &pm, const QPoint &offset)
  586. {
  587.     drawTiledPixmap(QRectF(rect), pm, QPointF(offset));
  588. }
  589. inline void QPainter::drawTiledPixmap(int x, int y, int w, int h, const QPixmap &pm, int sx, int sy)
  590. {
  591.     drawTiledPixmap(QRectF(x, y, w, h), pm, QPointF(sx, sy));
  592. }
  593. inline void QPainter::drawPixmap(const QRect &targetRect, const QPixmap &pixmap, const QRect &sourceRect)
  594. {
  595.     drawPixmap(QRectF(targetRect), pixmap, QRectF(sourceRect));
  596. }
  597. inline void QPainter::drawPixmap(const QPointF &p, const QPixmap &pm)
  598. {
  599.     drawPixmap(QRectF(p.x(), p.y(), -1, -1), pm, QRectF());
  600. }
  601. inline void QPainter::drawPixmap(const QPoint &p, const QPixmap &pm)
  602. {
  603.     drawPixmap(QRectF(p.x(), p.y(), -1, -1), pm, QRectF());
  604. }
  605. inline void QPainter::drawPixmap(const QRect &r, const QPixmap &pm)
  606. {
  607.     drawPixmap(QRectF(r), pm, QRectF());
  608. }
  609. inline void QPainter::drawPixmap(int x, int y, const QPixmap &pm)
  610. {
  611.     drawPixmap(QRectF(x, y, -1, -1), pm, QRectF());
  612. }
  613. inline void QPainter::drawPixmap(int x, int y, int w, int h, const QPixmap &pm)
  614. {
  615.     drawPixmap(QRectF(x, y, w, h), pm, QRectF());
  616. }
  617. inline void QPainter::drawPixmap(int x, int y, int w, int h, const QPixmap &pm,
  618.                                  int sx, int sy, int sw, int sh)
  619. {
  620.     drawPixmap(QRectF(x, y, w, h), pm, QRectF(sx, sy, sw, sh));
  621. }
  622. inline void QPainter::drawPixmap(int x, int y, const QPixmap &pm,
  623.                                  int sx, int sy, int sw, int sh)
  624. {
  625.     drawPixmap(QRectF(x, y, -1, -1), pm, QRectF(sx, sy, sw, sh));
  626. }
  627. inline void QPainter::drawPixmap(const QPointF &p, const QPixmap &pm, const QRectF &sr)
  628. {
  629.     drawPixmap(QRectF(p.x(), p.y(), -1, -1), pm, sr);
  630. }
  631. inline void QPainter::drawPixmap(const QPoint &p, const QPixmap &pm, const QRect &sr)
  632. {
  633.     drawPixmap(QRectF(p.x(), p.y(), -1, -1), pm, sr);
  634. }
  635. inline void QPainter::drawTextItem(int x, int y, const QTextItem &ti)
  636. {
  637.     drawTextItem(QPointF(x, y), ti);
  638. }
  639. inline void QPainter::drawImage(const QRect &targetRect, const QImage &image, const QRect &sourceRect,
  640.                                 Qt::ImageConversionFlags flags)
  641. {
  642.     drawImage(QRectF(targetRect), image, QRectF(sourceRect), flags);
  643. }
  644. inline void QPainter::drawImage(const QPointF &p, const QImage &image, const QRectF &sr,
  645.                                 Qt::ImageConversionFlags flags)
  646. {
  647.     drawImage(QRectF(p.x(), p.y(), -1, -1), image, sr, flags);
  648. }
  649. inline void QPainter::drawImage(const QPoint &p, const QImage &image, const QRect &sr,
  650.                                 Qt::ImageConversionFlags flags)
  651. {
  652.     drawImage(QRect(p.x(), p.y(), -1, -1), image, sr, flags);
  653. }
  654. inline void QPainter::drawImage(const QRectF &r, const QImage &image)
  655. {
  656.     drawImage(r, image, QRect(0, 0, image.width(), image.height()));
  657. }
  658. inline void QPainter::drawImage(const QRect &r, const QImage &image)
  659. {
  660.     drawImage(r, image, QRectF(0, 0, image.width(), image.height()));
  661. }
  662. inline void QPainter::drawImage(const QPointF &p, const QImage &image)
  663. {
  664.     drawImage(QRectF(p.x(), p.y(), -1, -1), image, QRectF(0, 0, image.width(), image.height()));
  665. }
  666. inline void QPainter::drawImage(const QPoint &p, const QImage &image)
  667. {
  668.     drawImage(QRectF(p.x(), p.y(), -1, -1), image, QRectF(0, 0, image.width(), image.height()));
  669. }
  670. inline void QPainter::drawImage(int x, int y, const QImage &image, int sx, int sy, int sw, int sh,
  671.                                 Qt::ImageConversionFlags flags)
  672. {
  673.     drawImage(QRectF(x, y, -1, -1), image, QRectF(sx, sy, sw, sh), flags);
  674. }
  675. inline void QPainter::drawTextItem(const QPoint &p, const QTextItem &ti)
  676. {
  677.     drawTextItem(QPointF(p), ti);
  678. }
  679. inline void QPainter::drawText(const QPoint &p, const QString &s)
  680. {
  681.     drawText(QPointF(p), s);
  682. }
  683. inline void QPainter::drawText(int x, int y, int w, int h, int flags, const QString &str, QRect *br)
  684. {
  685.     drawText(QRect(x, y, w, h), flags, str, br);
  686. }
  687. inline void QPainter::drawText(int x, int y, const QString &s)
  688. {
  689.     drawText(QPointF(x, y), s);
  690. }
  691. inline QRect QPainter::boundingRect(int x, int y, int w, int h, int flags, const QString &text)
  692. {
  693.     return boundingRect(QRect(x, y, w, h), flags, text);
  694. }
  695. inline void QPainter::translate(qreal dx, qreal dy)
  696. {
  697.     translate(QPointF(dx, dy));
  698. }
  699. inline void QPainter::translate(const QPoint &offset)
  700. {
  701.     translate(offset.x(), offset.y());
  702. }
  703. inline void QPainter::setViewport(int x, int y, int w, int h)
  704. {
  705.     setViewport(QRect(x, y, w, h));
  706. }
  707. inline void QPainter::setWindow(int x, int y, int w, int h)
  708. {
  709.     setWindow(QRect(x, y, w, h));
  710. }
  711. #ifndef QT_NO_PICTURE
  712. inline void QPainter::drawPicture(int x, int y, const QPicture &p)
  713. {
  714.     drawPicture(QPoint(x, y), p);
  715. }
  716. inline void QPainter::drawPicture(const QPoint &pt, const QPicture &p)
  717. {
  718.     drawPicture(QPointF(pt), p);
  719. }
  720. #endif
  721. QT_END_NAMESPACE
  722. QT_END_HEADER
  723. #endif // QPAINTER_H