00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef QWT_PAINTER_H
00011 #define QWT_PAINTER_H
00012
00013 #include <qpoint.h>
00014 #include <qrect.h>
00015 #include "qwt_global.h"
00016 #include "qwt_layout_metrics.h"
00017
00018 class QPainter;
00019 class QColorGroup;
00020 #if QT_VERSION < 0x040000
00021 class QSimpleRichText;
00022 #else
00023 class QTextDocument;
00024 #endif
00025
00026 #if defined(Q_WS_X11)
00027
00028 #define QWT_COORD_MAX 16384
00029 #define QWT_COORD_MIN (-QWT_COORD_MAX - 1)
00030 #else
00031 #define QWT_COORD_MAX 2147483647
00032 #define QWT_COORD_MIN -QWT_COORD_MAX - 1
00033 #endif
00034
00053 class QWT_EXPORT QwtPainter
00054 {
00055 public:
00056 static void setMetricsMap(const QPaintDevice *layout,
00057 const QPaintDevice *device);
00058 static void setMetricsMap(const QwtMetricsMap &);
00059 static void resetMetricsMap();
00060 static const QwtMetricsMap &metricsMap();
00061
00062 static void setDeviceClipping(bool);
00063 static bool deviceClipping();
00064
00065 static void setClipRect(QPainter *, const QRect &);
00066
00067 static void drawText(QPainter *, int x, int y,
00068 const QString &);
00069 static void drawText(QPainter *, const QPoint &,
00070 const QString &);
00071 static void drawText(QPainter *, int x, int y, int w, int h,
00072 int flags, const QString &);
00073 static void drawText(QPainter *, const QRect &,
00074 int flags, const QString &);
00075
00076 #ifndef QT_NO_RICHTEXT
00077 #if QT_VERSION < 0x040000
00078 static void drawSimpleRichText(QPainter *, const QRect &,
00079 int flags, QSimpleRichText &);
00080 #else
00081 static void drawSimpleRichText(QPainter *, const QRect &,
00082 int flags, QTextDocument &);
00083 #endif
00084 #endif
00085
00086 static void drawRect(QPainter *, int x, int y, int w, int h);
00087 static void drawRect(QPainter *, const QRect &rect);
00088 static void fillRect(QPainter *, const QRect &, const QBrush &);
00089
00090 static void drawEllipse(QPainter *, const QRect &);
00091
00092 static void drawLine(QPainter *, int x1, int y1, int x2, int y2);
00093 static void drawLine(QPainter *, const QPoint &p1, const QPoint &p2);
00094 #if QT_VERSION < 0x040000
00095 static void drawPolygon(QPainter *, const QPointArray &pa);
00096 static void drawPolyline(QPainter *, const QPointArray &pa);
00097 #else
00098 static void drawPolygon(QPainter *, const QPolygon &pa);
00099 static void drawPolyline(QPainter *, const QPolygon &pa);
00100 #endif
00101 static void drawPoint(QPainter *, int x, int y);
00102
00103 #if QT_VERSION < 0x040000
00104 static void drawRoundFrame(QPainter *, const QRect &,
00105 int width, const QColorGroup &cg, bool sunken);
00106 #else
00107 static void drawRoundFrame(QPainter *, const QRect &,
00108 int width, const QPalette &, bool sunken);
00109 #endif
00110 static void drawFocusRect(QPainter *, QWidget *);
00111 static void drawFocusRect(QPainter *, QWidget *, const QRect &);
00112
00113 #if QT_VERSION < 0x040000
00114 static QPointArray clip(const QPointArray &);
00115 #else
00116 static QPolygon clip(const QPolygon &);
00117 #endif
00118
00119 private:
00120 static void drawColoredArc(QPainter *, const QRect &,
00121 int peak, int arc, int intervall, const QColor &c1, const QColor &c2);
00122
00123 static const QRect &deviceClipRect();
00124 static bool d_deviceClipping;
00125 static QwtMetricsMap d_metricsMap;
00126 };
00127
00129 inline void QwtPainter::drawLine(QPainter *painter,
00130 const QPoint &p1, const QPoint &p2)
00131 {
00132 drawLine(painter, p1.x(), p1.y(), p2.x(), p2.y());
00133 }
00134
00135 #endif