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 <qpointarray.h>
00015 #include <qrect.h>
00016 #include "qwt_global.h"
00017
00018 class QPainter;
00019 class QPaintDevice;
00020 class QWMatrix;
00021
00022 #if defined(Q_WS_X11)
00023
00024 #define QWT_COORD_MAX 16384
00025 #define QWT_COORD_MIN (-QWT_COORD_MAX - 1)
00026 #else
00027 #define QWT_COORD_MAX QCOORD_MAX
00028 #define QWT_COORD_MIN QCOORD_MIN
00029 #endif
00030
00051 class QWT_EXPORT QwtPainter
00052 {
00053 public:
00054 static void setScaleMetrics(const QPaintDevice *, const QPaintDevice *);
00055 static void resetScaleMetrics();
00056 static double scaleMetricsX();
00057 static double scaleMetricsY();
00058
00059 static void setDeviceClipping(bool);
00060 static bool deviceClipping();
00061
00062 static QRect invScale(const QRect &, const QPainter * = NULL);
00063 static QPoint invScale(const QPoint &, const QPainter * = NULL);
00064 static QRect scale(const QRect &, const QPainter * = NULL);
00065 static QPoint scale(const QPoint &, const QPainter * = NULL);
00066 static QPointArray scale(const QPointArray &, const QPainter * = NULL);
00067
00068 static void setClipRect(QPainter *, const QRect &);
00069
00070 static void drawText(QPainter *, int x, int y,
00071 const QString &, int len = -1);
00072 static void drawText(QPainter *, const QPoint &,
00073 const QString &, int len = -1);
00074 static void drawText(QPainter *, int x, int y, int w, int h,
00075 int flags, const QString &, int len = -1);
00076 static void drawText(QPainter *, const QRect &,
00077 int flags, const QString &, int len = -1);
00078
00079 static void drawRect(QPainter *, int x, int y, int w, int h);
00080 static void drawRect(QPainter *, const QRect &rect);
00081 static void fillRect(QPainter *, const QRect &, const QBrush &);
00082
00083 static void drawEllipse(QPainter *, const QRect &);
00084
00085 static void drawLine(QPainter *, int x1, int y1, int x2, int y2);
00086 static void drawLine(QPainter *, const QPoint &p1, const QPoint &p2);
00087 static void drawPolygon(QPainter *, const QPointArray &pa);
00088 static void drawPolyline(QPainter *, const QPointArray &pa);
00089 static void drawPoint(QPainter *, int x, int y);
00090
00091 static QRect map(const QWMatrix &, const QRect &);
00092 static QPointArray map(const QWMatrix &, const QPointArray &);
00093
00094 static void drawRoundFrame(QPainter *, const QRect &,
00095 int width, bool sunken);
00096
00097 private:
00098 static const QRect &deviceClipRect();
00099
00100 static bool insideEdge( const QPoint &p, const QRect &r, int edge );
00101 static QPoint intersectEdge(const QPoint &p1, const QPoint &p2,
00102 const QRect &r, int edge );
00103 static QPointArray clipPolyline(const QRect &r,
00104 const QPointArray &pa, int &index, int &npoints );
00105 static QPointArray clip(const QPointArray &);
00106
00107 static bool d_deviceClipping;
00108 static double d_scaleMetricsX;
00109 static double d_scaleMetricsY;
00110 };
00111
00112 #endif