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